国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Ethernet/IP 協(xié)議的分析實現(xiàn)及在工廠信息化中的應用

2015-12-17 13:07李澤琦
電腦知識與技術 2015年28期
關鍵詞:通信控制系統(tǒng)信息系統(tǒng)

李澤琦

摘要:隨著信息技術的快速發(fā)展,各種信息管理系統(tǒng)在各行各業(yè)得到了廣泛的應用,在工業(yè)信息系統(tǒng)的實現(xiàn)過程中往往需要信息系統(tǒng)與控制系統(tǒng)互相通信進行數(shù)據(jù)交換。在實際實現(xiàn)中,控制系統(tǒng)只是被動的響應數(shù)據(jù)讀寫的請求,如果請求的數(shù)據(jù)量較大,并且在控制系統(tǒng)的數(shù)據(jù)實際變化頻率不高的情況下將造成大量的無用讀寫,浪費控制系統(tǒng)通信帶寬和系統(tǒng)運算能力。該文介紹一種利用Ethernet/IP協(xié)議實現(xiàn)控制系統(tǒng)主動發(fā)送讀寫數(shù)據(jù)的方式,以減少網(wǎng)絡上的無效讀寫請求,提高信息系統(tǒng)與控制系統(tǒng)之間的通信效率。

關鍵詞:Ethernet/IP;信息系統(tǒng);控制系統(tǒng);通信

中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)27-0024-02

隨著信息技術的快速發(fā)展,各種信息管理系統(tǒng)在各行各業(yè)都得到了廣泛的應用。信息管理系統(tǒng)也從最初的單機系統(tǒng)發(fā)展到網(wǎng)絡系統(tǒng)。隨著信息系統(tǒng)的不斷壯大,信息系統(tǒng)與底層工業(yè)控制系統(tǒng)之間的信息交互越來越頻繁,數(shù)據(jù)量越來越大。如何構建一個穩(wěn)定和高效的數(shù)據(jù)交互層變得越來越重要。

1 常用信息系統(tǒng)與控制系統(tǒng)通信方式及缺點

在現(xiàn)有的方案中,大多數(shù)信息系統(tǒng)與工業(yè)控制系統(tǒng)之間的交互是通過OPC技術來實現(xiàn)的。OPC是OLE for Process Control的簡稱,是一個工業(yè)標準,它是許多世界領先的自動化軟硬件公司與微軟公司合作定制的。通常每個硬件供應商會為其設備開發(fā)一個實現(xiàn)了OPC標準接口的軟件。因為各個硬件廠商都遵循同一軟件標準,因此,作為OPC客戶端的上層信息系統(tǒng)應用不用關心底層的硬件實現(xiàn)細節(jié),只要按照OPC的標準編寫客戶端程序就可與廠商提供的接口通信讀寫數(shù)據(jù)。

OPC標準最初是在1996年發(fā)布的。因此OPC標準有著那個時代的局限性。首先當時的OPC標準是基于微軟的COM技術實現(xiàn)的,不能很好地跨操作系統(tǒng)平臺并且對復雜網(wǎng)絡環(huán)境不能很好地支持。為了適應技術發(fā)展的變化,OPC基金會在2006年發(fā)布了OPC UA架構,OPC UA不再依靠COM而是基于面向服務架構(SOA),這種架構獨立于編程語言和操作系統(tǒng),提供了平臺獨立性,高可靠性,高擴展性和互聯(lián)網(wǎng)連接性等一系列重要的特性。

然而,即使使用OPC UA,信息系統(tǒng)也只能主動地去與工業(yè)控制系統(tǒng)通信,并不能被動的從控制系統(tǒng)接受數(shù)據(jù),因此為了獲得控制系統(tǒng)中變化的數(shù)據(jù),信息系統(tǒng)只能不斷地去輪詢,這樣當控制系統(tǒng)的數(shù)據(jù)變化頻率不規(guī)律時,信息系統(tǒng)將浪費大量的輪詢時間和網(wǎng)絡帶寬。

