作为 HiL 仿真的一部分,我在 Simulink 中有一个工厂模型,它在 PLC 上以外部模式运行。 MPC 控制器作为 MATLAB 脚本在 PC 上运行。在每个采样时间,来自 PC 的控制输入被发送到 PLC 上的对象模型,对象模型执行一个步骤并生成一个输出,该输出再次发送到 PC 上的控制器。
首先,我将设备和控制器的采样周期设置为恒定,假设为 3 秒,一切正常。然而,我不想有一个固定的采样周期,而是想触发工厂使用 MATLAB 脚本模拟一个步骤。换句话说,每当控制器完成计算并准备好输出时,它就必须将输出发送到对象输入,然后触发对象模型生成输出。
我搜索了 MATLAB 文档,老实说找不到合适的方法来做到这一点。
任何关于如何实现它的想法都值得赞赏:)
我认为您会发现
yourmodel(...)
命令很有用,请参阅帮助:https://www.mathworks.com/help/simulink/ug/simulink-model-command.html
在您的情况下,您将启动模型,调用
yourmodel([],[],[],'compile')
,然后运行控制器,获取更新的输入并调用:
outputs = <initial input to controller>
for n = 1:numSteps
u = runController(outputs)
states = yourmodel(states,u,t,'update')
outputs = yourmodel(states,u,t,'outputs')
end