模型驱动的嵌入式仿真系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
—237—
模型驱动的嵌入式仿真系统设计
李秀萍,董云卫
(西北工业大学计算机学院,西安710072)
摘 要:为解决嵌入式系统仿真应用需求多样性的问题并提高系统的开发效率,设计一种通用嵌入式仿真系统。
该系统在Matlab/Simulink 开发环境的基础上,采用模型驱动的方法设计仿真模型并构建仿真组件库,实现了仿真系统模型的快速建立。
同时设计了多接口、可扩展的仿真器硬件结构,解决了嵌入式系统接口的多样性问题。
该仿真系统具有良好的可重用性和可移植性等特点,可用于多种嵌入式软件的开发,具有现实意义。
关键词:仿真系统;模型驱动架构;仿真模型;组件库
Design of Model-Driven Embedded Simulation System
LI Xiu-ping, DONG Yun-wei
(College of Computer, Northwestern Polytechnical University, Xi’an 710072)
【Abstract 】In order to solve the problem of diverse simulation application and improve the efficiency of development, a general simulation system for embedded software is designed, which adopts Model-Driven Architecture(MDA) development to construct simulation model for embedded system simulation based on the Matlab/Simulink. A simulation component library is built to achieve rapid establishment of the simulation system model. Extensible hardware of simulator is designed to fit variable I/O interfaces of the embedded system. The system has some strong advantages,such as reusability, portability, and can be used in the development of various embedded software.
【Key words 】simulation system; Model-Driven Architecture(MDA); simulation model; component library
计 算 机 工 程Computer Engineering 第36卷 第16期
Vol.36 No.16 2010年8月
August 2010
·工程应用技术与实现·文章编号:1000—3428(2010)16—0237—03
文献标识码:A
中图分类号:TP391.9
1 概述
嵌入式系统是面向具体应用领域的特定软硬件的紧密结合体。
因此,嵌入式软件对特定嵌入式硬件具有较强的依赖性。
在嵌入式软件开发前期,由于真实的目标环境还没建立,因此必须向开发人员提供与目标硬件相似的仿真环境,使嵌入式软件能够尽早得到较真实的运行确认[1],以提高嵌入式系统的开发效率、缩短开发周期、减少开发成本。
仿真平台是嵌入式系统开发的重要支持工具,在嵌入式系统开发的很多领域得到广泛应用,但也出现了一些问题:(1)用户应用需求的多样性要求仿真平台具有可配置、可定制的能力;(2)由于开发时间越短越好,因此要求能够在现有仿真硬件的基础上快速地开发出一套仿真软件。
为解决上述问题,本文运用模型驱动架构(Model-Driven Architecture, MDA)的思想并基于Matlab/Simulink 开发平台,设计了通用的嵌入式仿真系统。
该系统由硬件和软件2个部分组成,硬件提供了多种I/O 接口,实现了平台的可扩展性,能够适应嵌入式系统接口多样性的需求;仿真软件使用模型驱动的开发方法使仿真软件具有可定制、可重用等特点。
该仿真系统可以大幅度提高嵌入式系统的开发效率,能够对嵌入式系统的实时性、可靠性等进行验证,具有较高的实用价值。
2 理论基础
MDA 的提出为通用嵌入式仿真系统的实现提供了很好的解决方法。
MDA [2]是软件工程领域近年来的重要研究成果,MDA 方法使设计者能够独立于具体平台进行系统设计,而最终又能够在某个具体平台中实现系统,从根本上解决了软件模型与实现代码之间难以同步的问题,实现系统的可重用性,使系统具有良好的可配置性和可移植性。
MDA 软件
设计方法已经在现实的软件工程中得到了广泛应用,在仿真领域也得到了应用。
Matlab/Simulink [3]是一种对动态系统进行建模、仿真和分析的软件包,可以快速创建与系统交互的物理对象的动态行为模型。
Simulink 使用图形化的编程方式,操作方便直观,允许用户用S 函数自定义模块。
S 函数扩展了Simulink 的功能;Matlab 工具RTW(Real-Time Workshop)可用Simulink 模型生成优化的、可定制的、可移植的代码,此程序可以在实时系统和非实时系统等众多目标环境中运行仿真。
因此,Matlab/Simulink 为模型驱动的仿真系统开发提供了工具 支持。
3 通用嵌入式仿真系统设计
3.1 嵌入式仿真系统组成
嵌入式仿真系统由仿真主控计算机、仿真器、嵌入式目标机、作动器等组成,如图1所示。
目标机和作动器是进行具体仿真的连接对象,这里不作介绍。
其中,仿真主控计算
机是一台普通PC ,
具有C++ Compiler 、Matlab/Simulink 、RTW 等软件,通过以太网或串口与仿真器相连,在其上进行组件库开发、仿真模型开发、仿真参数设置、代码生成和下载、仿真控制、仿真数据回显和仿真结果分析等。
为了满足嵌入式系统的实时性要求,仿真器上运行xPC 目标、VxWorks 等
基金项目:国家自然科学基金资助重点项目“高可靠构件化嵌入式软件设计与验证技术及其支撑环境研究”(60736017) ;国家“863”计划基金资助项目“高可信嵌入式软件生产线”(2007AA010304) 作者简介:李秀萍(1985-),女,硕士研究生,主研方向:嵌入式系统设计与仿真;董云卫,教授、博士生导师
收稿日期:2010-02-11 E-mail :lixiuping0322@
—238
—实时环境。
仿真系统硬件要求具有通用性和较强的可定制功能,能够仿真嵌入式系统所需的常见外部接口。
仿真器提供多种接口,在嵌入式仿真应用中连接目标机和作动器。
图1 仿真系统组成
3.2 仿真系统硬件设计
仿真器由基于PCI 总线的便携式工控机和扩展模块组成。
丰富的I/O 接口满足了仿真回路中硬件设备多样性的需求。
根据特定仿真应用的需要,可以通过增加板卡或级联增加I/O 数目,或者通过更换板卡来支持特殊I/O 接口,满足了半实物仿真对硬件I/O 接口多样性、可扩展的需求[4]。
仿真器硬件结构由Ethernet 、串口、并口、CAN 接口、AD 卡、DA 卡、DIO 卡、隔离DIO 卡、信号调理板组成。
为了延长传输距离,除了基本的RS232以外还有RS422和RS485信号。
这些接口满足了一般嵌入式系统的接口需求。
硬件自检工具在进行仿真之前检测仿真器硬件能否正常工作,避免在仿真过程中带来不必要的麻烦。
信号调理主要完成对模拟量输入输出、数字量输入输出的调理。
由于AD 、DA 模拟信号的最大范围为±10 V ,而外界模拟信号的范围可能是几十伏,因此需要通过电平变换来匹配。
工控系统中数字信号常用的电压幅值有5 V 、12 V 、24 V 、48 V 4种,数字信号调理通过对数字输入输出信号设置跳线可以很方便地切换到上述4种电压中的一种,满足常用信号的需求。
另外,在设计时还应考虑电源隔离、阻抗匹配、抗干扰滤波、多路复用等因素。
3.3 通用嵌入式仿真系统仿真软件设计
通用嵌入式仿真系统能够为多种嵌入式系统开发提供数字仿真和半实物仿真的环境。
基于模型驱动方法开发的通用嵌入式仿真系统的功能结构如图2所示。
图2 仿真系统功能结构
系统功能分为2个部分:仿真模型开发和代码生成及仿真运行。
仿真模型开发包括仿真模型开发系统、组件库管理系统。
仿真模型开发系统包括模型编辑、参数设置、子系统封装等。
组件库管理系统支持组件添加、组件查找、组件删除等操作。
代码生成及仿真运行阶段包括目标代码生成工具和监控系统。
目标代码生成工具完成仿真器目标环境配置、代码生成并下载到仿真器上的功能。
监控系统能够在仿真主控计算机上对仿真模型参数进行调整,控制仿真的运行情况,实时显示仿真数据,保存数据,并对仿真结果进行分析。
3.3.1 仿真模型开发
由于被测嵌入式软件的运行环境非常复杂,目标系统和外围设备种类千差万别,因此必须针对具体设备开发相应的仿真模型,但工作量非常大。
实现通用嵌入式仿真系统最重要的是能够快速建立仿真模型[5]。
组件是具有标准对外接口和明确功能的对象,由组件构造的软件系统具有很高的可重用性和良好的可扩展性,因此,组件技术在仿真系统中得到了广泛的应用。
仿真模型采用基于组件的设计方法,这也是在仿真系统中应用MDA 需要解决的关键技术之一,重用仿真组件模型,提高开发效率。
如图3所示,仿真模型是在仿真主控计算机的Simulink 环境下建立的,Simulink 的模型组件库中存放了系统组件库、自定义组件库和仿真模型库,仿真模型可以从仿真模型库中直接加载,或者利用组件模型库中的组件搭建一个新的仿真模型,将该仿真模型存入仿真模型库中供以后使用。
仿真模型加载以后,通过RTW 编译生成在仿真器上可执行的文件,以完成模型的实例化和下载工作,这时可以设置仿真参数开始运行仿真。
图3 仿真模型开发系统
3.3.2 代码生成工具
Matlab/RTW 为模型驱动的嵌入式仿真系统开发提供了
由模型到代码的转换工具。
RTW 支持多种快速原型化的目标机类型。
RTW 的代码生成过程分为4个步骤:(1)分析模型并对模型描述文件进行编译。
TRW 首先读取模型文件(model.mdl)并对其进行编译,形成模型的中间描述文件model.rtw ,它包含了Simulink 模型的每一个模块的记录。
(2)由目标语言编译器(TLC)从模型中生成代码。
TLC 读取model.rtw 文件,通过指定的目标编译工具对各个模块编译、链接成该模型的C 源代码。
(3)生成自定义的联编文件(makefile)。
它指导联编程序从源代码、主程序、库文件或用户自定义模块进行编译和链接。
(4)生成可执行程序。
3.3.3 仿真监控系统
为了便于实时监控仿真的运行状况,设计了仿真监控系统,该系统由2个部分构成:运行在仿真主控计算机上的监控程序和运行在仿真器上的通信模块。
如图4所示,仿真主控计算机监控程序可以对仿真进行控制,如下载模型、断开连接、仿真起停控制等操作,在线调整参数,对仿真的数据进行图形化的显示,并保存仿真过程中产生的各种数据。
仿真结束后,通过获取的仿真数据对仿真结果进行分析。
仿真
—239—
主控计算机监控程序和仿真模型实例数据之间的传输是通过运行在仿真器上的通信模块实现的,通信模块使用S 函数编写,采用UDP 或TCP 通信协议实现。
图4 监控系统结构
3.3.4 仿真组件库管理系统
仿真组件库的构建为嵌入式仿真系统提供了快速建模的能力,也极大地扩展了仿真系统的应用范围。
Simulink 虽然提供了大量的仿真组件,为仿真系统的开发提供了便利,但是由于用户需求的多样性,Simulink 系统组件库不能满足特定用户的应用需求,如某些设备驱动程序和一些领域的模型,因此需要开发一个自定义组件库,与系统组件库构成通用嵌入式软件仿真组件库。
组件库管理系统提供了一种完备的存储管理和调用机制,支持向组件库添加、删除、查找组件等功能,使组件库成为一个可扩展的、开放的、易于维护的系统。
组件库管理系统包含对组件库的管理和库中组件的管理。
通过建立一个仿真系统可以识别的组件库信息索引表,完成组件和组件库与数据库存储位置之间的映射。
4 应用案例
4.1 智能家电系统描述及仿真实现
智能家电系统是一个通过电力线传输控制信号的控制系统。
该系统包括1个中央控制器、3个适配器以及被控的风扇、台灯、窗帘。
中央控制器通过串口接收用户的指令后,根据控制算法解析用户命令,通过电力线发送给适配器,适配器解析收到的控制器命令,驱动连接的控制电路,控制风扇速度、灯的开关和窗帘的开合。
由于篇幅的限制,本文只介绍半实物仿真的实验过程和结果分析。
实时环境采用xPC Target ,目标机为中央控制器。
首先,通过串口将中央控制器与仿真器相连;其次,在主控计算机上建立智能家电的仿真模型,建模对象包括电力线、适配器、风扇、台灯、窗帘以及各种接口驱动模块。
采用 50 Hz 正弦波表示220 V
交流电;然后,设置仿真模型的仿真参数;接着,利用RTW 工具将仿真模型生成可以在xPC 目标上运行的代码;最后运行该仿真系统。
4.2 实验结果分析
中央控制器接收的用户控制命令是一个
2位的字符串,第1位表示被控制的对象,后一位表示对应的操作:控制风扇的命令为0到5,表示6种风速,通过控制风扇的功率实现;对台灯和百叶窗的控制,0表示关闭,1反之。
在本实验中,向控制器输入命令14、21、31。
仿真结果如图5所示。
在图5(a)中,电流波形和X 轴的积分表示当前功率的大小,另一波形与X 轴的积分表示最大功率。
从图中易知,当前功率约占总功率的80%,与控制风速的命令一致;图5(b)的电流波形表示电源被接通,灯被打开;在图5(c)中,2个电流
波形分别对应打开窗帘电机和关闭窗帘电机,从图中可见,当前负责打开窗帘电机有电流通过,负责关闭窗帘电机无电流通过,表示窗帘被打开。
仿真结果反映了设备的运行状态,有效验证了智能家电中央控制器的正确性。
最后接入真实的风扇、灯泡、百叶窗进行实验,实际结果和仿真结果一致,达到了预期设计目的。
(a)电流波形1
(b)电流波形2
(c)电流波形3
图5 仿真结果
5 结束语
本文介绍了一种通用嵌入式仿真系统的设计方法,该系统支持基于模型驱动的嵌入式系统仿真,解决了嵌入式系统仿真应用需求多样性的问题。
模型驱动开发与传统的手工编程相比,简化了仿真模型的建立与实现,降低了仿真系统的复杂度和开发成本,提高了嵌入式仿真平台的开发效率。
因此,该通用仿真平台具有良好的应用前景。
后续的工作是仿真模型组件库的改进和完善,使该仿真系统能够应用于更多嵌入式系统的开发。
参考文献
[1] Dobrokhodov V. Real-time Simulation of Electric Machine Drives
with Hardware-in-the-loop[C]//Proc. of AIAA Modeling and Simulation Technologies Conference. [S. l.]: AIAA Press, 2005. [2] Parr S, Keith R M. The Next Step Applying the Model Driven
Architecture to HLA[C]//Proc. of the 2003 Spring Simulation Interoperability Workshop. [S. l.]: IEEE Press, 2003.
[3] Liu Yuliang, Zhang Ying. Rapid Development of Embedded
Software Based on Matlab[C]//Proc. of ICESS’08. [S. l.]: IEEE Press, 2008.
[4] 王子健, 张 军, 罗喜伶. 面向VxWorks 的半实物仿真平台的研
究和实现[J]. 计算机工程, 2007, 33(14): 257-259.
[5] 卢彩林, 顶刚毅. 嵌入式软件全数字仿真测试环境设计[J]. 计算
机仿真, 2007, 24(1): 295-297.
编辑 张正兴。