摘要:闡述了節(jié)點開發(fā)設計的過程。在硬件設計部分重點說明了神經元芯片如何擴展外部存儲器,在軟件設計部分主要論述了節(jié)點的接口文件和應用程序的定義。
關鍵詞:NodeBuilder Lonworks 智能節(jié)點 開發(fā)設計
中圖分類號:TP393 文獻標識碼:B 文章編號:1002-2422(2008)01-0008-02
1 智能節(jié)點的硬件設計
采用神經芯片3150為主處理器,外加收發(fā)器、電源、晶振、存儲器、I/O接口構成智能節(jié)點,如圖1所示。
節(jié)點中,系統的固件存儲在片外的EP2ROM中,地址為0x0000~0x3FFFH;應用程序也存儲在片外的E2PROM中,地址為0x4000~0x7FFFH;片外RAM的地址為Ox8000~0xDFFFH。系統固件的存儲地址要求從0x0000H開始,所以32kB E2PROM的地址應設計成Ox0000H~0x7FFFH;而RAM的地址是0x8000H~0xDFFFH(24kB)。將地址線A15直接作為E2pROM的選片信號線。當A15為低電平時,E2PROM被激活,因此保證了E2PROM的地址從0x0000H到0x7FFFH。地址線A13和A14進行與非邏輯再和A15與非后作為RAM存儲器的選片信號線,這樣,當地址信號線最高三位是100、101及110時,RAM存儲器的選片信號才為低電平,所以RAM存儲器的地址為1000000000000000~1101111111111111,即0x8000H~0xDFFFH,一共為24kB

2 智能節(jié)點的軟件設計
2.1利用NodeBuilder定義設備的接口文件
在設備接口的定義階段,應將設備接口定義為對其他設備可見的形式,這些接口用應用層LonMarks對象進行定義,包括標準格式和信息如何在網絡設備間交換的語義。一個遵循LonMarks協議的設備包括一個或多個LonMarks對象,每個對象由一個特定的列象類型碼和一紐網絡變量以及配置屬性進行定義。
網絡變量定義的格式如下:
network input I output[netvar—modifier][class]type[eonnectlon—info]identifier [=initial—value]
功能模塊聲明的格式如下:
fbloek
nviValue implements
nvoValue implements
}myFbName;
配置屬性聲明的格式如下:
nv_properties {
nciDefauh,
nciEnergyCnt};
為了說明設備接口文件如何人定義,以圖2所示的開環(huán)傳感器設備為例來定義設備的功能模塊、網絡變量、配置屬性(包括心跳和時閾),其代碼如下:
SCPTminSendTime cp_family neiMinSendT;
SCPTmaxSendTime cp_family nciMaxSendT;
network output SNVT_lux nvoLuxLevel
nv_properties{
nciMinSendT,
nciMaxSendT
};
foloek SFPTIightSensor
{nvoLuxLevel implements
nvoLuxLevel:
director lightSensorDirector;
}lightSensor
2.2 NodeBuilder定義設備的應用程序
設備應用程序采用Neuron c語言編寫,Neuron C是一個基于ANSI C的、并對簡單網絡通訊、硬件I/O和事件驅動處理加以擴展的高級編程語言。應用程序使用IO對象、網絡變量以及所定義的任務來編制對象和任務的運行代碼滿足設備的功能需求。在程序中,一個或多個引腳可以盧明IO對象,程序就是對IO對象的函數調用以完成程序運行中實際的IO操作。網絡變量有自身的數據類型和數據方向,它提供面向數據的應用協議,應用數據項以標準工程和其他預定義的單位在設備間交換信息。

設備I/O接口的聲明格式如下:
inputIoutput
事件及任務聲明格式如下:
When(event)
{tasks}
為了說明應用程序如何定義,以圖2所示的開環(huán)傳感器為例,其應用程序如下:
#define LIGHT_SENSOR HBCORE 100L
#define MAX LUX 1000L
#define MIN_LUX OL
mtimer mpeating LightSensorTxTimer=LIGHT_SENSOR_HBCORE;
signcd long slLighlSensorLux;
unsigned long ulLightSensorMinSendT;
unsigned long ulLightSensorMaxSendT;
IO_4 input quadrature ioWheeh;
when(io_update_oeeurs(ioWheel))
{if(fblockNormalNotLockedOut(1ightSensor::global_index)) {
slLightSensorLux+=(input_value*5);
slLightSensorLux=max(MIN_LUX,slLightSensorLux);
slLightSensorLux=min(MAX_LUX,slLightSensorLux);
if((ulLightSensorMinSendT>=
lightSensor::nvoLuxLevei::neiMinSendT)ll
(1ightSensor::nvoLuxLevd::nciMinSendT=0)){
ulLightSensorMinSendT=0;
ulLightSensorMaxSendT=0:
lightSensor::nvoLuxLevel=slLightSensorLux;}
}}
when(timer expires(lightSensorTxTimer))
{if(fblockNormalNotLockedOut(1ightSensor::global-index)){
if(ulLidnSensorMinSendT SendT){ ++ulLightSensorMinSendT; } else{if(1ighlSensor::nvoLuxLevel !=slLightSensorLux){ lightSensor::nvoLuxLevel=slLightSensorLux: ulLightSensorMinSendT=0; ulLightSensorMaxSendT=0:}} if (ulLightSensorMaxSendT MaxSendT){ ++ulLightSensorMaxSendT; }else (lightSensor::nvoLuxLevel=slLightSensorLux; ulLightSensorMinSendT=0; ulLightSensorMaxSendT=0; }}} 3 結束語 NodeBuilder工具使用Neuron c編程語言能夠很容易的開發(fā)互操作性設備,節(jié)省一半的開發(fā)時間,從而加速LonMark認證:同時,新的編程向導程序可以快速的編寫LonMark代碼。NodeBuilder工具結合硬件、軟件并以無以爭辯的事實實現復雜的網絡配制,能夠開發(fā)許多的新產品,能夠將互操作性產品快速的、以較低的成本在市場上銷售,增強市場競爭能力。