2 Ethernet/IP協(xié)議的介紹

以太網(wǎng)是一種廣泛使用的局域網(wǎng)實現(xiàn),隨著其廣泛的應用,以太網(wǎng)也漸漸進入到工業(yè)控制領域,各大硬件廠商也都推出了自家的工業(yè)以太網(wǎng)產(chǎn)品和相應的標準。其中美國Rockwell公司提出的Ethernet/IP協(xié)議就是一種廣泛應用的工業(yè)以太網(wǎng)標準。它底層使用以太網(wǎng)和TCP/IP、UDP/IP協(xié)議,能與上層信息系統(tǒng)無縫連接,同時它應用層使用CIP(通用工業(yè)協(xié)議)可以直接與支持CIP協(xié)議的設備包括ControlNet和DeviceNet設備通信?;谶@種特性,可以通過在信息系統(tǒng)中實現(xiàn)Ethernet/IP協(xié)議從而實現(xiàn)信息系統(tǒng)與工業(yè)控制系統(tǒng)的雙向通信。

本文將著重介紹一種軟件實現(xiàn)的Ethernet/IP方式,通過這種方式實現(xiàn)與控制系統(tǒng)的雙向通信。首先對Ethernet/IP協(xié)議的通信流程和協(xié)議幀棧進行分析,然后使用Python語言實現(xiàn)Ethernet/IP協(xié)議,并測試數(shù)據(jù)的雙向通信。

3 Ethernet/IP協(xié)議的分析

Ethernet/IP協(xié)議使用TCP/IP協(xié)議發(fā)送報文。首先作為服務端的一方監(jiān)聽端口0xAF12,當有客戶端連接時首先建立TCP連接,緊接著客戶端會發(fā)送一個RegisterSession的請求,服務端會應答這個請求并給客戶端返回一個會話句柄,客戶端在之后的每次請求都會包含這個會話句柄。這時客戶端和服務器之間就建立了會話,客戶端可以向服務端發(fā)送UCMM報文??蛻舳丝梢韵蚍斩税l(fā)送一個包含F(xiàn)orward Open的服務請求的報文,服務端響應請求并返回一個ConnectionID的報文,這時客戶端和服務器之間就建立了一個顯式的CIP連接,之后客戶端就可以向服務器發(fā)送CIP ReadData和CIP WriteData的服務請求從而實現(xiàn)對控制系統(tǒng)的數(shù)據(jù)的讀寫。當數(shù)據(jù)讀寫結束時客戶端可以向服務器發(fā)送一個包含F(xiàn)orward Close 服務的請求報文,服務端響應請求并關閉這個顯式連接。接著客戶端可以發(fā)送UnRegisterSession的請求,服務器響應請求并關閉TCP連接。

一個Ethernet/IP報文包含一個24字節(jié)固定長度的封裝頭部和不定長度的數(shù)據(jù),其中頭部包含請求命令、長度、會話句柄、狀態(tài)、發(fā)送上下文、選項6個字段。其中請求命令表示請求的類型,長度表示的是報文除頭部外的字節(jié)長度,會話句柄如上文所說由服務端返回給客戶端,狀態(tài)表示請求的狀態(tài),發(fā)送上下文用于保證請求和響應的對應。在封裝頭部之后一般包含一個稱之為CPF的通用包格式,每個CPF中包含若干個條目,一般情況下會包含一個地址條目和一個數(shù)據(jù)條目。如果客戶端與服務器之間建立了連接,會在地址條目中包含對方的ConnectionID,并且在數(shù)據(jù)條目中包含序列號。在CPF之后會包含一個服務請求頭部,服務請求頭部包含了請求的服務代碼,請求路徑的字長度和請求路徑。之后的數(shù)據(jù)根據(jù)請求的服務類型不同包含不同的內(nèi)容。其中當請求的服務為Forward Open時,之后的數(shù)據(jù)為連接的參數(shù)以及連接的路徑。當請求的服務為CIP Read 或CIP Write時,之后的數(shù)據(jù)為需要讀寫的元素的個數(shù)。當請求的服務為Forward Close時,之后的數(shù)據(jù)為客戶端的連接參數(shù)和連接的路徑。

