如何以这种方式在Matlab M文件中运行Simulink模型?

时间:2015-07-02 02:30:43

标签: matlab controls simulink

我有simulink模型" Mod_Sim"在simulink中 使用输入端口" inp"和输出端口" out"。 我想将输入发送到此模型,模拟它然后采取 每个采样时间的相应输出" Ts"。 我希望以这种方式模拟这个模型,以便" N"时间步长(以Ts计)。

更具体地说,我想要以下实现:

在给定的时间步骤" k",我将输入u(k)(来自其他来源)。 然后,我想将此输入应用于Mod_Sim并从模型中获取相应的输出y(k)。我想重复这个N个步骤。

我该如何实施?

我会很乐意帮忙。

1 个答案:

答案 0 :(得分:1)

在开始模拟之前,您需要将所有输入定义为MATLAB工作空间中感兴趣的时间跨度的时间函数。

假设您在MATLAB工作区中定义了tu,并且您的输入端口inp位于模型的根级别,则需要配置要使用的模型u的{​​{1}}和t inp,如Import Data to Root-Level Input Ports中所述。

完成后,您可以run the simulation using the sim command,确保模拟选项中的'SaveOutput'已启用。

例如,您可以在N循环中重复该练习for次。真正的关键是在开始模拟之前在工作区中定义所有输入。

根据评论进行修改

听起来你想要共同模拟,虽然你没有说明是什么产生了u(t),无论它是另一个软件还是其他什么。无论如何,我有几个选择:

  1. 编写S函数以与生成u(t)的其他软件进行交互,以便在每个时间步长处提取新值u。这实际上很难做到,许多软件供应商通过S函数(例如SimulationX)提出了与Simulink进行某种形式的协同仿真。有关同一主题,另请参阅this other question

  2. 使用TCP / IP或UDP / IP在Simulink和第三方软件之间进行通信。仪器控制工具箱提供Send and Receive blocks for TCP/IP and UDP/IP。 TCP / IP应该比UDP / IP更可靠,请参阅this comparison