Matlab模型开发之——从建模规范开启旅程1 Simulink
目录
前言
1、命名
1.1 字符
1.3 系统、子系统、模块、信号线命名
1.4 变量名称的一致性
2、simulink模型外观
2.1 信号线外观
2.2 基础模块外观
3、Simulink基础模块使用
3.1 数字运算与逻辑运算模块
3.2 Delay模块
3.3 带开关函数的模块(Switch, Multiport Switch, Index Vector)
3.4 from、goto模块
3.5 Product模块
3.6 Merge模块
3.7 控制器内禁用的模块
前言
刚开始工作接触建模开发那会儿,天天就只琢磨功能怎么实现,怎么能更深入更好的利用上里面自带的这些块块,从没好好关注建模规范。直到从零建立模型开发的时候,从建立建模规范开始,仔细研读了MAAB,那时候还是第四版,去年又更了第五版改成MAB,细细了解的时候,虽然很多东西很基础,但也领会到其中的一些妙处,基础的东西可以统一开发人员的建模风格,另外一些甚至可以作为建模指导。
建模的方式千千种,很多方式都能实现一个功能,但首先大家风格最好统一利于集成和维护,另外,一些建模方式容易引起意外的错误,即使是熟悉建模的人员也可能忽视这些。所以我都建议模型开发人员,无论资深或新手入门,都要重视建模规范。当然,MAB内容很多而且全英文,这里总结一些基础的、常用的建模规则,不使用S function之类的应该够用。
分为三篇吧,分别为Simulink 、Stateflow、模型结构。
1、命名
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 _
字符长度为3到63个字符。
1.3 系统、子系统、模块、信号线命名
1)没有空白间隔,没有回车
2)不以一个数字开始
3)信号线、总线、参数名称无控制字符(用来控制显示和打印的特殊字符,包括回车(CR)、退出(ESC)、制表符(TAB)等)
4)单字节下划线不作为第一个或最后一个字符,不允许有两个连续下划线
5)模型的输入输出口(包括bus、goto等)一定要有明确的命名
6)不使用MATLAB使用的任何保留词、函数名称或运算符名称,如'eps','Enf','intmax','intmin','NaN','pi','realmax','realmin','true','false','inf'
MATLAB关键词 ,如'break', 'case', 'catch', 'classdef', 'continue', 'else', 'elseif', 'end', 'for','function', 'global', 'if', 'otherwise', 'parfor', 'persistent', 'return', 'spmd', 'switch', 'try', 'while'
7)不使用MATLAB自动编码中保留的任何词,如const、TRUE、FALSE、 infinity, nil, double, single, or, enum
1.4 变量名称的一致性
输入输出模块、goto/from模块、信号线、子系统端口标签名称,直接连接到相同信号的名称应是一致的。然而,连接一个库的子模块、可重复利用的子模块(建议封装)是例外。
2、simulink模型外观
2.1 信号线外观
1)信号流向要从左到右流动。
2)输入端口应放置在图的左侧,左对齐;输出端口应放置在图的右侧,右对齐
3)如果可避免,信号线不应互相交叉。
4)信号线不应穿过任何模块。
5)信号线在单个分支点不应分出超过2个以上的支线(不允许十字交叉连接),避免难以区分信号交叉的情况。
2.2 基础模块外观
1)尽量不改变模型库中模型的大小使用,图标中显示的任何文本(例如可调参数、文件名、方程式)必须是可读的。
如下为错误示例:
2)若参数较长不好显示出来,模型点击右键properties->block annotaiton,使它显示在模块外面,如:
3)显示对模块名称有功能要求以及模块名称有重要意义的模块的块名称,且模块的名称应该放在该模块的下面,如
4)Triggered和enabled模块必须放在子系统的上三分之一处
5)Delay以外的所有模块不应旋转或翻转,包括子系统,如下错误示例:
6)模型不得带有未连接的输入输出的子系统、基本模块或信号线。可以输入连接接地模块,输出连接终止符模块。如下:
3、Simulink基础模块使用
3.1 数字运算与逻辑运算模块
1)执行数字运算的模块不可以用于执行逻辑运算。不能将数字运算结果连接到等待逻辑值的Enable Port模块。如下错误示例:
2)执行逻辑运算的模块不可以用于执行数字运算, Logical Operator输入必须为boolean数据类型。如下错误示例:
3)布尔值不应用于关系运算,布尔值不应与数值(0,1,~)或逻辑值(true,false)进行比较。如如下错误示例:
如下正确示例:
3.2 Delay模块
当采用Delay模块(例如Unit Delay 块)来防止横跨子系统的反馈回路中的代数环时,必须把它们放置在该子系统的外面。如下错误示例:
3.3 带开关函数的模块(Switch, Multiport Switch, Index Vector)
1)为了信号流的可视性,输入选择u2~=0选项,且u2需为boolean。
2)数据端口和输出端口使用相同的数据类型
如:
3.4 from、goto模块
1)为了信号流的可视性,尽量少使用Goto和From模块,不可避免信号交叉时可以使用。
3.5 Product模块
1)Product模块乘除过程中输入信号的类型相同
3.6 Merge模块
1)在条件子系统和Merge模块之间应不设置模块。merge的输入信号必须来自一个条件执行子系统,否则会仿真报错。如下错误示例:
3.7 控制器内禁用的模块
1)通过输入showblockdatatypetable命令,可以显示一个支持代码生成的模块的清单。其他的自己去MAAB找下,不支持生成代码的、不符合规范的都有讲
2)禁用Abs模块
为避免有符号整数数据饱和时出现如下情况:
3)禁用值为1的Gain模块进行数据类型转换,改用Data Type Conversion模块
Matlab模型开发之——从建模规范开启旅程1 Simulink相关推荐
- Matlab模型开发之——从建模规范开启旅程2 Stateflow
目录 1.外观 1.1状态机语句格式 1.2状态流迁移 1.3层级 1.4缺省状态迁移 2 常用基本规则 2.1增量/减量的使用指导规则 2.2 局部变量 2.3状态流中逻辑信号的运算 2.4状态流中 ...
- Autosar与Matlab模型开发之——概念基础
目录 一.AUTOSAR架构介绍 1.AUTOSAR架构: 2.BSW架构: 3. BSW架构粗略介绍:编辑 二.与应用层相关 1.跟应用层SWC交互的接口: 2.Autosar接口类型 一.AUT ...
- MATLAB/Simulink模型开发乐高EV3 双足平衡机器人
MATLAB/Simulink 2018a 模型开发乐高EV3 双足平衡机器人(含视频) 之前只是用Matlab做一些算法的仿真,数据的计算分析处理,知道MATLAB中包含有Simulink,只知道S ...
- MAB建模规范-Matlab建模规范
规则ID:db.jm.hd.ar被用于Ver 1.0的规范.na和jc用于从版本2.0到现在创建的规范 NA-MAAB代表北美和欧洲.J-MAAB代表日本 Matlab建模规范主要和matlab fu ...
- matlab cuda的.cu文件应该放在那里_无人机基于Matlab/Simulink的模型开发(连载一)
"一切可以被控制的对象,都需要被数学量化" 这是笔者从事多年研发工作得出的道理,无论是车辆控制,机器人控制,飞机控制,还是无人机控制,所有和机械运动相关的控制,如果不能被很好的数学 ...
- matlab做信号实验需要安装那些模块_无人机基于Matlab/Simulink的模型开发(连载一)...
"一切可以被控制的对象,都需要被数学量化" 这是笔者从事多年研发工作得出的道理,无论是车辆控制,机器人控制,飞机控制,还是无人机控制,所有和机械运动相关的控制,如果不能被很好的数学 ...
- 汽车动力经济性开发工具,发动机最优燃油消耗曲线计算程序 发动机最优燃油消耗曲线matlb计算模型,MATLAB模型,发动机OOL
汽车动力经济性开发工具,发动机最优燃油消耗曲线计算程序 发动机最优燃油消耗曲线matlb计算模型,MATLAB模型,发动机OOL 1.计算发动机最优燃油消耗曲线是车辆能耗优化,特别是混动汽车策略设计时 ...
- 深圳3d可视化建模,数字孪生智慧工厂3D模型开发,智慧城市园区三维模型
深圳3d可视化建模,数字孪生智慧工厂3D模型开发,智慧城市园区三维模型.纸箱机械生产工艺流程三维建模可视化,能清楚的展示出瓦楞纸板的生产,纸板印刷工艺和纸箱成型工艺的各个环节及运行原理.造纸厂生产的卷 ...
- 北京3d可视化建模,数字孪生智慧工厂3D模型开发,智慧城市园区三维模型
北京3d可视化建模,数字孪生智慧工厂3D模型开发,智慧城市园区三维模型.无论是工业4.0还是中国制造2025,智能工厂是实现以上目标的载体,更是中国制造业企业未来的发展方向.面对许多智能制造设备.生产 ...
最新文章
- AngularJS table 按照表头字段排序功能(升序和降序)
- 初心大陆----python宝典(意外发生篇)
- SqlServer在安装时提示:需要Microsoft.NET Framework 3.5 Service Pack 1 规则失败
- CSS 设置列表格式
- DataNode之BlockSender分析
- 在“后台反复读取用户相册”?微信回应:最新版本将取消
- React简单聊聊【面试】
- pandas 菜鸟_再见Numpy,Pandas!又一个数据分析神器横空出现!
- 数据结构经典案例_计算机领域必读的经典书籍清单
- PAT 1079 Total Sales of Supply Chain[比较]
- python实现判断一个整数是否是回文数
- ThinkPHP6敏捷后台开发框架
- Excel合并两列中的文本内容
- 了解了广告行业利益相关方,横扫一切商业模式
- python中换页是干嘛的_python什么是转页符
- md5值是什么?md5值有什么用?
- MySQL生成自增的流水号
- 智能微电网的核心技术
- matlab 颗粒碰撞,Lsdyna颗粒碰撞图 - 仿真模拟 - 小木虫 - 学术 科研 互动社区
- Games101计算机图形学学习笔记:线性代数-向量
热门文章
- 调用批处理bat文件
- VS+OpenCV+VC超详细的配置教程
- Unity地图分割组合时出现接缝的处理办法
- 评估Panzyga® (NewGam)三种不同剂量对慢性炎性脱髓鞘性多发性神经病变(CIDP)有效性和安全性的ProCID研究终局结果在2020年AAN呈报
- Flutter中ListView顶部有空白
- MySQL的二叉树、平衡二叉树、2,3查找树、B树、B+树索引
- 【Springboot】SpringBoot基础知识及整合Thymeleaf模板引擎
- Android Vold架构
- 瑞芯微RK3568对比RK3399性能解析
- C语言初学 (两数相加求和)