4 Ethernet/IP協(xié)議的實現(xiàn)

根據(jù)上文的定義,采用Python語言來定義需要使用的基本包結構并實現(xiàn)一個簡單的客戶端和服務器。之所以采用Python語言,是因為其語言設計簡單高效,可用于快速的實現(xiàn)。并且其對網(wǎng)絡編程有很好的支持,有很多開源的網(wǎng)絡庫實現(xiàn),編寫代碼時不必要再關心不必要的細節(jié),同時Python語言支持多種操作系統(tǒng),具有很好的跨平臺性。使用Python語言來實現(xiàn)可以更多的關心Ethernet/IP的基礎定義實現(xiàn),從而能對Ethernet/IP協(xié)議有更深入的認識。

首先定義Ethernet/IP協(xié)議的封裝頭部類,在其中定義每個上文所描述的字段為封裝頭部類的成員變量,并定義兩個名為pack和unpack的成員函數(shù)。其中pack函數(shù)用于將其中的成員變量安裝封裝順序打包為一個二進制字節(jié)數(shù)組,而unpack函數(shù)用于將從網(wǎng)絡上接收的二進制字節(jié)數(shù)組解包為類的成員變量。

之后可以按照定義封裝頭部的方式,依次定義CPF類和相應的條目類、服務請求類和服務響應類、Forward Open連接參數(shù)類、Forward Close 連接參數(shù)類。

有了相應的報文封裝類,就可以先進行客戶端的編寫并對協(xié)議的實現(xiàn)進行初步測試。首先,按照Ethernet/IP協(xié)議的通信流程定義OpenSocket、RegisterSession、Forward_Open、ReadData、WriteData、Forward_Close、UnRegisterSession等函數(shù)。其中OpenSocket函數(shù)用于建立到服務器0xAF12端口的連接;RegisterSession函數(shù)用于向服務器發(fā)送RegisterSession請求報文并接收服務器返回的會話句柄;Forward_Open用于創(chuàng)建連接參數(shù)報文并按封裝結構發(fā)送給服務器,然后從服務器接收響應報文并解包獲得服務器的ConnectionID; ReadData函數(shù)使用已獲得的會話句柄和ConnectionID向服務器發(fā)送CIP Read服務請求報文并接收服務器的響應報文獲得需要讀取數(shù)據(jù);WriteData函數(shù)與ReadData類似只是發(fā)送CIP Write服務請求;Forward_Close函數(shù)和UnRegisterSession函數(shù)則分別用于關閉連接和注銷會話。之后按順序調(diào)用以上函數(shù),將客戶端連接到Rockwell的ControlLogix 5573控制器測試數(shù)據(jù)的讀寫,經(jīng)測試數(shù)據(jù)的讀寫成功。

