赞
踩
目录
参考电机参数:
inverter.PWM_frequency = 10000; %20Khz
inverter.Ts=1/inverter.PWM_frequency; %Ts
这里PWM的频率是10K, 控制频率和PWM频率一致
永磁同步电机的电流环控制框图
控制框图可以分解一下
这里反馈环节看成是单位负反馈,这里有:
F(s)=1,H(s)=1;
C(s): 补偿器,在这里是PI (1P1Z),其他的一些环路系统可能补偿器更复杂,我们的目的就是要设计出补偿器的传递函数,进而求出PI参数
G(s): 可以看成是延迟环节和电机的传递函数串联,PWM频率是10K, 这里把延迟环节和PWM环节合并处理,td=Ts (PWM的周期100us), Kpwm=1。流程图如下:
Gp(s)=1/(Lqs + R)
传递函数确定,接下来通过Matlab输入传递函数,并设计补偿器C(s).
代码如下:
代码解释:
s = tf('s') %定义传递函数的拉普拉斯变换的变量s, 然后就可以直接按照数学表达式在Matlab里面构建系统的传递函数。
Td=1/inverter.PWM_frequency+0.5/inverter.PWM_frequency; %延迟和PWM环节
Giq=1/(pmsm.InductanceLq*s+pmsm.StatorPhaseResistance);%电机的传递函数,运行后:
Gp(s)
Giq_delay=tf([1],[pmsm.InductanceLq pmsm.StatorPhaseResistance],'inputdelay',Td); %把延迟环节和PWM环节合成一个:
G(s)= Giq_delay
因为我们的传递函数是连续域的,生成代码的模型是离散域,需要把连续域转成离散,并整定成离散的控制器:
Giq_z=c2d(Giq_delay, inverter.Ts, 'zoh'); %这里把连续系统转成离散系统,转换方式为零阶保持
这里初始化一个补偿器的参数,后面再通过controlSystemDesigner对参数再优化,这个补偿器就是PI传递函数的Z变换。
1. PI的控制器即C(s)的传递函数:
C(s)=PI=Kp+Ki/s
2. 通过Matlab构建PI的传递函数:
给定一个初始的PI参数,C(s)的传递函数如下图所示
3. 把C(s)转成C(z):
通过c2d把C(s)转成了C(z),即PI的传递函数形式就可以写成:
设计PI的参数实际上就是设计补偿器参数,Id_numz和Id_denz,如上图。
Ciq_z: (Q轴电流环补偿器的离散时间传递函数C(z))
4 .到这一步,控制系统的H(z), C(z), G(z)都已经准备好了,接下来调用controlSystemDesigner
对控制器进行设计:
运行指令: controlSystemDesigner(Giq_z,Ciq,Hz_iq,Fz_iq);
控制架构如图
运行控制器的设计指令后弹出如下所示的设计界面,可以通过伯德图和根轨迹和阶跃响应分析系统的稳定性并对补偿器进行调整以达到想要的控制效果,也可以通过添加零极点设计补偿器(不限于PI,如2P2Z,3P3Z...等)
调整如下图所示的零点,抓取红圈的曲线调整增益带宽直到设计出满足需求的补偿器
双击“C”弹出控制器的设计界面
到这一步已经设计出补偿器了
如上图的补偿器离散时间传递函数,写成代码并运行如下:
把上述传递函数转成PI参数,运行pid指令,如下图所示得到控制器的PI参数
D轴的操作方法和Q轴一样,得到PI参数后我们把它放到电机系统模型
电流环控制,电机相电流波形
Q轴给定电流和反馈电流响应
通过电流环的传递函数,结合Matlab提供的工具,可以很快的整定电流环的PI参数,通过这种方法也可以去设计各种补偿器并验证,构建的传递函数越准确,设计出来的控制器也就越能反应实际的情况,但是模型只是验证理论,实际的控制中还存在很多的不确定性,如温度引起的电感和电阻变化都,测试的准确性都会影响到系统的传递函数,进而影响到补偿器的效果,这里提供一种整定PI的方法,也是设计一种控制器的方法,速度环也可以同理设计
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。