直流电机调速作业

直流电机调速

 

对于给定的模型,只需修改Controller部分就可以达到仿真目的,之前的代码只有比例环节,没有积分和微分环节,因此需要增加这两个环节,这里设定Kp=8Ki=1Kd=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;

 

 

 

 

原文地址:https://www.cnblogs.com/hkcjr/p/5588533.html