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