3

我有一个包含以下子系统的 Simulink 模型。

具有解释型 MATLAB 函数的 Simulink 子系统

bm_train_adapter模块将调用同名的 MATLAB 函数,将所有输入参数传递到单个向量中。

该子系统的采样时间为 900(秒),这就是为什么所有信号都以红色着色(对于离散信号)。

但是,在调试器中,我观察到该bm_train_adapter函数在每个仿真时间步被调用两次。这会产生非常错误的结果,因为该函数包含副作用。

为什么 Simulink 每个时间步不止一次调用我解释的 MATLAB 函数?我怎样才能防止这种情况?

4

2 回答 2

1

我认为这是因为您的求解器设置。在您的Configuration Parameters窗口中,查看Solver Options窗格。

我相信discreteode1求解器会在每个时间步调用一次。 ode2每个时间步将调用两次,每个时间步ode4将调用 4 次,等等。

这种行为对于模拟连续动力学非常有帮助,但在与离散元素交互时可能会令人困惑。

于 2012-08-14T00:12:42.167 回答
1

原因是我的模型存在由子系统中的单位延迟块引起的代数环。为了解决这些循环,求解器别无选择,只能多次评估某些块。

解决方案是从其子系统中消除所有单元延迟。

于 2012-09-13T13:40:53.200 回答