当前位置:   article > 正文

永磁同步电机矢量控制速度环参数整定方法尝试----利用Matlab通过扫伯德图生成传递函数_matlab如何拟合传递函数

matlab如何拟合传递函数

目录

永磁同步电机系统仿真

用Matlab扫频生成伯德图和传递函数

设计补偿器实现速度环的控制

仿真验证

总结


永磁同步电机系统仿真

构建好的仿真模型

设置成速度开环控制,根据电机特性设置成速度开环控制,Iq指令50,设置扫描系统的输入,输出,这里的输入是Iq_ref0,输出是Speed_out.

仿真一下

Matlab扫频生成伯德图和传递函数

代码如下

io(1)= linio('PMSM_FOC_PowerGUI_Model/Motor_Control/Motor_Control_Function/Control_Command_2ms/Iq_ref0',1,'input');
io(2)= linio('PMSM_FOC_PowerGUI_Model/Motor_Control/Motor_Control_Function/Control_Command_2ms/Speed_out',1,'output');

这里的意思是环路的输入输出位置,运行后可以直接定位到Iq_ref0的位置

input =frest.createFixedTsSinestream(0.002,{1, 2*pi*500});
input.Amplitude=5;

这是设置注入正弦信号的幅值,频率,运行效果如下:

这里注入一个1-500HZ的正弦信号,叠加在给定的Iq_ref0=50的输入上

 画出伯德图

[sysData,simlog] = frestimate(mdel,io,input);
bopt               = bodeoptions;
bopt.Grid          = 'on';
bopt.PhaseMatching = 'on';
figure, bode(sysData,'*r',bopt)

frest.simView(simlog,input,sysData);

sysA = tfest(sysData,3, 1)   %速度开环系统的传递函数,这里按照3个极点1个零点进行拟合

figure, bode(sysData,'r*',sysA,bopt) % 画出拟合出来的传递函数的伯德图

运行以上代码,仿真效果如下,Iq_ref0会被注入一个幅值5的正弦信号,速度也会振荡

 仿真结束后得到的伯德图和拟合的伯德图

 最后得到了速度环的开环传递函数

设计补偿器实现速度环的控制

通过Control System Designer设计补偿器,这里就用PI的传递函数来设计

s = tf('s')
Gspeed=(4551*s + 1.261e05)/(s^2+653*s+6907)
Gspeed_z=c2d(Gspeed,0.002,'tustin');
Speedz_numz = 0.070761*[1 -0.9229];
Speedz_denz = [1 -1];
C_speedz = tf(Speedz_numz,Speedz_denz,0.002);
H_speed =1;
F_speed =1;
controlSystemDesigner(Gspeed_z,C_speedz,H_speed,F_speed);
pid(C_speedz)

仿真验证

 加上速度环,并把生成的PI参数添加到模型,进行仿真,仿真效果如下:

PI参数控制效果满足设计需求

总结

在进行环设计时,Matlab提供了很多方便的工具,我们可以自己推导传递函数,进行控制器的设置,也可以通过扫伯德图生成传递函数再进行补偿器的设计,甚至更简单的我们做好PI控制器后直接试凑法得到参数,实际情况应根据系统的复杂程序进行判断该用哪种方法,这里通过这个小实验记录下通过扫伯德图的方法获得传递函数并进行补偿器设计。这种方法同样也可以用于电源环路设计

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号