Simulink电机控制代码生成-----关于PI控制器参数整定的一点总结

目录

PI控制器的参数整定方法

方法一:

方法二:

方法对比

总结


看过很多论文,对PI参数的整定方法五花八门,还有PI参数整定的口诀,所谓口诀就是试凑法。除了试凑法,本文提供另外两种方法来整定PI参数,并互相验证两种方法的可行性。

PI控制器的参数整定方法

方法一:

反电动势项忽略得到DQ轴坐标系的电压方程:

 对上式进行拉普拉斯变换得到:

 得到电流环闭环传递函数:

这里把反馈为单位负反馈,增益环节也是1。

 闭环传递函数零极点对消化简得到PI参数,其中为带宽系数

一般设计PI控制器参数或者其他控制器参数时需要考虑带宽的选取,一般带宽越高,响应越快但是相应稳态性能偏差,带宽越低响应越慢,相应的稳态性能就越好。设计控制器参数时根据系统定义需求进行调整即可。以上方法经常在很多参考文档里面遇到,而实际工程中带宽的设计都是基于经验和都尝试。

方法二:

参考之前的博文

永磁同步电机矢量控制电流环参数整定方法----Matlab controlSystemDesigner的使用

方法对比

这里通过一个控制实例来更直观的感觉下PI控制的效果:

根据方法一,我们得到下面的代码:

pmsm = struct;
pmsm.RatedVoltage = 800.0;  %TBD
pmsm.PolePairs = 4;
pmsm.StatorPhaseResistance = single(0.00653); % RS
pmsm.InductanceLd = single(0.000118);         % Ld
pmsm.InductanceLq = single(0.000276);        % Lq
pmsm.FluxLinkage = single(0.0672346);           %Flux
pmsm.Jkm2=single(0.002);

%Set Inverter Parameters%
inverter = struct;
inverter.BusVoltage = 24.0;
inverter.BusVoltageMax = 36.0;
inverter.BusVoltageMin = 10.0;
inverter.CurrentMax = single(10);
inverter.PWM_frequency = 10000;     %20Khz
inverter.Ts=1/inverter.PWM_frequency; %Ts
inverter.Speed_PI_T =0.002;%s

currentloop = struct;
currentloop.wc = single(1500); %rad/s 电流环带宽
currentloop.kp_d = pmsm.InductanceLd * currentloop.wc;
currentloop.ki_d = currentloop.wc*pmsm.StatorPhaseResistance;
currentloop.kp_q = pmsm.InductanceLq * currentloop.wc;
currentloop.ki_q= pmsm.StatorPhaseResistance*currentloop.wc;

 这里根据电机的参数,设计带宽1500 rad/s 换算成频率238.7Hz。得到的PI参数如下:

 根据方法二的方法,把方法一得到的Q轴的PI参数代入到系统传递函数,得到以下代码:

s = tf('s');
Td=1/inverter.PWM_frequency;%+0.5/inverter.PWM_frequency
Giq=1/(pmsm.InductanceLq*s+pmsm.StatorPhaseResistance);
Giq_delay=tf([1],[pmsm.InductanceLq pmsm.StatorPhaseResistance],'inputdelay',Td);
%Giq_z=c2d(Giq_delay, inverter.Ts, 'zoh');
%Ciq
%Iq_numz = 0.66446*[1 -0.9973]
%Iq_denz = [1 -1] 
%Ciq = tf(Iq_numz,Iq_denz,inverter.Ts)
Kpq=0.4140;
Kiq=9.7950;
PI_q=Kpq+Kiq/s;

controlSystemDesigner(Giq_delay,PI_q,1,1);

 运行后:

可以看到,设计带宽正好是1500rad/s. 

 换成频率为单位:

和我们之前算的一样239,系统的相位裕量和增益裕量也足够,系统稳定。通过方法二设计的PI参数,就可以让我们设计一个控制系统时看得到更多的信息,而不是试凑一个带宽或者一组PI参数。

 增大带宽:

通过鼠标抓取曲线上下移动,或者调整零点位置都可以达到改变带宽的效果。

增大带宽可以看到相位裕量变小,增益裕量变小,从阶跃响应来看系统响应更快,但是由于裕量变小了,所以系统的稳定性变差了。具体是什么情况好,取决于系统需求。这里就解释了前面带宽越高,响应越快但是相应稳态性能偏差,带宽越低响应越慢,相应的稳态性能就越好。

总结

本文利用实例通过两种方法整定PI参数,并互相比较,总结出两种方法都可以整定出PI参数,但是方法二更加直观和合理。方法一存在一定的不确定性,比如当前设计的带宽是不是太高,太低。只能在实际中验证。方法二如果电机参数准确,可以更方便的看出电机PI参数是否会引起系统超调太大,是否稳定等信息。

  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
51232是一种Raspberry Pi开发板型号,它可以与Simulink驱动程序块一起使用。Simulink是一种用于模拟、建模和代码生成的工具,而Raspberry Pi是一种可以运行Simulink模型的单板计算机。 Simulink驱动程序块是用于将Raspberry Pi的功能与Simulink模型集成的工具。它允许用户通过Simulink模型来控制和读取Raspberry Pi上的各种传感器和执行器。用户可以通过简单地将各种驱动程序块添加到Simulink模型中来实现与Raspberry Pi的通信和控制。 ADC表示模拟转数字转换器,DAC表示数字转模拟转换器,PWM表示脉冲宽度制。Raspberry Pi上的ADC和DAC驱动程序块可以实现数据的模拟输入和输出。用户可以将传感器的模拟信号通过ADC转换为数字信号,并在Simulink模型中进行处理。类似地,用户可以使用DAC将模拟输出信号从Simulink模型发送到执行器。 PWM驱动程序块可以通过产生脉冲宽度制信号来控制Raspberry Pi上的PWM输出引脚。PWM信号可以用于控制各种执行器,如电机和舵机。用户可以在Simulink模型中整PWM信号的参数,并通过Raspberry Pi的PWM引脚将其输出。 总而言之,51232 Raspberry Pi Simulink驱动程序块可以实现与Simulink模型的综合,通过ADC和DAC驱动程序块进行模拟输入和输出,通过PWM驱动程序块控制PWM输出。这使得用户能够利用Simulink的功能来控制和监测Raspberry Pi上的各种设备和传感器。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡洛斯伊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值