王亦寧,佟振清,臧秀娟
(國網電力科學研究院/南京南瑞集團公司,江蘇 南京 210003)
基于嵌入式編程技術的通用通信管理裝置設計與研究
王亦寧,佟振清,臧秀娟
(國網電力科學研究院/南京南瑞集團公司,江蘇 南京 210003)
由于水電廠中使用的設備種類眾多及生產廠家不同,在實際應用中為實現眾多設備的互聯,需要增加通信管理裝置?,F有的通信管理裝置均需針對不同子設備的通信協議進行二次開發,并不屬于真正意義上的直接面向用戶的產品。文中所述及的通信管理裝置采用符合國際標準的梯形圖作為開發語言,采用編譯及解釋執行的手段,最終實現真正意義上的面向用戶的通信管理裝置。
嵌入式;通信管理裝置;通信協議;梯形圖
在水電廠中,計算機監控系統作為直接的監視和操作設備,和運行人員有著最直接和密切的關系。因而,水電廠計算機監控系統所接入的監測信號的完備性、可靠性直接決定了運行人員的操作。水電廠計算機監控系統對于諸如調速、勵磁、保護等子系統的接入多采用直接的I/O信號連接為主、現場總線形式的通信連接為輔的方式。由于水電廠計算機監控系統的核心控制器多采用通用的PLC,缺乏足夠的對外通信擴展能力,因而在監控系統現地設備設計時,需要額外增加通信管理裝置以實現和不同子系統間的現場總線形式的互聯。目前,實際應用的通信管理裝置在物理接口上對外提供了諸如以太網、CAN現場總線、RS232/RS485等多種連接形式,在軟件方面依托于多任務的嵌入式系統對各個接口獨立編程從而實現通信互聯。對于嵌入式系統的驅動軟件編程,需要由專業的研發人員針對不同廠家的不同產品所支持的軟件規約來進行源碼級的程序編寫、編譯及下載。本文基于前述類型的通信管理裝置需要二次源碼級編程的不足,提出了采用梯形圖的形式進行用戶應用層的通信規約編程的手段,進而避免源碼級的編程及下載,降低了裝置的使用難度(不需要源碼級編程,省去了整套嵌入式的開發環境),從而使之成為真正意義上的可供用戶直接使用的通信管理裝置。
在水電廠監控系統中的任何兩臺計算機上的兩個應用程序通信都遵從統一的通信模型(如圖1),數據流動可以用收發兩個動作來描述。把提出數據請求服務的應用程序稱為控制方向,即命令的下行;把提供數據服務的應用程序稱為監測方向,即數據的上行。這樣,一個完整的規約有控制方和監測方兩個方面。控制方向下發送命令,并解析監測方發來的應答或主動上報的數據或狀態指示報文;監測方解析命令,根據請求命令組織應答報文并上傳。

圖1 兩臺計算機通信模型圖
水電廠監控系統中設備的通信規約都具有如下共同特性:幀結構的相似性、數據對象種類和報文長度的有限性、報文流的粒子性、邏輯過程的有窮性、傳送原因的可分類性。
在明確了通信雙方進行通信的物理接口之后,設備通信規約可分為2部分:傳輸過程和傳輸幀。傳輸過程定義了通信雙方進行數據交換的基本規則,傳輸幀則定義了雙方交換報文的具體意義,在進行規約的解釋時必須嚴格遵守傳輸過程及傳輸幀所定義的語義。在對應的驅動程序開發中,傳輸過程主要表明了報文交換的先后順序,在程序或梯形圖中可表述為按照條件執行的先后順序;傳輸幀則代表了雙方設備具體的互換信息,可表述為程序中的表達式或梯形中不同的運算功能塊?;诖?,模型的重點在于對不同數據幀的處理。
一般而言,對于通信規約的數據幀,可按照如下格式[1]:

圖2 通信報文統一抽象格式
一幀報文都是由傳輸控制部分和數據部分合成得到的。傳輸控制部分包括同步字對象、長度對象、傳輸方向對象、源地址對象、目的地址對象、幀號對象、功能符對象等構成。任何具體的規約都是上述全部對象或其子集對象的一個具體排列。數據部分則可定義雙方傳輸的信息內容等,并可由功能碼指定。不難看出,通過編程或梯形圖很容易實現上述圖2通信報文的格式。
對于通訊管理裝置,由于其內部多采用嵌入式系統,在針對不同的對外接口開發驅動軟件時,一般遵循如下步驟:
1)安裝目標機虛擬環境及相應開發語言包;
2)根據待通信設備的通信規約,進行驅動軟件的源代碼編輯;
3)對驅動軟件源代碼進行交叉編譯,生成目標機可執行代碼;
4)下載可執行代碼到目標機;
5)利用在線調試環境運行下載好的驅動代碼,進行在線調試;
如果在通訊管理裝置中內嵌了可以解釋執行梯形的進程,則開發對外接口的驅動步驟如下:
1)用可視化梯形組態編輯待通信設備的驅動;
2)編譯梯形,生成二進制中間代碼;
3)下載二進制中間代碼到目標機;
4)利用在線調試環境運行下載好二進制中間代碼,進行在線調試;
本通信管理裝置采用工業級PC104嵌入式控制PC作為主處理器,利用嵌入式Linux作為系統軟件,對外提供8個獨立的標準串行接口、1個以太網接口、1個CAN現場總線接口。裝置的整體硬件結構如下[2]:

