simulink 和 m文件交互
背景:simulink除了做仿真以外,其强大且可视化的模型设计能力也适合进行实际的物理设备控制。在控制物理设备时,需要编写s函数,用于读取物理设备的传感器,给物理设备发送控制指令。这部分通常会使用串口或者UDP通信,需要编写c++写的s函数,这个要讲明白,可能需要不止一篇博客,这个有时间可以详细整理下。不过笔者以前写过一篇,对这种方式进行了简单的介绍。https://blog.csdn.net/i
·
背景:
simulink除了做仿真以外,其强大且可视化的模型设计能力也适合进行实际的物理设备控制。在控制物理设备时,需要编写s函数,用于读取物理设备的传感器,给物理设备发送控制指令。这部分通常会使用串口或者UDP通信,需要编写c++写的s函数,这个要讲明白,可能需要不止一篇博客,这个有时间可以详细整理下。不过笔者以前写过一篇,对这种方式进行了简单的介绍。https://blog.csdn.net/iamqianrenzhan/article/details/74086113。
本文的主要内容是:在控制物理设备时,怎么能实时修改simulink中的控制参数和控制变量,达到既定的控制目标呢?怎么能实时获取到simulink中仿真数据,进行实时可视化呢?
m文件控制simulink常数(constant)block
set_param('TelloFormation_num20/Conncet', 'Value', mode);
m文件控制simulink增益(gain)block
set_param('TelloFormation_num20/QFC/Flight1/Gain3', 'Gain', num2str(para));
m文件控制simulink开始仿真
set_param('TelloFormation_num20','SimulationCommand','start')
m文件控制simulink结束仿真
set_param('TelloFormation_num20','SimulationCommand','stop')
m文件获取simulink示波器(scope)实时数据
simulation_data = get_param('TelloFormation_num20/simulation_data', 'RuntimeObject');
table_data(i,7) = int32(simulation_data.InputPort(1).Data(i));%放到第七列
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)