陳 峰 孟 宇 楊至誠
(1.北京金自天正智能控制股份有限公司;2.冶金自動化研究設計院)
隨著科學技術的發(fā)展,PLC的運算速度、處理能力和通信功能得到極大提升。PLC的品牌眾多,同是基于TCP/IP協(xié)議的通信方式,不同品牌PLC之間雖然IP地址在一個網(wǎng)段,但也無法實現(xiàn)互相通信,必須借助第三方硬件或軟件才可以實現(xiàn)數(shù)據(jù)交換。因此,研究基于Socket方式實現(xiàn)不同品牌PLC之間的通信,有著非常重要的實際意義。
Socket又名套接字,是支持TCP協(xié)議或UDP協(xié)議的網(wǎng)絡通信操作的基本單元,TCP或UDP協(xié)議應用層和傳輸層協(xié)議通過Socket接口區(qū)分不同程序進程或網(wǎng)絡通信,以實現(xiàn)網(wǎng)絡傳輸?shù)牟l(fā)[1]。
Socket的建立連接至少需要一對套接字完成,一個運行于客戶端(SocketClient),另一個運行于服務器端(SocketServer)。
Socket的連接過程分為3個步驟:
a.服務器監(jiān)聽。服務器的套接字并不定位具體的來自客戶端的套接字,而是一種等待連接的狀態(tài),通過實時監(jiān)控網(wǎng)絡狀態(tài),等待客戶端的連接請求。
b.客戶端請求。指SocketClient通過查找SocketServer的地址和端口號,發(fā)起連接請求。
c.當SocketServer監(jiān)聽到SocketClient發(fā)送的請求時,響應客戶端請求,建立一個線程,把SocketServer描述發(fā)給客戶端,當SocketClient確認后,建立連接成功。
Socket通信流程如圖1所示。
圖1 Socket通信流程
為了驗證Socket通信的穩(wěn)定性和有效性,筆者選取S7-400系列PLC與Controllogix系列PLC通過Socket實現(xiàn)相互通信。
S7-400系列414-2DP處理器支持SIEMENS的 PROFINET 協(xié)議[2],PROFINET 基于 TCP/IP 協(xié)議,可以實現(xiàn)控制層級橫向與縱向的集成。Controllogix系列1756-L72處理器支持Rockwell的Ethernet IP協(xié)議[3]。由于兩家公司配套軟件不同,如需實現(xiàn)網(wǎng)絡互通,需從物理連接和PLC硬件網(wǎng)絡配置兩個方面完成網(wǎng)絡配置[2,3]。
本項目有2套PLC和1臺編程器,為驗證系統(tǒng)的有效性,采用網(wǎng)絡交換機連接方式,兩套PLC和編程器都設定在一個局域網(wǎng)中,通過計算機CMD中的PING指令驗證物理連接的有效性。
Rockwell PLC的硬件網(wǎng)絡配置。Controllogix系列1756-L72處理器采用Rockwell RSLogix5K、RSLinx軟件進行硬件配置和軟件編程,具體配置步驟如下:
a.通過“Rockwell Software>RSLinx”創(chuàng)建新連接,通過 “Communication>Configure Drivers>Available Driver Types”選擇驅動,本項目選用“EtherNet devices”;
b. 添加新的驅動 “Add New>添加名稱>點擊 OK”;
c.配置以太網(wǎng)驅動,輸入IP地址192.168.1.243并確定;
d.自動掃描網(wǎng)絡,可查詢在線網(wǎng)絡設備;
e.打開RSLogix5K軟件,通過RSWho關聯(lián)RSLinx軟件找到CPU,實現(xiàn)程序下載。
Rockwell RSLinx組態(tài)如圖2所示。
圖2 Rockwell RSLinx組態(tài)
SIEMENS的PLC硬件網(wǎng)絡配置。414-2DP處理器選用STEP7編程軟件完成414-2DP硬件配置后進入NetPro程序:
a.通過 “Insert>New Connection”創(chuàng)建新連接,在連接伙伴處選擇“unspecified”,并選擇“TCP connection1”作為連接類型;
b.在TCP屬性窗口 “General Information”標簽中選擇PLC通信模塊、ID號和Active connection establishment(該選項為通信設置中Socket-Server或者SocketClient的設定,本項目中選擇SIEMENS的PLC作為SocketClient,這里打勾);
c.在addresses窗口中設定Local/Remote IP地址192.168.1.244和端口號10002;
d.編譯后下載至PLC中。
SIEMENS硬件組態(tài)如圖3所示。
圖3 SIEMENS硬件組態(tài)
Rockwell PLC是通過軟件實現(xiàn)Socket通信功能的。MSG指令為1756-L72從網(wǎng)絡中的另一個模塊異步讀取或異步寫入數(shù)據(jù)塊的軟件指令,在使用MSG指令時:
a.定義一個新的數(shù)據(jù)類型為Message的Tag,對應一個MSG指令;
b.選擇MSG結構類型,本項目為第三方通信,因此選擇CIP Generic類型;
c.建立MSG的ServiceType服務類型標簽,根據(jù)Socket通信原則,本項目使用了5種類型的服務類型標簽——Custom(用戶自定義類型,當Socket通信中斷時可自動修復)、Socket Create(創(chuàng)建Socket通信連接標簽)、OpenConnection(打開Socket通信連接類型)、WriteSocket(寫數(shù)據(jù)塊類型)和 ReadSocket(讀數(shù)據(jù)塊類型);
d.根據(jù)不同類型的MSG建立對應的參數(shù)設置。
MSG指令組態(tài)如圖4所示。
在程序結構設計中:
a.Socket通信程序采用250ms定時掃描執(zhí)行,因此將Socket封裝在子程序塊內,方便調用;
b.手動測試采用5個Bool位指令,即Delete_All_Request、 Create_Socket_Request、 Accept_Request、Read_Data_Request和 Write_Request,實現(xiàn)MSG指令調用;
圖4 MSG指令組態(tài)
c.MSG參數(shù)設定,例如在Socket_Open_Par中設定SocketServer的IP地址和port號;
d.采用 Ton、Mov、Xic及 Xio 等指令實現(xiàn)自動Socket程序功能;
e.調試過程中,通過觀察MSG指令的(EN)、(DN)、(ER)狀態(tài)監(jiān)控通信是否正常,其中(EN)代表MSG指令使能、(DN)代表MSG指令執(zhí)行完成、(ER)代表MSG指令錯誤位。
Rockwell程序如圖5所示。
圖5 Rockwell程序
在SIEMENS的STEP7軟件中,通過AGSEND(FC5)和 AGRECV(FC6)實現(xiàn)塊的讀寫操作。AGSEND用于向另外的S7站、計算機站或者第三方系統(tǒng)發(fā)送數(shù)據(jù);AGRECV用于從另外的S7站、計算機站或者第三方系統(tǒng)接收數(shù)據(jù)。
PLC程序為循環(huán)掃描,掃描時間可根據(jù)程序自動調節(jié)或者設定固定時間,本項目設定250ms執(zhí)行一次讀寫操作過程。
在程序設計過程中,首先在OB1功能塊中調用SD(250ms)計時器模塊,計時器完成位是執(zhí)行AGSEND和AGRECV指令。M0.0為控制位,在上升沿有效;ID為硬件組態(tài)設置;LADDR為通信模塊的起始地址;SEND(RECV)為發(fā)送(接收)的地址區(qū)域;LEN為通信字的字長;DONE為完成位;ERROR為功能塊的錯誤位,發(fā)生錯誤時報警;STATUS為功能塊的狀態(tài)字,顯示功能塊的運行狀態(tài)。
SIEMENS程序如圖6所示。
圖6 SIEMENS程序
Rockwell PLC為SocketServer端,其硬件模塊由電源模塊PA72、CPU模塊L73、以太網(wǎng)模塊EN2T、A10框架組成。網(wǎng)絡部分由交換機和網(wǎng)線組成。
SIEMENS PLC為SocketClient端,其硬件模塊由電源模塊PS407、CPU模塊S7-400 414-2DP、以太網(wǎng)模塊443-1和框架組成。網(wǎng)絡設備和編程器選用IBM筆記本、8電口100M交換機及網(wǎng)線等。
分別通過Rockwell和SIEMENS的配套軟件,將對應的軟件下裝到PLC中。
兩套不同品牌PLC通信調試比較繁瑣,很難一次調試成功。筆者在調試過程中,選用了一款第三方軟件TCP/UDP測試軟件,采用TCP/UDP軟件可以模擬Socket服務器/客戶端,先用兩套PLC分別對TCP/UDP軟件測試成功后再進行PLC通信。最終實現(xiàn)了PLC之間的通信,通信時間達到了毫秒級,而且通信中斷后可自動連接。TCP/UDP通信軟件如圖7所示,STEP7中的監(jiān)控通信數(shù)據(jù)如圖8所示。
圖7 TCP/UDP通信軟件
圖8 STEP7中的監(jiān)控通信數(shù)據(jù)
隨著工礦企業(yè)的快速發(fā)展,PLC和工業(yè)以太網(wǎng)技術在企業(yè)生產(chǎn)中廣泛應用。筆者針對不同品牌PLC之間采用Socket進行通信做了一次嘗試,實現(xiàn)了Rockwell和SIEMENS的PLC通信,希望能給工控領域的設計者們一個解決思路和途徑。