使用S-Function实现Simulink性能

时间:2012-02-29 10:55:25

标签: matlab simulink

我正在尝试运行我的simulink文件,它将pid控制器连接到s-function块。

当我设置pid的三个值参数时,这些参数是比例,积分和导数,运行整个过程需要很长时间。为什么会这样?

在我的pid图的对话框中,对于porportional值,它等于对应于恒定振幅振荡的值。

然后对于积分,它等于Kcu / Ti。 Ti是最终期(Pu)/ 2和

最后对于导数,其等于tu Kcu * Td和Td是Pu / 8。这是指ziegler nichols方法。我的问题是为什么运行这个文件需要太长时间?

2 个答案:

答案 0 :(得分:3)

MATLAB S函数很慢,因为它们在MATLAB解释器中运行。考虑使用Simulink块或使用“嵌入式MATLAB函数”(R2011a之前的版本)或“MATLAB函数”(R2011a +)块来实现它。

阅读GuySeth关于模拟效果的想法。

答案 1 :(得分:1)

@Nzbuu关于Matlab S函数是正确的。

但是我认为这里的问题可能就在其他地方:@Syarina你是说在设置控制器的比例系数后,Simulink模拟会变慢吗?如果您单独模拟工厂,在这种情况下是S功能,您是否注意到执行速度的显着差异?如果确实如此,我认为PID控制器使ODE系统成为stiff。这意味着ODE系统的不同状态具有非常不同的动态 - 一些非常快,一些非常慢。使用不适合刚性方程的ode求解器,你会发现模拟速度要慢得多(实际上如果它完全收敛就会有运气)。

我的建议是尝试更改解算器 - 例如ode15s