最近在仿真中遇到了需要设置控制周期的问题,琢磨了一段时间,把自己的理解分享一下,欢迎大家一起讨论。
三个概念的含义
步长:步长在Simulink上方“Model Configratuon Parameters”中设置,详见图1。其实就是Matlab求解微分方程的
Δ
t
\Delta t
Δt的大小,如果是变步长,Matlab会不断迭代缩小步长,直到结果满足误差要求;如果是定步长,就可以自己设置步长的大小。
图1 步长设置
控制周期:这个问题在仿真中遇不到,但是在实际控制中会遇到。因为负责控制的单片机不可能一直都在发指令,都是隔一段时间发一次指令,因此就有了控制周期,也可以用控制频率表示。
采样频率:控制的核心是反馈,控制器需要系统的输出才能给出下一步的控制指令,但是系统输出是一个连续信号,但是我们需要的是一个离散信号,因此在测量时就涉及到采样频率,也就是我多久测量一次系统的输出。
三个概念的关系
一般来说,步长<采样周期<控制周期 且最好是整数倍关系(我印象中如果不是会报错)。
因为步长是Simulink算一步的时间,(有点像cpu的主频)所以必然是最小的,采样周期比控制周期小是因为了控制是基于反馈而来的,而且采样周期小可以额外添加滤波器消除噪声。
三个概念如何在Simulink仿真中实现
步长在Simulink中可以直接设置。而控制周期和采样周期需要通过"Zero-Order Hold"实现。
图2展示了控制周期为4ms,采样周期为2ms的电路仿真,图3是仿真结果。可以看出0.04s的仿真延迟。
图2:仿真示例
图3:结果曲线