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