基于現(xiàn)場總線的水輪機組狀態(tài)監(jiān)測系統(tǒng)
3 系統(tǒng)通信程序的設(shè)計
3.1 現(xiàn)場節(jié)點通信程序
現(xiàn)場節(jié)點向上位機發(fā)送的數(shù)據(jù)首先發(fā)送到LONWORKS-ETHERNET互連適配器,該適配器實際上是一個特殊的LONWORKS節(jié)點,它把接收到的LON總線上的數(shù)據(jù)用UDP封裝,然后通過以太網(wǎng)發(fā)送到上位機。
LONWORKS網(wǎng)絡(luò)的節(jié)點之間的通信方式主要有兩種方式:網(wǎng)絡(luò)變量和顯式消息。使用網(wǎng)絡(luò)變量不必考慮消息的打包、發(fā)送以及接收問題,可以大大簡化編程,縮短應(yīng)用開發(fā)周期,但每個周期變量的數(shù)據(jù)長度一經(jīng)確定就不能改變,且最多只有31字節(jié)。而顯式消息的數(shù)據(jù)長度則是靈活可變的,最長可以是228字節(jié),但實現(xiàn)方法更為復(fù)雜。鑒于水輪機組狀態(tài)監(jiān)測系統(tǒng)對數(shù)據(jù)傳輸?shù)膶崟r性要求較高,同時需要提高足球場采集數(shù)據(jù)的上傳速度,因此希望每一次傳送的報文包含盡量多的數(shù)據(jù),因而在設(shè)計中采用顯示消息的方式實現(xiàn)與上位機的通信,每個顯式消息報文攜帶134個字節(jié)的數(shù)據(jù),其中的128個字節(jié)為傳送的數(shù)據(jù),另外6個字節(jié)為附加信息。報文的幀結(jié)構(gòu)如圖3所示。
顯示報文的初始化和發(fā)送部分的實現(xiàn)程序如下:
初始化節(jié)點地址
#include 所需頭文件 發(fā)送數(shù)據(jù)報文 msg_tag test_out; //聲明報文標簽 在初始化程序中,用數(shù)據(jù)結(jié)構(gòu)domain_struct定義節(jié)點的子網(wǎng)號、節(jié)點號,即設(shè)置節(jié)點在LON總線上的地址。在發(fā)送程序中利用msg_out結(jié)構(gòu)構(gòu)造報文,其中,目的地址指向適配器。顯示報文的接收程序與發(fā)送部分類似,不再多述。 3.2 上位機通信程序 上位機與現(xiàn)場節(jié)點通訊的數(shù)據(jù)通過適配器轉(zhuǎn)發(fā),適配器的IP必須事先指定。上位機利用msg_out變量(如前所述)創(chuàng)建顯示報文,將目標節(jié)點的地址、需要改變的參數(shù)或要下達的命令填充到該變量中,然后用UDP封裝該變量,通過以太網(wǎng)發(fā)往適配器;適配器解析上位機發(fā)來的數(shù)據(jù)包,得到顯示報文,將該顯示報文直接向相應(yīng)的節(jié)點發(fā)送。同樣,適配器也將現(xiàn)場節(jié)點發(fā)來的顯示報文通過UDP封裝后發(fā)往上位機,上位機解包后根據(jù)節(jié)點等信息將數(shù)據(jù)存入相應(yīng)的數(shù)據(jù)庫,等待后后續(xù)的信號處理模塊和故障診斷模塊調(diào)用。 4 故障診斷 系統(tǒng)采用連續(xù)小波變換對采集的信號進行處理,通過變換結(jié)果進行故障診斷。下面以采集到的水輪機的主軸上導(dǎo)Y軸方向徑向擺度信號(圖4)的數(shù)據(jù)為例說明通過小波變換進行故障診斷的結(jié)果。 選用消息矩為4的雙正交樣條小波,在[1:1:48]的尺度上對時域信號進行連續(xù)小波變換。圖5為擺度信號的小波系數(shù)在尺度一時間上的三維圖形表示。從圖中可以明顯看出周期性出現(xiàn)的四條模極大值曲線,且總是第三條斜率較小,而正常情況下三維圖中將出現(xiàn)平穩(wěn)的錐全,這說明這些點的奇異性較強。事實上這正是由于水輪機主軸滑動摩擦造成的。通過設(shè)置閾值算法得到小波的模極大值曲線,如圖6所示。兩條模極大值曲線的相交點即可以精確地指向故障點。 本文結(jié)合水輪發(fā)電機組狀態(tài)監(jiān)測的實際需要,研究開發(fā)了一種基于LONWORKS現(xiàn)場總線技術(shù)的水輪發(fā)電機組狀態(tài)監(jiān)測系統(tǒng),完成了現(xiàn)場數(shù)據(jù)采集節(jié)點的軟硬件開發(fā),設(shè)計了系統(tǒng)數(shù)據(jù)通訊的報文協(xié)議和通信軟件。系統(tǒng)上位機軟件利用MS-SQLSERVER2000數(shù)據(jù)庫進行數(shù)據(jù)存儲,通過小波變換初步實現(xiàn)了故障診斷。
#include
#include
domain_struct mydomain; //定義域結(jié)構(gòu)
mydomain=*(access_domain(0));//讀節(jié)點域表
mydomain.subnet=0; //設(shè)置節(jié)點子網(wǎng)號
mydomain.node=5; //設(shè)置節(jié)點號
update_damain(mydomain,0); //寫節(jié)點域表
msg_out.tag=test_out; //傳遞報文標簽
msg_out.dest_addr.snode.node=0; //定義目的地址節(jié)點號
msg_out.dest_addr.snode.subnet=0; //定義目的地址子網(wǎng)號
msg_out.code=0x0c; //定義報文碼
msg_out.service=ACKD; //定義報文服務(wù)類型
msg_out.dest_addr.snode.type=1; //定義目的節(jié)點類型
memcpy(msg_out.data,a0,nLength);//填充報文內(nèi)容
msg_send();//發(fā)送報文
電子血壓計相關(guān)文章:電子血壓計原理
評論