传感器网络应用程序的建模、仿真与自动代码生成框架
时间:12-03
来源:互联网
点击:
引言
无线传感器网络(Wireless Sensor Networks,WSN)在现场应用时,传感器节点(mote)由传感、计算、通信、传动和动力组件构成。WSN由数十乃至数千个这样的节点构成,通过无线信道通信进行信息共享和协作处理。
WSN应用目前存在两种功能分析包,即特定平台操作系统和量身定制模型,在应用程序开发阶段都存在明显的缺陷。第一类将应用程序迁移到其他平台时很困难,例如从TinyOS迁移到MANTIS或迁移到ZigBee兼容平台,必须重写大量代码并进行大量调试。第二类有许多依赖于平台的具体代码需要开发和调试,如果在开发和集成阶段结束后发现问题,惟一的解决方法就是基于LED进行调试,极为耗时。
参考仿真框架
The MathWorks公司构建了基于 Simulink的传感器网络模型作为动态系统的基时仿真器。模型具有两个主要组件:无线信道模型(下文称为Communication Medium)和Node块。
Communication Medium块可以通过C语言实现,可将其修改为重用任意现有信道和连接模型。
Node块有多个完全参数化的mote,包含硬件与软件平台模型。例如包括计时器、LED以及应用程序的参数化Stateflow块。Stateflow 是一种有限状态机语言,用于建模、仿真控制逻辑和流程图。可以用于实现各mote内运行的算法(应用程序、中间件或设备驱动器)。
只需修改模板算法(Stateflow 库对象),在Communication Medium块中设置节点的连接参数即可开始仿真。使用动画状态图、观测仪器和显示器收集统计数据,以执行算法的功能分析。如果结果分析表明需要改进,则可通过改进算法实现。
完成算法的功能分析后,通过算法的Stateflow自动为任何受支持的WSN平台生成代码。这是利用RealTime Workshop Embedded Coder软件的自定义功能完成的,它能为Simulink和Stateflow块生成可嵌入的ANSI C代码。
图1 WSN的一个简单仿真框架
WSN应用程序操作系统示例:TinyOS与MANTIS
TinyOS的编程模型基于组件,概念实体由模块和配置两类组件表示,实现用于声明命令和事件签名的接口。事件即软件抽象,例如接受信息包、完成传感器取样等。命令用于触发操作,例如传感器读取操作或启动无线电接收和传输信息等。TinyOS应用程序是使用nesC编写的,这是C语言的一个扩展。
MANTIS是一种轻量级、多线程的操作系统,能在能源受限的分布式传感器网络上进行多任务处理。调度程序采用基于优先级的轮叫调度,支持线程先占 (pre-emption),允许操作系统在活动线程间自由切换而无需等待。由于采用了这样的方法,操作系统对于关键事件的响应速度比TinyOS更快。 MANTIS的内核和API都是使用标准C语言编写的。
图2 WSN应用程序建模、仿真和代码生成框架
实现 WSN 应用程序
MANTIS线程和任务的计算主体以及TinyOS的命令实际上都是使用C语言编写的。在MANTIS中,集成非常直接,因为Real-Time Workshop Embedded Coder的ANSI C输出可直接用作用户线程。TinyOS的程序由高级抽象组成,但这些抽象的主体是使用C语言编写的,因而只需要一个代码转换器,以C语言代码作为输入,将代码分割成不同的部分(包括定义、函数等),并使用这些部分来生成nesC代码。
本文使用The MathWorks公司的 Target Language Compiler(TLC)实现这样的代码转换器。它提供了生成特定平台代码的机制,可接受来自ANSI C代码的部分(例如包含、定义、函数代码等),也可为目标平台添加自定义代码。使用Stateflow时无需考虑通用函数在TinyOS或MANTIS中的实际实现,因为TLC库中已经实现了这些函数,可用于任意操作系统。通过使用TLC脚本自动生成TinyOS或MANTIS应用程序,在无需修改的前提下为目标平台编译和执行这些应用程序。并且,TLC可重写并修改源代码,分割源代码并使之适合底层平台。这不仅实现了比编译器更出色的优化,还能方便的在硬件和软件平台之间迁移应用程序。
参考文献
1. Mostafizur Mozumdar, Francesco Gregoretti, Luciano Lavagno, Laura Vanzago, Stefano Olivieri, ‘A Framework for Modeling, Simulation and Automatic Code Generation of Sensor Network Application’ in Proceedings of the 5th IEEE Communications Society Conference on Sensor, Mesh and Ad Hoc Communications and Networks (SECON 2008), San Francisco, California June 2008
2. Shah Bhatti, James Carlson, Hui Dai, Jing Deng, Jeff Rose, Anmol, Sheth, Brian Shucker, Charles Gruenwald, Adam Torgerson and Richard Han.‘MANTIS OS: An Embedded Multithreaded Operating System for Wireless Micro Sensor Platforms’ The journal of MONET , pages 563-579,2005
3. TinyOS Community Forum, An open-source OS for the networked sensor regime
http://www.tinyos.net/
4. 关于基于模型设计. http://www.mathworks.cn/mbd
作者:The MathWorks公司 Stefano Olivieri 来源:电子设计应用2009年第11期
无线传感器网络(Wireless Sensor Networks,WSN)在现场应用时,传感器节点(mote)由传感、计算、通信、传动和动力组件构成。WSN由数十乃至数千个这样的节点构成,通过无线信道通信进行信息共享和协作处理。
WSN应用目前存在两种功能分析包,即特定平台操作系统和量身定制模型,在应用程序开发阶段都存在明显的缺陷。第一类将应用程序迁移到其他平台时很困难,例如从TinyOS迁移到MANTIS或迁移到ZigBee兼容平台,必须重写大量代码并进行大量调试。第二类有许多依赖于平台的具体代码需要开发和调试,如果在开发和集成阶段结束后发现问题,惟一的解决方法就是基于LED进行调试,极为耗时。
参考仿真框架
The MathWorks公司构建了基于 Simulink的传感器网络模型作为动态系统的基时仿真器。模型具有两个主要组件:无线信道模型(下文称为Communication Medium)和Node块。
Communication Medium块可以通过C语言实现,可将其修改为重用任意现有信道和连接模型。
Node块有多个完全参数化的mote,包含硬件与软件平台模型。例如包括计时器、LED以及应用程序的参数化Stateflow块。Stateflow 是一种有限状态机语言,用于建模、仿真控制逻辑和流程图。可以用于实现各mote内运行的算法(应用程序、中间件或设备驱动器)。
只需修改模板算法(Stateflow 库对象),在Communication Medium块中设置节点的连接参数即可开始仿真。使用动画状态图、观测仪器和显示器收集统计数据,以执行算法的功能分析。如果结果分析表明需要改进,则可通过改进算法实现。
完成算法的功能分析后,通过算法的Stateflow自动为任何受支持的WSN平台生成代码。这是利用RealTime Workshop Embedded Coder软件的自定义功能完成的,它能为Simulink和Stateflow块生成可嵌入的ANSI C代码。
图1 WSN的一个简单仿真框架
WSN应用程序操作系统示例:TinyOS与MANTIS
TinyOS的编程模型基于组件,概念实体由模块和配置两类组件表示,实现用于声明命令和事件签名的接口。事件即软件抽象,例如接受信息包、完成传感器取样等。命令用于触发操作,例如传感器读取操作或启动无线电接收和传输信息等。TinyOS应用程序是使用nesC编写的,这是C语言的一个扩展。
MANTIS是一种轻量级、多线程的操作系统,能在能源受限的分布式传感器网络上进行多任务处理。调度程序采用基于优先级的轮叫调度,支持线程先占 (pre-emption),允许操作系统在活动线程间自由切换而无需等待。由于采用了这样的方法,操作系统对于关键事件的响应速度比TinyOS更快。 MANTIS的内核和API都是使用标准C语言编写的。
图2 WSN应用程序建模、仿真和代码生成框架
实现 WSN 应用程序
MANTIS线程和任务的计算主体以及TinyOS的命令实际上都是使用C语言编写的。在MANTIS中,集成非常直接,因为Real-Time Workshop Embedded Coder的ANSI C输出可直接用作用户线程。TinyOS的程序由高级抽象组成,但这些抽象的主体是使用C语言编写的,因而只需要一个代码转换器,以C语言代码作为输入,将代码分割成不同的部分(包括定义、函数等),并使用这些部分来生成nesC代码。
本文使用The MathWorks公司的 Target Language Compiler(TLC)实现这样的代码转换器。它提供了生成特定平台代码的机制,可接受来自ANSI C代码的部分(例如包含、定义、函数代码等),也可为目标平台添加自定义代码。使用Stateflow时无需考虑通用函数在TinyOS或MANTIS中的实际实现,因为TLC库中已经实现了这些函数,可用于任意操作系统。通过使用TLC脚本自动生成TinyOS或MANTIS应用程序,在无需修改的前提下为目标平台编译和执行这些应用程序。并且,TLC可重写并修改源代码,分割源代码并使之适合底层平台。这不仅实现了比编译器更出色的优化,还能方便的在硬件和软件平台之间迁移应用程序。
参考文献
1. Mostafizur Mozumdar, Francesco Gregoretti, Luciano Lavagno, Laura Vanzago, Stefano Olivieri, ‘A Framework for Modeling, Simulation and Automatic Code Generation of Sensor Network Application’ in Proceedings of the 5th IEEE Communications Society Conference on Sensor, Mesh and Ad Hoc Communications and Networks (SECON 2008), San Francisco, California June 2008
2. Shah Bhatti, James Carlson, Hui Dai, Jing Deng, Jeff Rose, Anmol, Sheth, Brian Shucker, Charles Gruenwald, Adam Torgerson and Richard Han.‘MANTIS OS: An Embedded Multithreaded Operating System for Wireless Micro Sensor Platforms’ The journal of MONET , pages 563-579,2005
3. TinyOS Community Forum, An open-source OS for the networked sensor regime
http://www.tinyos.net/
4. 关于基于模型设计. http://www.mathworks.cn/mbd
作者:The MathWorks公司 Stefano Olivieri 来源:电子设计应用2009年第11期
传感器 ZigBee LED 仿真 C语言 显示器 无线电 电子 相关文章:
- 光缆结构及工艺的发展(03-04)
- 基于Zigbee的远程家庭监护系统的应用研究(04-08)
- 触摸屏基本原理(04-16)
- 无线传感器网络的服务质量保障技术(10-16)
- 网络自组织通信模式和技术研究综述(10-26)
- 视频传感器网络覆盖控制(Coverage Control)问题研究概述(11-24)