基于雙口RAM的LonWorks智能通信節(jié)點(diǎn)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:介紹一種基于雙口RAM的LonWorks現(xiàn)場(chǎng)總線智能通信節(jié)點(diǎn)的設(shè)計(jì)方法,并給出詳細(xì)的設(shè)計(jì)步驟、硬件及軟件實(shí)現(xiàn)。通過(guò)此LonWorks智能通信節(jié)點(diǎn),能夠完成RS-232-C/RS-485標(biāo)準(zhǔn)與LonTalk協(xié)議間的轉(zhuǎn)換提供RS-232-C/RS-485網(wǎng)絡(luò)到LonWorks網(wǎng)絡(luò)的接口,因此,具有很高的應(yīng)用價(jià)值。
引言
LonWorks(Local Operating Networks,局部操作網(wǎng)絡(luò))總線是由美國(guó)Echelon公司推出的一種現(xiàn)場(chǎng)總線技術(shù)。由于LonWorks控制網(wǎng)絡(luò)的開(kāi)放性、高速性和互操作性,它已廣泛用于工業(yè)、樓宇、家庭、辦公設(shè)備、交通運(yùn)輸、能源等自動(dòng)化領(lǐng)域。EIA RS-232-C/RS-485通信網(wǎng)絡(luò)在控制系統(tǒng)中應(yīng)用最為普及,許多設(shè)備大都只提供RS-232或RS-485/422接口,不能直接接入LonWorks網(wǎng)絡(luò)。因此,需要將現(xiàn)場(chǎng)LON網(wǎng)絡(luò)介質(zhì)上的信息轉(zhuǎn)換為RS-232-C/RS-485標(biāo)準(zhǔn)的信號(hào),或?qū)S-232-C/RS-485標(biāo)準(zhǔn)信號(hào)轉(zhuǎn)換為包含LonTalk協(xié)議的數(shù)據(jù),從而實(shí)現(xiàn)不同網(wǎng)絡(luò)間的數(shù)據(jù)傳輸,同時(shí)也為上位PC機(jī)、底層工作站提供轉(zhuǎn)換接口。本文所設(shè)計(jì)的LonWorks智能通信節(jié)點(diǎn)方便地與EIA RS-232-C/RS-485標(biāo)準(zhǔn)的串行I/O設(shè)備進(jìn)行通信,輕松實(shí)現(xiàn)現(xiàn)場(chǎng)節(jié)點(diǎn)與上位PC機(jī)或其它RS-232-C/RS-485控制設(shè)備之間的可靠、準(zhǔn)確、快捷數(shù)據(jù)傳遞。
1 LonWorks智能通信節(jié)點(diǎn)的硬件結(jié)構(gòu)
1.1 節(jié)點(diǎn)硬件電路設(shè)計(jì)
智能節(jié)點(diǎn)以Neuron神經(jīng)元處理器芯片為核心,其硬件電路還包括收發(fā)器、EEPROM、雙口RAM、譯碼電路和service電路等。以神經(jīng)元芯片構(gòu)成網(wǎng)絡(luò)接口,由它通過(guò)LonTalk協(xié)議與網(wǎng)上的其它智能節(jié)點(diǎn)通信,并通過(guò)雙口RAM的訪問(wèn)實(shí)現(xiàn)與其它網(wǎng)絡(luò)系統(tǒng)的數(shù)據(jù)交換。節(jié)點(diǎn)中用雙口RAM充當(dāng)不同網(wǎng)絡(luò)通信過(guò)程中現(xiàn)場(chǎng)信息的接收、發(fā)送緩沖區(qū),完成最近發(fā)送到達(dá)的交換數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā)功能,緩解和避免系統(tǒng)緩存緊張和瓶頸的產(chǎn)生。用非易失性存儲(chǔ)器EEPROM存放LonTalk網(wǎng)絡(luò)協(xié)議固件、多任務(wù)調(diào)度程序、網(wǎng)絡(luò)適配器通信管理程序以及網(wǎng)絡(luò)配置信息等。節(jié)點(diǎn)的硬件組成結(jié)構(gòu)如圖1所示。
智能節(jié)點(diǎn)的基本結(jié)構(gòu)可分為兩部分:以Neuron 3150神經(jīng)元芯片主構(gòu)成的LonWorks現(xiàn)場(chǎng)總線一側(cè),其基本功能是實(shí)現(xiàn)LON網(wǎng)絡(luò)上的智能節(jié)點(diǎn)功能;另一側(cè)是由單片機(jī)系統(tǒng)構(gòu)成的串行通信接口,其功能是實(shí)現(xiàn)EIA RS-232-C/RS-485標(biāo)準(zhǔn)的串行通信。在這兩部分間采用了雙口RAM CY7C130芯片作為數(shù)據(jù)共享區(qū)。CY7C130通信接口電路的左端口與Neuron 3150芯片連接,右端口與8051單片機(jī)系統(tǒng)連接,如圖2所示。雙口RAM的兩端都有獨(dú)立的數(shù)據(jù)線、地址線和控制線,兩端都可對(duì)雙口RAM的任意單元進(jìn)行操作。只要兩端不同時(shí)對(duì)同一地址單元進(jìn)行操作就不會(huì)發(fā)生沖突。BUSY顯示本端口想要存取的地址正在被另一個(gè)端口操作,發(fā)生硬件沖突時(shí),后操作一端的BUSY信號(hào)有效。 程序中,節(jié)點(diǎn)Neuron 3150側(cè)使用顯示報(bào)文通信,能有效實(shí)現(xiàn)智能節(jié)點(diǎn)與單片機(jī)進(jìn)行雙向通信的功能。用Neuron C語(yǔ)言進(jìn)行節(jié)點(diǎn)設(shè)計(jì)編程時(shí),必須首先查詢IO_6和IO_7的內(nèi)容。定義兩個(gè)比特類型的輸入變量INTL和BUSYL,通過(guò)查詢這兩個(gè)變量的內(nèi)容來(lái)確定程序的運(yùn)行流程。編程如下:
在應(yīng)用中分別對(duì)雙口RAM 1KB的存儲(chǔ)空間進(jìn)行定義,即CY7C130的同一存儲(chǔ)單元對(duì)于Neuron3150芯片及8051單片機(jī)系統(tǒng)各有一個(gè)地址,這樣兩個(gè)系統(tǒng)均能對(duì)其進(jìn)行存取操作。在智能節(jié)點(diǎn)中,Neuron3150芯片對(duì)1KB空間的地址為D000H~D3FFH。8051單片機(jī)系統(tǒng)對(duì)它的定義為0000H~03FFH。值得注意的是,CY7C130芯片3FFH和3FEH兩個(gè)單元被用作固定用途:當(dāng)左端Neuron3150芯片向3FFH單元寫(xiě)入數(shù)據(jù)時(shí),將產(chǎn)生中斷信號(hào)INTR;同理,當(dāng)右端8051單片機(jī)向3FEH單元寫(xiě)入數(shù)據(jù)時(shí),將產(chǎn)生中斷信號(hào)INTL。利用這兩個(gè)信號(hào),可以將系統(tǒng)設(shè)置為中斷工作方式,達(dá)到節(jié)省通信時(shí)間的目的。由于雙向數(shù)據(jù)信息的交換,可以這樣來(lái)劃分雙口RAM存儲(chǔ)區(qū)間:000H~01FFH單元存入Neuron 3150芯片向8051傳送的信息,而200H~3FFH單元存放由8051向Neuron 3150發(fā)送的信息,并將同類但不同次的信息放在固定的存儲(chǔ)單元,每次都以新的數(shù)據(jù)覆蓋上次的數(shù)據(jù)。這樣就不必進(jìn)行標(biāo)志的判斷,只需要固定單元取數(shù)據(jù)就可以進(jìn)行處理,既節(jié)省時(shí)間,又安全可靠。
1.2 硬件的抗干擾
Lon Works設(shè)備往往工作在復(fù)雜的電磁環(huán)境中,其自身各部分與周圍其它電子設(shè)備之間,都不可避免地存在各種形式的電磁干擾和靜電放電。為了保證通信的準(zhǔn)確無(wú)誤,延長(zhǎng)硬件使用壽命,該通信節(jié)點(diǎn)在設(shè)計(jì)上結(jié)合LonWorks電路自身特點(diǎn),采用有關(guān)接地、屏蔽和濾波的適當(dāng)處理,有效減小了電磁干擾的影響。針對(duì)收發(fā)器FTT-10A,設(shè)計(jì)抗干擾電路時(shí),應(yīng)主要圍繞印刷電路板上星形地結(jié)構(gòu)和火花隙的設(shè)計(jì)。對(duì)于靜電放電(ESD),在印刷電路板(PCB)設(shè)計(jì)中,采用火花放電隙,能夠削弱到達(dá)收發(fā)器和后續(xù)緩沖器電路的ESD能量,使用箝位二極管,能大大增強(qiáng)節(jié)點(diǎn)承受來(lái)自網(wǎng)絡(luò)連接端的ESD能力。對(duì)于電磁干擾,應(yīng)盡量保證強(qiáng)噪聲源(如DC/DC變換器、時(shí)鐘電路等)遠(yuǎn)離收發(fā)器FTT-10A。
2 LonWorks智能通信節(jié)點(diǎn)的軟件設(shè)計(jì)
在LON網(wǎng)程序設(shè)計(jì)中使用Neuron C語(yǔ)言。Neuron C是一種基于ANSI C且?guī)в芯W(wǎng)絡(luò)通信和高級(jí)硬件設(shè)備接口擴(kuò)展語(yǔ)句的高級(jí)不應(yīng)該。它增加了對(duì)I/O、事件處理、消息傳遞和分散數(shù)據(jù)目標(biāo)的支持,擴(kuò)充了包括軟件定時(shí)器、網(wǎng)絡(luò)變量、顯示消息、一個(gè)多任務(wù)調(diào)度程序以及其它各具特點(diǎn)的函數(shù)等。采用Neuron C語(yǔ)言開(kāi)發(fā)的應(yīng)用程序,可直接在Lonbuilder神經(jīng)元仿真器上進(jìn)行調(diào)試,因此應(yīng)用程序的開(kāi)發(fā)可獨(dú)立于硬件設(shè)計(jì)進(jìn)行。智能節(jié)點(diǎn)通信流程如圖3所示。
//*****包含文件*****
#include<string.h>
#include<control.h>
//*****公共變量聲明*****
#define Tlon_485 0xd000 //定義從LON網(wǎng)上所接收數(shù)據(jù)在雙口RAM存儲(chǔ)單元首址
#defin T485_lon 0xd0200 //定義從單片機(jī)側(cè)所接收數(shù)據(jù)在雙口RAM存儲(chǔ)單元首址[!--empirenews.page--]
IO_6 input bit INTL;//定義IO_6,IO_7為比特類型的輸入變量
IO_7 input bit BUSYL;
Msg_tag tag_out1; //定義輸出消息標(biāo)簽
//****系統(tǒng)主程序********priority when(msg_arrives)//顯示網(wǎng)絡(luò)消息事件
{unsigned int *p; //存儲(chǔ)從LON網(wǎng)上接收的數(shù)據(jù)
int i;
p=(unsigned int*)(Tlon_485);
for(i=0;I<30;i++)
{*p=msg_in.data[i];
p++;
}
}
}
when(io_in(INTL)= =0)//當(dāng)單片機(jī)側(cè)有數(shù)據(jù)時(shí)申請(qǐng)中斷
{when(io_in(BUSYL)= =1)
{unsigned int*u;
int j;
u=(unsigned int*)(T485_lon);
msg_out.code=1;
msg_out.tag=tag_out1;
for(j=0;j<30;j++)
{msg_out.data[j]=*u;
u++;
}
msg_send();//向LON網(wǎng)其它相關(guān)節(jié)點(diǎn)發(fā)送數(shù)據(jù)
}
}
圖3
3 結(jié)論
實(shí)際運(yùn)用證明,該智能通信節(jié)點(diǎn)能實(shí)現(xiàn)與其它多種常規(guī)智能節(jié)點(diǎn)(如模擬量I/O節(jié)點(diǎn)、開(kāi)關(guān)量I/O節(jié)點(diǎn)等)構(gòu)成現(xiàn)場(chǎng)總線控制網(wǎng)絡(luò),實(shí)現(xiàn)了RS-232-C/RS-485到LonWorks網(wǎng)絡(luò)網(wǎng)關(guān)的關(guān)鍵技術(shù),保證了網(wǎng)絡(luò)接口的高速數(shù)據(jù)傳送。特別在當(dāng)前樓宇自動(dòng)化DCS控制系統(tǒng)中,基于控制器串口的小型主從式RS-485控制網(wǎng)絡(luò)系統(tǒng)仍然應(yīng)用得相當(dāng)普遍。將Lonworks和RS-485兩種控制網(wǎng)絡(luò)進(jìn)行網(wǎng)絡(luò)集成,就可以充分發(fā)揮LonWorks技術(shù)在通信上的優(yōu)勢(shì),構(gòu)成節(jié)點(diǎn)的主從式RS-485網(wǎng)絡(luò)的分級(jí)混合控制網(wǎng)絡(luò)設(shè)計(jì)方案,因此有很高的推廣應(yīng)用價(jià)值。