基于Simulink_Stateflow模型的嵌入式软件开发研究(精)
- 格式:doc
- 大小:25.00 KB
- 文档页数:8
符合ISO 26262的汽车电子软件开发流程董淑成**************************MathWorks中国ISO 26262(2011)高完整性软件开发标准和基于模型的设计01219901995200020052010基于模型设计的应用标准生效的年份DO-178B (1992)NASA-GB-8719.13(2004)IEC 61508(1998)DO-178C(2011)IEC 61508(2010)EN 50128(2001)EN 50128(2011)IEC 61511(2003)软件开发标准里出现基于模型的设计为什么?大纲▪ISO 26262软件开发项目的启动▪符合ISO 26262的软件开发过程软件开发ISO 26262定义的软件开发过程系统集成和测试系统设计软件需求验证软件集成和测试软件单元测试软件单元设计及实现软件需求定义软件架构设计系统测试软件测试软件测试软件测试设计验证设计验证设计验证软件开发ISO 26262的软件项目启动系统集成和测试系统设计软件需求验证软件集成和测试软件单元测试软件单元设计及实现软件需求定义软件架构设计系统测试软件测试软件测试软件测试设计验证设计验证设计验证1.软件开发计划2.软件验证计划3.编程、建模语言的选择4.编码、建模标准5.工具的选择6.工具应用指南建模/编程语言的选择及相关标准▪建模或者编程语言的选择标准–明确的定义–支持嵌入式实时软件和运行时错误处理–支持模块化、抽象及结构化▪语言本身不能涵盖的上述标准应通过相应的指导或开发环境涵盖TopicsASILA B C D 1a Enforcement of low complexity++++++++ 1b Use of Language subsets++++++++ 1c Enforcement of strong typing++++++++ 1d Use of defensive implementation technique O+++++ 1e Use of established design principles+++++ 1f Use of unambiguous graphical representation+++++++ 1g Use of style guides+++++++ 1h Use of naming conventions++++++++▪通常,汽车电子软件选择C语言–基础软件手工编写C代码–控制策略软件通过Simulink建模并自动生成代码C代码•建模/编码标准要涵盖的内容Simulink/Stateflow建模标准▪汽车行业建模标准(MAAB)–专门为汽车行业Simulink用户制定▪高完整性系统建模标准–专门为民航、火车、汽车等高完整性系统建模制定设计工具/验证工具的选择 工具的分类及资质审核TI 2TI 1TD 3TD 1TD 2TCL 3TCL 2TCL 1工具错误的检测工具置信水平高中无/ 低增加审核需求工具的影响ASIL 为TCL2级的资质审核无需额外的资质审核为TCL3级的资质审核工具分类工具资质审核UC 1..n 软件工具有引入错误或者不能检出错误的可能工具的功能/用例TÜV SÜD认证的工具▪Embedded Coder™功能:生产针对嵌入式优化的C和C++代码▪Simulink® Verification and Validation™功能:验证模型和模型生成的代码▪Simulink® Design Verifier™功能:定位设计错误,生成测试用例,并根据需求对设计进行验证▪Polyspace® Client™ for C/C++功能:证明源代码没有运行期错误▪Polyspace® Server™ for C/C++功能:在计算机集群执行代码验证并发布度量开发工具的应用指南▪除了选择开发工具之外,还要提供开发工具的应用指南▪Embedded Coder等工具具有非常详实的用户手册需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成汽车电子软件的现状和复杂软件开发的困境▪GM汽车上的代码量▪软件工程师的工作效率▪解决复杂软件开发效率低下的途径–模块化开发模块化的原则和目标▪模块划分的一般原则–从功能上–高内聚–低耦合▪模块划分的目标–简化设计–便于分工–便于测试–便于后期维护▪In order to avoid failures resulting from high complexity, the software architecture design shall exhibit the following properties,–Modularity;–Encapsulation; and–Simplicity.ISO 26262软件架构设计原则▪软件架构设计原则MethodsASILA B C D1a Hierarchical structure of software components++++++++ 1b Restricted size of software components++++++++ 1c Restricted size of interfaces++++ 1d High cohesion within each software component+++++++ 1e Restricted coupling between software components+++++++ 1f Appropriate scheduling properties++++++++ 1g Restricted use of interrupts+++++软件的层次化结构设计▪模块如何划分–从功能上划分组件▪以发动机为例,分为:点火、进气、油量计算、怠速、巡航等▪模型实现上model reference发动机控制点火控制进气计算燃油控制怠速控制巡航控制其他–对复杂组件进一步划分为单元模块▪以发动机的怠速控制为例,分为暖机怠速、闭环速度控制、扭矩请求等单元▪模型实现上model reference系统级组件级单元级单元模块的设计不建议使用Model Reference.基于模型的嵌入式软件开发需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成Simulink建模语言▪使用建模语言的子集▪Simulink和Stateflow之间的选择–如果算法是复杂的逻辑运算,使用Stateflow;–如果算法主要是数据运算,使用Simulink;▪Stateflow的flow chart和state chart之间的选择–如果算法本质上是计算工作状态或者离散状态,使用state chart;–如果算法本质上是if-then-else结构,使用flow chart或者真值表;ISO 26262软件单元的设计原则▪Example: Parallel states should not appear at the top level of a state-chart.--Misra Modeling GuidelineMethodsASILABCD1a One entry and one exit point in subprograms and functions++++++++1b No dynamic objects or variables, or else online test during their creation +++++++1c Initialization of variables++++++++1d No multiple use of variable names+++++++1e Avoid global variables or else justify their usage ++++++………1h No hidden data flow or control flow +++++++1jNo recursions++++++▪软件单元的设计和实现原则模型复杂度监测对单元模块进行复杂度监测–Model advisor–圈复杂度Simulink模型的平台化开发▪Model Variants–通过配置不同的参数选择不同的被引用模型–比如,K_Param== CLASS_A,选择Model_A.mdl;K_Param== CLASS_B,选择Model_B.mdl–支持生成条件编译的代码▪System Variants基于模型的嵌入式软件开发需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成软件开发ISO 26262定义的软件开发过程系统集成和测试系统设计软件需求验证软件集成和测试软件单元测试软件单元设计及实现软件需求定义软件架构设计系统测试软件测试软件测试软件测试设计验证设计验证设计验证MAAB及相关规范的检查▪Model Advisor实现建模规范检查▪定制检查集▪定制检查项模型评审▪模型和需求的双向追溯–模型→需求–需求→模型▪Simulink Report Generator生成报告–为非Simulink用户生成报告▪Simulink Report Generator实现不同版本模型比较使用Simulink Design Verifier检查逻辑错误▪设定生成测试用例目标为MC/DC100%覆盖▪生成测试用例▪逻辑错误导致无法生成100%覆盖的测试用例,并提示错误逻辑使用Simulink Design Verifier检查数据错误▪通过算术运算分析定位错误–数据溢出–被零除▪证明没有错误的运算演示Simulink Design Verifier检查错误单元模块的功能测试▪仿真测试▪覆盖率分析模型测试的覆盖率要求▪对单元软件测试的结构覆盖率要求–覆盖率达到分支覆盖率100%–MC/DC 要求▪对软件架构测试的覆盖率要求MethodsASILABCD1a Statement coverage ++++++1b Branch coverage+++++++1cMC/DC (Modified Conditional/Decision Coverage)+++++MethodsASILABCD1a Function coverage ++++++1bCall coverage++++++模型的集成测试▪模型的组件级集成测试▪模型的系统级测试–模型在环测试–快速原型▪不同组件之间的接口测试▪不同组件功能上是否冲突基于模型的嵌入式软件开发需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成代码生成的前提条件 模型经过充分验证模型符合建模标准功能测试覆盖率足够高模型不含有无效逻辑模型不含有数据错误GenerateCode数据对象和数据字典▪使用数据对象定义数据属性Properties (属性)Classes (类)Package (包)SimulinkSignal DataTypeData Storage ClassMin/Max ParameterData TypeData Storage ClassmodelName = 'f14';dictionaryName = 'myNewDictionary.sldd ‘;dictionaryObj =Simulink.data.dictionary.create(dictionaryName);set_param(modelName,'DataDictionary',dictionaryName);▪使用数据字典管理数据对象数据字典管理数据按照组件划分进行数据管理代码生成工具配置1. 通过系统目标文件设定回调函数2. 在代码生成设置的回调函数里固化设置软件工具除确定id 和版本号之外,还需要确定配置等效性测试▪SIL测试/PIL测试都是等效性测试–验证生成的代码和用于代码生成的模型具有相同的行为属性–PIL除等效性验证之外,还可以用来测量运行时间▪等效性测试的测试用例–功能测试的测试用例–Simulink Design Verifier自动生成▪模型覆盖率和代码覆盖率的比较代码的集成和集成测试▪代码集成的两种方式–单元模型的代码生成,代码级别做集成–模型级别集成,然后生成代码▪软硬件的系统级集成–硬件在环测试–台架测试–实车测试Plant model uController models1s2s3+Plant Model in PC uControllers1s2s3+基于模型的嵌入式软件开发需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成MathWorksChange the world byAccelerating the paceof discovery, innovation, development, and learningin engineering and science。
·44·兵工自动化Ordnance Industry Automation2018-1137(11)doi: 10.7690/bgzdh.2018.11.009基于量子框架和Stateflow模型的嵌入式系统软件设计刘芮滦,邓 杨,史伟娜,刘 志(中国工程物理研究院电子工程研究所,四川绵阳 621000)摘要:基于模型的设计是目前嵌入式系统软件设计的发展趋势,对嵌入式系统建模和根据模型自动生成代码是其关键技术。
量子框架作为一种事件驱动型的基础框架,可以作为嵌入式软件运行的支撑平台。
Stateflow模型适用于描述嵌入式系统的逻辑控制功能,利用RTW工具可以直接从该模型自动生成C代码。
以某飞行控制系统为应用实例设计其活动对象和事件,针对时序控制功能建立Stateflow模型并进行仿真,最后自动生成C代码与量子框架集成,从而实现飞行控制系统的软件设计。
研究表明:量子框架较好地支持了Stateflow模型自动生成的代码,两者结合可以实现基于模型的设计在嵌入式系统软件设计中的应用。
关键词:嵌入式系统;基于模型的设计;量子框架;Stateflow;自动代码生成中图分类号:TP391.9 文献标志码:AEmbedded System Software Design Based on Quantum Frame and Stateflow ModelLiu Ruiluan, Deng Yang, Shi Weina, Liu Zhi(Institute of Electronic Engineering, China Academy of Engineering Physics, Mianyang 621000, China) Abstract: Model-based design is nowadays the development trend of the embedded system software design, and modeling the embedded system and auto code generation by models are the key technologies. Quantum framework, as an event driven framework, can be used as a supporting platform for embedded software. Stateflow model is suitable for describing the logic control function of embedded system, and the C code can be automatically generated from the model directly by using the RTW tool. In this paper, a flight control system is used as an example to design the active objects and events, and the Stateflow model of the sequential control function is established and simulated, finally the C code is automatically generated and integrated with the quantum framework. In this way, the software of flight control system is designed. The research shows that the quantum framework can support the codes generated by Stateflow model automatically, and the combination of them can realize the application of model-based design in embedded system software design.Keywords: embedded system; model-based design; quantum frame; Stateflow; auto code generation0 引言嵌入式系统大量应用于航空航天、国防军工等安全关键领域,随着嵌入式系统软件规模和复杂度的急速增长,嵌入式系统软件设计、开发及验证面临新的挑战。
2020年第6期信息与电脑China Computer & Communication软件开发与应用基于模型的嵌入式软件开发研究王锐鑫 赵中华 沈国荣 黄 星(苏州长风航空电子有限公司,江苏 苏州 215151)摘 要:笔者通过对SCADE、Simulink以及UML的工具软件进行分析,提出了一种适用于嵌入式软件基于模型的开发方法。
大量的工程应用表明,基于模型驱动开发的软件设计方法能有效地提高嵌入式软件的开发效率。
关键词:嵌入式软件;模型;组件;开发环境中图分类号:TP311.1 文献标识码:A 文章编号:1003-9767(2020)06-109-03Research on Model-based Embedded Software DevelopmentWang Ruixin, Zhao Zhonghua, Shen Guorong, Huang Xing(Suzhou Changfeng Aviation Electronics Co., Ltd., Suzhou Jiangsu 215151, China) Abstract: Based on the analysis of the tools of scade, Simulink and UML, the author proposes a model-based development method for embedded software. A large number of engineering applications show that the software design method based on model driven development can effectively improve the development efficiency of embedded software.Key words: embedded software; model; subassembly; development environment0 引言随着计算机技术发展,嵌入式软件在各行各业都发挥着日益重要的作用,尤是在航天、高铁、通讯、航空等领域,对嵌入式软件的实时性、可靠性、安全性等要求更高。
基于AMESim与Simulink/Stateflow的汽车ABS联合建模与仿真研究汽车ABS系统是现代汽车安全性能的重要组成部分,它能够在紧急刹车时避免车轮打滑和打滑过度,保证驾驶员和乘客的人身安全。
为了更好地研究汽车ABS系统,需要进行建模与仿真研究。
本文将介绍一种基于AMESim与Simulink/Stateflow联合建模的汽车ABS系统研究方法。
首先,我们需要了解AMESim和Simulink/Stateflow的基本概念。
AMESim是一种以物理原理为基础的多领域仿真软件,可用于建立液压、气动、热流等系统的数学模型,并通过仿真来对其性能进行分析。
Simulink是一种用于建立和仿真动态系统的可视化建模工具,Stateflow则是用于建立和仿真离散事件动态系统的建模工具,它们可以相互集成,进行联合建模和仿真。
接下来,本文将介绍联合建模和仿真ABS系统的过程。
首先,需要建立车辆动力学模型,包括车轮、刹车系统和悬挂系统。
然后,需要将车轮动力学模型与刹车系统模型相结合,建立汽车ABS系统模型。
在此基础上,还需要建立控制器模型,用于确保系统能够在各种情况下正常运行。
对于车轮模型,可借助AMESim进行建模。
首先将轮胎和车轮组合在一起,导入力学特性和减震特性,建立轮胎和车轮的物理特征模型。
然后,将车轮与刹车系统相结合,建立刹车系统的物理模型。
在刹车系统中,我们需要考虑刹车片接触和离开刹车盘时的特性,以及刹车盘的温度变化等因素。
对于控制器模型,可以利用Simulink/Stateflow进行建模。
首先,需要将在汽车ABS系统中充当传感器的各种设备模型输入到模型中。
然后,需要建立控制系统模型,包括基于压力、时间和速度等因素的控制器模型和驾驶员刹车工况判断模型。
最后,需要将控制系统模型与车轮模型和刹车系统模型相结合,建立完整的汽车ABS系统模型。
完成ABS联合建模后,我们可以通过仿真来测试汽车ABS系统的性能。
基于Simulink的OSEK嵌入式软件开发方法摘要近年来,V 型开发模式在汽车电子开发领域得以广泛应用,同时Matlab/Simulink 及OSEK 实时操作系统规范已成为标准的开发平台,文章通过引入新的理念和方法将两者相结合。
首先从分析软件的架构入手,介绍了Simulink 模型中的任务识别、定时机制、基于μC/OS―II的OSEK 顺应性开发,以及在Matlab 环境下如何创建自定义的驱动库等,最后通过应用实例验证了该开发方法的可行性。
关键词嵌入式软件开发代码自动生成Matlab/Simulink OSEK μC/OS-II引言现在V 型开发模式已成为使用最广的汽车软件开发流程标准。
这一标准流程得到许多工具的支撑,有来自Mathworks 的工具,如用于功能开发和仿真的Matlab/Simulink/Stateflow,用于自动代码生成的Real―TimeWorkshop,以及来自dSpace 的工具。
硬件有用于快速控制原型开发的AutoBox 和用于硬件在环测试的模块,软件有产品级代码生成器TargetLink。
它们在加快开发周期的同时,也提高了代码的可靠性。
平台软件方面,OSEK OS 是广泛应用于汽车电子领域的嵌入式操作系统(RTOS)规范。
它定义了一些基本的系统服务,比如任务处理、中断服务程序(ISR)处理、资源管理、事件处理以及报警服务等。
由上可知,将Matlab/Simulink 的建模和仿真环境在代码生成阶段与OSEK OS 规范相结合,将极大地方便开发。
这方面Matlab 已有针对OSEK/VDX 的嵌入式对象模块,TargetLink 也实现了部分结合,但两者都局限于特定的硬件,不能应用于不同的控制器和实时操作系统。
1 嵌入式软件开发理念符合基于模型的开发和OSEK 规范的软件架构如图1 所示。
以英飞凌XC164 系列单片机为例,硬件层的核心部件由RTOS 提供的。
基于标准架构及Simulink/Stateflow的车身控制器软件开发杨国胜1贾天阳1王贺飞2(1.河南天海科技有限公司河南郑州450001;2.河南天海电器有限公司河南鹤壁458030)【摘要】本文介绍了一种车身控制器(BCM)嵌入式软件的开发平台及开发方式。
在开发过程中使用软件标准架构平台,遵循模块化设计原则,对车身控制器的功能进行详细划分,并用Simulink/Stateflow对各个模块进行建模、仿真及代码生成,实现协同开发,既保证了软件开发质量,又缩短了软件开发时间。
在对汽车电子产品成本严格要求控制的今天,这种开发方式能大大节省软件开发的人力、物力及时间成本,必然会取代传统汽车电子嵌入式软件开发方式,成为今后软件开发的趋势。
【关键词】软件架构车身控制器Simulink Stateflow建模仿真代码生成Vehicle Body Control Module Software development based on standard architecture and Simulink/StateflowYang Guosheng1,Jia Tianyang1,Wang Hefei2(Henan THB Technologies CO.,LTD,Zhengzhou450001,China;Henan THB ElectricCo.Ltd,Hebi458030,China)【Abstract】This article describes a body controller(BCM)embedded software development platform and development approach.During development,we use the standard architecture platform and follow the modularization design rule to partition the BCM sub-function module in detail.And the Sumulink/Stateflow tool is used to create statemachine,do simulation and auto code generation,which will ensure the software development quality,also the developing time is shorted.Today under the high pressure of automotive electronic product cost control,this develop method can greatly reduce the human resource,material resource and time cost,which will be bound to replace the traditional automotive electronics embedded software development,to become the future trend of software development.【Key words】software architecture,BCM,Simulink/Stateflow,Statemachine, code generation1引言当前汽车电子产品的功能日趋复杂,产品质量要求越来越严格,而开发成本则越来越低,如何提供高质量、低成本的汽车电子产品成为汽车电子企业在本行业中立于不败之地的关键。
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 , 实现的功能如下 :(模型如图 11 系统初始输入 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 所定制的代码。
生成代码中 792008年第 1期福建电脑(上接第 73页!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5. 实例应用为了验证本文提出的新的改建算法的有效搜索能力 , 分别用本文中改进的遗传算法和普通的遗传算法进行了仿真结果比较 , 并做了进一步的探讨。
选取一定量的配送目的地 , 本文中选取 6个 , 运送车辆选为 2台 , 根据数学求最优解的方法 , 可以得出问题的最优解是 67. 5。
遗传算法的参数分别选为 :对于双种群 , 主种群和次种群规模均选为 30, 主种群的选择算子采用期望值法 , 交叉率 P c=0.6、变异率 Pm=0.01; 次种群的选择算子采用赌轮法 , 交叉率 P c =0.8、变异率 Pm=0.05; 种群间个体迁移率为 P t =0.382; 世代之间交换率 P g =2(即采用隔代人口迁移法 ; 对于普通遗传算法种群规模选为 60, 交叉率 Pc=0.8、变异率 P m =0.05。
设定两组的运算 , 均迭代 50次。
运算结果如下表所示 , 从响应曲线可以看出 , 双种群的平均值 73.25, 普通遗传算法的平均值是 68.565, 由此可以的出结论 , 在参数 (种群规模 , 交叉 , 变异概率大致相同的情况下 , 应用本文提出的算法可以更好接近最优化解。
6. 结论本文提出的算法实行的是一种动态次种群中迁入新的个体 , 参与到主种群中进行竞争 , 运用黄金分割点来进行优化 , 克服了传统遗传算法算法由于受到种群规模的限制而导致的早熟或易陷入局部最优的问题 , 它增加了迭代过程中模式的多样性 , 有效地增强了算法的寻优能力和搜索速度。
通过比较 , 结果表明 , 优化后的遗传算法在解决货物配送问题上的有效性是很明显的。
根据同样的道理 , 本文提出的方法也可以运用到其他的最优解的问题上 , 例如在用于分析非线性系统的稳定性时 , 也是可行的。
参考文献 :1. 张铃 , 张钹 . 遗传算法机理的研究 [J]. 软件学报 .2000.11(72. 宋巨龙 , 钱富才 . 平面上的黄金分割法 [J]。
系统工程与实践 .3. 熊伟清 , 魏平 . 遗传算法的早熟现象研究 [J]. 计算机应用研究 .2001.94. 王复兴 . 黄金分割在自动系统故障判断中的作用 [J]. 自动化仪表 . 2001. (225. 姜大立 , 杨四龙 , 杜文 . 车辆问题的遗传算法研究 [J]. 系统工程理论与实践。
1999.19(66. 郭宇春等 . 遗传算法及其应用 . 系统工程与电子工程 [J].1998.77. 扬智民 , 王旭 , 庄显义 . 遗传算法在自动控制领域中的应用综述 [J]. 信息与控制 . 2000. 29(48. 邓正龙 , 何小荣 , 蒋兆贵等化工中的优化方法 [M]北京 :化学工业出版社。
19929. 席裕庚 , 柴天佑等 . 遗传算法综述 [J]. 信息与控制 .1996.13(6实现了模型的所有功能。
图 3RTW 选项图 4TLC 的选择4. 模型代码运行下图介绍了如生成代码如何通过 TLC 被编译并下放到目标环境运行的原理 :图 5编译目标代码过程模型代码生成并编译为指定平台可执行文件后 , 只要目标环境平台配置得当 , 就可以将生成的可执行文件下放到目标环境运行了。
在实验中我们使用了普通 ERT 方式生成代码 , 其编译器默认使用是 Matlab 自带的 Lcc 。
使用此编译器编译模型生成的代码文件 testmodel.c 可实现 EXE 文件的生成 (生成代码中有 make 文件可用 , 工具可选择直接生成可执行文件。
并可用于本地环境运行 (因为普通 ert.tlc 不是针对具体目标环境生成的 , 而仅仅是提供 ERT 代码的格式样板 , 不含与特定操作系统和编译器有关内容 , 所以编译生成后可直接本地运行。
5. 总结由本文可鉴 , 通过模型设计的方式开发嵌入式软件可以大大节省项目在开发时间和人力上的投入 , 工程师可以将注意力集中在模型的设计和验证上 , 而屏蔽了各种应用中的实现细节 (这些都由 tlc 文件来完成。
大量事实表明 , RTW 生成的代码在效率和代码可读性等方面足以与优秀的手写代码媲美。
以模型方式进行嵌入式软件的开发 , 在动辄上万行的系统中优势尤为明显。
参考文献 :1. The MathWorks Inc. R eal-Time Workshop for Users With Simulink. User' s Guide Version 6The MathWorks Inc , 2006092. MATLAB/SIMULINK 在动态系统仿真中的应用聂春燕长春大学学报2001.023. 基于 MATLAB 环境的实时仿真研究边新迎等微计算机信息 2006年第 22卷第 7-1期4. R eal -Time Workshop?Embedded Coder For Use with R eal -Time Workshop? User' s Guide Version 4The MathWorks Inc , 20065. Stateflow? and Stateflow? Coder For Use with Simulink? User' s Guide Version 6The MathWorks Inc , 200609 80。