《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 傳感器網(wǎng)絡(luò)應(yīng)用程序的建模、仿真與自動(dòng)代碼生成框架
傳感器網(wǎng)絡(luò)應(yīng)用程序的建模,、仿真與自動(dòng)代碼生成框架
Icbuy
Icbuy
摘要: 無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,,WSN)在現(xiàn)場(chǎng)應(yīng)用時(shí),通過無線信道通信進(jìn)行信息共享和協(xié)作處理,。   WSN應(yīng)用目前存在兩種功能分析包,即特定平臺(tái)操作系統(tǒng)和量身定制模型,在應(yīng)用程序開發(fā)階段都存在明顯的缺陷,。第一類將應(yīng)用程序遷移到其他平臺(tái)時(shí)很困難,例如從TinyOS遷移到MANTIS或遷移到ZigBee兼容平臺(tái),,必須重寫大量代碼并進(jìn)行大量調(diào)試,。第二類有許多依賴于平臺(tái)的具體代碼需要開發(fā)和調(diào)試,如果在開發(fā)和集成階段結(jié)束后發(fā)現(xiàn)問題,,惟一的解決方法就是基于LED進(jìn)行調(diào)試,,極為耗時(shí)。
Abstract:
Key words :
  引言

  無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,,WSN)在現(xiàn)場(chǎng)應(yīng)用時(shí),,通過無線信道通信進(jìn)行信息共享和協(xié)作處理。

  WSN應(yīng)用目前存在兩種功能分析包,,即特定平臺(tái)操作系統(tǒng)和量身定制模型,,在應(yīng)用程序開發(fā)階段都存在明顯的缺陷。第一類將應(yīng)用程序遷移到其他平臺(tái)時(shí)很困難,,例如從TinyOS遷移到MANTIS或遷移到ZigBee兼容平臺(tái),,必須重寫大量代碼并進(jìn)行大量調(diào)試。第二類有許多依賴于平臺(tái)的具體代碼需要開發(fā)和調(diào)試,,如果在開發(fā)和集成階段結(jié)束后發(fā)現(xiàn)問題,,惟一的解決方法就是基于LED進(jìn)行調(diào)試,極為耗時(shí),。 

  參考仿真框架

  The MathWorks公司構(gòu)建了基于 Simulink的傳感器網(wǎng)絡(luò)模型作為動(dòng)態(tài)系統(tǒng)的基時(shí)仿真器,。模型具有兩個(gè)主要組件:無線信道模型(下文稱為Communication Medium)和Node塊。

  Communication Medium塊可以通過C語言實(shí)現(xiàn),,可將其修改為重用任意現(xiàn)有信道和連接模型,。

  Node塊有多個(gè)完全參數(shù)化的mote,包含硬件與軟件平臺(tái)模型。例如包括計(jì)時(shí)器,、LED以及應(yīng)用程序的參數(shù)化Stateflow塊,。Stateflow是一種有限狀態(tài)機(jī)語言,用于建模,、仿真控制邏輯和流程圖,。可以用于實(shí)現(xiàn)各mote內(nèi)運(yùn)行的算法(應(yīng)用程序,、中間件或設(shè)備驅(qū)動(dòng)器),。

  只需修改模板算法(Stateflow 庫對(duì)象),在Communication Medium塊中設(shè)置節(jié)點(diǎn)的連接參數(shù)即可開始仿真,。使用動(dòng)畫狀態(tài)圖,、觀測(cè)儀器和顯示器收集統(tǒng)計(jì)數(shù)據(jù),以執(zhí)行算法的功能分析,。如果結(jié)果分析表明需要改進(jìn),,則可通過改進(jìn)算法實(shí)現(xiàn)。

  完成算法的功能分析后,,通過算法的Stateflow自動(dòng)為任何受支持的WSN平臺(tái)生成代碼,。這是利用RealTime Workshop Embedded Coder軟件的自定義功能完成的,它能為Simulink和Stateflow塊生成可嵌入的ANSIC代碼,。

WSN的一個(gè)簡(jiǎn)單仿真框架

圖1 WSN的一個(gè)簡(jiǎn)單仿真框架

  WSN應(yīng)用程序操作系統(tǒng)示例:TinyOS與MANTIS

  TinyOS的編程模型基于組件,,概念實(shí)體由模塊和配置兩類組件表示,實(shí)現(xiàn)用于聲明命令和事件簽名的接口,。事件即軟件抽象,,例如接受信息包,、完成傳感器取樣等,。命令用于觸發(fā)操作,例如傳感器讀取操作或啟動(dòng)無線電接收和傳輸信息等,。TinyOS應(yīng)用程序是使用nesC編寫的,,這是C語言的一個(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)線程間自由切換而無需等待。由于采用了這樣的方法,,操作系統(tǒng)對(duì)于關(guān)鍵事件的響應(yīng)速度比TinyOS更快,。MANTIS的內(nèi)核和API都是使用標(biāo)準(zhǔn)C語言編寫的。

WSN應(yīng)用程序建模、仿真和代碼生成框架

圖2 WSN應(yīng)用程序建模,、仿真和代碼生成框架

  實(shí)現(xiàn) WSN 應(yīng)用程序

  MANTIS線程和任務(wù)的計(jì)算主體以及TinyOS的命令實(shí)際上都是使用C語言編寫的,。在MANTIS中,集成非常直接,,因?yàn)镽eal-Time Workshop Embedded Coder的ANSIC輸出可直接用作用戶線程,。TinyOS的程序由高級(jí)抽象組成,但這些抽象的主體是使用C語言編寫的,,因而只需要一個(gè)代碼轉(zhuǎn)換器,,以C語言代碼作為輸入,將代碼分割成不同的部分(包括定義,、函數(shù)等),,并使用這些部分來生成nesC代碼。

  本文使用The MathWorks公司的 Target Language Compiler(TLC)實(shí)現(xiàn)這樣的代碼轉(zhuǎn)換器,。它提供了生成特定平臺(tái)代碼的機(jī)制,,可接受來自ANSIC代碼的部分(例如包含、定義,、函數(shù)代碼等),,也可為目標(biāo)平臺(tái)添加自定義代碼。使用Stateflow時(shí)無需考慮通用函數(shù)在TinyOS或MANTIS中的實(shí)際實(shí)現(xiàn),,因?yàn)門LC庫中已經(jīng)實(shí)現(xiàn)了這些函數(shù),,可用于任意操作系統(tǒng)。通過使用TLC腳本自動(dòng)生成TinyOS或MANTIS應(yīng)用程序,,在無需修改的前提下為目標(biāo)平臺(tái)編譯和執(zhí)行這些應(yīng)用程序,。并且,TLC可重寫并修改源代碼,,分割源代碼并使之適合底層平臺(tái),。這不僅實(shí)現(xiàn)了比編譯器更出色的優(yōu)化,還能方便的在硬件和軟件平臺(tái)之間遷移應(yīng)用程序,。



 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。