老师的controller中只加入了比例环节,为了获得更好的调节性能,加入了积分环节和微分环节,即采用PID调节
一、PID调节三个参数的作用:
1.比例系数Kp的作用是加快系统的响应速度,提高系统的调节精度。Kp越大,系统的响应速度越快,系统的调节精度越高,但是容易产生差调,甚至会使系统不稳定。Kp取值过小,则会降低调节精度,使响应速度缓慢,从而延长调节时间,是系统静态、动态特性变差;
2.积分作用系数Ki的作用是消除系统的稳态误差。Ki越大,系统的静态误差消除的越快,但是Ki过大,在响应过程的初期会产生积分饱和的现象,从而引起响应过程的较大超调。若Ki过小,将使系统静态误差难以消除,影响系统的调节精度;
3.微分系数Kd的作用是改善系统的动态特性,其作用主要是在响应过程中抑制偏差向任何方向的变化,对偏差变化进行提前预报。但是kd过大,会使响应过程提前制动,从而延长调节时间,而且会降低系统的抗干扰性。
二、PID算法的离散化
假设采样间隔为T,则在第KT时刻:偏差err(K)=rin(K)-rout(K);
积分环节用加和的形式表示,即err(K)+err(K+1)+……;
微分环节用斜率的形式表示,即[err(K)-err(K-1)]/T
三、controller代码
block Controller InPort command(n=1); InPort feedback(n=1); OutPort outPort(n=1); Real error; Real error_i; Real error_d; Real pout; parameter Real Kp=5; parameter Real Ki=0.1; parameter Real Kd=25; parameter Real Max_Output_Pos = 10; parameter Real Max_Output_Neg = -10; algorithm error := command.signal[1] - feedback.signal[1]; error_i:=error_i+error; error_d:=error-pre(error); pout := Kp * error+Ki*error_i+Kd*error_d; if pout > Max_Output_Pos then outPort.signal[1] := Max_Output_Pos; elseif pout < Max_Output_Neg then outPort.signal[1] := Max_Output_Neg; else outPort.signal[1] := pout; end if; end Controller;
四、仿真图像
五、仿真结果:
上升时间tp=0.0329s,超调量Mp=1.43%,响应良好。