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