利用LONWORK現場總線促進控制
一、引言
這項工作描述了照明設備ANKA控制系統的I/O控制子系統。控制系統基于PC,因此,采用現場總線作為接口設備適合的解決方案,從而避免復雜的VME。
我們尋找一種綜合的解決方案,將所有的通訊細節屏蔽,從而縮短開發周期。LonWork技術被證實是目前最適合我們需求的實用解決方案。它的網絡協議包含國際標準組織開放系統互連模型(ISO/OSI)的所有7層協議,將網絡設計簡化為只需設定應用層信息包格式或甚至只需要給變量幅值。LonWork網絡上的每個節點都有名為Neuron芯片的微控制器,這種芯片帶有內置網絡、I/O接口以及應用功能。它利用NeuronC編程語言進行編程,除了滿足標準C語法外,還包括為定義I/O對象構建的說明語法,網絡變量以及軟件定時器,詳盡的I/O控制運行時間庫以及網絡通訊等。編程和網絡通訊都屬于事件驅動,只需要簡單定義任務,當事件發生時通過內置的任務調度程序執行。
所有這些特性允許我們在設備層面上更多引入智能化,而不是僅僅將I/O口映射到PC。因此,我們在不同層面上有兩種主要處理過程:設備驅動器運行在現場總線節點上。它監視物理設備,產生警報,以異步方式對數據進行發送更新等。設備服務器運行在PC上。作為一臺面向控制系統其余部分的公共對象請求代理體系結構(CORBA)服務器,它與所有相同類型的設備驅動器通訊并進行管理,并輸出設備功能。
二、I/O板
盡管已經存在很多實用的商業I/O接口板,但我們仍然決定開發自己的I/O板,這有助于我們將不同板子類型的數量最小化。總共三種類型包含了控制系統I/O要求的所有情況。我們的板子配備了帶有24k字節SRAM和32k字節FLASH存儲器的MC143150微控制單片機(Neuron芯片),固定尺寸為小型歐洲格式(160×100mm)。單獨的I/O板包括:
Ariadne串行接口板,它支持EIA-232、EIA-422以及EIA-485標準,最大波特率可達115kbps。它包括16k字節的接收和發送緩沖器,板上電源能從230V交流線路、7V~12V未穩壓直流電源以及5V穩壓直流電源提供電流。
Hera通用數字I/O卡,帶24路輸入(50mA)、8路輸入/輸出(50mA)以及8路固體繼電器(1A)。所有I/O通過光耦隔離。它為輸入和輸入/輸出提供兩種運行模式。卡上還帶有一個0~100kHz的16位計數式頻率計(絕對誤差1.53Hz)。
Zeus高精度I/O卡,帶16位ADC和DAC,DAC由觸發脈沖輸入,并且數字通路采用光耦隔離(8輸入和8輸出)。ADC的4個模擬通道標稱采樣頻率為1kHz,以4kHz頻率過采樣時保證精度為0.3LSB。DAC最大工作頻率為10kHz。板上額外的外設微控制器(為控制升壓和存儲環電源而設計)包括:與DAC觸發脈沖輸入同步的函數發生器,緩存DAC函數和ADC數據的32kb存儲器以及外設自檢。
三、軟件
1. 節點層
我們控制系統中,軟件對設備的控制是設備能夠感知的,并且從更高層面上屏蔽了I/O細節。由于Neuron芯片CPU功率限制,這種封裝只是在一種合理的范圍內進行,例如由于Neuron芯片低劣的浮點性能,十六進制數值向工程單位的轉化在PC上完成。
我們的控制系統含有超過20種設備類型。使設備盡量智能化的要求增加了設備層面的編程量。考慮到所有這一切,有必要為實現器件驅動器而定義一種帶通用通訊接口的通用API。通過這種API,我們簡化了新設備驅動器以及與設備通訊的軟件的開發過程(設備服務器在PC上運行)。
根據我們“設備感知”現場總線節點的范例,設備驅動器API也允許在同一塊I/O板上實現多種相同或不同的設備。
通用設備成為控制系統的一部分必須滿足:
接收、處理并應答外來請求;
向觀察者傳播監控參數及其警報;
設備內部具有程式化的狀態機或附加邏輯。
通過LonWork,利用請求/應答機制實現的簡單RPC可以很容易滿足第一個要求。
通過定義適當的網絡參數類型,以及每當從設備讀取數據時更新網絡變量,可以實現第二個要求。這些網絡變量稱為監控變量。一對可調的軟件定時器控制網絡監視變量的傳播。“最大定時器”定義了監控變量的周期,“最小定時器”定義了在兩個監控變量更新之間所必須間隔的最小時間。最小定時器防止當監控參數值變化太快時造成網絡流量過大。一些參數類型也可以定義增量極限來防止過快的傳播。每個監視變量都有稱為報警的互補網絡變量,用于傳達警報和對該警報的響應值。
由于傳播受“定時器溢出”、“數值改變”或“報警條件”事件觸發,因此監控和報警為異步通訊。
我們還編寫了通用設備驅動庫,這樣經過單純的編譯器指示,任何設備驅驅動器都能編譯為設備的模擬。由于不同接口板的數目很少,并且詳細定義了通訊接口,這是可能實現的。模擬被證明非常有助于代碼調試和測試過程。
2. PC側通訊
美國埃施朗(Echelon)公司提供獨立的LNS(LonWork網絡服務)平臺,以及用于管理LonWork網絡的面向對象結構。在Windows環境下,有稱為LCA(LonWork組件結構)的ActiveX的LNS封裝。不幸的是,目前的LCA版本過于面向互操作。由于這種原因和網絡服務的自動化和最簡化實現,它向開發者隱藏了很多關鍵的細節,使其被迫直接使用LNS API。
在開發的初始階段,我們利用LCA在相對短的時間內開發控制系統原型。第二階段,我們引入顯示報文功能,為此需要LNS層。現在,我們完全避免了LCA,并由此實現了對網絡服務的完全控制,同時也避免了上層的ActiveX。
3. 設備配置
為了消除硬編碼常數從而讓設備驅動器具有通用性,我們將配置參數下載到設備中。為此,與LonWork工程報告中相似,我們開發了自定義的窗口式文件傳輸協議。我們同樣能夠利用FTP傳送大量數據。
每次設備服務器啟動時,它檢查節點上是否存在有效運行的設備。如果沒有,在數據庫中找到可執行路徑,將應用程序下載到節點。如果需要,可以對節點配置文件進行更新。
配置數據存儲在數據庫中,被設備驅動器和設備服務器共同使用。所有數據按工程單位存儲,在Neuron應用程序使用前必須轉化為原始格式。為簡化設備配置過程,以及消除同樣的配置常數存在于數據庫內多個位置或多種格式,編寫了一個模板編譯器。這個編譯器從NeuronC應用程序中提取原始頭文件并將其編譯為模板,然后將其填滿數據庫數據并轉化為二進制格式。這種二進制格式能夠通過FTP下載,可以直接復制到用于創建模板的相同數據結構中。從而,我們得到了一種將數據庫數據轉化為Neuron應用程序可識別格式的通用方法。
PC上通過開設FTP服務器可以很容易地實現FTP的特性。服務器運行在并行或串行模式下,可以對256個交易進行處理。集成的報告機制允許處理FTP報告事件。數據交換能夠利用本地PC API或者遠程Neuron應用程序啟動或中斷。
一個較好的利用FTP和模板編譯器進行配置例子是,將板上的I/O引腳映射到邏輯器件。這種映射是設備配置文件的一部分,通過模板編譯器產生,如果需要可以在設備服務器每次啟動時下載。
四、性能
ANKA控制最苛刻的情況是,當一個現場總線支路上最大可能的節點(64)以1Hz的頻率定期對3個參數進行數據更新,同時以20Hz的頻率設置并讀取一塊板上的一個參數。這對應為每秒212(3×64+20)個非確認輸入包以及20個請求/應答包。
測量顯示,我們系統每秒能夠處理高達230個非確認包(這也是吞吐量的上限),并傳送高達40個請求/應答包,這足以滿足我們的需求。即使當節點在網絡上產生過多通信時,吞吐量也不會降為0,而是保持在每秒約190個包的水平。測試中平均每個包的大小設置為12字節。
我們的測試裝置包括11個工作于模擬電源設備的Neuron節點。節點通過1.25Mbit雙絞線收發器連接,埃施朗(Echelon)PCNSI卡作為PC接口。測量表明這種接口是數據吞吐量的瓶頸。
五、結論
目前ANKA控制系統由超過200個Neuron節點組成。出于效率和拓撲原因,每臺PC上連有7條獨立的支路。現場總線系統運行決定穩定,不受干擾,甚至在控制系統其余部分關閉或重啟時也能正常工作。
文章版權歸西部工控xbgk所有,未經許可不得轉載。