近期由于刚换工作,所以把上家公司整理的一些再次上传到网上,防止后续丢失。第一篇先简单介绍下MATLAB/Simulink模型介绍及仿真吧。
先简单介绍下什么是matlab,Matlab功能强大,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。由于个人主要使用matlab的simulink功能,现在主要对模型搭建进行介绍。
这里分两部分来写,我们先从模型的概况来理解,后面再细讲怎么去搭建。
模型概况(状态机):下图是模型最外层的一个状态机图,左边是输入端口,右边是输出端口。这个图是可以在matlab的图形库拖出来的,后续会讲。搭建模型第一步是要把这个状态机从库里图拖出来。
模型概况(状态交换):状态机图双击进去可以开始拖一些箭头和函数框开始搭建函数模型。
双击状态机进入下图:下图有两个大状态DISABLE和ENABLE,ENABLE里又有两子状态NORMAL和ONGOING。
模型概况(函数实体)
双击上图中的函数进入下图(箭头处可以填写判断逻辑)。这里是逻辑实现地方,后续生成代码都跟这里会一一对应。
模型搭建:上面大概讲了一个模型的结构,下面具体去讲怎么搭建模型。
上图是把状态机拖出来后,再双击状态机后进去的一张图。上图左侧已经列出常用的搭建模型的按键,以下对我们常用的按键解释下
状态:创建状态机的状态
节点:系统不能停在节点上,但可以停在状态中
跳转:一般和节点配合使用
函数:由于我们是simlink建模,所以我们用Simlink Fcn
历史状态:对于某些问题而言,我们返回一个状态的时候不能总返回默认状态,而是要返回离开前的最后一个状态,这就是历史状态的用处。
以上按键按需拖动到需要处即可。
模型搭建之函数搭建:
正常拖动函数按键后如上图,函数名 可以点击命名。这里命名为TestFunction。
一般拖出来的函数实体在这个框里写不下,然后我们可以创建子模块来写。如下图。创建后双击函数块即可进入子模块。我们主要函数一般都在子模块完成。
打开Matlab并添加状态机:最外层的状态机怎么拖出来搭建?
请看下图: 下图是打开matlab软件会出现的,在命令窗口输入state flow就会新建状态机。
Note:有时候状态机的输入或输出端口太多,状态机可能不会在可视范围。这时候可以下滑滚轮或者点击fit to view按钮让状态机剧中显示
添加输入端口:点击Library Browser按钮,在sources中选中In1输入端口。找到In1并拖到状态机图上即可。
同理添加输出端口:输出端口在Sinks中
添加输入及输出数据:按照Model Explorer->Add Data顺序添加数据。添加完数据需要在Scope列选择属性是input,output,Local还是其他。DataType列选择类型。
Note1:需要先选中状态机标志才能添加数据。如本模型状态机名为IPC_CompassDisp,所以要先选中该状态机。
Note2:这里的Port列一般在添加端口模型时自动排列。但是有时候可能连续添加很多端口,这边Port排序排好了,但是又把中间某一个或者某几个端口删除了,这时候Port不会再自动排序。则会造成模型端口与这里的Port不匹配。这样会对后期的UT测试造成错误。所以这里Port号需要检查与前面模型号保持一致。
端口颜色设置:有时候,我们想把标定输入变量和其他输入变量分开,除了命名区分外,也可以如图在端口出右击,调出Format/Background Color选不同颜色
上图完成了模型的搭建,下面需要配合脚本生成报告。
报告查看:运行相应的脚本生成.c和.h文件及报告
点击上图的.c和.h文件可以查看生成的代码报告
生成代码可读性很差,所以需要代码和模型结合一起看。可以点击报告中的Transition找到模块对应的位置 。
以上写的比较笼统,适合有一定基础的朋友观看。有疑问可以一起讨论,谢谢!