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