雷 斌,馬殷元,蔣兆遠,柴 獲
(蘭州交通大學 機電技術研究所,甘肅 蘭州730070)
生產過程自動化、企業和行業管理信息化是工業化和信息化融合的兩個切入點。在制造業和物流倉儲等行業的生產底層控制環節,常使用PLC作為控制器實現生產過程自動化。在制造生產車間,常使用計算機監控系統對生產過程進行監控、管理或調度[1],監控系統直接管控的對象一般是PLC。計算機監控系統與PLC的通信技術是實現車間管控一體化即車間級兩化融合的一項關鍵技術。
近年來,車間管控一體化中越來越多地使用以太網為網絡架構[1-3]。一調查表明工業用戶中有78%的用戶在使用Ethernet TCP/IP協議網絡[10]。以太網工業協議 Ethernet/IP(Ethernet/Industrial protocol)協議是一整套基于以太網的工業通信協議,Ethernet/IP是控制及信息協議CIP(control and information protocol)在以太網上的實現,它將對等和企業管理連接的概念帶進了工廠,提供面向實時控制、設備組態和數據采集的完整的制造業以太網解決方案,是一種可用于控制系統信息化的低成本高性能的方案[3]。兩臺設備使用工業以太網協議,在100M的全雙工以太網交換機的網絡中,其點對點通信的數據更新間隔為8ms,可滿足大多數實時控制通信需求[4]。文獻 [9]介紹了使用開發的網關實現控制網絡和信息網絡的集成,但還未使用標準協議,通用性不強。
目前支持以太網環境的CIP通信軟件產品數量很少,大多為國外公司開發。這些軟件基于COM技術開發,存在系統較龐大、跨進程效率較低等問題。很少有文獻介紹監控系統中CIP通信軟件的實現,或開發的系統尚未達到實際應用水平。開發基于以太網和CIP的計算機監控PLC通信軟件對我國企業控制信息安全和實現兩化融合有重要意義。
CIP是一個對等的和面向對象的協議,它提供工業裝置和高層設備之間的 “連接”,并獨立于物理層和數據鏈路層[5]。“連接”分為I/O連接和顯式消息連接。I/O連接提供產生信息的應用程序和一個或多個消費信息的應用程序間的專用通信路徑,一般用于實時性要求更高的底層輸入輸出信息通信。顯式消息連接提供2個設備之間普通的、多用途通信路徑。顯式消息通過顯式消息連接傳輸。顯式消息可被用于指揮一個獨特的任務的執行和報告任務執行的結果。顯式消息傳遞機制提供了一種手段,使得典型的面向請求/響應的函數可以借助此手段來執行[5]。由上述分析可見,顯式消息傳遞通信方式適合用于監控計算機和PLC間的通信。
開發基于以太網和TCP/IP的CIP通信軟件首先需要了解CIP在Ethernet/IP中的適配。為了在TCP/IP上使用CIP協議,Ethernet/IP協議在適配和數據鏈路層中的TCP/IP協議之上用封裝協議來適配CIP[6]。以太網幀包含封裝消息包的格式如圖1所示。超過長度的封裝消息包由底層的TCP負責分割和合并。監控計算機軟件開發環境中一般都包含了TCP/IP網絡操作接口函數,它負責填充TCP/IP頭和尾數據,CIP通信軟件需要編程填充封裝消息包的封裝頭部和其后封裝數據。

圖1 包含封裝消息包的以太網幀

