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