Simulink Stateflow建模规范 HIT AEEC
- 格式:pdf
- 大小:1.23 MB
- 文档页数:32
simulink和stateflow建模方法
模型建模是系统分析与设计的重要步骤。
最重要的就是采用合适
的模型建模方法来做出合理的模型。
Simulink和Stateflow是功能强
大的模型化工具,它们分别用于控制和信号系统模型建模,通常用于
系统多层次模型建模和分析仿真。
Simulink是由The MathWorks开发的代表性工具,它是一个基于矩阵数学和符号计算引擎来构建、仿真和部署多媒体、通讯和控制应
用的平台。
Simulink使用图形图元和连线视图来建模,展示出循环模型、状态模型、控制系统等的控制模型建模的特点,简洁、直观、易
于学习,还可以以可视化的形式就仿真出来。
Stateflow可以帮助系统分析与实现建模。
它是一个基于MATLAB
的图形状态机模型建模及仿真工具,可以编写非线性系统模型,用来
描述、分析、仿真状态改变过程和事件触发规则。
它使用状态和转移
图绘制状态和事件。
它提供了实时决策、模型统一及执行等功能,使
得状态转换和规则运行非常明确地描述,方便实现。
总之,Simulink和Stateflow是要控制和信号系统的模型建模的优秀组合,既有简洁易懂的模型建模过程,又有高效灵活的仿真能力。
它们可以帮助系统工程师便利地构建多层次系统模型,开展系统分析
和设计。
SimulinkStateflow学习之MAAB建模规范分享(⼀)
前⾔:
1、建模是⼀种艺术;
2、模型丑的,作者也⼀定丑;
正⽂:
MAAB(MathWorks Automotive Advisory Board)是mathwork公司编写的Matlab/Simulink/Stateflow具体建模规范,该建模规范对于初学者来说⾮常有必要去认真研读。
该规范对模型的架构、层次划分、信号与模块等的使⽤⽅式均有说明。
最新的3.0版本⼀共136页15个章节。
这是官⽅下载地址:https:///solutions/automotive/standards/maab.html
⽹上也有⾮常多的解读⽂章,在此也也跟⼤家分享⼀下:
https:///j353838430/article/details/80261346 作者:@Tomato- ⽹站:CSDN 版权归作者所有
https:///question/54264226/answer/138618826 作者:@ ⽹站:知乎版权归作者所有
从⼀开始就培养良好的模型搭建习惯,能够在今后的⼯作与学习中成倍的增加效率。
浅谈SimulinkStateFlow建模浅谈Simulink/StateFlow建模在汽车、⼯业控制、航空航天等⾏业,系统与软件开发中,基于模型的设计(Model based Design,简称MBD)逐步在替代传统的⼿⼯代码开发⽅式,在MBD领域,Matlab/Simulink作为通⽤化的建模与代码⽣成⼯具及其相关配套的⼯具链经过多年的积累,已经在国内外以上⾏业中被应⽤到产品的开发中。
在笔者所处的⾏业,由于对象的强⾮线性、多变量耦合性、时变特性以及被控对象和控制器的复杂性,在算法、容错处理以及控制逻辑多⽅⾯都有着较⾼和较复杂的要求,⽽且以上⼏⽅⾯常常是耦合在⼀起。
基于以上考虑,不论是对被控对象还是控制器,建模是⼀件⾮常必要的事情。
⽽Simulink是⽆疑是⾸选!Simulink是从学⽣时代就接触的⼀种通⽤化建模⼯具,这⼀⼯具同样也陪伴着⾛上⼯作岗位。
⼯作的前两年,因岗位关系,精⼒更多的投⼊到了控制算法的设计与验证上,相关算法最终也可以⽤MBD⽅式⽣成代码,同时也积累了⼀定的实际应⽤经验,当前负责的业务经过积累,有了相对的突破。
但,随着接触更多更复杂的项⽬,总感觉有点缺憾,毕竟,个⼈对其他容错处理及控制业务逻辑的关注却相对较少,⼀定程度上造成了⾃⼰视野偏窄,岗位更多的定位在仿真验证上,这种外部限制也让⾃⼰“鞭长莫及”,有些对⾃我提⾼有帮助的⼯作因不是⾃⼰负责,⽆法做到全⾝性的学习与⼯作结合,对整个控制对象的控制过程的理解⾃然会有所⽋缺。
好在后来上层对当前⼯作职责的界限也有了重新的认知,有幸能在新项⽬中全⾯贯彻应⽤层都进⾏建模的要求,⽽且,代码的需求则直接源⾃更上层的需求以及模型,中远期必然是⾛MBD的⽅式。
⼀旦负责了整个应⽤层的建模,则必须将以上提到的容错处理、算法以及逻辑上进⾏通盘考虑。
其实,这时候作为建模⼈员,最重要的就是根据需求结合实现进⾏架构设计,这⾥的架构设计,从我当前的认知来说,就是基于对⼯作场景的识别来进⾏功能的解耦与划分,场景⼜可以分为⼤场景与⼩场景,⼤场景通常采⽤状态机(StateFlow)来定义,⼩场景则既可以参考⼤场景来进⾏独⽴设计成模块也可以和功能模块进⾏耦合,视具体情况和个⼈经验⽽定,功能解耦则主要体现在不同功能最终需要⽤同⼀具体控制机构(被控对象与控制器之间还存在执⾏机构)来实现,这时候既要划分不同的功能,⼜要有最终具体控制机构的综合,在功能模块中实现功能,在具体控制机构模块中实现综合,这⾥的综合更多的体现在优先级的判定与最终输出量的抉择上,以上的经验也是经过很多项⽬的实践和妥协得来的,未必说得上通⽤最优,但可以说是针对复杂对象进⾏控制建模的较好的⽅法,是⼀种不错的架构设计实践。
Matlab/Simulink/Stateflow控制算法建模规范3.0版Mathworks汽车咨询委员会(MAAB)1修订历史2介绍2.1动机MAAB建模规范无论是在组织内部还是在与合作伙伴和分包商合作时都是项目成功与团队协作的重要基础。
遵守建模规范是实现以下目标的重要前提:●无问题的系统集成●明确定义的界面●统一的模型外观、编码及文件编制●可重用模型●可读的模型●无问题的模型交换●简单高效的过程●专业的文件编制●清晰易懂的展示●快速的软件变更●与分包商的合作●将研究或重建项目移交给产品开发2.2对3.0版的批注本规范的现行版本3.0版支持MATLAB算法,包括其R2007b 至R2011b版。
3.0版参考了《美国国家航空航天局猎户座指南》中的部分规则。
参考的规则均在“参见”部分中标明了该规则在《美国国家航空航天局猎户座指南》中的编号。
2.3规范模板规范描述采用下列模板出具。
建议想要附加其他规范的公司也采用下列模板进行添加。
注:本模板的各项元素是为使规范得到合理的理解与交流所必须提供的最小项。
允许对本模板的项目或卖主部分进行补充,只要补充的部分不与原有部分在意义上重合即可。
事实上,如果上述补充能有助于整合其他规范模板并促使核心模板本身达到更广泛的接收度,这样的补充是受到鼓励的。
2.3.1规范ID●规范的ID由两个小写字母(表示规则的出处)和四位数字组成,中间用一段下划线隔开。
●一旦一份新规范有了ID,该ID将不再改变。
●ID用来指代相应的规范。
●以“na”、“jp”、“jc”、“eu”开头的ID预留给未来的MAAB规范使用。
●保留以“db”、“jm”、“hd”、“ar”开头的ID。
●新规则的ID不得以上述字母开头。
2.3.2规范标题●规范的标题应对该规范的应用领域进行简短且唯一的描述(例如,名字的长度)。
●规范的标题适用于前提条件部分及定制检测工具。
●规范的标题应与到该规范的超链接同时写出。
注:标题不应为对规范内容的多余的简要描述。
建模流程Step1:打开matlab,点击Simulink。
Step2:点击Blank ModelStep3:打开Tools→Model ExplorerStep4:点击Base WorkspaceStep5:按模型功能规范设计好的输入输出添加Signal、Parameter,同时按功能规范定义数据类型,数据维度、参数值等Step6:添加完成后Base Workspace →export,保存为.mat文件待用Step7:Library Browser → Stateflow →chart,将Chart拖入simulink中,创建Stateflow模型Step8:打开Tools→Model Explorer,点击Chart,定义输入输出以及参数等,Step9:建立Stateflow模型,在将其全选,Ctrl+G生成subsystemStep10:在连接线上右键,选择propertiesStep11:选择需要绑定的信号,绑定后会出现一个符号Step12:根据需求搭建模型Step13:点击齿轮图标,设置求解器参数,选择定步长、离散。
采样时间单位为S,具体数值由模块调用周期决定。
Mil测试:Step1:点击Analysis→Test Harness→ Create for ’…’设置测试用例输入方式Step3:生成TestModel点击TestSequence,设置测试用例Step5:点击Assessment,设置判定条件,运行Step6:打开Test Manager,导入Test FileStep7:勾选图示选项,运行Step8:查看测试结果,生成测试报告。
SimulinkStateflow建模规范--HIT-AEEC1⽬的(1)⽅便理解模型算法z模型可读性强z接⼝清晰z详细的记录(2)提⾼建模效率z模型维护容易z模型修改⽅便z模型组件重⽤性强z模型之间调⽤⽅便z模型构架清晰(3)提⾼仿真效率z仿真速度快z⽅便模型分析、监控(4)⽅便模型测试z可追溯性强z模型测试⽅便(5)⽅便⽣成代码z模型⽣成嵌⼊式代码⽅便z软件修改⽅便z⽣成的代码具有较强的鲁棒性2适⽤范围本建模规范适⽤于电动车整车控制策略开发阶段,快速原型模型的开发和维护。
预期读者对象为:熟悉整车结构,具有较强的Simulink/Stateflow建模能⼒,并熟悉整车控制思想的相关专业⼈员。
3术语和定义(⽆)。
4 控制策略建模规范4.1命名规则4.1.1⽂件名命名⽂件名命名可⽤字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _。
4.1.2路径名命名路径名命名可⽤字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 01 2 3 4 5 6 7 8 9 _。
4.1.3⼦系统命名⼦系统命名可⽤字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _。
不可⽤数字开头,不可⽤空格。
4.1.4输⼊、输出信号命名输⼊、输出信号命名可⽤字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W XY Z 0 1 2 3 4 5 6 7 8 9 _。
控制策略模型建模规范(STATEFLOW)6.1. 基本行为和状态1. Stateflow模块中至少有两个状态,且要有默认状态,每个状态不能只有一个子状态。
2. Stateflow状态图嵌套不能多于3层。
3. 单一状态视图内的子状态个数控制在6个以内,最高不超过9个。
4. Stateflow中的逻辑,不使用MATLAB函数、指令、运算符。
5. 逻辑类型的信号禁止执行比较操作。
(使用if(logical type signal))6. 逻辑运算不能用于两个布尔值。
([true && false])7. 布尔类型的信号不能与数字0、1或逻辑值true、false进行比较操作。
8. 不同类型的数据禁止执行比较操作,如果需要必须首先执行显示类型转换的操作。
9. 禁止对两个浮点类型的数值执行严格的==或!=判断操作。
10. 禁止对无符号数执行取负操作[-]。
11. 如果需要翻转逻辑类型的信号,应使用布尔操作NOT。
12. 取反符号:~用于位操作按位取反,!用于逻辑取反操作。
6.2. 事件、变量设置1. 同一个变量在单个Stateflow范围内不应该有多重定义。
2. 未使用的事件和变量不允许出现在Stateflow图块中。
3. 并行的图块或状态机中不允许出现同名的局部数据。
4. Stateflow中除0用于初始化变量,1用于自增自减操作外外,不允许常量和变量直接使用数值。
5. 事件必须定义在chart或者更低的级别,不允许chart之间进行事件交互。
6. 除触发调用函数调用子系统外,事件不应该用作状态转移的驱动条件。
7. 为了便于可读性,事件en:、du:、ex:每个应单独起一行;每个事件具体内容也应单独起一行。
6.3. 标签Stateflow的输入输出端口名称应与相应信号名称一致。
6.4. 条件与条件动作1. 条件表达式只能使用返回值为布尔类型的表达式,不允许使用整形数值。
2. 动作类型(entry(en),during(du),exit(ex),en,du: ,du,ex: ,en,ex: ,en,du,ex:)不能多次重复描述,且合并动作(en,du: ,du,ex: ,en,ex: ,en,du,ex:)的描述只能在动作序列的最顶层或最底层放置。
收稿日期:2003-10-24 第22卷 第3期计 算 机 仿 真2004年5月 文章编号:1006-9348(2005)03-0078-02Simulink 动态仿真中Stateflow 建模存在问题马玉龙(中国兵器工业第二零三研究所,陕西西安710065)摘要:M atlab 是现在工程领域中一套最为出色的科学计算软件,S imulink/S tateflow 是M atlab 自带的工具箱,主要用来实现对工程问题的模型化和动态仿真。
S imulink/S tateflow 基于模块化设计和系统级仿真的具体思想,使得建模仿真如同搭积木一样简单。
S imulink/S tateflow 对仿真的实现可以应用于动力系统、信号控制、通信设计等各个领域的研究中。
但它也有不完善的地方,如果使用不慎就会得出错误的仿真结果。
该文就以一个很简单的例子来进行了说明,并在此基础上提出了解决方案。
关键词:动态仿真;建模;存在问题中图分类号:TP391.9 文献标识码:AStateflow Model ’s Problem in Dynamic Simulation of SimulinkMA Y u -long(N o.203Research Institute of China Ordnance Industries ,X i ’an Shansi 710065,China )ABSTRACT :Matlab is an excellent scientific s oftware in engineering field.S imulink/S tateflow are tool boxes of Matlab and used to realize engineering problem ’s m odeling and dynamic ing the m odel and system idea ,the m odeling and simulation are very sim ple.S imulink/S tateflow can be used in power system ,signal control ,communication and s o on.But S tateflow has problems ,if not properly used ,we will have false result.This paper interprets it with a sim ple exam ple and gives a s olution.KE YWOR DS :Dynamic simulation ;M odeling ;Exist problem1 Simulink 简介S imulink 是Matlab 的一个分支产品,主要用来实现对工程问题的模型化和动态仿真。
1目的(1) 方便理解模型算法z模型可读性强z接口清晰z详细的记录(2) 提高建模效率z模型维护容易z模型修改方便z模型组件重用性强z模型之间调用方便z模型构架清晰(3) 提高仿真效率z仿真速度快z方便模型分析、监控(4) 方便模型测试z可追溯性强z模型测试方便(5) 方便生成代码z模型生成嵌入式代码方便z软件修改方便z生成的代码具有较强的鲁棒性2适用范围本建模规范适用于电动车整车控制策略开发阶段,快速原型模型的开发和维护。
预期读者对象为:熟悉整车结构,具有较强的Simulink/Stateflow建模能力,并熟悉整车控制思想的相关专业人员。
3术语和定义(无)。
4 控制策略建模规范4.1命名规则4.1.1文件名命名文件名命名可用字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _。
4.1.2路径名命名路径名命名可用字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _。
4.1.3子系统命名子系统命名可用字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _。
不可用数字开头,不可用空格。
4.1.4输入、输出信号命名输入、输出信号命名可用字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W XY Z 0 1 2 3 4 5 6 7 8 9 _。
不可用数字开头,不可用空格。
4.1.5信号线命名信号线命名可用字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _。
不可用数字开头,不可用空格,不可以带控制字符。
4.1.6模块命名模块命名可用字符:a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _。
不可用数字开头,不可用空格。
4.1.7注释文字注释必须写在注释区域,注释文字不影响仿真和代码生成。
4.2模型结构模型层次可以分为:顶层、触发层、结构层及数据流层。
触发层是可选的,图(1)中是模型层次结构图,其中TypeA是有触发层的运算,TypeB 是没有触发层的运算。
图(1)模型层次结构图4.2.1顶层顶层是体现模型总体外貌特征最外层,其中有模型整体输入、输出和逻辑控制部分,如图(2)所示。
图(2)顶层结构图4.2.2触发层触发层应该标注清楚触发的优先级。
图(3)触发层结构图4.2.3结构层结构层主要显示模型运算逻辑框架,结构图如图(4)所示。
图(4)结构层结构图4.2.4数据流层数据流层为模型最底层,用于表示数据传递顺序和数据运算过程。
图(5)数据流层结构图4.3模块的使用4.3.1如下模块可以在任何地方使用Inport、Outport、Mux、Demux、Bus Selector、Bus Creator、Selector、Ground、Terminator、From、Goto、Switch、Multiport Switch、Merge、Unit Delay、Rate Transition、Type Conversion、Data Store Memory,但是,Trigger和Enable模块不能在顶层使用。
4.3.2控制器中禁止使用如下模块Signal Generator、Step、Ramp、Sine Wave、Repeating Sequence、Discrete PulseGenerator、Pulse Generator、Chirp Signal、Clock、Digital Clock、From File、From Workspace、Random Number、Uniform Random Number、Band-Limited White Noise、Integrator、Derivative、Transport Delay、Variable Transport Delay、State-Space、Transfer Fcn、Zero-Pole、Slider Gain、Algebraic Constraint、Manual Switch、Complex to Magnitude-Angle、Magnitude-Angle to Complex、Complex to Real-Imag、Real-Imag to Complex、Hit Crossing、Polynomial、MATLAB Fcn、Goto Tag Visibility、Probe Scope、XY Graph、DisplayTo File、To Workspace、Stop Simulation、Floating Scope。
4.4模型配置Simulink-Configuration Parameter-diagnostics里的配置如下: Solver Diagnostics• Algebraic loop• Minimize algebraic loop•Sample Time Diagnostics• Multitask rate transition•Data Validity Diagnostics• Inf or NaN block output• Duplicate data store names•Connectivity• Unconnected block input ports• Unconnected block output ports• Unconnected line• Unspecified bus object at root Outport block• Mux blocks used to create bus signals• Invalid function-call connection• Element name mismatch以上选项应该选择“warning”。
4.5 Simulink与stateflow的区分使用如果函数主要进行逻辑运算,则选择使用Stateflow。
如果函数主要进行数值运算,则选择使用Simulink。
4.6 Simulink建模规范4.6.1 Simulink模块布置规范4.6.1.1 Simulink外观(1)所有的Simulink窗口都应采用白色背景。
(2)视图的放大率应为100%。
如果在100%视图放大率的情况下,模型超出Simulink窗口,可选择“fit system to view”。
(3)模型中所有文字的颜色应为黑色。
模块名、注释文字、信号名字体为12PT。
或者模块名字采用10pt Arial字体,信号名采用9pt Arial字体,解释或注释文字采用10pt Tines New Roman 字体。
(4)注释部分不应有阴影。
(5)若在模型中提供作者、模型及版本信息,这些文字应有外框,即选择“show block frame”。
4.6.1.2模块总体规范(1)模块应采用白底黑框。
(2)模块不应增加阴影。
(3)模块应尽量选择默认的形状和大小。
但如果模块有多个输入或输出,为了避免输入输出名、信号名相互重叠,可以调整模块大小。
为保证goto和from模块中的标签(Tag)可视,可以调整goto和from模块的大小,但尽量采用同样尺寸。
(4)模块名统一在模块下面。
(5)模块的名字用来描述该模块的信息,但如果模块从外观上能看出它的作用,应该隐藏该模块的名字,如:4.6.1.3输入输出模块(1)输入模块尽可能在模型的最左边,输出模块尽可能在模型的最右边。
但为避免与其他线相交,输入输出模块可以往里移一些。
(2)输入、输出接口模块应以接口顺序编号显示,而不能用变量名显示。
(3)输入输出的名字一般不隐藏,但当信号线上的变量名与输入、输出接口的名称相同,为使界面清晰可读,应将输入、输出接口名称隐藏。
4.6.1.4信号线(1)信号线尽可能不要相交,不要穿过其他模块、子系统或标签。
(2)信号线必须水平或垂直。
(3)在一条信号线的分支点上,只能分出2条子信号线。
(4)为避免信号线相交,可以采用from、goto模块。
但如两个子系统间相隔较近,可以省去用from、goto的转换,而直接用线连接起来,增强可读性及数据流跟踪。
(4)信号线应尽量从左到右。
但反馈信号除外。
子系统不能将其翻转,保证其从左到右的数据流方向,从而便于模型的可读性。
(5)如果没有输入信号选择ground block代替输入信号,如果没有输出信号选择terminator block代替输出。
4.7 Simulink建模规范4.7.1模块应用规范(1)Sum模块:应采用矩形形式的,且第一个输入应为“+”。
(2)Product模块:第一个输入应为“*”。
(3)Relational Operator模块:变量与常量比较时,变量作为模块的第一个输入信号,常量作为第二个输入信号。
(4)Switch模块:第二个输入(判断量)必须为布尔量,且判断法则应选为u2~=0,这样便于可读、数据流及代码生成。
(5)Function call、Enabled、Triggered、If / Else Action模块:条件应该位于模块顶部。
(6)from和goto模块:from模块和goto模块的标签(Tag)应匹配,一个from模块只能接受一个来自goto模块的信号。
(7)Multiport switch模块:第一个输入(控制输入)值必须大于等于1,且不能超过选择输入值。
(8)BusCreat和BusSelect模块:BusCreat包括的所有的信号都要命名。