圖3 硬件結構簡圖
本通信裝置硬件具有以下關鍵技術:
(1)核心采用了高度集成、自棧結構、IBM-PC/AT兼容的PC104嵌入式控制PC,具有體積小、功耗低、工作溫度寬的特點并且每個通訊通道均采用獨立的中斷和收發電路設計具有極高的可靠性;
(2)嵌入LINUX操作系統作為軟件平臺,充分利用了增強型80X86CPU的任務切換機制,實現了真正的多任務環境,使運算速度及通信處理能力具有可靠保證;
(3)采用固態電子盤作為存儲介質,消除了硬盤轉動部件的不可靠性;具有“看門狗”定時器,保證了嵌入式控制PC的運行可靠性;
(4)具有8路標準串行接口、一個CAN現場總線接口(支持CAN2.0B協議)和一個以太網接口(10M/100M),各個通訊接口均能夠獨立編程,支持多種聯接方式,能靈活應用于各種實際需求;
(5)支持在線自診斷、自恢復功能;支持通過局域網進行遠方診斷和維護[3]。
本裝置采用嵌入式Linux作為開發環境,軟件平臺具有多任務、小內核、運行穩定、開發操作便捷等特點。Linux系統源碼公開且內核單一,操作系統中所有的系統相關功能都被封裝在內核中,可以動態裝入和卸載內核中的部分模塊,因而修改和裁減內核很方便。
裁減后的Linux內核由5個部分組成:進程管理、內存管理、文件系統管理、進程間通信和網絡接口[4]。本通信管理裝置采用的嵌入式Linux系統的構架如圖4:

圖4 裁減后的Linux系統構架圖
最底層是硬件層,硬件的上面是Linux內核,它是操作系統的核心部分。Linux內核為硬件管理提供一致的方式,為應用程序提供統一的接口,為此內核被分為兩個部分:底層接口層和高層抽象層。其中底層接口層專屬于硬件配置,內核運行在底層接口層之上,并以與硬件無關的API(高層抽象層)提供對硬件資源的直接控制。
在底層接口層和高層抽象層之間主要是文件系統類型和網絡協議,它們構成“解釋組件”,以讓內核了解如何與特定設備進行結構化數據交互[5]。
內核之上是應用程序,應用程序提供了完整的實時數據庫,并針對各個不同的物理接口提供相應的接口交互函數以及實時數據庫存取函數。該實時數據庫統一管理由各個接口上送上來的實時數據,可按照特定的傳輸格式,設定某一接口傳送實時數據到上級設備。為保證實時數據庫各個接口驅動軟件的可靠運行,實時數據庫管理程序還對各個串口的通信驅動程序進行異常監視,當有驅動軟件因故不正常運行時,能夠實現驅動軟件乃至通信管理裝置的重啟功能。
對于需要進行源碼級開發的外部設備的驅動軟件,提供靜態鏈接庫。外部設備的驅動軟件開發過程如圖5所示。

圖5 源碼級驅動軟件的開發過程

圖6 梯形圖編程的開發過程
梯形圖是一種圖形化表示的編程語言,起源于繼電器邏輯和執行線路,它用不同的圖符來表示不同的指令,用串、并采用梯形圖編程的開發過程圖6所示。聯等概念組織圖符的順序位置來表述邏輯。它以其形象、直接、簡單易用、與電氣控制原理圖相呼應、易于掌握等特點而成為PLC的主要編程語言。通信管理裝置采用符合國際標準的梯形圖作為開發語言,采用編譯及解釋執行的手段,最終實現為真正意義上的面向用戶的通信管理裝置。
本裝置梯形圖的編輯是利用Visual C++作為開發語言的。利用VC++的多文檔/視圖結構以及MFC基礎類架構實現基本的梯形圖可視化編輯操作,包括梯形圖對象的選擇、插入、剪切、復制、粘貼、刪除等功能。在編輯梯形圖程序的時候,每個梯形圖程序的元素個數,程序行數及其位置都是不固定的,所以采用動態鏈表結構。定義一個類用于構造元素鏈表以及對鏈表進行操作:

