我有simulink模型" Mod_Sim"在simulink中 使用输入端口" inp"和输出端口" out"。 我想将输入发送到此模型,模拟它然后采取 每个采样时间的相应输出" Ts"。 我希望以这种方式模拟这个模型,以便" N"时间步长(以Ts计)。
更具体地说,我想要以下实现:
在给定的时间步骤" k",我将输入u(k)(来自其他来源)。 然后,我想将此输入应用于Mod_Sim并从模型中获取相应的输出y(k)。我想重复这个N个步骤。
我该如何实施?
我会很乐意帮忙。
答案 0 :(得分:1)
在开始模拟之前,您需要将所有输入定义为MATLAB工作空间中感兴趣的时间跨度的时间函数。
假设您在MATLAB工作区中定义了t
和u
,并且您的输入端口inp
位于模型的根级别,则需要配置要使用的模型u
的{{1}}和t
inp
,如Import Data to Root-Level Input Ports中所述。
完成后,您可以run the simulation using the sim
command,确保模拟选项中的'SaveOutput'
已启用。
例如,您可以在N
循环中重复该练习for
次。真正的关键是在开始模拟之前在工作区中定义所有输入。
根据评论进行修改
听起来你想要共同模拟,虽然你没有说明是什么产生了u(t)
,无论它是另一个软件还是其他什么。无论如何,我有几个选择:
编写S函数以与生成u(t)
的其他软件进行交互,以便在每个时间步长处提取新值u
。这实际上很难做到,许多软件供应商通过S函数(例如SimulationX)提出了与Simulink进行某种形式的协同仿真。有关同一主题,另请参阅this other question。
使用TCP / IP或UDP / IP在Simulink和第三方软件之间进行通信。仪器控制工具箱提供Send and Receive blocks for TCP/IP and UDP/IP。 TCP / IP应该比UDP / IP更可靠,请参阅this comparison。