今天将开启参数辨识的第一期。通过复现论文来学习电机参数在线辨识的方法。我会尽可能讲述我在仿真遇到的问题以及解决办法。
1.文章内容介绍
参考文献如下:
这篇文章的复现估计要分为几个部分,电感辨识、电阻辨识、磁链辨识。
文章是以无差拍预测电流控制为基础进行参数辨识的。毕竟预测控制才会对参数比较敏感。下面就是正常的无差拍预测控制的公式。这里就不细说了,我往期大部分内容都是用无差拍预测电流控制的。
在电感方面,文章打算通过高频注入的方式来提取电感信息(紫色方框内的电流数值就是需要注入的高频电流频率与幅值):
文章中也就解释了该选取多少频率的电流以及多少幅值的电流。
我们的控制周期/载波周期一般为10kHz,那你的注入电流频率就不能太高,比如你注入正弦电流的频率为2kHz,相当于你的正弦电流经过一个周期,你只能采样五次,这样的话,采样得到的正弦电流看起来就不会像一个完整的正弦电流了。所以文章选的电流注入频率为300-350Hz。
其次,注入的高频电流幅值肯定不能太大,否则就影响你电机的正常工作了,所以文章取注入电流幅值为0.05A。
接着,文章列写了电机的高频电压方程:
然后呢,就可以通过下面这个式子得到电感的数值了:
为什么这个式子可以得到电感呢?
首先,d-q电压里面包含高频分量和直流分量(直流d-q方程就是我们平时用的d-q方程),为什么这里不列写直流电压方程。这是因为直流的电压u与余弦量相乘就变成了交流,交流在通过低通滤波就被滤除了。其次,高频分量可以通过式子(12)去考虑,红色方框内都是正弦sin,sin与cos相乘还是交流量,所以被低通滤波器滤除,因此只剩下中间那一相了。进而就可以推出式子(19)。
是不是看着非常简单?但是仿真搭建起来可没有那么简单。
2.仿真搭建
复现论文的仿真,是要一步一步来的。遇到不少人私信问我,说自己的仿真一直搭建不出来,可不可以帮忙找找原因。
仿真搭不出来是很正常的事。不过我经常遇到有的同学,就连最简单的PI控制的转速电流双闭环的永磁同步电机模型都没有搭建过,就开始照着别人的论文去搭建特别复杂的系统。。。这完全是自找苦吃。
仿真应该一步一步地搭起,按步骤一步一步走起来。
我以经有了无差拍预测电流控制的模型,那我要复现这篇高频注入电流辨识电感的模型,我的第一步应该是先把高频电流的参考模块给搭建出来。
--
Tpwm = 1e-4;%开关周期
Tspeed = 1e-4;%转速采样周期
Pn = 4;%电机极对数
Ls = 18.5e-3;%定子电感,采用隐极的,Ld=Lq=Ls
Rs = 3;%定子电阻
flux = 0.0844;%永磁体磁链
Vdc = 311;%直流母线电压
iqmax = 25;%额定电流
--仿真参数
(1)高频电流的参考模块
首先要搭建这个模块,是不是需要一个Enable开关,在Enable==1时,系统才开始辨识呢?
为什么一定要Enable开关呢?难道不可以一直注入高频电流吗?
因为只有在稳态的时候,电压ud-uq才是直流量;在动态过程中,电压ud-uq会出现波动,对高频交流提取产生一定的干扰。
好,那我就搭建一个模块,到xx秒之后,就开始启动参数辨识。
然后呢,接下来可以写高频参考电流的产生模块了,这时候就需要考虑Enable==1的时候,该怎么写代码;Enable==0的时候,该怎么写代码。
把这里写好之后,别着急继续搭下一个模块,先验证这个高频电流参考值是否ok了。
我这里是设定t>0.3s之后开始高频注入,此时的d-q电流确实出现了高频分量,那说明这个模块已经ok了。
(2)低通滤波模块
现在高频参考电流模块已经ok了,接下来就可直接搭建式子(19)的低通滤波模块了。低通滤波器的搭建网上一搜一大把,不过注意,一定需要离散化。
先来看看式子(19)中,(u*2coswt)为经过低通滤波器之前的波形:
下面这是式子(19)中,(u*2coswt)为经过低通滤波器之后的波形。因为我是在0.3s才启动参数辨识,所以在0.3s之后,才看到很小的交流量。
从这个放大图来看,0.3s之后的交流量数值只有十几,相比于未滤波前的几百的数值,已经滤除了很多。(低通滤波器频率是10Hz,尽可能滤除交流量)
式子(19)中的电压已经低通滤波好了,那么直接根据式子(19)就可以进一步计算电感数值了。
结果呢,发现电感辨识的效果也太差了吧。。。
0.3s之前设置为标准电感数值,18.5mH。0.3s之后的电感辨识数值波动也太大了。。。最大电感都到了60mH,最小的电感竟然还是负数。。。
那这可咋办????????
先看看论文的实验图,发现电感辨识的结果就是一条直线啊!根本不存在交流波动。
再看看论文中关于式子(19)的解释。红色方框中说,低通滤波器只提取直流分量。
可是一般的低通滤波器都没有办法把交流量完全抑制呢,都只能削弱一定的幅值。(这一点,在我下面这篇知乎中的参考文献中有说到)
永磁同步电机谐波抑制算法(1)——基于多同步旋转坐标系的五七次谐波电流抑制 - 知乎这段时间发现电机里面会存在五次谐波,然后学了学谐波抑制的方法。一般比较常用的是多同步旋转坐标系和PIR调节器。今天先讲一下多同步旋转坐标系。 Pony:永磁同步电机-谐波抑制这篇知乎下面有很多人在问问题,所…https://zhuanlan.zhihu.com/p/673773182
那有没有什么办法能提取直流呢?????
当然有咯,直接对低通滤波之后的电感数值求平均即可(毕竟交流量的平均值为0)。
所以这个代码里应该包括以下几个内容:
- Enable=0/1的内容,也就是不辨识的时候,辨识模块应该输出什么数值、怎么样进行参数初始化。
- 低通滤波的内容,而且还是只能在Enable==1时开启低通滤波。
- 平均值滤波的内容,在Enable==1且数值经过低通滤波之后再开始平均值滤波。
搭建好平均值滤波之后,来看看平均值滤波的效果吧。
可以看到,q轴电感(蓝线)经过1s的辨识之后,最终结果稳定在18.45mH,与标准值18.5mH非常接近,说明这种方法的辨识精度是非常高的;d轴电感(红线)经过1s的辨识之后,最终结果稳定在17.3mH,与标准值18.5mH也比较接近,误差是在5%左右。
接下来测试一下初始电感设置为18.5*2mH,看看这种方法在初始电感与标准电感不同时的辨识效果。可以看到,q轴电感(蓝线)经过2s的辨识之后,最终结果稳定在19.8mH,与标准值18.5mH比较接近,误差是在7%左右;d轴电感(红线)经过2s的辨识之后,最终结果稳定在19.2mH,与标准值18.5mH也比较接近,误差是在4%左右。
而且可以看到,随着时间的增加,辨识出的电感数值还是在不断靠近标准值18.5mH,说明如果仿真时间再长一些,辨识误差可以再缩小一些。
3.仿真连接
注意啊!前面的控制框图,还只是单纯的无差拍预测电流控制,电感辨识模块还没有加入到整个控制系统中,我们只是属于测试阶段。
接下来就是要把电感辨识模块加入到整个控制系统中。
加入辨识模块之后的电压方程如下:(相当于就是把电感初始值换成了电感辨识模块的电感输出数值)
我这里把初始电感设置为标准电感的2倍。可以看到,把这个辨识模块加入系统之后,大概经过2s的运行,辨识出的电感基本上都完全等于实际值了。
把辨识结果放大来看,2.3s的时候d轴电感辨识结果基本完全等于18.5mH;q轴电感辨识结果为19mH,辨识误差都不足3%。可见该方法效果非常好。
辨识前后,相电流THD由原来的3.51%降低到了0.5%。
30%额定负载工况(1.5Nm,相电流3A),初始电感设定为标准值的200%,此时的谐波电流成分相对较大。
辨识前后相电流THD降低了11%!!
现在带2.5Nm(电流5A),初始电感为标准电感的150%,看看辨识情况。
可以看到,电感辨识的效果还是非常的好。