【问题标题】:How can I call a m file script into simulink block which uses simout file?如何将 m 文件脚本调用到使用 simout 文件的 simulink 块中?
【发布时间】:2021-08-18 02:38:40
【问题描述】:

我有一个 simulink 文件,我正在设计一个控制器。

该文件包含多个并联的电子转换器,每个转换器都有一个控制器。转换器测量电压和电流并将它们传递给控制器​​进行控制。

simulink 文件在仿真后生成 simout 文件,该 simout 文件用于计算 m 脚本文件中的电网阻抗作为传递函数。我需要使用来自工作区的阻抗传递函数来代替“Req +sLeq”,如图中紫色标记的位置。

换句话说,在我的控制器设计中,我需要将该 m 文件传递​​函数调用到一个模块中,并在模拟过程中使用传递函数(阻抗)作为主动阻尼。

我不确定如何在仿真期间将 m 文件(从 simout 生成)中的传递函数调用回 simulink 模块。

模拟需要作为闭环系统一次性完成。

请帮助我。

【问题讨论】:

  • 我认为包含一些您已经尝试过的示例会有所帮助
  • 刚刚编辑。请再次检查

标签: matlab controller simulink


【解决方案1】:

我可以想出两种方法来解决这个问题。首先,您可以尝试使用 Matlab 功能块: https://www.mathworks.com/help/simulink/slref/matlabfunction.html

否则,您可以随时拆分日常活动。拆分您的模拟,获取您的传递函数(现在存在于工作区中),然后使用单独的文件运行您的控制系统模拟。

虚拟主文件

simOut = sim('electricalSimulation');   % Your first simulation
output = simOut.output;
input  = simOut.input;
electricalTf = obtainTF(output, input); % Your identification routine

sim('completeSystem');

【讨论】:

  • 问题是simulink仿真需要一次性完成,并使用我控制器中的simout数据作为反馈。
  • electricalTf 是从 simout 文件中查找传递函数的函数吗?另外,您是指“completeSystem”中的控制器simulink文件吗?
  • 所以让我澄清一下,您需要将此子电气例程嵌入到您的主模拟文件中。所以你不能拆分它们。如果是这种情况,只需简单地构造一个外部循环而不识别任何内容。也就是说,为仿真的电气部分构建一个外环。想象一下直流电机速度控制原理图。首先使用 simscape 绘制电气部件,然后将该电气部件连接到外环电机控制。或者,您可以使用我的第一个建议,Matlab 函数。 electricTf 是你的传递函数 completeSystem 是控制器加平台
  • electricalTf 应该是一个函数,它从模拟文件中获取输入和输出并识别传递函数。 electricalTf 返回标识的传递函数。 completeSystem 由您的“已识别电气模型”加上您的机械动力学和您的控制器组成,如果您有传感器模型、干扰模型等,请告诉我是否有任何不清楚的地方。
  • 好的,在检查您更新的图片之后:正确的做法绝对是 Simscape 电气。因此,您将这样做:首先使用电气工具箱组件设计所有电气部件,然后您将使用 ps-simulink 转换器块将电气部件连接到 simulink 部件。请注意,您不再需要传递函数,因为您已经在电气方面对系统进行了建模,您只需要提供一个输入并将输出反馈到您的参考点并获得一个错误,该错误将为您的控制器输入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多