朱津津,申屠浩,鮑可進(jìn)
(江蘇大學(xué) 計(jì)算機(jī)科學(xué)與通信工程學(xué)院,江蘇 鎮(zhèn)江 212013)
?
基于.NET上位機(jī)與PLC工業(yè)以太網(wǎng)通信的實(shí)現(xiàn)
朱津津,申屠浩,鮑可進(jìn)
(江蘇大學(xué) 計(jì)算機(jī)科學(xué)與通信工程學(xué)院,江蘇 鎮(zhèn)江 212013)
在遠(yuǎn)程監(jiān)測系統(tǒng)的上位機(jī)數(shù)據(jù)監(jiān)測軟件的設(shè)計(jì)中,上位機(jī)要對工業(yè)現(xiàn)場機(jī)器的運(yùn)行情況進(jìn)行實(shí)時(shí)監(jiān)測,只有解決了和底層控制設(shè)備通信問題,才能實(shí)現(xiàn)對工業(yè)現(xiàn)場數(shù)據(jù)的實(shí)時(shí)采集,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、動(dòng)態(tài)曲線的顯示和數(shù)據(jù)報(bào)警等功能。在Visual Studio2012運(yùn)行環(huán)境下,運(yùn)用.NET技術(shù),實(shí)現(xiàn)上位機(jī)數(shù)據(jù)監(jiān)測軟件與S7-300之間的工業(yè)以太網(wǎng)通信。結(jié)合某企業(yè)鋁軋機(jī)的應(yīng)用需求,對基于西門子 S7-300/400系列 PLC的遠(yuǎn)程監(jiān)測系統(tǒng)進(jìn)行了相關(guān)的研究與設(shè)計(jì),通過工業(yè)以太網(wǎng)通信方式,上位機(jī)數(shù)據(jù)監(jiān)測軟件可以監(jiān)測 S7-300 PLC采集的鋁軋機(jī)軸承溫度、油霧風(fēng)機(jī)速度、供油泵壓力等參數(shù),實(shí)驗(yàn)結(jié)果表明,軟件能夠?qū)崟r(shí)地采集數(shù)據(jù)和控制工業(yè)現(xiàn)場的設(shè)備。
遠(yuǎn)程監(jiān)測;工業(yè)以太網(wǎng);TCP/IP;PLC
在上位機(jī)數(shù)據(jù)監(jiān)測軟件的開發(fā)過程中,首要就是解決和底層設(shè)備間的通信問題。只有實(shí)現(xiàn)與底層設(shè)備穩(wěn)定的通信,才能與底層設(shè)備實(shí)現(xiàn)數(shù)據(jù)交換,從而實(shí)現(xiàn)監(jiān)測軟件對工業(yè)現(xiàn)場數(shù)據(jù)的采集和控制[1-2]。遠(yuǎn)程監(jiān)測系統(tǒng)的數(shù)據(jù)傳輸方式可分為有線方式和無線方式兩種,有線方式適用于對實(shí)時(shí)性的要求高和傳輸?shù)臄?shù)據(jù)量較大兩種情景,因此在視頻監(jiān)控和實(shí)時(shí)監(jiān)控等情況下被頻繁地使用;無線方式適用的情景是監(jiān)控的范圍會(huì)隨時(shí)地變化,監(jiān)控區(qū)域布線困難,傳輸數(shù)據(jù)量小,對實(shí)時(shí)性要求不高的幾種常見實(shí)現(xiàn)方式,如通信網(wǎng)絡(luò)和與之相對應(yīng)的無線通信產(chǎn)品[3]。工業(yè)以太網(wǎng)已成為一種重要的工業(yè)通信方式,其低成本、開放性好、廣泛的開發(fā)和應(yīng)用軟、硬件的支持等優(yōu)勢,成為了目前應(yīng)用廣泛的網(wǎng)絡(luò)技術(shù)[4-5]。因此,本文主要研究通過工業(yè)以太網(wǎng)的通信方式,建立數(shù)據(jù)監(jiān)測軟件和底層設(shè)備的網(wǎng)絡(luò)通信。
西門子 S7-300/400系列 PLC屬于大中型 PLC,憑借其出色的性能,在工業(yè)自動(dòng)化控制領(lǐng)域中使用廣泛,PLC很好地支持 PROFIBUS總線和工業(yè)以太網(wǎng)等多種通信方式[6-7]。
綜合對處理速度、實(shí)時(shí)性以及各 CPU的性能指標(biāo)等方面的要求,本文選用 CPU319-3 PN/ DP,它是 S7-300系列性能最高的 CPU,所用的是它基于以太網(wǎng) TCP/ IP的 PROFINET接口。監(jiān)測軟件用.NET進(jìn)行開發(fā),采用網(wǎng)絡(luò)編程技術(shù)給出了數(shù)據(jù)監(jiān)測軟件與S7-300之間通過以太網(wǎng)進(jìn)行通信的實(shí)現(xiàn)方法。
基于TCP/IP協(xié)議的網(wǎng)絡(luò)結(jié)構(gòu)模型已成為目前最為流行的組網(wǎng)方式。TCP協(xié)議工作在傳輸層,完成數(shù)據(jù)校驗(yàn),保證兩臺(tái)機(jī)器之間數(shù)據(jù)的可靠傳輸,首先其將應(yīng)用層傳過來的數(shù)據(jù)分隔成大小合適的數(shù)據(jù)塊,然后增加 TCP的報(bào)文頭信息后再傳輸給網(wǎng)絡(luò)層;IP協(xié)議工作在網(wǎng)絡(luò)層,需要完成的工作是對數(shù)據(jù)分組的路徑進(jìn)行有效的選擇[8]。
TCP建立連接的過程也被稱作3次握手,即經(jīng)過“建立連接請求”、“連接確認(rèn)”、“建立連接成功”3個(gè)步驟[9],確保了數(shù)據(jù)的穩(wěn)定傳輸,減少了數(shù)據(jù)差錯(cuò),并且按照發(fā)送順序來接收,在網(wǎng)絡(luò)不好時(shí)也能保證數(shù)據(jù)傳輸?shù)馁|(zhì)量,因此本文選用 TCP/ IP協(xié)議。
CPU 319-3PN/DP 自帶以太網(wǎng)處理模塊和以太網(wǎng)接口,以太網(wǎng)通信程序主要使用STL和FBD 語言開發(fā)。TCP 通信程序的主要功能包括:設(shè)置TCP 連接所需要的參數(shù)、建立TCP 連接、接收TCP 數(shù)據(jù)、發(fā)送TCP 數(shù)據(jù)、斷開TCP連接。
步驟1 TCP通信程序的初始化程序,包括連接狀態(tài)、斷開請求、發(fā)送請求以及發(fā)送忙等狀態(tài)位的初始化。
步驟2 TCP連接參數(shù)設(shè)置程序,完成主動(dòng)或被動(dòng)模式、本地和遠(yuǎn)程端口號(hào)、遠(yuǎn)程IP地址設(shè)備號(hào)等參數(shù)的設(shè)置。TCP 連接參數(shù)設(shè)置程序如圖 1 ,其中DEV_ID設(shè)為B#16#3,代表PLC為CPU319-3PN/DP;ACTIVE設(shè)為M0.2(常量0)時(shí),PLC工作在被動(dòng)模式(TCP Server);LOC_PORT本地端口號(hào)L#6000,上位機(jī)軟件建立TCP連接時(shí)使用此端口號(hào);當(dāng)PLC工作在被動(dòng)模式下,可以不設(shè)定遠(yuǎn)程端口號(hào)REM_PORT,IP地址設(shè)為0.0.0.0,表示對PC機(jī)的IP地址無特定需求,只要在同一個(gè)網(wǎng)段即可。
步驟3 判斷連接是否已建立,如果未完成TCP連接建立則返回主程序。
步驟4 如果連接建立完成,則順序執(zhí)行數(shù)據(jù)發(fā)送程序、數(shù)據(jù)接收程序。
FB63程序可完成TCP數(shù)據(jù)發(fā)送,如圖2所示,其中,LEN變量為數(shù)據(jù)發(fā)送長度;DATA變量為待發(fā)送的數(shù)據(jù)區(qū)域。FB63程序是異步實(shí)現(xiàn)TCP數(shù)據(jù)發(fā)送的,所以在發(fā)送完成前或者出錯(cuò)前必須保證發(fā)送區(qū)域的數(shù)據(jù)不變。
FB64程序可完成TCP數(shù)據(jù)接收,如圖3所示,其中DATA變量指定了數(shù)據(jù)的接收區(qū)域,接收到的數(shù)據(jù)的長度保存在RCVD_LEN變量中。
圖1 TCP連接參數(shù)設(shè)置程序
圖2 TCP 數(shù)據(jù)發(fā)送程序FB63
圖3 FB64數(shù)據(jù)接收程序
步驟5 最后需要判斷是否有斷開請求,如果有斷開連接請求,將連接斷開然后修改相關(guān)狀態(tài)位,然后返回主程序。
嚴(yán)格遵照步驟完成全部程序的設(shè)計(jì)工作,OB1 是主程序,它實(shí)現(xiàn)的主要功能是調(diào)用通信程序模塊;OB34、OB35 產(chǎn)生周期時(shí)鐘脈沖控制數(shù)據(jù)發(fā)送周期;OB100 為初始化程序;FB63、FB64、FB65、FB66 是 TCP 通信時(shí)用到的系統(tǒng)功能塊;FB300 為TCP 通信程序;FC97 是TCP 連接設(shè)置程序;DB300 是FB300 的背景數(shù)據(jù)塊;DB301 為接收TCP數(shù)據(jù)的數(shù)據(jù)塊;DB302 為發(fā)送TCP 數(shù)據(jù)的數(shù)據(jù)塊;UDT65 為自定義連接參數(shù)的數(shù)據(jù)結(jié)構(gòu)。
上位機(jī)監(jiān)測軟件是利用了.NET設(shè)計(jì)開發(fā)完成,具體功能有[10-11]:(1)與數(shù)據(jù)采集、控制設(shè)備(PLC)間的通信(數(shù)據(jù)交換);(2)可以方便地查詢存儲(chǔ)的歷史數(shù)據(jù),定時(shí)存儲(chǔ)現(xiàn)場傳輸?shù)臄?shù)據(jù);(3)生成參數(shù)各異的曲線圖并將這些曲線圖打印出來;(4)對采集到的數(shù)據(jù)進(jìn)行分析當(dāng)數(shù)據(jù)異常時(shí)發(fā)出報(bào)警。
上位機(jī)要對現(xiàn)場機(jī)器運(yùn)行情況進(jìn)行實(shí)時(shí)監(jiān)測,首要的是解決與下位機(jī)的通信問題,而為了解決 PLC與上位機(jī)監(jiān)測軟件之間以太網(wǎng)的通信問題,通常需要采用 Socket網(wǎng)絡(luò)編程技術(shù)加以解決。Socket是基于TCP/IP協(xié)議設(shè)計(jì)并實(shí)現(xiàn)的,因此一個(gè)Socket至少應(yīng)該包含:本地IP地址、端口號(hào)、TCP或UDP協(xié)議[12-13]。
為實(shí)現(xiàn)網(wǎng)絡(luò)間的相互通信,服務(wù)器端的程序和客戶端的程序需要分別調(diào)用不同的Socket系統(tǒng)接口函數(shù)。在TCP通信程序設(shè)計(jì)中,將ACTIVE設(shè)為M0.2(常量0)時(shí),PLC工作在被動(dòng)模式(TCP Server),即客戶端為PC機(jī),PLC為服務(wù)器端。
服務(wù)器端Socket網(wǎng)絡(luò)通信程序的關(guān)鍵步驟如下:
步驟1 WSAStartup()/socket():載入Socket庫并創(chuàng)建Socket;
步驟2 bind():為Socket綁定本地IP地址和端口號(hào);
步驟3 listen():設(shè)置監(jiān)聽模式并等待來自客戶端的Socket連接請求;
步驟4 accept():監(jiān)聽得到來自客戶端的Socket連接請求后,接收此次請求;
步驟5 send()/recv():與客戶端進(jìn)行數(shù)據(jù)通信;
步驟6 繼續(xù)等待另一連接請求;
步驟7 closesocket()/WSACleanup():關(guān)閉Socket并清空第一步載入的Socket庫。
客戶端編程的主要步驟:
步驟1 WSAStartup()/socket():載入Socket庫并創(chuàng)建Socket;
步驟2 connect():向服務(wù)器發(fā)出連接請求;
步驟3 send()/recv():與服務(wù)器端數(shù)據(jù)通信;
步驟4 closesocket()/WSACleanup():關(guān)閉Socket并清空第一步載入的Socket庫。
為便于在后臺(tái)完成數(shù)據(jù)的接收操作,TCP客戶端需要主動(dòng)提供一個(gè)與TCP服務(wù)器端進(jìn)行連接操作的功能接口??蛻舳顺绦蛲瑫r(shí)提供定義數(shù)據(jù)幀結(jié)構(gòu)的功能,按照下位機(jī)的數(shù)據(jù)幀格式完成偏移量、變量名、數(shù)據(jù)類型、長度以及說明等參數(shù)的定義,效果如圖4所示。
圖4 TCP客戶端程序
另外,在正常運(yùn)行的狀況下,被監(jiān)測的各種參數(shù)在一定時(shí)間內(nèi)保持穩(wěn)定,但當(dāng)出現(xiàn)意外情況時(shí),其參數(shù)往往會(huì)出現(xiàn)較大幅度的波動(dòng)[14]。因此,引入?yún)?shù)隨時(shí)間變化的曲線趨勢圖能夠更加形象地監(jiān)視現(xiàn)場工作情況,也有助于通過趨勢走向更準(zhǔn)備地進(jìn)行數(shù)據(jù)分析。所以提供了一個(gè)顯示曲線的按鍵來打開數(shù)據(jù)的監(jiān)測界面。
軟件調(diào)用Steema Software公司開發(fā)的TeeChart 2010組件實(shí)現(xiàn)了監(jiān)控曲線的功能。 TeeChart支持多數(shù)據(jù)同時(shí)監(jiān)控,可以在同一窗口觀測不同數(shù)據(jù)的曲線走勢[15],從而容易進(jìn)行比較且可以通過曲線進(jìn)行放大,TeeChart也支持把曲線圖存入相連的數(shù)據(jù)庫的功能,曲線監(jiān)控如圖5所示。
圖5 數(shù)據(jù)監(jiān)測曲線
本文實(shí)現(xiàn)了上位機(jī)數(shù)據(jù)監(jiān)測軟件與SIMATIC S7-300之間的以太網(wǎng)通信,對工業(yè)現(xiàn)場數(shù)據(jù)的實(shí)時(shí)采集,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、動(dòng)態(tài)曲線的顯示和數(shù)據(jù)報(bào)警等功能。
[1] 槐利,譚一川,程玉龍.基于PLC的煤礦壓風(fēng)機(jī)自動(dòng)控制系統(tǒng)[J].工礦自動(dòng)化,2012, 38(4):13-16.
[2] 徐彪,朱健銘,蔣朝陽,等. 通用型工業(yè)級數(shù)據(jù)采集和監(jiān)控系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測量與控制, 2014, 22(10): 3192-3195,3198.
[3] 郭榮祥,雷高陽.基于PLC和GPRS的遠(yuǎn)程監(jiān)控供水系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制, 2013, 21(10): 2694-2696.
[4] 王文磊,徐汀榮.PLC 和PC 基于工業(yè)以太網(wǎng)通信研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)息,2006,22(13):135-138.
[5] 胡曉欽,張曉光,尹春榮,等.基于工業(yè)以太網(wǎng)的泵房綜合自動(dòng)化系統(tǒng)的設(shè)計(jì)[J].工礦自動(dòng)化,2009,35(6): 81-83.
[6] Dana S,Saghyroon A,Elrayes A.Development of monitoring and control platform for PLC-based applicatios[J]. Computer Standards & Interfaces,2008, 30(3):157-166.
[7] Bolton W. Programmable logic controllers[M].Boston:Newnes, 2009.
[8] 安劍奇,廖力清,李超林. 鋁箔軋機(jī)網(wǎng)絡(luò)控制系統(tǒng)的研制[J]. 計(jì)算機(jī)測量與控制, 2007, 5(9): 1163-1165.
[9] 吳瓊.基于工業(yè)以太網(wǎng)的集散控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南昌:南昌航空大學(xué),2013.
[10] 譚延良,盛占石,李正明. 基于公用電話交換網(wǎng)的電壓監(jiān)測系統(tǒng)軟件設(shè)計(jì)[J].微機(jī)與應(yīng)用,2001, 22(3):45-47.
[11] 王曉遠(yuǎn),杜靜娟,齊利曉,等. 基于工業(yè)組態(tài)軟件WinCC的化工工業(yè)監(jiān)控系統(tǒng)[J]. 化工自動(dòng)化及儀表, 2006, 33(5): 41-43.
[12] 李杰.基于C#.NET的電力監(jiān)控主站后臺(tái)監(jiān)控程序的設(shè)計(jì)[D].廈門:廈門大學(xué),2008.
[13] 許銳炮.Socket在C#程序中的應(yīng)用[J].科技視界,2014(21):64-65.
[14] 楊大全,拱長青, 董偉嗣,等.Socket 編程技術(shù)[J]. 沈陽工業(yè)大學(xué)學(xué)報(bào),2000, 22(4):313-316.
[15] 馮曦.基于西門子S7-400PLC的遠(yuǎn)程監(jiān)測系統(tǒng)開發(fā)[D].秦皇島:燕山大學(xué),2014.
Realization of Communication Between PLC and Supervision Computer Through Industrial Ethernet Based on .NET
ZHU Jinjin, SHEN Tuhao, BAO Kejin
(School of Computer Science and Telecommunication Engineering, Jiangsu University, Zhenjiang 212013, China)
The remote monitoring system requires the real-time monitoring of the operation of the industrial field machine. Not until the communication problem of the underlying control equipment is solved can the real-time collection, storage, dynamic curve display, data alarm and other operations of the industrial field data be achieved. In this paper, the industrial Ethernet communication between the upper machine data monitoring software and S7-300 is under the environment of Visual Studio2012 and supported by the .NET technology. And the remote monitoring system based on Siemens S7-300/400 series PLC is studied combined with the application requirements of an enterprise of the aluminum rolling mill. Through the industrial Ethernet communication mode, the PC data monitoring software can monitor S7-300 PLC to collect the aluminum rolling mill bearing temperature for the oil pump, oil mist fan speed, pressure, etc. Experiments verify that our software can collect real-time data and control the industrial field devices.
remote monitoring; industrial ethernet; TCP/IP; PLC
2016- 03- 11
朱津津(1991-),女,碩士研究生。研究方向:嵌入式系統(tǒng)應(yīng)用。申屠浩(1972-),男,碩士,講師。研究方向:嵌入式系統(tǒng)應(yīng)用。鮑可進(jìn)(1958-),男,碩士,教授。研究方向:嵌入式系統(tǒng)應(yīng)用。
10.16180/j.cnki.issn1007-7820.2016.11.033
TP277.2
A
1007-7820(2016)11-115-04