通過客戶端可以實現(xiàn)信息系統(tǒng)主動從控制系統(tǒng)讀寫數(shù)據(jù),之后需要實現(xiàn)一個服務器才能被動從控制系統(tǒng)接收數(shù)據(jù)。服務器的實現(xiàn)采用流行的Twisted網(wǎng)絡庫,該網(wǎng)絡庫基于事件驅(qū)動模型,將網(wǎng)絡的讀寫操作進行封裝,開發(fā)者只需要關注數(shù)據(jù)的處理。因此服務器的實現(xiàn)只需要定義EIPMsgServer和EIPProtocol類并分別繼承ServerFactory和Protocol類。EIPMsgServer類在接收到一個客戶端連接后會自動創(chuàng)建一個EIPProtocol類,當客戶端有數(shù)據(jù)傳輸時就會調(diào)用EIPProtocol類中的dataReceived函數(shù)。在dataReceived函數(shù)中,首先讀取客戶端發(fā)送前24字節(jié)數(shù)據(jù)并使用之前定義的封裝頭部類對其進行解包,從而可以獲得剩余數(shù)據(jù)的長度,然后讀取剩余長度的數(shù)據(jù),將封裝頭部和剩余數(shù)據(jù)一起交給自定義的processPack函數(shù)處理,如此循環(huán)處理客戶端發(fā)送來的數(shù)據(jù)。在processPack函數(shù)中讀取封裝頭部中的命令字段,將不同的命令交給相應的自定義函數(shù)處理。在相應的自定義函數(shù)中,對剩余數(shù)據(jù)按照相應的命令和服務請求解包為相應的封裝類,根據(jù)封裝類的請求創(chuàng)建響應封裝類并打包發(fā)送給客戶端。最后在ControlLogix 控制器中編寫程序,創(chuàng)建一條MSG指令將路徑指向編寫好的服務器并觸發(fā)指令,可以看到從控制器中成功地實現(xiàn)了對服務器中數(shù)據(jù)的讀寫。

至此該協(xié)議的實現(xiàn)已經(jīng)可以被動的接收數(shù)據(jù)了,之后可以將該協(xié)議的實現(xiàn)集成到實際的信息系統(tǒng)中,既可以實現(xiàn)從信息系統(tǒng)主動獲取控制系統(tǒng)的數(shù)據(jù)也可以實現(xiàn)信息系統(tǒng)被動的從控制系統(tǒng)獲得數(shù)據(jù)。當控制系統(tǒng)中的一些數(shù)據(jù)并不長期變化時可以通過控制系統(tǒng)直接向信息系統(tǒng)發(fā)送MSG指令傳送數(shù)據(jù),而不需要信息系統(tǒng)按照一定的頻率一直向控制系統(tǒng)發(fā)送數(shù)據(jù)讀寫請求,從而大大地節(jié)省了網(wǎng)絡帶寬并減輕了控制系統(tǒng)的運行壓力。

5 總結

本文分析了信息系統(tǒng)與控制系統(tǒng)通信常用的OPC接口方式并分析其存在的缺陷,進而通過分析Ethernet/IP協(xié)議,分別實現(xiàn)了通過Ethernet/IP協(xié)議讀寫控制系統(tǒng)數(shù)據(jù)的客戶端和接受控制系統(tǒng)MSG指令響應客戶端數(shù)據(jù)讀寫請求的服務器。提供了一種信息系統(tǒng)與控制系統(tǒng)的通信新思路,為以后工廠信息化中信息系統(tǒng)和控制系統(tǒng)的互聯(lián)互通提供了更多的選擇。

參考文獻:

[1] Rockwell Automation. Communicating with RA Products Using EtherNet/IP Explicit Messaging (Rev. 1.2), ab.rockwellautomation.com.

[2] 孫軍凱.從EtherNet/IP工業(yè)以太網(wǎng)到工廠信息化技術[J].自動化博覽,2004(4):35-39.

猜你喜歡
通信控制系統(tǒng)信息系統(tǒng)
企業(yè)信息系統(tǒng)安全防護
基于區(qū)塊鏈的通航維護信息系統(tǒng)研究
信息系統(tǒng)審計中計算機審計的應用
Ka頻段衛(wèi)星通信自適應抗雨衰控制系統(tǒng)設計
簡述計算機通信網(wǎng)絡安全與防護策略
Android環(huán)境下主UI線程與子線程通信機制研究
無線自組網(wǎng)在野戰(zhàn)防空通信系統(tǒng)中的應用
基于PLC的鋼廠熱連軋感應加熱爐控制系統(tǒng)實現(xiàn)
對數(shù)字微波通信技術的研究
基于SG-I6000的信息系統(tǒng)運檢自動化診斷實踐