基于Simulink_Stateflow模型的嵌入式软件开发研究(精)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2008年第 1期福建电脑

基于 Simulink/Stateflow 模型的嵌入式软件开发研究

任书明 , 揭金良 , 石开强

(成都理工大学信息工程学院四川成都 610054

【摘要】 :当前在控制领域内使用 Simulink/Stateflow 建模并以 RTW 生成指定代码的方式代替传统嵌入式软件开发方法已形成趋势。这是由于基于 Simulink 模型的嵌入式软件开发大大节省了软件开发的人力、物力和时间成本。本文针对在 Matlab 环境下如何使用 Simulink/Stateflow 建立模型 , 实现嵌入式软件开发的过程进行了详细介绍。

【关键词】 :Simulink , Stateflow , RTW , 模型

1. 引言

1.1模型开发的意义

鉴于软件工程化思想的引入和盛行 , 软件业发展潮流逐渐趋于工程化 , 流水化。 Matlab 环境下集成的 Simulink/Stateflow 模型设计和使用 RTW 生成目标代码的软件设计方案便是这一大背景的产物。

Matlab 集成了一组完整的、紧密集成的工具 , 形成了支持整个工程设计流程的、无缝集成的嵌入式控制系统设计解决方案。这一解决方案可以使用户方便的穿梭于建模、仿真、验证与实施之间而无须重写代码或改变软件环境。用户花费在编程与代码调试方面的时间显著减少 , 而留出更多的时间探索新思想、开发先进的技术、降低应用成本并提高产品质量。

本文所描述的解决方案基于 Matlab 环境。这一环境集成了世界上最广泛应用的动态系统仿真软件 Simulink 。它与 State-flow 、 RTW (Real-Time Workshop

及面向特殊应用领域的相关产品一起 , 提供了不同于传统的、综合的、灵活的、高效的、基于模型的设计方法。

1.2工具介绍

1.2.1Simulink/Stateflow 介绍 :

Simulink 是基于 MATLAB 的框图设计环境 , 可以用来对各种动态系统进行建模、分析和仿真 , 它的建模范围广泛 , 可以针对任何能够用数学来描述的系统进行建模 , 例如航空航天动力学系统、卫星控制制导系统、通讯系统、船舶及汽车等等 , 其中了包括连续、离散 , 条件执行 , 事件驱动 , 单速率、多速率和混杂系统等等。 Simulink 提供了利用鼠标拖放的方法建立系统框图模型的图形界面 , 而且 Simulink 还提供了丰富的功能块以及不同的专业模块集合 , 利用Simulink 几乎可以做到不书写一行代码完成整个动态系统的建模工作。

Stateflow 是一个交互式的设计工具 , 它基于有限状态机的理论 , 可以用来

对复杂的事件驱动系统进行建模和仿真。 Stateflow 与 Simulink 和MATLAB 紧密集成 , 可以将 Stateflow 创建的复杂控制逻辑有效地结合到Simulink 的模型中。 1.2.2RTW 介绍 :

由于基于模型的 Matlab 开发流程总是欠缺和工程实现的有效连接 , 系统级的设计产物无法和硬件产品直接挂钩 , 所以工程师无法直接应用 Simulink 模型的宝贵资源。为了改善设计流程中的这一缺陷 , MATLAB 产品体系中加入了连接工程实现的桥梁 -实时代码生成工具 Real-Time Workshop (RTW 。 RTW 使用户可以直接将 Simulink 框图模型转化为实时标准 C 代码 , 进而为快速原型系统、半物理仿真系统或者产品提供设计输入 , 使仿真与实际应用紧密结合。

2. 建立 Simulink/Stateflow 模型

本节主要介绍在 Matlab 下用 Simulink/Stateflow 工具建立模型 , 模型中包含了Simulink 模块 , 并使用了 Stateflow 状态图控制各状态间的转移。下面建立一个简单的仿真模型 Testmodel.mdl , 实现的功能如下 :(模型如图 1

1 系统初始输入 1, 系统的输入值在 1和 -1之间变换

2 用 scope 显示输入的值

图 1搭建的 Simulink 模型图

图 2Chart 状态机图

Testmodel.mdl 中用 Target1和 Target2模块持续产生常量 1和 -1;Switch 模块用于选择输入到 Stateflow 状态图 (Chart 中的值。 Chart 中有两个状态 , 一个状态为 :onStateOne , 另一状态为 offStateOne , 转换条件如上图所示。

3. 定制并生成代码

3.1TLC 文件介绍

鉴于嵌入式软件开发主要是以应用为导向的 , 所以就不同的嵌入式平台生成的代码规范等也不尽相同。那如何在模型设计并验证通过后生成针对具体平台下的嵌入式代码呢 ? 这就引入了与具体平台 (如操作系统和编译器等进行结合的工作。如 :在 Matlab 环境下生成支持 VxWorks 等系统的代码。

生成特定平台下定制代码的工作主要是由一个被称之为 TLC (Target Language Compiler 的文件完成的。在其中设定了生成代码的模板 , 格式 , 编译器等内容。由于篇幅问题 , 在此不作具体介绍 (详见 Matlab 下的 TLC 文

档。

我们在此以生成普通 ERT 代码指代特定操作系统 , 如需要生成指定操作系统代码只需要更换为具体平台相关联的 TLC 文件即可。 TLC 的选择如(图 3、 4 所示 :

3.2模型普通 ERT 代码生成

在生成 ERT 代码时可以通过替换 TLC 文件的方式实现有针对性地生成用于不同平台代码的工作。而这大大方便了不同平台下的软件开发差异性带来的问题。如上内容介绍 , 生成代码的工作主要是由 RTW 实现 , 下图描述了具体代码生成的步骤 :第一步 :选择图 3中的 Solver 中的 Solver Options 为 Fixed Step

第二步 :如图 4所示选择 ert.tlc 文件 ;

第三步 :点击图 3中的 Build 按钮生成并编译代码 ; (普通 ert.tlc 使用 lcc 编译

器 , 如果只生代码可以选中前面的 Generate code only 选项

通过以上三步可以生成 ert.tlc 所定制的代码。

生成代码中 79

2008年第 1期福建电脑

(上接第 73页

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

5. 实例应用

为了验证本文提出的新的改建算法的有效搜索能力 , 分别用本文中改进的遗传算法和普通的遗传算法进行了仿真结果比较 , 并做了进一步的探讨。

相关文档
最新文档