摘 要: 不同生產廠家的工業控制系統一般具有不同的通信接口、通信方式及通信協議,這給應用軟件開發帶來極大不便。中間件作為分布式環境及網絡異構問題的解決方案備受關注。從異構通信協議同構化思想入手,在研究理論和實驗的基礎上,研究了在工業控制系統中異構通信網絡通信中間件的解決方案,詳細設計并實現了針對PLC的異構通信網絡中間件系統。
關鍵詞: 控制系統; 中間件; 異構通信; 通信協議
中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2012)12-11-03
Design of communication middleware and software in heterogeneous system
Huang Guanren1, Zhao Jianyong2
(1. Zhejiang Provincial Testing Institute of Electronic Information Products, Hangzhou, Zhejiang 310012, China; 2. Hangzhou Dianzi University)
Abstract: Different industrial control systems have different communication interfaces, communication means and communication protocol, which is really inconvenient for application developpers. Middleware technologies are getting more attention as a solution to this problem. Starting with how to amalgamate heterogeneous structure of the communication protocol, based on certain theoretical and experimental research, heterogeneous communications network communication middleware solutions in industrial control systems are studied. The PLC heterogeneous communications network middleware system is designed and realized.
Key words: control system; middleware; heterogeneous communication; communication protocol
0 引言
PLC可編程邏輯控制器、DCS集散控制系統極大地推動了工業自動化的發展。然而,在采用這些控制系統的時候,出于對安全、經濟等多方面的考慮,往往會采用多個不同廠家生產的控制器。不同制造商提供的控制系統在結構設計、標準等方面自成體系,互不兼容,技術標準互不公開,這些異構的通信網絡環境由于訪問方法和機制各不相同,即通信協議各不相同,使得控制系統之間的通信連接不易實現[1-2]。
為了便捷地在不同的通信接口之間通信,更好地開發和運行異構平臺上的應用軟件,解決PC機與以嵌入式技術為基礎的控制系統之間的互通、互連和互操作問題,本文引入異構通信中間件HCM(Heterogeneous Communication Middleware)的概念,并設計了解決方案。該設計解決了異構通信網絡的互通、互連,方便了應用層用戶開發應用程序,提高了開發效率,縮短了開發周期。
1 異構通信中間件HCM總體設計
中間件技術近年來得到了廣泛地研究與實踐[3-4],解決網絡異構問題的中間件[5-6]也是研究的熱點。根據異構通信網絡協議的需要,我們設計了異構通信中間件HCM的整體結構框架,為用戶提供了統一的數據訪問接口;完成應用層和底層以及底層和異構通信網絡間數據的傳輸和處理;提供適合各種編程模式的開放接口,并提供應用執行時的各種運行機制。
整個系統采用三層構架體系,HCM作為中間層構建在應用層和網絡層之間,它有兩個接口,分別為與應用服務器的接口(接口一)及與網絡資源實體的接口(接口二)。HCM中間件平臺的功能集包含以下主要功能模塊:協議調度模塊、通信模塊、數據處理模塊,如圖1所示。
協議調度模塊:在構建好的通信協議庫中調度適合當前通信網絡所需的通信協議。
通信模塊:包括組幀模塊(組裝讀/寫數據幀)和通信口操作模塊(讀/寫通信口)。其中組幀模塊是面向應用層的接口模塊,用來獲取應用層數據信息;通信口操作模塊是面向網絡層的接口模塊,用來根據組幀模塊的數據幀通過通信接口與通信網絡進行數據交互。
數據處理模塊:包括數據類型處理模塊、規則轉換模塊和有效驗證模塊。
2 系統各組成的研究與設計
對HCM系統的各組成部分及功能,從通信協議庫的數據結構模型、通信協議調度算法、共享內存訪問、通信線程狀態轉換、規則轉換算法幾個方面進行研究。
2.1 通信協議庫數據結構模型
對于通信協議庫ProtocodStore,可以把它看成是一片森林,ProtocodStore(Tree1,Tree2…Treei…TreeN),N≥0,森林中的每棵樹Treei(Child1,Child2,…,ChildN),N≥0,是由一個或多個子協議庫組成,按照森林的構建方法通信協議庫可以抽象為圖2所示的數據結構。
圖2中,節點A和H代表公司名,節點B、C、D代表隸屬于A的PLC類型,節點I、J代表隸屬于H的PLC類型,節點E、F、G、K、L分別代表隸屬于某個PLC型號的通信協議。
2.2 通信協議調度算法及調度模塊設計
2.2.1 協議調度算法
協議調度管理器根據應用層用戶提供的調度信息在通信協議庫中調度具體通信協議,按照先序遍歷ProtocodStore森林的算法來完成協議的調度,具體調度算法如下。
⑴ 取得調度元數據結構struct_Protocol;
⑵ 訪問ProtocodStore森林的第一棵樹的根節點A;
⑶ 先序遍歷第一棵樹Tree1中根節點的子樹森林;
⑷ 若找到Tree1中節點度為0的葉子節點符合要求則轉⑹;
⑸ 先序遍歷除去第一棵樹Tree1之后剩余的樹(Tree2…TreeN)構成的森林;
⑹ 若查找成功返回找到的葉子節點信息,否則返回NULL。
經過該算法得到圖2中所示森林中L節點的先序序列為:
A→B→E→C→F→D→G→H→I→K→J→L
2.2.2 協議調度的數學描述
定義1 設通信協議庫的所有通信協議的集合為Cprot:
Cprot={C1,C2,C3,…,CN} N≥0 ⑴
式⑴中,Ci為某個通信協議對象,對每個對象Ci的描述形式為:
Ci={Companyi,PLCTypei,CheckSumTypei,
ComInfoi,ConfirmCounti,Modei} ⑵
式⑵中的Companyi,PLCTypei,CheckSumTypei,ComInfoi,ConfirmCounti,Modei表示第i個協議對象的屬性。
定義2 設協議調度模塊調度集為:
Action={Choose,Fold} ⑶
式⑶中,動作Choose表示調度器調度通訊協議庫協議事件;動作Fold表示通信協議導入協議調度管理器事件。
定義3 通過定義1和定義2,協議庫中的單個通信協議可定義為協議集、調度和通信網絡的集合。
Mi={Ci,Actioni,CommunicationNetWorki} ⑷
式⑷中,Ci、Actioni和CommunicationNetWorki表示協議庫中的第i個通信協議、調度事件和對應于Ci的通信網絡。
通過以上三個定義描述了在HCM系統中的協議調度模塊集合。協議調度模塊主要由異構通信網絡所需的通信協議庫和協議調度器組成,協議調度模塊結構框圖如圖3所示。
2.3 共享內存訪問
共享內存作為一種進程間數據共享的方法,通過讓兩個或多個進程映射到同一個內存映射文件對象的視圖,實現不同的進程共享物理存儲器的相同頁面。當一個進程將數據寫入一個共享文件映射對象的視圖時,其他進程可以立即獲得該視圖中的數據變更情況。利用共享內存實現數據的共享訪問,能夠達到系統資源的高效利用。因此,采用共享內存訪問技術,通過HCM提供的接口ConstructReadData實現兩者之間的內存交互,如圖4所示。
在HCM中的共享內存方式不涉及內存互斥訪問的問題,是“半雙工”形式的內存共享,即:應用層動態開辟一塊內存區域通過接口ConstructReadData分配給HCM,應用層循環從該內存區域獲取信息,而HCM則通過數據處理模塊將處理好的數據添入該內存區域,從而完成應用層和中間件層的內存交互,達到數據傳遞的目的。
2.4 通信線程中三態轉換
在通信線程中涉及三個狀態間的轉換關系,分別為讀數據狀態、寫數據狀態以及空閑狀態。三者之間的轉換關系如圖5所示。
讀/寫狀態是在進行數據交互時的狀態,由于寫數據的優先級最高,所以無論是處于讀狀態還是空閑狀態,一旦寫數據事件產生,要立即轉為寫狀態。通訊時,若接收到有效命令,則根據具體協議進行譯碼,執行相應操作,并對命令做出響應;若檢查到錯誤,則說明接收字符不正確,予以丟棄,并保持通信口為接收狀態,開始下一次接收操作。設置空閑狀態的目的是為了釋放內存占用資源,防止產生資源獨占。在大多數情況下為讀數據狀態和空閑狀態間的轉換,只有在用戶傳遞寫數據時才發生讀狀態和寫狀態或空閑狀態和寫狀態間的狀態轉換關系。
2.5 HCM通信模塊設計實現
通信模塊在整個中間件系統中是一個交互層,包括與上層應用層的接口、與下層網絡層的接口。應用層需要讀寫數據時通過該模塊的應用層接口將讀寫指令傳遞給組幀處理器。處理器根據用戶給出的指令進行相應處理,處理后再通過該模塊與網絡層的接口進行通信,通信成功后得到需要的數據并交由數據處理模塊進行數據處理。
由于在通信過程中不同的通信協議(如波特率等)和應用環境會影響到系統運行速度,如果采用單線程來完成數據處理和通信等功能,系統整體響應速度會很慢。因此,采用異步多線程的處理方案,組幀模塊和通信口模塊分別采用各自獨立線程完成數據幀的組裝和與通信網絡的數據交互。通信操作時的獨立線程方式,可以減少系統的閑置時間,提高通信口的吞吐能力。
2.6 數據處理模塊的設計實現
數據處理模塊主要負責對通信得到的數據進行分析處理,包括數據有效性驗證、數據類型處理、規則轉換處理三個子模塊,如圖6所示。
⑴ 有效性驗證模塊,目的是為了獲得通信網絡中正確的數據信息,包括通信站號、數據字節個數、數據校驗等有效性驗證。如果驗證通過則進行數據類型和規則轉換的處理,如果有一項驗證失敗則整幀數據均丟棄。
⑵ 數據類型處理模塊,數據的基本類型包括:位(BIT)類型、字節(BYTE)類型、字(WORD)類型、雙字(DWORD)類型、浮點數(FLOAT)類型。
⑶ 規則轉換模塊,目的是對⑴和⑵處理后的數據按照不同的規則進行數據轉換,如果不需要轉換則將數據直接傳遞給應用層。數據處理時根據特定通信協議進行設置,對接收數據按照不同協議語法格式進行檢查和提取,包括數據有效性檢查、數據類型處理、轉換規則處理等操作。數據處理結束后,動態刷新接收緩沖區中的數據,該緩沖區與應用層實現內存共享。
3 系統仿真和測試
為了測試HCM系統的穩定性、可靠性等性能,通過建立仿真環境來進行性能測試和數據驗證。測試過程中仿真了西門子S7-200、三菱FX1N、歐姆龍CPM2A三種型號的PLC構成的異構通信網絡環境,在PC端生成對應的HCM系統并設計了應用層界面下載到Windows CE中運行,PC機模擬PLC運行環境。通過測試異構環境及通信數據,驗證了HCM系統的穩定性和可靠性。
參考文獻:
[1] Li Xiaoming, Li DongXiao. Protocol conversion of plant control
system consisted of different type PLCs[J].IEEE Trans on Software Engineering,2002.2:1509-1512
[2] 李男,黃永忠,陳海勇.一種嵌入式系統通信中間件的設計[J].微計算
機信息,2006.22(1-2):48-50
[3] Richard Soley and the OMG Staff Strategy Group. Model Driven
Architecture:OMG White Paper Draft 3.2[EB/OL].http://www.omg.org/mda,2000,Nov 27th.
[4] 楊放春,龍湘明,趙耀.異構網絡中間件與開發式API技術[M].北京郵
電大學出版社,2007.
[5] Richard E. Schantz,Douglas C. Schmidt.Middleware for Distributed
Systems: Evolving the common Structure for Network-Centric Applications[M]. Chapter in The Encyclopedia of Software Engineering. John Wiley Sons,2001.
[6] Cecelia Mascolo, Licia Capra and Wolfgang Emmerich. Mobile
Computing Middleware[C].Fourth IEEE Conference on Mobile and Wireless Communication networks,2002.