圖2 封裝消息包結構
封裝消息包的結構如圖2所示,內容依次是命令代碼、數據長度、會話句柄、響應狀態、發送端事件環境、可選項、封裝數據。需要注意的是其中的多字節數據 (如,數據長度)采用小權字節在后的順序格式,這種格式與互聯網協議的規定相反。監控系統通信中常用的命令代碼有“0x0065:注冊會話、0x0066:注銷會話、0x006F:發送請求/回應數據”。“發送請求/回應數據”命令用于在通信的發起者和接收者之間傳輸封裝的請求/回應包。本文介紹的監控計算機通信軟件使用該命令讀/寫PLC內存數據。封裝數據需遵循通用包格式CPF(common packet format)規范,數據長度在0~65511字節范圍可變。封裝數據內容依次為接口句柄、超時值和CPF格式數據[6]。
監控系統由監控計算機、PLC和通信設備組成。為了提高可靠性和可用性,PLC和傳感器以及致動器一般應該設計成一個自治的控制系統,不管監控計算機是否可用。換句話說,PLC對物理系統的實時控制不應依賴于監控計算機和通信。監控計算機只在需要改變過程控制的設定點、配置新參數、發送新任務命令或獲取任務的執行結果等情況下與PLC通信。當監控計算機需要向PLC發送新任務命令時由監控計算機主動發起通信,監控計算機通過寫PLC指定存儲區向PLC發送任務。當PLC需要向監控計算機報告任務執行情況時,似乎應由PLC主動發起通信。然而,為了簡化系統設計,本系統PLC軟件中僅把報告數據放入指定的存儲區,監控計算機通過讀PLC指定存儲區數據獲得任務的執行結果。PLC作為服務器,對外提供對其內部數據區的讀寫服務。這樣構成一個單向的服務器/客戶端通信模式。PLC不依賴于監控軟件實現細節,就可實現互發信息功能。本系統設計在PLC數據存儲區開辟2塊數據區“窗口”,作為通信數據區。一塊數據區用于監控計算機發送指令即PC寫區,專門由監控計算機寫入發給PLC的指令。另一塊用于PLC報告狀態即PLC寫區,由PLC寫、監控計算機讀。同時在通信數據區設置一些標志位以便于同步和應答,如發指令請求標志、發報告請求標志[7]。
上述內容構成了用戶層通信協議。監控計算機與PLC的通信軟件首先需要根據CIP通信協議,實現對PLC存儲區數據的讀寫,然后在此基礎上實現用戶層應答協議。
監控通信軟件在Microsoft Visual Studio 2005開發環境中使用C#語言實現,監控對象PLC為Logix5000系列。根據上文的分析,通信軟件按層次劃分為2層,底層為基于以太網的CIP通信類,高層為基于CIP通信類的監控通信類。監控通信類實現用戶層通信應答協議,為應用軟件對象提供通信服務。圖3為CIP通信類圖,圖4為監控通信類圖。

CIP通信類基于TCP/IP實現封裝協議和CIP協議。底層開發首先需要選擇TCP/IP協議棧。文獻 [8]詳細說明了對TCP/IP棧的要求,Microsoft Visual Studio 2005提供的協議棧符合要求。Microsoft Visual Studio 2005中對協議棧進一步做了面向對象的封裝,提供了協議棧的多種使用模式。在C#語言的System.Net.Sockets命名空間中提供的Socket、TcpClient、TcpListener等類均實現了TCP/IP底層通信協議。在監控系統與PLC的通信中,監控計算機為通信主動發起者,PLC提供數據服務,因而使用Tcp-Client類收發網絡數據較其它類最簡單方便。如前所述,監控計算機對PLC發送命令或讀取報告使用CIP顯式消息傳輸,這要求上層的讀寫操作都首先從調用底層TcpClient對象的 “寫網絡”操作開始發起通信。盡管以太網操作是全雙工的,但封裝協議中的 “發送請求/回應數據”命令要求通信發起者遵循 “請求/回應”的周期順序,而不可以按照“請求/請求/回應/回應”的順序操作。為了避免多線程監控軟件中可能引發的錯誤順序操作,在一個CIP通信對象的讀寫函數設計中使用了互鎖機制,即在讀寫函數進入網絡操作的臨界代碼段前鎖定網絡操作權,操作完成后釋放網絡操作權。不同的CIP通信對象之間因為TcpClient本地端口和封裝協議的會話句柄不相同,不存在網絡資源共享和競爭。
對PLC數據的讀寫之前需要發送注冊會話命令,獲得PLC回應的會話句柄,此后可在讀寫PLC數據命令中多次使用此句柄。當結束對PLC的數據的讀寫操作后需要發送注銷會話命令,當TCP連接斷開時,PLC也會自動廢棄此連接上的句柄。
在封裝數據的通用包格式數據中需要填充16字節包裝命令特定數據 (command specific data)頭部。數據具體依次是接口句柄 (CIP通信時取00 00 00 00H)、超時值 (00 00H)、包含項數 (02 00H)、地址項標識 (00 00H)、地址項數據 (00 00H)、數據項標示 (B20 00H)、數據項長度(2字節)。其后為6字節CIP數據頭部和4字節服務。通信軟件使用CIP讀數據服務、寫數據服務以及多請求服務。具體數據填充順序和格式詳見文獻 [12]。
由于每次網絡操作涉及的底層傳輸、打包、解包等,這些操作會消耗額外時間,且網絡操作相對時間較長。為此CIP通信類設計提供了讀/寫多變量函數,以減少網絡操作次數。讀/寫多變量函數通過一次網絡操作可讀取或寫入2~6個PLC內存變量 (數組按一個變量對待),提高了通信效率。讀寫多變量函數使用CIP多請求服務 (Multi-Request Service)包實現。
監控通信對象包含一個CIP通信對象。為了防止監控通信對象發給PLC的多個命令發生重疊,造成命令丟失,在PLC內存中定義了命令緩沖區標志來說明命令緩沖區的狀態。PLC取走命令后復位相應命令緩沖區標志,指示通信對象可以寫入下一條命令。通信對象寫入新命令后置位命令緩沖區標志。具體流程如圖5所示。監控通信對象處理PLC發給監控計算機的報告時也使用緩沖區標志來做同步應答。需要說明的是,PLC向監控通信對象發送報告操作實際上只是把報告內容寫入PLC內存中的報告緩沖區,并置位報告緩沖區標志。監控通信對象處理報告流程如圖6所示。上述用戶層應答協議也可在一定程度上避免非法的操作,從而增強網絡的安全性。

