1.文章简介
最近看到一篇比较有意思的文章,24年3月9日才刚刚收录。
众所周知模型预测控制受电机参数影响还是很大的。所以呢,各种观测器、参数辨识等算法都被用到预测控制中。
观测器设计的话就相对而言比较复杂;参数辨识也比较复杂,可能会需要注入一定的高频信号。
这篇文章呢,没有用到观测器,而是自己构造了一种误差补偿的控制器,进而实现不需要电机参数的强鲁棒性的模型预测控制。
2.提出的强鲁棒性的模型预测控制
传统的一拍预测公式如下(隐极/表贴PMSM,电感Ld=Lq=L):
因为隐极/表贴PMSM都是采用id=0控制,所以可以把R*id这一项看作为0。进而可以将式子(4)进一步化简为:
然后呢,文章又构建了两个新的变量N和M。如式子(7)所示,M涉及电感参数,N涉及电阻以及磁链的参数。
那么文章的思路就是:根据预测电流的误差,来调节N和M这两个参数。当预测电流与实际电流没有误差的时候,就说明N和M已经到达了准确的参数。
d轴误差补偿控制器的设计
Mes代表估计的M值。同时,从(15)可以发现,当term1趋于0时,表示预测电流非常接近实际电流。当term2趋于0时,表明Mes非常接近实际电机参数。当上述条件同时满足时,可以得到最合适的Mes。
然后呢,这里利用一个求极值的思想,得到了Mes(估计的M值)的递推公式。
实际上q轴的误差补偿控制器设计基本上也是类似的思路。这里就不再赘述了,感兴趣的可以看看文章。
我个人感觉式子(8)构造的误差补偿控制器就有点像代价函数。模型预测控制一般都是取代价函数最小的电压矢量作为最优的电压矢量。式子(8)表达式结果最小时,说明估计的M是最优的。
这两者的思想很接近。
3.仿真验证
总是有人问我为什么我的无差拍预测电流控制没有代价函数?
这说明没有去弄清楚预测控制的分类。模型预测控制分为两大类:有限集模型预测控制——不需要SVPWM模块,而是通过代价函数生成电压矢量(这又可以分为单矢量和多矢量);连续集模型预测控制——需要调制模块(无差拍预测电流控制后面可以接SVPWM模块,这属于连续集模型预测控制的一种)。
后面会有单矢量预测控制和无差拍预测电流控制的对比。
仿真参数:
Ts = 5e-7;%仿真步长
Tpwm = 1e-4;%开关周期
Tsample = Tpwm/1;%采样周期/控制周期
Tspeed = Tsample;%转速采样周期
Pn = 4;%电机极对数
Ls = 8.5e-3;%定子电感,采用隐极的,Ld=Lq=Ls
Rs = 3;%定子电阻
flux = 0.1688;%永磁体磁链
Vdc = 311;%直流母线电压
iqmax = 20;%额定电流
J = 5e-3;%转动惯量
B = 2.5e-3;%阻尼系数
n_init = 200;%初始转速
仿真工况:
转速:初始转速200RPM,初始参考转速1200RPM,0.35s后的参数转速600RPM。
负载:初始为空载,0.2s突加10Nm负载。
3.1强鲁棒性单矢量MPC的仿真验证
按照上述误差补偿器搭建的模型预测控制模块如图所示。
从上面的仿真波形中可以看到,当控制器电感、电阻、磁链都等于实际电感、电阻、磁链的两倍时,传统单矢量MPC的电流脉动、转速脉动明显增大,相电流THD由原来的6.77%上升到了10.24%。而单矢量强鲁棒性MPC很好抑制了参数失配带来的影响,相电流THD只有6.63%。
3.2强鲁棒性DPCC的仿真验证
把上述方法应用在无差拍预测电流控制(DPCC)上面就可以得到强鲁棒性DPCC。
仿真工况:
转速:初始转速200RPM,初始参考转速1200RPM,0.8s后的参数转速600RPM。
负载:初始为空载,0.2s突加10Nm负载。
从这个预测电流与实际电流的对比来看,即使在控制器电感、电阻、磁链都等于实际的电感、电阻、磁链两倍的情况下,强鲁棒DPCC计算得到的预测电流还是非常准确的,没有出现明显电流脉动和静差。
同时从d轴预测电流与d轴实际电流的对比来看,文章提出的误差补偿控制器是会慢慢收敛的,最后可以保证预测电流与实际电流相等。
从上面的仿真波形中可以看到,当控制器电感、电阻、磁链都等于实际电感、电阻、磁链的两倍时,传统DPCC的电流脉动、转速脉动明显增大,相电流THD由原来的1.27%上升到了3.64%。而强鲁棒性DPCC很好抑制了参数失配带来的影响,相电流THD只有1.27%。
大概可以发现,这种强鲁棒型模型预测控制,基本上能完全抵消参数失配的影响。这与文章的结论一致。Scheme-I是无参数失配的MPC,Scheme-II是参数偏大2倍的MPC,Scheme-III是强鲁棒MPC。
4.关于模型预测控制的想法
这几年,模型预测控制方面灌水太多了。很多“大佬”就是换个观测器就发一篇,换个观测器就发一篇,甚至文章中都不会解释为什么要这样设计观测器参数。个人认为这样是没有意义的。
由于模型预测控制方面灌水太多,这方面的文章就特别多,导致很多老师都开始往这个方向上去做,最终导致很多学生开始做这个方向。
我先不说模型预测控制算法方面的问题,先讲讲对模型预测控制中“PWM调制”的那块内容。
前面我也说了。模型预测控制分为两大类:有限集模型预测控制——不需要SVPWM模块,而是通过代价函数生成电压矢量(这又可以分为单矢量和多矢量);连续集模型预测控制——需要调制模块(无差拍预测电流控制后面可以接SVPWM模块,这属于连续集模型预测控制的一种)。
从上面的仿真也可以很明显的看到,采用SVPWM的DPCC的性能远比采用单矢量的MPC的性能要好。采用单矢量MPC的相电流THD非常大!对于电感越小的电机,单矢量MPC的效果越差。
为什么我不用双矢量和三矢量MPC?
双矢量和三矢量MPC大幅增加了PWM调制的复杂度,而且效果不一定比得上SVPWM。所以干嘛要去学双矢量和三矢量MPC?
就对于三相逆变器而言,SVPWM已经非常成熟。SVPWM的电压矢量排布以及尽可能从减小电流纹波的角度出发了;而且SVPWM还有简化算法(也就是零矢量注入的SPWM)。
很多论文设计什么双矢量和三矢量MPC,还有什么快速双矢量和三矢量MPC。很多都没有考虑到电流纹波的影响。
从减小电流纹波以及个人学习时间成本的角度来看,学习三相逆变器的双矢量和三矢量MPC,完完全全是浪费时间。
我毕设的时候做过PMSM的双矢量、三矢量MPC,也做过OEW-PMSM(开绕组永磁同步电机的)的双矢量、三矢量MPC,效果根本不如SVPWM!完完全全是浪费时间。我最后根本没有把双矢量、三矢量MPC写到我的毕设里面去。比SVPWM复杂,且连SVPWM的效果都比不过,我为什么要用呢?
有限集模型预测控制在电感大的电机,以及一些比较复杂的多相电机或者多电机系统,可能会有一些比较好的应用。但是对于小电感的电机,以及一些调制算法已经比较成熟的电机系统而言,个人感觉还是用SVPWM比较合理。