本嵌入式通信管理裝置梯形圖中的功能模塊(如賦值功能模塊、算數功能模塊等等)都可以看作是梯形圖中的基本元素。采用面向對象方法對梯形圖結構進行抽象,定義基類表征不同元素的最基本屬性和方法,同時針對不同種類的元素定義相應的派生類。在設計中充分利用VC++標準模板庫提供的各種標準容器類可以方便實現梯形圖元素節點的動態添加和刪除,這樣極大的簡化了系統開發。例如,在本裝置梯形圖組態編程軟件中,可以很容易實現諸如賦值、算術加、算術減等基本運算單元(如圖7所示)。

圖7 賦值功能模塊和算術功能模塊
本通訊規約梯形圖組態主要提供了基本功能塊、算術運算類、邏輯運算類、關系運算類、數學函數庫類、事件觸發類、硬件接口類等幾大類功能塊。其中,事件觸發類和硬件接口類主要用來實現規約的定時響應以及數據的發送和接收。
事件觸發類包含了毫秒定時器、秒定時器、分定時器、小時定時器幾個類型。通過定時器,可定時對串口外掛的子設備進行規約輪詢,進而可獲得各個子設備上送的報文信息。其形式如圖8所示。

圖8 事件觸發類的各功能模塊
硬件接口類包含了串口的打開、串口關閉、串口讀取、串口寫入等功能塊。主要用于對特定串口進行異步I/O操作,從而完成和外部子設備的交互功能。如圖9所示的2個功能塊分別實現對串口的寫入和讀取功能。

圖9 硬件接口類功能模塊
通信管理裝置通過以太網接口與PC機連接通信,可分別下載各個串口的配置文件和規約腳本。通過對各通信接口的標準解釋進程的控制,間接實現對梯形圖的在線調試以及對各個通信接口的規約調試。其調試過程如圖10。

圖10 PC嵌入式通信管理裝置梯形圖編程下載與在線調試示意圖
該裝置的編譯系統可完整檢查編輯者輸入的程序是否符合梯形規范要求。在靜態編譯階段,根據梯形圖程序的特點,程序首先檢查每個程序段是否有輸入輸出;再檢查梯形圖中各個功能塊是否符合設定的輸入輸出規范,主要包括元素名稱、地址格式是否合乎規范、梯形圖中是否有孤立元件等。在解釋執行階段可對出現異常的代碼進行智能處理,主要包括死循環程序的異常管理、硬件接口的異常處理、非法運算的異常處理等。通過對異常問題的有效屏蔽,可避免因人為編程錯誤造成的裝置異常,從而可有效提高裝置的可靠性和穩定性。
通信管理裝置必須具有足夠快的運算速度,才能滿足監控系統的實時性要求。為達到這一要求,本裝置采用了標準程序庫和組態程序相結合的設計模式。即對于標準的、數據處理復雜的通信規約(比如 IEC65870-5-103、IEC65870-5-104等規約),由嵌入式C語言直接開發,提供標準的可執行的進程;對于大量的較為簡單的、數據處理多樣性的通信規約(比MODBUS、CDT等規約),則直接進行梯形圖組態及編譯執行。
軟件具有自檢和自恢復功能。自動診斷各類任務、設備的運行情況并進行報警。當因某種干擾或硬件故障等原因發生運行紊亂時,軟件看門狗能產生自恢復信號,自動重新恢復運行。
本文介紹了基于嵌入式編程技術的支持梯形圖進行規約編程的通用通信管理裝置,該裝置可以靈活、方便、可靠、簡單地實現與現地功能設備的數據通信,完成各現地設備與現場總線以及以太網的互聯。采用符合國際標準的梯形圖作為開發語言實現供用戶直接使用,編程簡單、使用方便,大大降低了裝置的使用難度和提高編程效率。
[1]李洪波.變電站設備主從式通信規約分析及其實現方案[J].電力系統通信,2004,(5).
[2]李斌,王曉航,施沖.嵌入式通信管理裝置的設計和實現[J].水電自動化與大壩監測,2004.
[3]MB系列智能可編程控制器MBPro編程軟件使用手冊[M].
[4]王學龍.嵌入式Linux系統設計與應用[M].清華大學出版社.2001.
[5]夏明.基于Linux的嵌入式監控系統軟件平臺研究與設計[M].南京理工大學,2007.
[6]趙雨生,高美鳳.一種梯形圖編程系統的研究與實現方法[J].工業控制計算機,2008,(21).
[7]胡海生,李生亮.VC++6.0編程[M].清華大學出版社,2003.
TP393.03
B
1672-5387(2011)03-0021-04
2011-04-11
王亦寧(1980-),男,工程師,主要從事水電廠自動化技術的研究與設計工作。