王建菊
(武昌職業學院,湖北 武漢 430202)
西門子公司是世界上首屈一指的電氣與電子公司,近年來,西門子公司在原來200PLC的基礎上推出了S7-1200。西門子公司S7-1200系列的PLC作為小型自動化項目的新型控制器,在國內外已被越來越多的工業自動化工程師選用。同時,西門子公司將原本獨立的編輯、編譯、調試、人機界面等一系列軟件功能集成到一個統一的博圖軟件平臺中,簡便和規范了PLC控制系統的開發流程。
西門子PLC支持多種通信協議,應用廣泛多樣。在博圖環境下,西門子PLC的網絡搭建變得輕巧快速,通信變得更加靈活和適用,為工業自動化通信領域提供了高效、穩定、可靠的網絡解決方案。
一個完整的通信系統包括發送端、接收端、接口(RS232、RS485/422、RJ45等)、協議(profibus-DP、profinet、以太網、Device net等)、介質、網絡中繼器等。數據傳輸的方式包括串行通信、并行通信,分別如圖1、圖2所示。并行通信是把高低電壓信號同時發過去,傳輸數據量大,接線多,傳輸過程中外部產生一個干擾,所有的并行線都會產生干擾,因而現場用并行通信很少。串行通信是采用一根通信線傳輸數據,數據按照位的方式逐位發送,只需一根傳輸線完成,成本低,但傳輸速度慢。在西門子PLC中一般采用串行通信。

圖1 串行通信示意圖

圖2 并行通信示意圖
常用通信接口為串口和以太網口。串口接口主要分為232、485、422三種。232主要是由RX、TX、GND三根線組成。等電位傳輸,采用負電壓作為邏輯1,傳輸信號電平相對信號GND傳輸,易受干擾,只能進行PTP通信,因此,大多數設備通信都不采用RS232接口。485主要是以一種差分信號進行傳輸,只需要兩根線,+、-兩根線,或者也叫A、B兩根線。A、B兩根線的差分電平信號作為數據信號傳輸,抗干擾性強,大多數協議采用RS485接口。422是把232的RX分成兩根線RX+、RX-,把TX分成TX+、TX-[1]。由于在很多設備通信中,基本上是屬于一問一答式的,因此,232的全雙工通信優勢并不明顯,特別是一主與多從通信時,而485的接線就非常簡便。因此,在S71200串行通信中,主要采用485接口。RS232、RS485串口接線示意如圖3、圖4所示。

圖3 RS232串口接線示意圖

圖4 RS485串口接線示意圖
以太網接口主要為RJ45接口,RJ45內部8針,至少需要接四根線,1/2發送,3/6接收,1236四根線互連即可,以太網口是在串口的基礎上提出的。RJ45接口在以太網通信中應用較多。
西門子S7-1200PLC本體只自帶一個以太網口,在實際應用中需要給S7-1200PLC擴展串口。西門子S7-1200PLC常用擴展串口為:用于通信的CM系列和用于通信的CB板。CM1241通信擴展模塊應用于USS西門子內部通信協議及Modbus RTU用于第三方通信協議。CM1243-5擴展模塊為S7-1200PLC做PROFIBUSDP通信的主站模塊,而CM1242-5擴展模塊為S7-1200PLC,做PROFIBUSDP通信的從站模塊。S7-1200PLC通信模塊最多擴展三個,各通信模塊應用及參數可以參見S7-1200PLC樣本[2]。
西門子S7-1200PLC根據接口不同,支持的通信協議也不同。基于RS485口通信:PROFIBUS-DP(開放式),MPI(內部,西門子內部協議不公開),modbus-RTU(標準),USS(內部),PPI(內部/200,已經停產)?;赑N(RJ45)口通信:Profinet(開放式),以太網TCP/IP(開放式),modbus-TCP/IP(標準),S7(內部),CANopen(開放式),devicenet(開放式)[3]。
PROFIBUS-DP,開放式的用戶通信,凡是支持DP通信的設備都可以和S7-1200做DP通信,如機器人、第三方PLC、變頻、伺服等。由于S71200CPU本體沒有串口,必須選配CM1242或CM1243模塊。PROFIBUS-DP網絡節點限制在1~126,網絡長度為100 m~1 200 m,其優點為抗干擾性強,實時性好。PROFIBUS-DP可以做主主通信,即兩個PLC都用作主站,使用硬件網關模塊:DP/DP/couple耦合器。PROFIBUS-DP做主從通信,CPU能力強的作為主站,弱的作為從站。
S7是西門子內部協議,僅用于西門子帶PN口的CPU之間的通信。S7通信需要使用通信指令,可進行單向和雙向通信[4],做法如下。
添加兩臺S7-1200PLC,即PLC1 1214DCDCDC 4.2版本和PLC2 1214DCDCDC 4.2版本。在兩臺PLC的屬性界面防護與安全里面選擇連接機制,分別勾選允許來自遠程對象的PUT/GET通信訪問,同時勾選系統和時鐘存儲器。其中,PLC1的IP地址為192.168.0.1,PLC2的IP地址為192.168.0.2。在PLC1和PLC2中分別建立全局數據塊DB1、DB2,兩個數據塊均為標準塊,建立10個字節的數據。
連接兩臺PLC的以太網端口建立子網,如圖5所示。在PLC1中添加GET讀取指令并進行硬件組態,選中GET指令,在組態里面選擇連接參數,本地端點為PLC1,伙伴為PLC2,連接名稱為S7_連接_1,PLC1主動建立連接,S7指令組態如圖6所示。

