王艷君,陳建鐸
(西安歐亞學(xué)院 信息工程學(xué)院,陜西 西安 710065)
在 《基于LonWorks技術(shù)的水廠全分布管控一體化網(wǎng)絡(luò)研究》一文中,介紹了使用LonWorks現(xiàn)場總線技術(shù)構(gòu)建水廠全分布式管控一體化網(wǎng)絡(luò)的基本思想和方法。這里,將進一步說明該系統(tǒng)中前端智能節(jié)點的組成原理與實現(xiàn)。眾所周知,在構(gòu)建水廠全分布式管控一體化網(wǎng)絡(luò)時必不可少地用到大量的數(shù)據(jù)采集與控制設(shè)備,這就需要相應(yīng)的節(jié)點控制器與之連接,接收前端檢測設(shè)備采集到的數(shù)據(jù),上傳到上位監(jiān)控機,或者根據(jù)上層監(jiān)控機下發(fā)的命令控制前端執(zhí)行機構(gòu)的工作。由于該系統(tǒng)是依據(jù)全分布式管控一體化的原則構(gòu)建的,因此這類節(jié)點要能設(shè)置ID號,支持ISO/OSI的7層協(xié)議,除了與底層控制網(wǎng)連接,還能與企業(yè)信息網(wǎng)連接[1-2]。上層授權(quán)用戶可通過ID號(或IP地址)直接訪問底層的每一個節(jié)點,與之對話,了解或展示前端測控設(shè)備的工作狀況,包括數(shù)據(jù)參數(shù)和工作狀態(tài)圖,或者對前端測控設(shè)備進行調(diào)控。
在水廠的生產(chǎn)流程中,要控制從進水、沉淀、過濾、反沖洗、添加氯化鋁、除污、排泥到供(出)水的全過程;要進行液位、溫度、濁度、壓力、流速/流量、余氯含量、泥土界面等參數(shù)的檢測。涉及到的控制有電機變頻調(diào)速、加氯與投藥泵計量、電磁閥門開啟等。采用的變送器和檢測設(shè)備,有液位變送器、壓力變送器、流量變送器、溫度變送器、泥土界面儀和余氯分析儀等;執(zhí)行機構(gòu)有電磁閥、繼電器、調(diào)頻電機等。
1)數(shù)據(jù)采集與執(zhí)行設(shè)備
系統(tǒng)中所用數(shù)據(jù)采集與執(zhí)行設(shè)備有溫度變送器,測量范圍0~300℃;HP-420型壓力變送器,測量/顯示和傳送壓力和液位,量程0~1 Mpa,精度 0.05 Mpa;HD1000超聲波液位計,測量蓄水池液位,且有數(shù)字顯示,測量范圍0~5 m,滿足RS232/485標(biāo)準(zhǔn);YL-1型余氯分析儀,檢測水中的余氯含量,測量范圍0~2.5 mg/L,分辨率0.01 mg/L;KVQJ電動調(diào)節(jié)閥,調(diào)節(jié)輸水管道的通斷狀態(tài),通過智能節(jié)點的模擬通道輸出0~40 mA電流信號調(diào)節(jié)其開啟度;濁度測量儀,測量/顯示和傳送清水池中的濁度,借以調(diào)整絮凝池的投藥量,測量范圍0.001~100 NTU, 測量精度±2%NTU, 分辨率 0.000 1~0.001 NTU;漏氯報警儀,對泄漏的氯氣進行測量/顯示和報警,其傳感器安裝在現(xiàn)場,通過電纜與值班室內(nèi)顯示(報警)器連接,報警范圍0~10ppm;電磁流量計,測量管道流量,按口徑測量精度為±0.5%或±1.0%,流速范圍 0.2~11 m/s(可選),符合 RS485標(biāo)準(zhǔn);PH測量儀,在線測量水樣中的PH值,用以調(diào)控加氯與投藥量,測量范圍0~14 PH,測量精度±0.1%;超聲波液位差計,測量/顯示和傳送格柵兩邊液位差,控制齒爬式格柵去污機運轉(zhuǎn),清除進水池的漂浮物,測量范圍0~6 m,測量精度為±2%量程(或2 mm);變頻電機,在變頻器的控制下實現(xiàn)正轉(zhuǎn)、反轉(zhuǎn)、啟/停、加速與減速;泥土界面儀,檢測沉砂池和絮凝池中的泥砂位置,并給出泥砂分布圖譜,計算出泥砂層的高度或厚度,測量范圍0~5 m,測量精度0.1 m,分辨率[3]0.03 m。
2)變頻控制器
變頻控制器,用于變頻電機調(diào)速,選用的是富士FRENIC5000G/P11S型變頻器,一種低噪音、高性能、多功能變頻器,變頻范圍0~20 000 Hz,具有模擬/數(shù)字量I/O端口,可接收4~20 mADC電流或0~10 VDC電壓、脈沖電平和開關(guān)量,輸出開關(guān)量和調(diào)頻電壓。該變頻器可采用兩種變頻工作方式,一種是通過自帶的液晶觸摸控制面板,鍵入工作模式和控制命令,使變頻器處于自動運行方式;另一種是經(jīng)RS485端口與PC機連接,再由系統(tǒng)控制程序或組態(tài)軟件創(chuàng)建人機對話界面和通訊協(xié)議,使變頻器處于受控運行方式,本系統(tǒng)采用的是后一種方式[3]。
以上設(shè)備與智能節(jié)點連接,在智能節(jié)點和上位機的控制下對水廠中的全部生產(chǎn)流程實施監(jiān)控。
隨著嵌入式技術(shù)的發(fā)展,可用于數(shù)據(jù)采集與控制的CPU芯片很多。但是,要作為全分布式管控一體化網(wǎng)絡(luò)系統(tǒng)中的節(jié)點,相比之下,Echelon公司推出的Neuron Chip可謂其中的佼佼者之一。比如MC143120/143150芯片,有3個CPU,分別是MAC處理器、網(wǎng)絡(luò)處理器和應(yīng)用處理器;另有1 kB/2 kB RAM、10 kB ROM、0.5 kB/1 kB E2ROM和 2個16位計數(shù)器,支持ISO/OSI協(xié)議。其中MAC處理器主要用于外部介質(zhì)訪問控制,實現(xiàn)ISO/OSI 7層協(xié)議的第1~2層功能;網(wǎng)絡(luò)處理器實現(xiàn)ISO/OSI 7層協(xié)議的第3~6層功能,處理網(wǎng)絡(luò)變量、地址認證、后臺診斷、軟件定時、網(wǎng)絡(luò)管理及路由等項工作;應(yīng)用處理器位于ISO/OSI協(xié)議的最上層,執(zhí)行用戶的應(yīng)用程序,為用戶操作服務(wù)。3個CPU之間通過內(nèi)部設(shè)置的網(wǎng)絡(luò)緩沖器和應(yīng)用緩沖器進行數(shù)據(jù)傳送。
在外特性方面,MC143120/143150具有11個I/O口、8位雙向數(shù)據(jù)線和16位地址線,支持TTL電平,支持并/串行數(shù)據(jù)輸入輸出,可外接64 kB外部存儲器。在11個I/O口中包括RS-232/485串行通信口、定時器/計數(shù)器、位輸入輸出等。傳送數(shù)據(jù)可以是位,也可以是字節(jié),還可同時進行CRC校驗。在開發(fā)設(shè)計時,內(nèi)部存儲器RAM/ROM用以駐留系統(tǒng)程序和用戶開發(fā)的應(yīng)用程序,比如操作系統(tǒng)、LonTalk通信協(xié)議、IO數(shù)據(jù)庫、網(wǎng)絡(luò)配置、地址表和一個全世界唯一的48位標(biāo)識碼,即神經(jīng)元ID號。也正是這ID號,是構(gòu)建全分布式網(wǎng)絡(luò)體系的基礎(chǔ)。這種節(jié)點,除了連接到底層控制網(wǎng)上之外,還可直接連接到企業(yè)Internet/Intranet上。作為底層節(jié)點使用,其示意如圖1所示[2]。
圖1 智能節(jié)點示意圖Fig.1 Intelligent node schemes
除此之外,Echelon公司還給出了配套的智能收發(fā)器、節(jié)點開發(fā)工具NodeBuilder和通信協(xié)議LonTalk。通過可編程收發(fā)器,Neuron Chip可與多種通信介質(zhì)連接,比如雙絞線、同軸電纜、光纖,無線和紅外線等。并且針對不同的通信接口,可配置為三種不同的接口模式:單端、差分和專用模式,以適應(yīng)不同的編碼方式和波特率。在ROM中包含LonTalk協(xié)議的固化程序,這使得Neuron芯片能保證在每一個裝置(節(jié)點)中以公共協(xié)議通信,解決了兼容性問題,使LonWorks裝置(節(jié)點)在同一網(wǎng)絡(luò)上的連接簡單快捷[4]。
LonWorks節(jié)點是同物理上與之連接的 I/O設(shè)備交互作用并在網(wǎng)上使用LonTalk協(xié)議通信的一類對象,有兩種類型。在第一種類型中,Neuron芯片是唯一的處理器,充當(dāng)LonWorks的網(wǎng)絡(luò)節(jié)點。適合于 I/O設(shè)備簡單,處理任務(wù)不復(fù)雜的系統(tǒng),稱之為基于 Neuron芯片的節(jié)點 (Neuron Chiphosted);在第二種類型中,Neuro芯片只作為通信處理器,充當(dāng)LonWorks的網(wǎng)絡(luò)接口,節(jié)點應(yīng)用程序由主處理器來執(zhí)行,這類節(jié)點適合于對處理能力、輸入/輸出能力要求較高的系統(tǒng),稱之為基于主機的節(jié)點(host-based),主處理器可以是其他微控制器或者 PC 機等[3-4]。
為了便于用戶使用,Echelon公司在推出Neuron Chip以后,又推出了以上述Neuron Chip為核心用于現(xiàn)場底層的節(jié)點控制器,也稱為回路控制器。其中HLC-1是最基本的一種,滿足LonWorks技術(shù)對于底層節(jié)點的全部要求,不僅可以執(zhí)行協(xié)議,實現(xiàn)數(shù)據(jù)采集與處理,完成底層控制,而且還提供通信介質(zhì)接口,以公用的協(xié)議進行通信。對于外部,具有4通道 0~5 V (4~20 mA)12 位 A/D 轉(zhuǎn)換的模擬量輸入、2 通道 0~5 V(4~20 mA)12位D/A轉(zhuǎn)換的模擬量輸出,2通道數(shù)字量(觸點或電平)輸入及2通道開關(guān)量輸出,還能組合2通道PID調(diào)節(jié)器。安裝完成后,HLC-1回路控制器不僅可以實時接收上位機的控制命令,實現(xiàn)對底層執(zhí)行機構(gòu)的控制,還可以完全脫離上層管理系統(tǒng),自行完成底層數(shù)據(jù)采集、數(shù)據(jù)處理及設(shè)備運行的調(diào)控。而且,HLC-1采用的是模塊化結(jié)構(gòu),多個HLC-1可組合在一起,構(gòu)成一個大的模塊,以連接更多的前端測控設(shè)備[3]。
在某水廠的設(shè)計方案中,底層配置了4個Lonworks智能節(jié)點,即回路控制器HLC-1。其中2個節(jié)點由組合模塊組成,各含2個8路模擬量輸入模塊,用以對格柵絮凝沉淀池的20個液位計輸入的模擬信號進行轉(zhuǎn)換、處理、記錄和匯總。另外2個節(jié)點的模擬/數(shù)字輸入模塊分別用于進水口和出水口數(shù)據(jù)監(jiān)測。在進水口測量流量、濁度、入水管壓力;在清水池檢測余氯含量、濁度、PH值、水位;在出水管口檢測出水流量和壓力。其結(jié)構(gòu)如圖2所示[3]。
圖2 底層智能節(jié)點配置Fig.2 Bottom intelligent node configuration
每一個節(jié)點配置FTT-10A收發(fā)器,以提高通信能力。該收發(fā)器支持自由拓撲結(jié)構(gòu)(包括星型、總線型和環(huán)型等),通信速率為78 kbps;其中總線型拓撲結(jié)構(gòu)的最長通信距離是2 700 m,可滿足一般小型水廠的需求。當(dāng)超出最大通信距離后,可在總線兩端使用中繼器,以延長通信距離[2]。
由智能節(jié)點向上,連接網(wǎng)絡(luò)適配器,這里選用PCLTA-10,可插入PC機的擴展槽上,既能與所有和總線連接的現(xiàn)場智能節(jié)點進行對等雙向通信,又能快速與PC機進行數(shù)據(jù)交換,實現(xiàn)復(fù)雜的數(shù)據(jù)處理和高級監(jiān)控功能,在PC機與現(xiàn)場智能節(jié)點之間起到“上傳下達”的作用。同樣,配置FTT-10A收發(fā)器,提高通信能力,支持自由拓撲結(jié)構(gòu),最多可連接128個智能節(jié)點,這里僅連接了4個。
在整個系統(tǒng)中,除了LonWorks提供的系統(tǒng)開發(fā)程序之外,大量的應(yīng)用程序須結(jié)合現(xiàn)場需求來編寫。由于C語言提供位操作指令,因此是一種非常適合于編寫與硬件相關(guān)的控制程序的語言。為了便于用戶使用,Echelon公司在推出Neuron Chip和系統(tǒng)開發(fā)程序之外,還提供了Neuron C編程語言,一種基于ANSI C而為神經(jīng)元芯片開發(fā)設(shè)計的編程語言[5]。對ANSI C進行了擴展,允許程序員以自然的方式描述事件驅(qū)動任務(wù),可控制任務(wù)執(zhí)行的優(yōu)先級,可將 I/O對象直接映射到處理器的 I/O端口,通過定義網(wǎng)絡(luò)變量把受控對象聯(lián)系起來,還可為用戶提供一種實現(xiàn)節(jié)點之間數(shù)據(jù)共享的簡單方法,支持顯式報文傳送,還可直接對LonTalk協(xié)議的底層設(shè)備進行訪問,便于設(shè)計LonWorks系統(tǒng)應(yīng)用程序[5]。
由于LonWorks系統(tǒng)程序中包含NodeBuilder,因此對智能節(jié)點編程可在NodeBuilder環(huán)境下進行。步驟包括:1)定義IO對象;2)定義定時器對象;3)定義網(wǎng)絡(luò)變量;4)定義顯式報文;5)定義任務(wù);6)編寫自定義函數(shù)等[4]。
其中網(wǎng)絡(luò)變量和顯式報文是節(jié)點之間交換信息的載體,是在LonWorks網(wǎng)絡(luò)上傳送的數(shù)據(jù)包。節(jié)點之間的聯(lián)系主要是通過網(wǎng)絡(luò)變量來實現(xiàn)的,因此使用網(wǎng)絡(luò)變量可實現(xiàn)LonMark的互操作性,方便編程和安裝。而Neuron C編程的主要對象就是網(wǎng)絡(luò)變量NV(Network Variables),又稱隱式消息,是節(jié)點上的一個對象。其類型可以是整型、布爾型或字符串型數(shù)據(jù),用戶可在應(yīng)用程序中自由定義。顯式報文也稱為顯式消息,其中數(shù)據(jù)長度最大228個字節(jié),而網(wǎng)絡(luò)變量最多31個字節(jié)。而任務(wù),是對事件的反應(yīng),即當(dāng)某事件發(fā)生時應(yīng)用程序執(zhí)行何種操作。另外,還可以在Neuron C程序中由用戶編寫自定義函數(shù),以完成一些常用功能。和標(biāo)準(zhǔn)C不同,Neuron C必須要寫出函數(shù)原形,也可以將一些常用的函數(shù)放到頭文件中,以供程序調(diào)用。
由于在進行模擬量數(shù)據(jù)采集和控制的時候,通過串行口和神經(jīng)元芯片進行通信,因此選擇Neurowire IO對象,即同步全雙工串行通信模式IO對象。對11個IO引腳的定義為:IO_0到 IO_7是片選信號,IO_8是時鐘,IO_9是數(shù)據(jù)出,IO_10是數(shù)據(jù)入。就是說,該I/O對象使用全同步串行數(shù)據(jù)格式傳送數(shù)據(jù),數(shù)據(jù)被移入的同時也進行數(shù)據(jù)移出。Neurowire I/O對象還可被配置為主/從模式。主模式,時鐘信號輸出;從模式,時鐘信號是輸入。在主模式下,引腳IO_0~IO_7中的一個或多個可被用作片選信號,在從模式下,引腳IO_0~IO_7中的一個可被設(shè)計成超時引腳[6]。
當(dāng)使用具有不同比特率的多路復(fù)用串行對象或Neurowire I/O對象時,必須使用編譯器指令“#pragma enable_multiple_baud”, 且在所用I/O函數(shù) (如 io_in( )和io_out())之前。其中,對Neurowire輸入/輸出對象進行顯式配制的Neuron C語句如下[5-6]:
IO_8 neurowire master|slave[select (pin-nbr)][timeout(pin-nbr)][kbaud(const-expr)]
[clockedge(+|-)]io-object-name;
作用是:IO_8:指定Neurowire輸入/輸出對象使用引腳IO_8~IO_10,其中 IO_8時鐘信號,IO_9串行數(shù)據(jù)輸出,IO_10串行數(shù)據(jù)輸入;
Master:指定Neuron芯片在引腳IO_8上提供時鐘,輸出;
Slave:指定Neuron芯片檢測引腳IO_8上的時鐘,輸入;
Select (pin-nbr): 為 Neurowire master指定片選引腳,為IO_0~IO_7之一;
Timeout(pin-nbr):為 Neurowire slave 指定一個可選擇的超時信號引腳,其范圍是IO_0~IO_7;使用超時信號引腳,當(dāng)neuron芯片等待時鐘的上升沿或下降沿時,將檢查該引腳的邏輯電平,如果檢測到邏輯電平為“1”,停止傳輸;
Kbaud (const-expr): 為 Neurowire master指定比特率,const-expr可為 1 kb/s、10 kb/s或 20 kb/s; 對于 10 MHz的Neuron芯片輸入時鐘,缺省值為20 kb/s;
Clockedge(+|-):指定數(shù)據(jù)觸發(fā)時鐘信號極性,clockedge(+)為上升沿, clockedge(-)為下降沿;
io-object-name:由用戶為該I/O對象指定的名字。
將系統(tǒng)中所用設(shè)備和IO對象進行定義,并對所用節(jié)點進行編程后即可連網(wǎng)使用[7]。例如利用智能節(jié)點采集開關(guān)量信號來控制指示燈,來實現(xiàn)對數(shù)字量的輸入和輸出控制。其中數(shù)字量輸入程序如下:
IO_0 output bit iolamp=1; //定義指示燈狀態(tài)控制端口為IO_0
IO_6 input bit ioswitch; //定義開關(guān)端口為IO_6
when(io_changes(ioswitch)) //判斷開關(guān)端口狀態(tài)變化
{if(!input_value)//開關(guān)端口狀態(tài)變化,指示燈狀態(tài)改變
{switch::nvoValue.state=!switch::nvoValue.state;
switch::nvoValue.value=switch::nvoValue.state ? (short)200:0;}//送功能模塊顯示
}
文中分析了LonWorks智能節(jié)點的組成原理、編程和使用,又介紹了用其構(gòu)成水廠全分布式管控一體化網(wǎng)絡(luò)的底層控制網(wǎng)所用設(shè)備和組網(wǎng)方法。這對于任何設(shè)計自動化生產(chǎn)線的工程項目,都有一定的參考價值。
[1]Echelon.LonMaker for Windows Release 3.1 User’s Guide[Z].USA:Echelon Corporation,2002.
[2]陳建鐸.基于LonWorks/iLon100現(xiàn)場總線控制網(wǎng)絡(luò)的結(jié)構(gòu)與實現(xiàn)[J].探測與控制學(xué)報,2006(1):59-63.CHEN Jian-duo.Structure and implementation of fieldsus control network on LonWorks[J].Journal of Detection&Control,2006(1):59-63.
[3]李言武,陳建鐸.基于LonWorks的水廠自動化管控系統(tǒng)[J].現(xiàn)代電子技術(shù),2006(8):95-97.LI Yan-wu,CHEN Jian-duo.The waterworks’ automatic management and control system based on LonWorks[J].Modern Electronics Technique,2006(8):95-97.
[4]NodeBuilder User’s Guide[Z].USA:Echelon Corporation,2002.[5]Neuron C Programmer’s Guide[Z].USA:Echelon Corporation,2002.
[6]Neuron C Reference Guide[Z].USA:Echelon Corporation,2002.
[7]程啟文,陳建鐸.Lon網(wǎng)絡(luò)中上位機與智能節(jié)點通信方式的研究與實現(xiàn)[J].微電子學(xué)與計算機,2005(7):168-170.CHENG Qi-wen,CHEN Jian-duo. Research and implementation of communication between supervisor and intelligent nodes in LonWoeks Network[J].Microelectronics&Computer,2005(7):168-170.