王建菊
(武昌職業(yè)學(xué)院,湖北 武漢 430202)
西門子公司是世界上首屈一指的電氣與電子公司,近年來,西門子公司在原來200PLC的基礎(chǔ)上推出了S7-1200。西門子公司S7-1200系列的PLC作為小型自動化項目的新型控制器,在國內(nèi)外已被越來越多的工業(yè)自動化工程師選用。同時,西門子公司將原本獨立的編輯、編譯、調(diào)試、人機(jī)界面等一系列軟件功能集成到一個統(tǒng)一的博圖軟件平臺中,簡便和規(guī)范了PLC控制系統(tǒng)的開發(fā)流程。
西門子PLC支持多種通信協(xié)議,應(yīng)用廣泛多樣。在博圖環(huán)境下,西門子PLC的網(wǎng)絡(luò)搭建變得輕巧快速,通信變得更加靈活和適用,為工業(yè)自動化通信領(lǐng)域提供了高效、穩(wěn)定、可靠的網(wǎng)絡(luò)解決方案。
一個完整的通信系統(tǒng)包括發(fā)送端、接收端、接口(RS232、RS485/422、RJ45等)、協(xié)議(profibus-DP、profinet、以太網(wǎng)、Device net等)、介質(zhì)、網(wǎng)絡(luò)中繼器等。數(shù)據(jù)傳輸?shù)姆绞桨ù型ㄐ拧⒉⑿型ㄐ?,分別如圖1、圖2所示。并行通信是把高低電壓信號同時發(fā)過去,傳輸數(shù)據(jù)量大,接線多,傳輸過程中外部產(chǎn)生一個干擾,所有的并行線都會產(chǎn)生干擾,因而現(xiàn)場用并行通信很少。串行通信是采用一根通信線傳輸數(shù)據(jù),數(shù)據(jù)按照位的方式逐位發(fā)送,只需一根傳輸線完成,成本低,但傳輸速度慢。在西門子PLC中一般采用串行通信。
圖1 串行通信示意圖
圖2 并行通信示意圖
常用通信接口為串口和以太網(wǎng)口。串口接口主要分為232、485、422三種。232主要是由RX、TX、GND三根線組成。等電位傳輸,采用負(fù)電壓作為邏輯1,傳輸信號電平相對信號GND傳輸,易受干擾,只能進(jìn)行PTP通信,因此,大多數(shù)設(shè)備通信都不采用RS232接口。485主要是以一種差分信號進(jìn)行傳輸,只需要兩根線,+、-兩根線,或者也叫A、B兩根線。A、B兩根線的差分電平信號作為數(shù)據(jù)信號傳輸,抗干擾性強(qiáng),大多數(shù)協(xié)議采用RS485接口。422是把232的RX分成兩根線RX+、RX-,把TX分成TX+、TX-[1]。由于在很多設(shè)備通信中,基本上是屬于一問一答式的,因此,232的全雙工通信優(yōu)勢并不明顯,特別是一主與多從通信時,而485的接線就非常簡便。因此,在S71200串行通信中,主要采用485接口。RS232、RS485串口接線示意如圖3、圖4所示。
圖3 RS232串口接線示意圖
圖4 RS485串口接線示意圖
以太網(wǎng)接口主要為RJ45接口,RJ45內(nèi)部8針,至少需要接四根線,1/2發(fā)送,3/6接收,1236四根線互連即可,以太網(wǎng)口是在串口的基礎(chǔ)上提出的。RJ45接口在以太網(wǎng)通信中應(yīng)用較多。
西門子S7-1200PLC本體只自帶一個以太網(wǎng)口,在實際應(yīng)用中需要給S7-1200PLC擴(kuò)展串口。西門子S7-1200PLC常用擴(kuò)展串口為:用于通信的CM系列和用于通信的CB板。CM1241通信擴(kuò)展模塊應(yīng)用于USS西門子內(nèi)部通信協(xié)議及Modbus RTU用于第三方通信協(xié)議。CM1243-5擴(kuò)展模塊為S7-1200PLC做PROFIBUSDP通信的主站模塊,而CM1242-5擴(kuò)展模塊為S7-1200PLC,做PROFIBUSDP通信的從站模塊。S7-1200PLC通信模塊最多擴(kuò)展三個,各通信模塊應(yīng)用及參數(shù)可以參見S7-1200PLC樣本[2]。
西門子S7-1200PLC根據(jù)接口不同,支持的通信協(xié)議也不同?;赗S485口通信:PROFIBUS-DP(開放式),MPI(內(nèi)部,西門子內(nèi)部協(xié)議不公開),modbus-RTU(標(biāo)準(zhǔn)),USS(內(nèi)部),PPI(內(nèi)部/200,已經(jīng)停產(chǎn))。基于PN(RJ45)口通信:Profinet(開放式),以太網(wǎng)TCP/IP(開放式),modbus-TCP/IP(標(biāo)準(zhǔn)),S7(內(nèi)部),CANopen(開放式),devicenet(開放式)[3]。
PROFIBUS-DP,開放式的用戶通信,凡是支持DP通信的設(shè)備都可以和S7-1200做DP通信,如機(jī)器人、第三方PLC、變頻、伺服等。由于S71200CPU本體沒有串口,必須選配CM1242或CM1243模塊。PROFIBUS-DP網(wǎng)絡(luò)節(jié)點限制在1~126,網(wǎng)絡(luò)長度為100 m~1 200 m,其優(yōu)點為抗干擾性強(qiáng),實時性好。PROFIBUS-DP可以做主主通信,即兩個PLC都用作主站,使用硬件網(wǎng)關(guān)模塊:DP/DP/couple耦合器。PROFIBUS-DP做主從通信,CPU能力強(qiáng)的作為主站,弱的作為從站。
S7是西門子內(nèi)部協(xié)議,僅用于西門子帶PN口的CPU之間的通信。S7通信需要使用通信指令,可進(jìn)行單向和雙向通信[4],做法如下。
添加兩臺S7-1200PLC,即PLC1 1214DCDCDC 4.2版本和PLC2 1214DCDCDC 4.2版本。在兩臺PLC的屬性界面防護(hù)與安全里面選擇連接機(jī)制,分別勾選允許來自遠(yuǎn)程對象的PUT/GET通信訪問,同時勾選系統(tǒng)和時鐘存儲器。其中,PLC1的IP地址為192.168.0.1,PLC2的IP地址為192.168.0.2。在PLC1和PLC2中分別建立全局?jǐn)?shù)據(jù)塊DB1、DB2,兩個數(shù)據(jù)塊均為標(biāo)準(zhǔn)塊,建立10個字節(jié)的數(shù)據(jù)。
連接兩臺PLC的以太網(wǎng)端口建立子網(wǎng),如圖5所示。在PLC1中添加GET讀取指令并進(jìn)行硬件組態(tài),選中GET指令,在組態(tài)里面選擇連接參數(shù),本地端點為PLC1,伙伴為PLC2,連接名稱為S7_連接_1,PLC1主動建立連接,S7指令組態(tài)如圖6所示。
圖5 兩臺PLC子網(wǎng)連接
圖6 S7指令組態(tài)設(shè)置
其中,PLC1中的指令引腳REQ為上升沿系統(tǒng)時鐘信號,ID為設(shè)備標(biāo)志符,ADDR_1為伙伴地址,RD_1為本地地址。PLC2中發(fā)送一個數(shù)據(jù)10存入PLC2中的DB數(shù)據(jù)塊中,兩臺PLC程序如圖7、圖8所示。
圖7 S7通信PLC1程序
圖8 S7通信PLC2程序
下載兩臺PLC的程序進(jìn)行仿真,數(shù)據(jù)傳輸結(jié)果如圖9所示,通信成功。
圖9 S7通信仿真調(diào)試
以太網(wǎng)TCP通信連接是通過開放式用戶通信中的TSEND/TRCV的指令建立連接和發(fā)送接收數(shù)據(jù)的,是一種開放式用戶協(xié)議[5],做法如下。
添加兩臺1200CPU,即PLC1 1214DCDCDC 4.2版本,PLC2 1214DCDCDC 4.2版本。修改兩臺PLC的IP地址,PLC1的IP地址為192.168.0.1,PLC2的IP地址為192.168.0.2。連接兩臺PLC的以太網(wǎng)端口建立子網(wǎng)。
在PLC1中添加TRSEN_C發(fā)送指令并進(jìn)行硬件組態(tài),在PLC2中添加TRCV_C接收指令并進(jìn)行硬件組態(tài),本地端點為本地,伙伴為對方,對于PLC1連接數(shù)據(jù)選擇新建發(fā)送_Send_DB,伙伴里面同樣選擇新建_Receive_DB。PLC2的連接數(shù)據(jù)選擇Receive_DB數(shù)據(jù)塊,PLC1伙伴里面選擇Send_DB數(shù)據(jù)塊。
其中,PLC1中的TRSEN_C指令引腳REQ為上升沿系統(tǒng)時鐘信號,CONNECT為組態(tài)連接參數(shù)里面的連接數(shù)據(jù)的發(fā)送DB塊,DATA是發(fā)送的數(shù)據(jù)儲存地址,M1.3為數(shù)據(jù)傳輸開關(guān)。PLC2中TRCV_C指令引腳CONNECT為組態(tài)連接參數(shù)里面的連接數(shù)據(jù)的接收DB塊,DATA是接收的數(shù)據(jù)儲存地址,兩臺PLC程序如圖10、圖11所示。
圖10 以太網(wǎng)TCP通信PLC1程序
圖11 以太網(wǎng)TCP通信PLC2程序
下載兩臺PLC的程序進(jìn)行仿真,數(shù)據(jù)傳輸結(jié)果如圖12所示,通信成功。
圖12 TCP通信仿真調(diào)試
在S7-1200PLC以太網(wǎng)通信中的S7通信和以太網(wǎng)TCP通信,兩種通信方式都是以太網(wǎng)端口通信。但是S7通信是西門子內(nèi)部通信協(xié)議,S7通信可以一條指令完成數(shù)據(jù)傳輸;而TCP通信是一種開放式用戶協(xié)議,在以太網(wǎng)TCP通信中必須TRSEN_C指令和TRCV_C指令同時存在才能進(jìn)行數(shù)據(jù)傳輸。
S7-1200PLC通信是學(xué)習(xí)和應(yīng)用的難點。筆者在介紹通信基礎(chǔ)上分析了S7-1200PLC幾種常用通信方法,對S7通信和以太網(wǎng)TCP通信進(jìn)行組態(tài)編程,實現(xiàn)了兩臺S7-1200PLC之間的數(shù)據(jù)傳輸,并對兩種通信方法做了對比。通過對幾種S7-1200PLC通信的介紹,為PLC通信應(yīng)用提供不同的思路。