例如已知控制对象为10/(3S^2+S+2),确定其要用到的低通滤波器
首先需要将控制对象转化成标准形式,即:
G(s) = K/(Ts+1)
其中,K为系统增益,T为系统时间常数。
对于不完全微分PID控制,需要添加一个低通滤波器,使其变为完全微分PID。低通滤波器的传递函数一般为:
Gf(s) = 1/(Ts+1)
将控制对象和低通滤波器连接起来,得到闭环控制系统的传递函数为:
Gc(s) = Kp + Ki/s + Kd(sT+1)/sT
其中,Kp、Ki、Kd分别为比例、积分、微分系数。
通过将Gc(s)与G(s)相乘,并进行化简,可得到完整的传递函数:
G(s) = Kc/(Ts^3 + (1+Kd)Ts^2 + (Kp+Ki+2Kd)Ts + Kp+Ki)
根据这个传递函数,可以确定所需的低通滤波器的传递函数为:
Gf(s) = 1/(Tf*s+1)
其中,Tf为低通滤波器的时间常数。
对于控制对象为10/(3s^2+s+2)的情况,可以将其转化为标准形式,得到:
G(s) = 10/(3s+1)(s+2)
根据上述公式,可以计算出所需的低通滤波器的时间常数为:
Tf = (Kp+Ki+2Kd)/(Kd+1) = 1.5
因此,所需的低通滤波器的传递函数为:
Gf(s) = 1/(1.5s+1)
代码实现如下:
float Kp = 1.0;
float Ki = 0.5;
float Kd = 0.2;
float Tf = 1.5;
float Gf(float s) {
return 1.0 / (Tf*s + 1.0);
}