(海思生產(chǎn)部推薦閱讀)
核心提示:LON神經(jīng)元芯片和單片機(jī)雙處理器結(jié)構(gòu)的模擬量輸入型智能節(jié)點(diǎn)的硬件和軟件的設(shè)計(jì),采用模數(shù)轉(zhuǎn)換芯片的數(shù)據(jù)采集系統(tǒng)、單片機(jī)和神經(jīng)元芯片的接口及神經(jīng)元芯片和物理網(wǎng)絡(luò)的接口。數(shù)據(jù)采集、并行slaveA模式的通信和利用網(wǎng)絡(luò)變量發(fā)送信息三方面的軟件程序設(shè)計(jì)。
關(guān)鍵詞:LonWorks,LonWorks產(chǎn)品,LonWorks節(jié)點(diǎn),神經(jīng)元芯片,單片機(jī),AI輸入
一、引言
信息技術(shù)飛速發(fā)展為工業(yè)過(guò)程控制領(lǐng)域?qū)y(cè)控系統(tǒng)的速度、精度、成本等方面更高的要求提供了解決方法。
Lonworks網(wǎng)絡(luò)技術(shù)作為一種監(jiān)控網(wǎng)絡(luò)系統(tǒng)的平臺(tái),憑借單一的處理器(Neuron神經(jīng)元芯片)已經(jīng)很難勝任復(fù)雜的系統(tǒng)。大多數(shù)LON節(jié)點(diǎn)利用神經(jīng)元芯片完成調(diào)度、通信等網(wǎng)絡(luò)控制任務(wù),由于Neuron芯片是八位處理器,且只提供了11個(gè)通用 I/O 口,采用了基于事件巡檢的軟件調(diào)度機(jī)制,其控制功能較弱,無(wú)法完成實(shí)時(shí)性高的多進(jìn)程、多任務(wù)的并行處理,常常不能滿足采集量和控制量要求較多的現(xiàn)場(chǎng)設(shè)備的要求。
為減少Neuron芯片在外部事件上的資源占用,以充分發(fā)揮它通訊上的優(yōu)勢(shì),能使現(xiàn)場(chǎng)設(shè)備之間快速地交換信息,滿足系統(tǒng)實(shí)時(shí)監(jiān)控的要求,有必要設(shè)計(jì)一種雙處理器結(jié)構(gòu)的LON節(jié)點(diǎn),以提高網(wǎng)絡(luò)節(jié)點(diǎn)的控制能力。但是國(guó)內(nèi)Lonworks開(kāi)發(fā)隊(duì)伍人才少,門(mén)檻高。而單片機(jī)開(kāi)發(fā)人才研發(fā)這樣的LON節(jié)點(diǎn)將對(duì)Lonworks技術(shù)起到重要的作用。在眾多類(lèi)型的LON節(jié)點(diǎn)中,模擬量輸入(AI)型節(jié)點(diǎn)最具有代表性。
二、LON智能節(jié)點(diǎn)的整體設(shè)計(jì)
Lonworks技術(shù)給各種各樣的控制網(wǎng)絡(luò)應(yīng)用提供了端到端的解決方案,為用戶(hù)方便實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境下的通信、控制、調(diào)度和輸入/輸出功能提供了技術(shù)支持。大多數(shù)LON點(diǎn)都是以神經(jīng)元芯片為核心,采用標(biāo)準(zhǔn)的控制網(wǎng)絡(luò)協(xié)議LonTalk,將節(jié)點(diǎn)連接各種傳感器、執(zhí)行器、儀表等,構(gòu)成分布式監(jiān)控網(wǎng)絡(luò),并且通過(guò)雙絞線、電力線、無(wú)線電等各種通信媒體和不同廠商的Lonworks產(chǎn)品實(shí)現(xiàn)互操作。
Motoral公司的MC143150神經(jīng)元芯片和ATMEL公司的AT89S51單片機(jī)作為節(jié)點(diǎn)的處理器,MC143150內(nèi)部具有3個(gè)八位的CPU,分別用于介質(zhì)訪問(wèn)控制、網(wǎng)絡(luò)控制、應(yīng)用處理,11個(gè)可編程的I/O口可以配制成34種對(duì)象,另外它還可以擴(kuò)展外部存儲(chǔ)器,這樣可以擴(kuò)大芯片的內(nèi)部資源。
LON節(jié)點(diǎn)在控制網(wǎng)絡(luò)中主要負(fù)責(zé)測(cè)控和通信兩大任務(wù),AT89S51單片機(jī)完成節(jié)點(diǎn)的測(cè)控任務(wù),即模擬信號(hào)和數(shù)字信號(hào)的采集處理和輸出處理;利用MC143150芯片完成節(jié)點(diǎn)的通信任務(wù)。兩處理器的數(shù)據(jù)傳輸?shù)乃俣纫筝^高,因此采用并行slaveA模式進(jìn)行通信。
三、LON節(jié)點(diǎn)的硬件設(shè)計(jì)
1.LON節(jié)點(diǎn)測(cè)控單元設(shè)計(jì)
LON節(jié)點(diǎn)在現(xiàn)場(chǎng)底層利用ADC0809芯片采集模擬信號(hào)。ADC0809的數(shù)據(jù)口直接與單片機(jī)的P0口相連,并用74LS373鎖存A/D芯片的地址信息。啟動(dòng)信號(hào)START由片選線P2.7與寫(xiě)信號(hào)WR或非產(chǎn)生,當(dāng)P2.7為低電平時(shí),或非門(mén)敞開(kāi),允許寫(xiě)信號(hào)通過(guò),即一條向AD0809寫(xiě)操作指令來(lái)啟動(dòng)轉(zhuǎn)換。ALE與START相連,即按打入的通道地址接通模擬量通道并啟動(dòng)轉(zhuǎn)換。輸出允許信號(hào)OE由讀信號(hào)RD與片選信號(hào)P2.7或非產(chǎn)生,即一條ADC0809的讀操作將數(shù)據(jù)輸出。時(shí)鐘信號(hào)由ALE輸出,采用74LS74觸發(fā)器進(jìn)行分頻,P3.3與轉(zhuǎn)換結(jié)束引腳EOC相連,單片機(jī)通過(guò)通過(guò)查詢(xún)此引腳的高低電平檢驗(yàn)是否完成一次A/D轉(zhuǎn)換。
LON節(jié)點(diǎn)由于應(yīng)用在節(jié)點(diǎn)數(shù)不超過(guò)64個(gè)的網(wǎng)絡(luò)上,且各節(jié)點(diǎn)使用普通電源供電,電路板所支持的數(shù)據(jù)傳輸速率最高不超過(guò)1.25Mb/s,因此網(wǎng)絡(luò)配置選擇直接驅(qū)動(dòng)接口是較為理想。直接驅(qū)動(dòng)接口使用神經(jīng)元芯片的內(nèi)部收發(fā)器,并配有外接電阻、保護(hù)二極管和ESD(靜電放電)保護(hù)裝置。另外,為了使收發(fā)器的輸入管腳具有ESD保護(hù),電路配置使用了2kΩ的電阻,并用51Ω的線路平衡電阻來(lái)預(yù)防短路和實(shí)現(xiàn)過(guò)壓保護(hù)。
3.MC143150與AT89S51接口設(shè)計(jì)
LON節(jié)點(diǎn)中MC143150與AT89S51的連接采用并行slave A模式。單片機(jī)作為主處理器,神經(jīng)元芯片作為通信端口與網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信。單片機(jī)的P1口與神經(jīng)元芯片MC143150的IO0~I(xiàn)O7相連作為8位數(shù)據(jù)總線,P2口的 P2.3、P2.4、P2.5作為MC143150的片選信號(hào)CS、讀/寫(xiě)信號(hào)R/ W及握手信號(hào)HS,分別與神經(jīng)元芯片MC143150 的IO8~I(xiàn)O10相連接。HS信號(hào)由神經(jīng)元芯片MC143150的內(nèi)部固件控制,當(dāng)HS為高電平時(shí),表示神經(jīng)元芯片MC143150正在讀寫(xiě)數(shù)據(jù)、處于忙狀態(tài),當(dāng)HS為低電平時(shí),表示神經(jīng)元芯片MC143150數(shù)據(jù)處理完畢,可以進(jìn)行下一次通信。在總線上AT89S51和MC143150之間不斷交換一個(gè)虛擬的寫(xiě)令牌,令牌的擁有者有寫(xiě)數(shù)據(jù)或傳遞數(shù)據(jù)的權(quán)力。當(dāng)單片機(jī)AT89S51判斷到HS信號(hào)為低時(shí),在CS信號(hào)的下降沿將數(shù)據(jù)寫(xiě)入數(shù)據(jù)總線,在CS信號(hào)的上升沿?cái)?shù)據(jù)被神經(jīng)元芯片MC143150的輸入緩沖區(qū)截取,同時(shí)導(dǎo)致HS 端變?yōu)楦唠娖?,?dāng)數(shù)據(jù)讀取結(jié)束時(shí),HS被置低,等待下次通信。
四、LON節(jié)點(diǎn)的軟件設(shè)計(jì)
LON節(jié)點(diǎn)的軟件部分包括單片機(jī)AT89S51程序設(shè)計(jì)和神經(jīng)元芯片MC143150程序設(shè)計(jì),AT89S51用C51語(yǔ)言編制,MC143150用Neuron C語(yǔ)言編制。
ADC0809 七個(gè)模擬通道的地址為7FF8H~7FFFH,單片機(jī)AT89S51通過(guò)查詢(xún)引腳EOC的高低電平檢驗(yàn)是否完成一次A/D 轉(zhuǎn)換。然后AT89S51向神經(jīng)元芯片MC143150 傳輸數(shù)據(jù),要將數(shù)據(jù)發(fā)送給MC143150,AT89S51必須模擬并行slaveA 模式的虛擬令牌傳輸協(xié)議,才能保證通信正常,MC143150由固件自動(dòng)執(zhí)行令牌傳遞協(xié)議,在任何給定的時(shí)間內(nèi),僅有一個(gè)設(shè)備擁有令牌,該令牌是一虛擬令牌,它決定著哪一設(shè)備擁有寫(xiě)總線權(quán),若 AT89S51 擁有令牌,它有權(quán)將準(zhǔn)備好的數(shù)據(jù)發(fā)送給或?qū)⒘钆平唤oMC143150,若MC143150 擁有令牌,它可將準(zhǔn)備好的數(shù)據(jù)發(fā)送給AT89S51或交出令牌,因而令牌在AT89S51與 MC143150之間以乒乓方式來(lái)回傳遞。最后MC143150通過(guò)Lontalk協(xié)議將信息發(fā)送到網(wǎng)絡(luò)上,具體實(shí)現(xiàn)采用網(wǎng)絡(luò)變量這一形式。應(yīng)用程序賦值給輸出網(wǎng)絡(luò)變量,然后Lontalk協(xié)議透明地將修改后的值構(gòu)成網(wǎng)絡(luò)變量消息并將該消息傳遞到網(wǎng)絡(luò)層,網(wǎng)絡(luò)層將地址信息附加到消息中后傳遞到MAC(介質(zhì)訪問(wèn)控制)層,MAC層再附加上更多的信息到網(wǎng)絡(luò)變量消息中,并將消息傳遞到通道上能與之共享該網(wǎng)絡(luò)變量數(shù)據(jù)的其它節(jié)點(diǎn),實(shí)現(xiàn)控制信息的傳輸。以下代碼為節(jié)點(diǎn)程序的關(guān)鍵語(yǔ)句。
/*單片機(jī)應(yīng)用程序*/
#include
#include
#define ADC0809 XBYTE[0x7ff8]
adc0809
sbie eoc=P3^3; sbit cs=P2^3;
sbit hs=P2^5; sbit rw=P2^4;
void adc0809(unsigned char *ad)
{ unsigned char i;
unsigned char *ad_adr;
ad_adr=& ADC0809;
for(i=0;i<8;i++)
{ *ad_adr=0;
While(eoc==0);
ad[i]=* ad_adr;
ad_adr++;}}
void main ( )
{ unsigned char j;
unsigned char AD[8];
adc0809(AD);
while(hs==0);
rw=0;
for(j=0;j<8;j++)
{ cs=0;
P1=AD[j];
cs=1; }
}
/*神經(jīng)元芯片應(yīng)用程序*/
#define data_size 255
IO_0 parallel slave pbus;
Struct parallel_io_interface
{ unsigned int length;
unsigned int data[data_size];}piofc;
Network output SNVT_temp_f nvovar;
When(io_in_ready(pbus))
{ piofc.length=10;
nvovar=io_in(pbus,& piofc);
}
另外,根據(jù)實(shí)際測(cè)控網(wǎng)絡(luò)的應(yīng)用要求,還可以對(duì)節(jié)點(diǎn)的配置屬性進(jìn)行聲明,包括心跳和時(shí)限閾,配置屬性聲明的格式如下:
nv_properties
{ nciMinSendT,
nciMaxSendT }
(本文節(jié)選自網(wǎng)絡(luò),不保證其正確性與完整性)