新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 現(xiàn)場總線水輪機(jī)組狀態(tài)監(jiān)測系統(tǒng)

現(xiàn)場總線水輪機(jī)組狀態(tài)監(jiān)測系統(tǒng)

作者: 時間:2012-08-10 來源:網(wǎng)絡(luò) 收藏

顯示報文的初始化和發(fā)送部分的實(shí)現(xiàn)程序如下:

初始化節(jié)點(diǎn)地址

#include所需頭文件

#include

#include

domain_structmydomain;//定義域結(jié)構(gòu)

mydomain=*(access_domain(0));//讀節(jié)點(diǎn)域表

mydomain.subnet=0;//設(shè)置節(jié)點(diǎn)子網(wǎng)號

mydomain.node=5;//設(shè)置節(jié)點(diǎn)號

update_damain(mydomain,0);//寫節(jié)點(diǎn)域表

發(fā)送數(shù)據(jù)報文

msg_tagtest_out;//聲明報文標(biāo)簽

msg_out.tag=test_out;//傳遞報文標(biāo)簽

msg_out.dest_addr.snode.node=0;//定義目的地址節(jié)點(diǎn)號

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é)點(diǎn)類型

memcpy(msg_out.data,a0,nLength);//填充報文內(nèi)容

msg_send();//發(fā)送報文

在初始化程序中,用數(shù)據(jù)結(jié)構(gòu)domain_struct定義節(jié)點(diǎn)的子網(wǎng)號、節(jié)點(diǎn)號,即設(shè)置節(jié)點(diǎn)在LON總線上的地址。在發(fā)送程序中利用msg_out結(jié)構(gòu)構(gòu)造報文,其中,目的地址指向適配器。顯示報文的接收程序與發(fā)送部分類似,不再多述。

3.2上位機(jī)通信程序

上位機(jī)與現(xiàn)場節(jié)點(diǎn)通訊的數(shù)據(jù)通過適配器轉(zhuǎn)發(fā),適配器的IP必須事先指定。上位機(jī)利用msg_out變量(如前所述)創(chuàng)建顯示報文,將目標(biāo)節(jié)點(diǎn)的地址、需要改變的參數(shù)或要下達(dá)的命令填充到該變量中,然后用UDP封裝該變量,通過以太網(wǎng)發(fā)往適配器;適配器解析上位機(jī)發(fā)來的數(shù)據(jù)包,得到顯示報文,將該顯示報文直接向相應(yīng)的節(jié)點(diǎn)發(fā)送。同樣,適配器也將現(xiàn)場節(jié)點(diǎn)發(fā)來的顯示報文通過UDP封裝后發(fā)往上位機(jī),上位機(jī)解包后根據(jù)節(jié)點(diǎn)等信息將數(shù)據(jù)存入相應(yīng)的數(shù)據(jù)庫,等待后后續(xù)的信號處理模塊和故障診斷模塊調(diào)用


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