傳感器網(wǎng)絡(luò)應(yīng)用程序的建模、仿真與自動(dòng)代碼生成框架
引言
本文引用地址:http://m.butianyuan.cn/article/161521.htm無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)在現(xiàn)場(chǎng)應(yīng)用時(shí),通過(guò)無(wú)線信道通信進(jìn)行信息共享和協(xié)作處理。
WSN應(yīng)用目前存在兩種功能分析包,即特定平臺(tái)操作系統(tǒng)和量身定制模型,在應(yīng)用程序開(kāi)發(fā)階段都存在明顯的缺陷。第一類將應(yīng)用程序遷移到其他平臺(tái)時(shí)很困難,例如從TinyOS遷移到MANTIS或遷移到ZigBee兼容平臺(tái),必須重寫(xiě)大量代碼并進(jìn)行大量調(diào)試。第二類有許多依賴于平臺(tái)的具體代碼需要開(kāi)發(fā)和調(diào)試,如果在開(kāi)發(fā)和集成階段結(jié)束后發(fā)現(xiàn)問(wèn)題,惟一的解決方法就是基于LED進(jìn)行調(diào)試,極為耗時(shí)。
The MathWorks公司構(gòu)建了基于 Simulink的傳感器網(wǎng)絡(luò)模型作為動(dòng)態(tài)系統(tǒng)的基時(shí)仿真器。模型具有兩個(gè)主要組件:無(wú)線信道模型(下文稱為Communication Medium)和Node塊。
Communication Medium塊可以通過(guò)C語(yǔ)言實(shí)現(xiàn),可將其修改為重用任意現(xiàn)有信道和連接模型。
Node塊有多個(gè)完全參數(shù)化的mote,包含硬件與軟件平臺(tái)模型。例如包括計(jì)時(shí)器、LED以及應(yīng)用程序的參數(shù)化Stateflow塊。Stateflow是一種有限狀態(tài)機(jī)語(yǔ)言,用于建模、仿真控制邏輯和流程圖??梢杂糜趯?shí)現(xiàn)各mote內(nèi)運(yùn)行的算法(應(yīng)用程序、中間件或設(shè)備驅(qū)動(dòng)器)。
只需修改模板算法(Stateflow 庫(kù)對(duì)象),在Communication Medium塊中設(shè)置節(jié)點(diǎn)的連接參數(shù)即可開(kāi)始仿真。使用動(dòng)畫(huà)狀態(tài)圖、觀測(cè)儀器和顯示器收集統(tǒng)計(jì)數(shù)據(jù),以執(zhí)行算法的功能分析。如果結(jié)果分析表明需要改進(jìn),則可通過(guò)改進(jìn)算法實(shí)現(xiàn)。
完成算法的功能分析后,通過(guò)算法的Stateflow自動(dòng)為任何受支持的WSN平臺(tái)生成代碼。這是利用RealTime Workshop Embedded Coder軟件的自定義功能完成的,它能為Simulink和Stateflow塊生成可嵌入的ANSI C代碼。
圖1 WSN的一個(gè)簡(jiǎn)單仿真框架
WSN應(yīng)用程序操作系統(tǒng)示例:TinyOS與MANTIS
TinyOS的編程模型基于組件,概念實(shí)體由模塊和配置兩類組件表示,實(shí)現(xiàn)用于聲明命令和事件簽名的接口。事件即軟件抽象,例如接受信息包、完成傳感器取樣等。命令用于觸發(fā)操作,例如傳感器讀取操作或啟動(dòng)無(wú)線電接收和傳輸信息等。TinyOS應(yīng)用程序是使用nesC編寫(xiě)的,這是C語(yǔ)言的一個(gè)擴(kuò)展。
MANTIS是一種輕量級(jí)、多線程的操作系統(tǒng),能在能源受限的分布式傳感器網(wǎng)絡(luò)上進(jìn)行多任務(wù)處理。調(diào)度程序采用基于優(yōu)先級(jí)的輪叫調(diào)度,支持線程先占(pre-emption),允許操作系統(tǒng)在活動(dòng)線程間自由切換而無(wú)需等待。由于采用了這樣的方法,操作系統(tǒng)對(duì)于關(guān)鍵事件的響應(yīng)速度比TinyOS更快。MANTIS的內(nèi)核和API都是使用標(biāo)準(zhǔn)C語(yǔ)言編寫(xiě)的。
評(píng)論