基于LonWorks的管控一體化系統(tǒng)的設(shè)計和實現(xiàn)
以現(xiàn)場總線為基礎(chǔ)的
管控一體化系統(tǒng)
現(xiàn)場總線是一種新型的以智能傳感器、控制、計算機、數(shù)字通信、網(wǎng)絡(luò)為主要內(nèi)容的綜合技術(shù)。一方面,它把單個分散的測量控制設(shè)備變成網(wǎng)絡(luò)節(jié)點,以現(xiàn)場總線為紐帶,連接成可以相互溝通信息、共同完成自控任務(wù)控制網(wǎng)絡(luò)系統(tǒng),另一方面,它有和計算機系統(tǒng)相互通信的協(xié)議標準,可以和上層的管理信息系統(tǒng)進行集成和互操作。圖1表示了基于LonWorks現(xiàn)場總線的管控一體化系統(tǒng)的結(jié)構(gòu)。
(1)現(xiàn)場控制層: 由傳感器、執(zhí)行器等智能儀表構(gòu)成。
(2)過程控制層:完成基于GUI的監(jiān)控功能。
(3)信息管理層:完成信息管理、生產(chǎn)決策等功能。
管控一體化系統(tǒng)設(shè)計實例
為了對管控一體化系統(tǒng)的設(shè)計和實現(xiàn)進行實踐性的研究,我們設(shè)計了自動抄表和收繳費信息管理系統(tǒng)。
系統(tǒng)概述
系統(tǒng)采用TCP/IP(TCP/IP協(xié)議)技術(shù)和LonWorks控制網(wǎng)絡(luò)技術(shù)(LONTALK協(xié)議),使得網(wǎng)絡(luò)拓撲結(jié)構(gòu)具有良好的可靠性和可擴展性。軟件采用動態(tài)數(shù)據(jù)交換技術(shù)(DDE)和Windows可視化編程技術(shù),實現(xiàn)了實時監(jiān)控和信息管理二者的集成和融合,并保證了軟件的可擴展性。整個系統(tǒng)的結(jié)構(gòu)如圖2所示。
整個系統(tǒng)包括:
TCP/IP網(wǎng)絡(luò)數(shù)據(jù)交換機;數(shù)據(jù)服務(wù)器;自動抄表服務(wù)器;LonWorks控制網(wǎng)絡(luò)路由器;抄表控制器;遠傳表。
抄表控制器的設(shè)計和實現(xiàn)
我們利用LonBuilder開發(fā)工具進行了抄表控制器的設(shè)計,包括硬件和軟件兩部分,硬件以Neuron芯片為核心元件,軟件采用Neuron C語言進行編制。抄表控制器能夠?qū)﹄姳磔敵龅臄?shù)字脈沖進行實時采集,同時將脈沖數(shù)通過LonWorks網(wǎng)絡(luò)傳輸給上層的監(jiān)控軟件,另外還可以接受監(jiān)控軟件的命令對電表進行實時的關(guān)斷控制。
圖1 基于LonWorks的管控一體化系統(tǒng)的結(jié)構(gòu)
圖2 自動抄表及收繳費管理系統(tǒng)結(jié)構(gòu)
圖3 自動抄表控制器的硬件接口圖
硬件設(shè)計
Neuron芯片我們選用MC143150,LonWorks收發(fā)器選用FTT-10A,LonWorks通信介質(zhì)選用雙絞線。利用MC143150的通訊口(CP0——CP4)和FTT-10A相連完成與LonWorks網(wǎng)絡(luò)的通信,利用MC143150的I/O口(I/O0——I/O10)與遠傳表和關(guān)斷開關(guān)相連,完成數(shù)據(jù)采集和關(guān)斷控制。圖3為節(jié)點的硬件接口框圖。
軟件設(shè)計
LonWorks抄表控制器軟件的主要功能是:對遠傳電表的輸出脈沖進行實時采集和計數(shù),并根據(jù)監(jiān)控程序傳來的關(guān)斷命令關(guān)斷相應(yīng)電度表的用電電路。軟件中使用了網(wǎng)絡(luò)變量、I/O對象、自定義事件等,其中的關(guān)鍵點是:
?網(wǎng)絡(luò)變量和EEPROM存儲類型數(shù)據(jù)
抄表值輸出網(wǎng)絡(luò)變量NVO_DATA:這是一個用戶自定義的結(jié)構(gòu)類型的輸出網(wǎng)絡(luò)變量,它用來存放與此抄表控制器相連接的最多4個電度表的脈沖輸出累加值。
關(guān)斷控制器狀態(tài)網(wǎng)絡(luò)變量NVI_STATE:這是一個整型的標準網(wǎng)絡(luò)變量,它的值反映了四路關(guān)斷控制開關(guān)Ki(i=1,2,3,4)的狀態(tài)。NVI_STATE表示為二進制數(shù)為0000N4N3N2N1,Ki的狀態(tài)對應(yīng)NVI_STATE的第i位(Ni) 。當Ni為0時表示Ki 斷開,相應(yīng)的用電電路斷開,當N1為1時表示Ki 關(guān)合,相應(yīng)的用電電路通暢??梢酝ㄟ^此狀態(tài)的變化進行用電電路的關(guān)斷控制。
兩個EEPROM存儲類型的數(shù)據(jù):一個是用于存儲電脈沖累計值的unsigned 數(shù)組sum,另一個是用于保存關(guān)斷狀態(tài)的整數(shù)變量state。將它們放入EEPROM存儲器中,而不是放入RAM中,這樣當節(jié)點掉電時,其值不會丟失。
?I/O對象
IO0-IO3被定義為leveldetect I/O對象,用于檢測遠傳電表發(fā)來的脈沖,該對象可以以最小間隔200ns的頻率將外部TTL電平脈沖的下降沿鎖定。當檢測到脈沖的下降沿時,I/O對象的值被設(shè)定為1,可以用when語句對該鎖定值進行采樣,采樣的同時清除該值。
IO4——IO7被定義為bit I/O對象,用于發(fā)出關(guān)斷命令。
?系統(tǒng)事件和自定義事件
Neuron C語言采用事件驅(qū)動機制,當事件被用戶操作或系統(tǒng)命令觸發(fā)時,相應(yīng)的事件程序?qū)⒈粓?zhí)行。
系統(tǒng)reset事件:當節(jié)點上電或芯片復位時將首先觸發(fā)此事件,程序中用此事件進行初始化工作。
脈沖采集事件:當I/O0—I/O3的數(shù)據(jù)位(dat—data4)由0變?yōu)?時將觸發(fā)該事件,用于脈沖的檢測并進行脈沖值的累加。
關(guān)斷事件:當NVI_STATE網(wǎng)絡(luò)變量有變化時,意味著有關(guān)斷命令到來,這時將觸發(fā)關(guān)斷事件,它將根據(jù)NVI_STATE的值置關(guān)斷開關(guān)狀態(tài)。
定時器事件:程序定義了一個秒計時器,用于定時的將采集數(shù)據(jù)存入EEPROM中。
圖4為軟件流程。
圖4 抄表控制器軟件流程
監(jiān)控程序設(shè)計
要對底層遠傳電表進行監(jiān)控,需要具有DDE功能的Windows應(yīng)用程序和支持LonTalk數(shù)據(jù)格式的DDE Server程序,我們選用 C++ Builder 5.0作為監(jiān)控程序的開發(fā)語言,應(yīng)用LonManager DDE Sever完成監(jiān)控程序程序和LonWorks網(wǎng)絡(luò)的底層通信。使用C++ Builder的DDE Seesion組件(DdeClientConv,DdeClientItem,DdeServerConv和DdeServerItem),我們進行了監(jiān)控程序設(shè)計,它可以實時讀取和顯示用戶用電情況,并可根據(jù)用電用戶的交費情況計算資金結(jié)余情況,下傳關(guān)斷命令。
下面是監(jiān)控程序設(shè)計時的幾個關(guān)鍵點。
?建立DDE會話:使用DdeClientConv組件可以建立Windows應(yīng)用程序和DDE Server的會話。因為監(jiān)控程序和底層抄表節(jié)點的通訊是通過LonTalk網(wǎng)絡(luò)變量,所以建立DDE會話的話題(Topic)是“netvar”,對應(yīng)的連接函數(shù)調(diào)用形式為SetLink("lmsrvr1","netvar")。連接建立后再用函數(shù)OpenLink()打開會話,這樣DDE會話初始化工作便完成了。
?脈沖值讀取和用電量的換算:當DDE連接建立以后就可以實時進行數(shù)據(jù)的讀取了,程序通過查詢的方式對抄表節(jié)點輸出的電量脈沖累加值進行讀取,函數(shù)調(diào)用形式為:DdeClientConv1->RequestData(cn.NVO_DATA)。然后根據(jù)電表的脈沖常數(shù)(PlusConst)進行用電量的換算,將折合后的用電量存放到數(shù)組Count中。
?欠費關(guān)斷功能:從抄表節(jié)點讀出用電量后和用電用戶的預存用電量進行比較,如果兩者的差值大于給定值(MaxCredit),將對關(guān)斷網(wǎng)絡(luò)變量NVI_STATE進行修改,即向抄表節(jié)點下達關(guān)斷命令,具體的函數(shù)調(diào)用形式為:PokeData (cn.NVI_STATE, IntToStr(New_State))
?用電情況的顯示和實時更新:用電情況分為“個表監(jiān)控”和“全表監(jiān)控”兩種方式在不同表單頁上同步顯示出來。同時為了實時更新數(shù)據(jù),程序中定義了一個計時器組件,當計時時間間隔(可在程序中隨時設(shè)定)到時,將進行脈沖的重新讀取、用電量的換算和關(guān)斷狀態(tài)重新指定等。另外,在任何時間都可以進行手動的數(shù)據(jù)更新操作。
自動抄表及收繳費管理系統(tǒng)的設(shè)計和實現(xiàn)
我們在監(jiān)控程序的基礎(chǔ)上,用C++ Builder 5.0作為開發(fā)工具,利用它提供的數(shù)據(jù)庫支持功能進行了“自動抄表及收繳費管理系統(tǒng)”的設(shè)計和實現(xiàn)。它除了可以完成實時監(jiān)控功能外,還可以進行用電數(shù)據(jù)的抄收、查詢、打印等信息管理功能。
運用C++ Builde的BDE Administrator工具,我們?yōu)檎麄€系統(tǒng)建立了一個別名為CheckBD的數(shù)據(jù)庫,數(shù)據(jù)庫中主要含有以下數(shù)據(jù)表:
?用電用戶帳戶數(shù)據(jù)表Account.dbf:存儲用戶基本信息和帳戶信息。
?用電用戶用電數(shù)據(jù)表Check.dbf:存儲用戶的實時用電量。
?用電基本信息數(shù)據(jù)表Info.dbf:存儲電價、利率基本信息等。
?系統(tǒng)合法用戶數(shù)據(jù)表SysytemUser.dbf:存儲系統(tǒng)合法的操作員和管理員信息。
?系統(tǒng)操作記錄數(shù)據(jù)表Operation.dbf:存儲系統(tǒng)每次的使用記錄。
圍繞CheckDB數(shù)據(jù)庫,充分應(yīng)用C++ Builder提供的數(shù)據(jù)庫組件,包括數(shù)據(jù)訪問組件(Data Access)、數(shù)據(jù)源組件(Data Source)和數(shù)據(jù)感知組件(Data Aware)等,就可以實現(xiàn)此應(yīng)用系統(tǒng)。它除包含了一般MIS系統(tǒng)的基本功能外,還集成了對遠傳電表的監(jiān)控和抄收等控制功能。
管控一體化系統(tǒng)開發(fā)設(shè)計的一般方法
通過“自動抄表及收繳費管理系統(tǒng)”這一實例的設(shè)計和實現(xiàn)過程,我們探索出了一套基于LonWorks現(xiàn)場總線技術(shù)的管控一體化系統(tǒng)開發(fā)設(shè)計的一般方法和步驟,現(xiàn)總結(jié)如下:
(1)運用Neuron神經(jīng)元芯片及其上的專用語言Neuron C進行Lonworks網(wǎng)絡(luò)控制節(jié)點的設(shè)計,實現(xiàn)現(xiàn)場控制層的功能。
(2)利用DDE技術(shù)和支持DDE的高級語言進行Windows下GUI監(jiān)控程序的設(shè)計,完成LonWorks控制信息向信息管理系統(tǒng)的轉(zhuǎn)換和傳遞,實現(xiàn)過程監(jiān)控層的功能。
(3)在信息管理層,利用數(shù)據(jù)庫技術(shù)和可視化技術(shù)進行以監(jiān)控程序為基礎(chǔ)的信息管理應(yīng)用軟件(MIS系統(tǒng))的開發(fā),完成控制功能和信息管理功能的集成,實現(xiàn)信息管理層功能。
通過這三個步驟便可以實現(xiàn)任何圖1所示結(jié)構(gòu)的管控一體化系統(tǒng)。
結(jié)語
本文詳細敘述了一個管控一體化系統(tǒng)的設(shè)計和實現(xiàn)過程,并以此為實例進行了管控一體化系統(tǒng)設(shè)計開發(fā)一般方法、一般步驟的總結(jié)和討論。運用這個方法可以簡單、快速、高效地進行任何管控一體化系統(tǒng)的設(shè)計和實現(xiàn)?!?/P>
參考文獻
1 陽憲惠.現(xiàn)場總線技術(shù)及其應(yīng)用[M].北京:清華大學出版社,1999.
2 陳機林,陸寶春,張世琪.基于現(xiàn)場總線控制系統(tǒng)的CIPS控制結(jié)構(gòu)的研究[J].南京理工大學學報,2000,24.
3 ECHELON.LonBuilder Neuron 3150 Programmer User`s Guide[M]. ECHELON ,1998.
4 ECHELON.Neuron C Reference Guide[M].ECHELON,1997
5 ECHELON.LonManager DDE Server User`s Guide[M].ECHELON,1997.
作者簡介:馬春光,講師,博士生,主要研究方向:信息安全、現(xiàn)場總線控制技術(shù)、計算機應(yīng)用。
電度表相關(guān)文章:電度表原理
評論