【研发日记】Matlab/Simulink技能解锁(八)——分布式仿真

Mr.Cssust 2024-06-14 14:05:01 阅读 78

文章目录

前言

背景

分布式仿真

使用方式

分析和应用

总结

参考资料


前言

        见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》

        见《【研发日记】Matlab/Simulink技能解锁(四)——在Simulink Debugger窗口调试》

        见《【研发日记】Matlab/Simulink技能解锁(五)——七个Simulink布线技巧》

        见《【研发日记】Matlab/Simulink技能解锁(六)——六种Simulink模型架构》

        见《【研发日记】Matlab/Simulink技能解锁(七)——两种复数移相算法》

背景

        使用Simulink开发嵌入式软件,Contrl Model在进行仿真运行时,最常规的方法是搭建一个被控Plane Model,来配合为嵌入式软件开发的Contrl Model,在Simulink编辑窗口就就能仿真运行。这种仿真方式是一种纯虚拟的仿真,Contrl Model和Plane Model运行的平台是工程师的Computer。其中最关键的工作是搭建Plane Model,Plane Model的质量直接影响Contrl Model仿真的效果。

        一个高质量Plane Model的搭建往往对需要投入非常专业的技术人员,并且耗费大量的工作时间。即便如此,Contrl Model在Computer上运行和在MCU上运行仍然存在一些差别,Plane Model在Computer上运行和在真实世界里的表现也存在差异。这种大投入和不完美因素,很多开发团队经常是无法接受的。在这种纯虚拟仿真的基础上跨出一步后,诞生了分布式仿真。其在MBD工作流中的地位如下图所示:

分布式仿真

        分布式仿真,也称半实物仿真,Mathworks官方的说法是Connected I/O Simulation,顾名思义就是仿真模型的运行不全在Computer上。Contrl Model被分成两部分,纯算法的Model仍在Computer上运行,I/O之类的外设在外部MCU(I/O Server)上执行,Computer和外部MCU之间通过Serial协议进行连接。当仿真运行时,Model Block向IO Server发送命令和请求数据。Plane Model用真实世界中的物理实体替代,并受IO Server控制,整体框架示例如下:

使用方式

        第一步,硬件连接

        将USB串口线的两头,分别连接在MCU板子和Computer之间,确保Computer的设备管理器中能出现对应的COM资源。

        Tips:MCU板子上的一个SCI module将会被占用,所以不能跟其他应用冲突。

        第二步,配置Serial协议

        打开Simulink Configuration Parameters窗口,在Hardware Implementation一栏的Target hardware resources中找到Connected I/O分组,配置串口通信资源,示例如下:

https://ww2.mathworks.cn/help/ti-c2000/ug/connected-io.png

        Tips:上述分布式仿真,依赖于Simulink和MCU之间的Serial协议和传输接口,以及MCU中的IO Server引擎,所以需要Simulink和MCU两边厂家的共同支持,不是每款MCU都支持这项功能。

        第三步,连接I/O

        在Simulink的Hardware工具页中, 点击Run on Board下拉按钮, 然后点击Connected I/O (inputs/outputs mode)按钮,示例如下:

        

        第四步,加载Contrl Model

        Contrl Model按照正常的方式搭建,不用做特殊修改,示例如下:

        

        第五步,运行仿真

        在Simulink的Hardware工具页中,点击Run with I/O按钮,即可利用Dashboard、Dispiay、Data lable和Data Inspect等工具查看信号,示例如下:

         

        也可以在MCU板子(例如电机控制器)上用探针检查信号,或者直接在被控实物(例如电机)上观察现象。示例如下:

分析和应用

        1、Plane Model是真实世界中的物理实物,不存在仿真拟合偏差。

        2、Contrl Model的算法仍在Computer上运行,可以非常方便地查看和分析数据。

        3、Contrl Model不再MUC板子上运行,不需要编译生成嵌入式代码的环节,可以非常灵活地修改调整Contrl Model,加速仿真调试进程。

        4、由于通信传输速率和数据量的限制,Simulink向MCU板子发送的指令,Simulink从MCU板子上获取的数据,都会有一定的时间开销,导致real time性能受到一定程度的限制。为保证系统整体的运行,Contrl Model的仿真步长和Sample time需要设置的稍长一些,至少要大于通信传输周期和MCU板子的响应周期。Contrl Model单个step的tasks量也要适当少一些,simulation pacing适当慢一些,确保MCU板子指定的时间内能够执行完。示例如下:

https://ww2.mathworks.cn/help/ti-c2000/ug/connected-io-simulation.png

        5、对于多内核的MCU,只支持第一个主核的应用,其他Core的使用会受限。

        6、对于多时钟的MCU,只支持第一个timer0的应用,其他时钟源的使用会受限。

        7、对于高速响应的硬件性能会受限,例如不支持ePWM模块中HRPWM(高分辨率PWM),不支持中断的使用。

总结

        以上就是本人在研发中使用Simulink仿真时,一些个人理解和分析的总结,主要介绍了分布式仿真的工作原理,展示了仿真运行的效果,并分析了这种仿真方式的特点和适用场景。

        后续还会分享另外几个最近解锁的Matlab/Simulink新技能,欢迎评论区留言、点赞、收藏和关注,这些鼓励和支持都将成文本人持续分享的动力。

        另外,上述例程使用的Demo工程,可以到笔者的主页查找和下载。

参考资料

Mathworks Help - Connected IO Simulation




声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。