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