圖5 兩臺PLC子網連接

圖6 S7指令組態設置
其中,PLC1中的指令引腳REQ為上升沿系統時鐘信號,ID為設備標志符,ADDR_1為伙伴地址,RD_1為本地地址。PLC2中發送一個數據10存入PLC2中的DB數據塊中,兩臺PLC程序如圖7、圖8所示。

圖7 S7通信PLC1程序

圖8 S7通信PLC2程序
下載兩臺PLC的程序進行仿真,數據傳輸結果如圖9所示,通信成功。

圖9 S7通信仿真調試
以太網TCP通信連接是通過開放式用戶通信中的TSEND/TRCV的指令建立連接和發送接收數據的,是一種開放式用戶協議[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的以太網端口建立子網。
在PLC1中添加TRSEN_C發送指令并進行硬件組態,在PLC2中添加TRCV_C接收指令并進行硬件組態,本地端點為本地,伙伴為對方,對于PLC1連接數據選擇新建發送_Send_DB,伙伴里面同樣選擇新建_Receive_DB。PLC2的連接數據選擇Receive_DB數據塊,PLC1伙伴里面選擇Send_DB數據塊。
其中,PLC1中的TRSEN_C指令引腳REQ為上升沿系統時鐘信號,CONNECT為組態連接參數里面的連接數據的發送DB塊,DATA是發送的數據儲存地址,M1.3為數據傳輸開關。PLC2中TRCV_C指令引腳CONNECT為組態連接參數里面的連接數據的接收DB塊,DATA是接收的數據儲存地址,兩臺PLC程序如圖10、圖11所示。

圖10 以太網TCP通信PLC1程序

圖11 以太網TCP通信PLC2程序
下載兩臺PLC的程序進行仿真,數據傳輸結果如圖12所示,通信成功。

圖12 TCP通信仿真調試
在S7-1200PLC以太網通信中的S7通信和以太網TCP通信,兩種通信方式都是以太網端口通信。但是S7通信是西門子內部通信協議,S7通信可以一條指令完成數據傳輸;而TCP通信是一種開放式用戶協議,在以太網TCP通信中必須TRSEN_C指令和TRCV_C指令同時存在才能進行數據傳輸。
S7-1200PLC通信是學習和應用的難點。筆者在介紹通信基礎上分析了S7-1200PLC幾種常用通信方法,對S7通信和以太網TCP通信進行組態編程,實現了兩臺S7-1200PLC之間的數據傳輸,并對兩種通信方法做了對比。通過對幾種S7-1200PLC通信的介紹,為PLC通信應用提供不同的思路。