直流电机调速
对于给定的模型,只需修改Controller部分就可以达到仿真目的,之前的代码只有比例环节,没有积分和微分环节,因此需要增加这两个环节,这里设定Kp=8,Ki=1,Kd=60,最后得到的仿真波形如下图
可以看出,此时,加减速时间很短,反应迅速,超调量也不大,得到的速度曲线偏差很小。
具体代码如下:
block Controller
InPort command(n=1);
InPort feedback(n=1);
OutPort outPort(n=1);
Real error;
Real errori;
Real errord;
Real pout;
parameter Real Kp=8;
parameter Real Ki=1;
parameter Real Kd=60;
parameter Real Max_Output_Pos = 10;
parameter Real Max_Output_Neg = -10;
algorithm
error := command.signal[1] - feedback.signal[1];
errori:=errori+error;
errord:=error-pre(error);
pout := Kp * error+Ki*errori+Kd*errord;
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;