圖5 發送監控命令流程

圖6 讀取PLC報告流程
由于PLC發送報告的時間具有隨機性,監控軟件反復查詢PLC報告不是一個高效率的方法。本系統采用的方法是,監控通信對象讀到有效報告后使用事件處理機制主動把PLC報告發給監控軟件。監控通信對象設計采用了觀察者設計模式,定義并開放了一個事件。通信軟件自動 “拉入”PLC報告,然后主動 “推”給觀察者——監控軟件。為避免單個通信緩沖區的通信瓶頸,把命令緩沖區和報告緩沖區分別擴展為4個數組,設計的緩沖區標志為2個4元素的數組。同時,為了減少網絡操作次數,圖5和圖6中的“通信對象讀PLC報告緩沖區標志”和 “通信對象讀PLC命令緩沖區標志”2個模塊的讀PLC操作是在一次通信中完成的,編程使用了CIP通信對象的 “讀多變量函數”。
試驗環境中使用了商用8口10M/100M自適應以太網交換機 (交換式集線器),運行通信軟件的監控計算機配置Pentium 4 3.0GHz雙核CPU和1GB內存,通過100Mbps網卡 與 交 換 機 連 接。PLC 型 號 為1756-L62Control-Logix5562Controller 并 配 型 號 為 1756-ENBT/A 10/100Mbps網卡,該網卡與監控計算機連接在同一個交換機上,交換機上不連接其它設備。
測試軟件中采用本文開發的通信軟件,每隔2s連續100次使用CIP多請求服務讀取PLC中的6個整數型數組(共420字節),連續測試1小時,共測得1800組數據。使用Ethereal監測捕獲的發出的包大小為256字節,收到的包大小為586字節。讀取操作全部成功。沒讀取100次,進行1次注冊會話和注銷會話操作。測得的連續讀100次的總時間在1562~1609ms之間單次讀取時間最短15ms,最長31ms。讀取最長時間 (31ms)發生在注冊會話后的第一次讀取。第二次及以后的讀取時間在15ms~16ms之間。
通過本機OPC Server,采用同步讀取設備方式,讀100次總讀取時間在4968ms~5500ms之間。通過本機OPC Server,采用同步讀取緩存方式,讀100次總讀取時間在3421ms~3593ms之間。在上述測試情況下,本文開發的通信軟件在通信速度方面有明顯優勢。原因在于,OPC Server增加了數據交換的中間環節,從而加長了通信延遲。也說明,在單客戶端情況下OPC通信不具有速度優勢。文獻[11]的測試結果是OPC通信方式數據更新間隔大于25ms,本文測試條件下OPC通信周期在35ms左右,本文開發的通信軟件通信周期在16ms左右,可用于中等實時要求的系統中。本文開發的通信軟件不支持多客戶端通信方式。相對OPC Server通信方式而言,本通信軟件是一種輕量級實現。測得的單次讀取通信延遲時間為16ms左右,該延遲時間包含了收、發2個環節,與文獻 [4]測得的8ms時延是相符的。
從Windows任務管理器看,集成監控通信軟件的測試軟件運行中占用內存9768K左右,測試用的OPC Server軟件占用內存18692K左右。
應用面向對象的系統分析與設計方法開發了實時監控系統通信軟件。CIP通信底層采用加鎖設計,保證了多線程環境應用安全。通信軟件采用分層設計,具有低耦合、可重用優點。該通信軟件已在某大型機場貨運中心多工位多路徑貨物處理線和某自動化流水線的2個監控系統中應用,滿足了監控系統實時性和可靠性要求。替代了國外公司產品。
[1]MA Yinyuan,JIANG Zhaoyuan.Design and realization of management and control system integration of AS/RS [J].Computer Engineering,2007,33 (19):233-255 (in Chinese).[馬殷元,蔣兆遠.自動化倉庫管理與控制系統集成設計與實現 [J].計算機工程,2007,33 (19):233-255.]
[2]CHEN Lina,LI Chengtie,LI Qiuming,et al.Expectation of Ethernet/IP control system in E-enterprise [J].Chinese Journal of Scientific Instrument,2006,27 (6):600-602 (in Chinese).[陳麗娜,李成鐵,李秋明,等.基于Ethernet/IP信息化控制系統展望 [J].儀器儀表學報,2006,27 (6):600-602.]
[3]LIU Jian,ZHAO Fang.CIP Network-a future-proof industrial network architecture [J].Low Voltage Apparatus,2007,49(11):32-41 (in Chinese). [劉健,趙芳.CIP Networks——前景可靠的工業網絡架構 [J].低壓電器,2007,49 (11):32-41.]
[4]Naveen Kalappa,Kristen Acton,Marco Antolovic,et al.Experimental determination of real time peer to peer communication characteristics of EtherNet/IP [C].IEEE Conference on Emerging Technologies and Factory Automation,2007:1061-1064.
[5]Open DeviceNet Vendor Association.CIP Networks Library,Volume 1,Common Industrial Protocol,Edition 3.3 [Z].2007.
[6]Open DeviceNet Vendor Association.CIP Networks Library,Volume 2,EtherNet/IP Adaptation of CIP,Edition 1.4 [Z].2007.
[7] MA Yinyuan,DU Yajiang.Communication protocol based on Ethernet for supervisory control system of AS/RS [J].Hoisting and Conveying Machinery,2007,47 (1):22-25 (in Chinese).[馬殷元,杜亞江.基于以太網的自動化倉庫設備監控協議的設計及實現 [J].起重運輸機械,2007,47 (1):22-25.]
[8]Open DeviceNet Vendor Association,Control Net International,Industrial Ethernet Association.General Recommendations for Ethernetnet/IP Developers V2.0 [Z].2005.
[9]QIAO Yi,ZHANG Tao,TANG Mingxin,et al.Realization of integrating control and information network based on embedded gateway [J].Chinese Journal of Scientific Instrument,2005,26 (12):1229-1232 (in Chinese). [喬毅,張濤,唐明,等.由嵌入式網關實現控制網絡與信息網絡的集成 [J].儀器儀表學報,2005,26 (12):1229-1232.]
[10]Moyne J R,Tilbury D M.The emergence of industrial control networks for manufacturing control diagnostics and safety data[C].Proceedings of the IEEE,2007:29-47.
[11]Parrott J T,Moyne J R,Tilbury D M.Experimental determination of network quality of service in Ethernet UDP OPC and VPN [C].Minneapolis,MN:Proceedings of the American Control Conference,2006:4864-4869.
[12]Rockwell Automation,Inc Logix5000data access programming manual[Z].2009.