Lonworks網絡虛擬監(jiān)測系統(tǒng)研究
摘要:網絡技術應用到虛擬儀器系統(tǒng)是虛擬儀器發(fā)展的趨勢。文中介紹了采用LabVIEW為開發(fā)平臺,用Lonworks網絡作為數(shù)據通道來實現(xiàn)遠程監(jiān)測的Lonworks網絡虛擬監(jiān)測系統(tǒng)的設計方法。同時詳細介紹了虛擬儀器與Lonworks網絡的接口設計和系統(tǒng)通信的實現(xiàn)方法。
傳統(tǒng)儀器,無論是早期的模擬儀器,還是現(xiàn)在的數(shù)字化智能儀器,雖然它們的功能日益完善和強大,但是所有的功能塊都以硬件的形式存在,這使對它們的開發(fā)和應用都缺乏靈活性。虛擬儀器的出現(xiàn)是測試技術與計算機深層次的結合,從而使測試技術上升到一個新的層次。虛擬儀器在工程應用方面具有突出的優(yōu)勢,它可在通用硬件平臺確定之后,用軟件取代傳統(tǒng)儀器中的硬件來完成儀器的功能,儀器的功能可由用戶根據需要通過軟件來定義,甚至能完成傳統(tǒng)儀器因工藝和制造水平的限制而難以完成的測試工作。隨著通信技術和網絡技術的不斷發(fā)展,將網絡技術應用到虛擬儀器領域,以形成網絡化虛擬儀器是虛擬儀器發(fā)展的一個趨勢。本文介紹了一種用于Lonworks網絡(簡稱LON網)的虛擬儀器監(jiān)測系統(tǒng),給出了采用LabVIEW軟件開發(fā)平臺,并用Lonworks網絡作為信號傳輸通道來實現(xiàn)Lonworks網絡與虛擬儀器的接口設計以及通信方式。
1 Lonworks網絡虛擬儀器系統(tǒng)的結構
圖1所示是一種網絡虛擬儀器系統(tǒng)的結構框圖。圖中,虛擬儀器由一臺PC機和LabVIEW開發(fā)的應用軟件構成。LabVIEW 是一種基于圖形化編程語言的虛擬儀器軟件開發(fā)工具,它提供有豐富的功能模塊,可以支持GPIB、PXI、VXI、串口等多種總線標準。用戶可利用不同的模塊組合來編制圖形化軟件流程圖,以實現(xiàn)多種測試功能。該系統(tǒng)操作面板設計靈活,且不受“標準件”和“工藝”的限制。
Lonworks總線是Echelon公司研制的一種局部操作網絡,是一種串行數(shù)字通信鏈路。它支持雙絞線、電力線、光纖、同軸電纜等通信媒介,并支持多種網絡拓撲,可用于建立生產領域中現(xiàn)場設備之間以及更高層次控制過程設備之間的聯(lián)系。Neuron神經元芯片是Lonworks系統(tǒng)設備的核心器件。在Lon-works網絡中,以Neuron芯片為核心的智能節(jié)點主要完成各現(xiàn)場設備的信號采集和控制,一個Neuron芯片可連接多個物理I/O設備,節(jié)點掛接在lonworks總線上即可形成現(xiàn)場測控網絡。通過Neuron芯片和LonTalk通信協(xié)議便可實現(xiàn)各節(jié)點之間以及節(jié)點和上位機間的通信。由于總線具有串行特征,同時LabVIEW又提供了對串口的支持,而且PC機一般都帶有串行接口,因此,可以通過串口來實現(xiàn)虛擬儀器與Lonworks網絡的交互,并通過操作軟面板形成控制信號,以控制給定的節(jié)點,然后由節(jié)點將現(xiàn)場設備的狀態(tài)信號送到虛擬儀器進行顯示和分析。
2 虛擬儀器與Lonworks接口卡的設計
雖然Neuron芯片的I/O引腳提供了RS232半雙工異步串行工作方式,但是在傳輸速率、數(shù)據格式和通信方式方面仍有較大的局限性。網絡上節(jié)點間的通信是通過LonTalk通信協(xié)議用網絡變量或顯式消息報文的形式實現(xiàn)的。為了實現(xiàn)更靈活的應用,筆者設計了一塊LON-RS232接口卡以實現(xiàn)RS232協(xié)議與LonTalk協(xié)議的相互轉換,從而實現(xiàn)高速率、全雙工的通信。該接口卡的硬件結構如圖2所示。
該接口卡包括51協(xié)議轉換模塊、LON網接口模塊和RS232通信模塊。接口卡采用雙CPU技術。51協(xié)議轉換模塊由P89C51單片機構成,P89C51也是接口卡的主CPU,用于完成RS232標準信號與LonTalk協(xié)議之間的轉換。接口卡向上經RS232通信模塊與虛擬儀器進行通信;向下與TMPN3150進行并口通信。
LON網接口模塊由TMPN3150芯片、收發(fā)器FTT-10A、程序存儲器、數(shù)據存儲器等組成,該模塊可將主CPU接收的報文解析成LonTalk協(xié)議報文,然后通過收發(fā)器傳到LON網,或將從LON網上收到的LonTalk協(xié)議報文轉發(fā)給主CPU。TMPN3150芯片通過11個I/O口(IO0~IO10)與P89C51進行連接,它采用并行I/O模式的從A工作方式。在這種方式下,IO0~IO7將作為雙向數(shù)據線與P89C51的P0.0~P0.7連接,IO8作為片選信號線連接到P2.0腳,IO9為讀寫信號線,連接于P89C51的WR腳,IO10為握手信號線,接P2.1腳,主機(P89C51)和從機(TMPN3150)之間的數(shù)據傳輸通過虛擬的寫令牌傳遞協(xié)議來實現(xiàn),擁有令牌的一方具有對數(shù)據線的寫控制權。
RS232通信模塊由RS232接口芯片完成串口通信網絡的鏈路和協(xié)議。它由P89C51的UART進行驅動,采用中斷驅動方式。
3 系統(tǒng)通信方式的實現(xiàn)
通常,虛擬儀器測試的物理量較少,而且被測試的設備比較集中,因而信號通道一般采用并行方式。但是在設計網絡虛擬儀器系統(tǒng)時,除了要解決接口問題,還要考慮由于網絡的多種拓撲結構而要解決虛擬儀器與各個節(jié)點的有效通信問題,如尋址信息、控制信息以及數(shù)據傳輸?shù)取?/p>
3.1 控制信號的傳輸
一個Lonworks網絡包括多個節(jié)點,每個節(jié)點可以監(jiān)測多個信號,即一個節(jié)點有多個測量通道。當虛擬儀器要獲取某個被測量數(shù)據時,必須同時指定該被測量所在的節(jié)點和通道??稍谔摂M儀器的軟面板上根據實際要測量的物理量設置選擇開關,當選中某一開關時,這樣程序將根據預先的設置自動形成包含節(jié)點號、通道號的控制信息,其消息格式包括節(jié)點號、通道號、控制命令代號共3個字節(jié)。經過接口卡轉換后,節(jié)點號、通道號、控制命令代號將被寫入LonTalk顯式消息報文數(shù)據的前三個字節(jié),報文消息代碼為CONTRL_MSG,該報文以廣播方式在LON網上傳播。具體實現(xiàn)代碼如下:
IO_0 parallel slave s_bus; ?。x并口I/O對象
#define DATA_SIZE 255
Typedef struct
{
unsigned int length;
unsigned int data[255];?
} pio; //定義并口通信結構
far pio p_in;
msg_tag tag_out0;
when(io_in_ready(s_bus))? //并口有數(shù)據來
{
p_in.length=DATA_SIZE?
io_in(s_bus,&p_in);? //從并口讀取數(shù)據
//構造顯式報文
msg_out.code=CONTRL_MSG? //CONTRL_MSG是預定義的消息代碼
memcpy(msg_out.data,p_in.data,3);?
msg_out.dest_addr.bcast.type=BROADCAST;
msg_out.dest_addr.bcast.domain=0;?
msg_out.dest_addr.bcast.subnet=0;
msg_out.tag=tag_out0;
msg_send();??
}
一般情況下,節(jié)點通過when(msg_arrives(CONTRL_MSG))接收該消息,然后判斷消息數(shù)據的第一個字節(jié)的節(jié)點信息,如果不是本節(jié)點,則不作處理,如果是本節(jié)點,再判斷第二個字節(jié)的通道號,然后作相應的處理并將選中通道的數(shù)據傳送出去。
3.2 測量數(shù)據的傳輸
在測控系統(tǒng)中,各個需要測量的參數(shù)每次需要采集的數(shù)據個數(shù)可能各不相同,少的可能只有一個數(shù)據,多的可能有上千個數(shù)據,因此節(jié)點收到虛擬儀器傳來的控制信號后,選中通道的監(jiān)測數(shù)據要采用顯式消息報文傳輸。在LON網中,設計的接口卡也是一個節(jié)點,當其余節(jié)點收到發(fā)給本節(jié)點的控制信號后,會同時將相應通道的數(shù)據都發(fā)送到接口卡上。筆者采用的是消息標簽尋址。消息標簽是顯式消息的一個連接點。網絡管理工具給輸入標簽和每個輸出標簽都會賦一個唯一的網絡地址。這樣,利用捆綁器可將各個節(jié)點發(fā)送給接口卡的顯式報文的消息標簽與接口卡節(jié)點的消息輸入對象msg_in連接起來,這樣就可以實現(xiàn)點對點的數(shù)據傳送。下面以節(jié)點2收到要求發(fā)送給1號通道的數(shù)據,且該通道每次發(fā)送40個字節(jié)的數(shù)據為例,給出其發(fā)送程序:
msg_tag LON_232;
when(msg_arrives(CONTRL_MSG))
{
if(msg_in.data[0]==2)
{
switch(msg_in.data[1])?
{ case 1: //通道1
msg_out.tag=LON_232;
msg_out.code=0x0c;? //消息代碼,接口卡依此處理接收的數(shù)據
msg_out.service=ACKD;
memcpy(?msg_out.data,ch1_buf,40);
msg_send();??
break;
case 2: //其他通道的處理
......
}
}
}
LON_232是定義的輸出消息標簽,由網絡管理器將LON_232與接口卡的輸入消息標簽msg_in相關聯(lián)。在接口卡上對該消息進行處理的程序如下:
far pio p_out;
when(msg_arrives(0x0c))
{
p_out.length=msg_in.len;
memcpy(p_out.data,msg_in.data,msg_in.len);
//接收從LON網來的數(shù)據
mio_out_request(s_bus);? //向并口總線請求獲取令牌
}
when(io_out_ready(s_bus))
{
io_out(s_bus,&p_out); //數(shù)據傳向并口總線
}
4 結束語
采用Lonworks網絡化虛擬儀器,可將所有測量通道的數(shù)據都在Lonworks總線上進行傳輸,從而避免了多通道并行布線的弊端,有效實現(xiàn)了遠程數(shù)據的采集和控制。通過該網絡接口卡可使虛擬儀器任意掛接在LON網的任何地方,因而可以做成便攜式儀器,并方便靈活地在LON網上進行測試。