park,clark和ipark浅析



http://blog.sina.com.cn/s/blog_531237a90101j7uw.html
https://blog.csdn.net/qq_27158179/article/details/82981229

 

相信做过电动机矢量控制或者直接转矩控制的朋友们肯定会对park,clark,ipark变换再熟悉不过了,肯定有人认为没有必要写这个东西。其实我写这个东西只是为了加深自己对上面三种变化的理解,因为今天我在调程序的时候,这三个变换把我弄糊涂了。

好,下面先来介绍这三个变换。

Clark变换。为什么会有这三个变换呢,从宏观上来讲,三相异步电动机是三相对称的交流供电,那么既然三相对称,我们可以用两相交流电来产生和三相交流相同的磁场效应,这样一来,我们只剩下了两相。经过变换之后,以前三相对称,相隔120o ,而经过变换之后,变成了两相想间隔90o的交流供电。计算过程如下:

park,clark和ipark浅析_第1张图片
 

变换过程如图1.1所示。

park,clark和ipark浅析_第2张图片
图1.1  clark变换过程

我们看到Ia,Ib和Ic都三相对称的交流,而Iq和Id是两相间隔90°的交流电。那么变换之后的效果如下图1.2所示。

park,clark和ipark浅析_第3张图片
图1.2  clark变换后效果

在控制电动的过程中,clark变换的输入输出为图1.3所示。

park,clark和ipark浅析_第4张图片

图1.3  clark变换模块图

这里As和Bs是想间隔120°的输入正弦信号,而Alpha和Beta是想间隔90°的输出正弦信号。所以这的As和Bs分别对应上面的Ia和Ib,而Alpha和Beta分别对应上面的Id和Iq。

Park变换。我们知道,我们现在讨论的坐标都是在定子角度来看的,也就是静止坐标。我们知道,三相异步电动机是高耦合,非线性,多变量的系统,控制起来非常困难。矢量控制的思想就是要实现三相电动机的解耦控制,什么意思呢,就是要像控制直流电动机那样去控制三相电动机,可以分别对励磁电流和转矩电流分别控制,有人问,怎么实现,我回答:马上就可以实现。我们上面说了,clark变换就是将三相变成两相,但这时候还是静止的,但是相对转子是旋转的 ,我们要实现解耦控制,就要实现坐标相对转子静止,park变换这个时候可以派上用场了。Park变换的输入输出如图1.4所示。

park,clark和ipark浅析_第5张图片

图1.4  park变换模块图

上面Alpha和Beta是相对定子静止的两相正弦信号,想间隔90°,而Angle是转子相对定子的角度。通过这三个变量,可以将相对定子静止的坐标变成相对转子静止的坐标。变换过程如图1.5所示。

park,clark和ipark浅析_第6张图片

图1.5  park变换过程

上图中,Id和Iq分别对应输入的Alpha和 Beta,而ID和IQ分别对应Ds和Qs,经过这个变换之后,输出的 变量就变成了相对转子静止的两个变量了,这两个变量,ID对应励磁电流,IQ对应转矩电流,注意,这两个变量不再是正弦信号,而是直流分量了,因为要想直流电动机那样控制嘛。这样我们可以通过改变这两个变量来分别控制电动机的励磁和转矩,就是控制直流电动机那样。从上图可以退出Park变化公式如下:

park,clark和ipark浅析_第7张图片
 

其实话说回来了,这是从三相(相对定子静止)—>两相(相对定子静止)—>两相(相对转子静止)这个推导过程,那么我们在控制电动机的时候,肯定是倒着来的,也就是先设定励磁电流和转矩电流,然后变换到相对定子静止的两相,然后变换到相对定子静止的三相。我们来看逆推过程。

Ipark变换。从相对转子静止两相到相对定子静止的两相的变换就是ipark变换。该模块的输入输出如图1.6所示。

park,clark和ipark浅析_第8张图片

图1.6  ipark变换模块

大家看,上上面的park变换多么相似,其实就是park的逆变换。这里我就不想多说了。Ipark的变换公式如下:

park,clark和ipark浅析_第9张图片
 

再次看出和park变换之间的关系。上面的Ds和Qs分别是设定的励磁电流和转矩电流,是直流分量,而输出的是相间隔90°的正弦信号。那么怎么使相隔90°的信号变成相间隔120°的信号呢,这里要利用AVGEN_DQ模块,该模块的输入输出模型 如图1.6所示。

park,clark和ipark浅析_第10张图片
 

图1.6  SVGEN_DQ 模块

经过变换之后,生成Ta,Tb和Tc,这三个变量时PWM全比较单元的开关比例,说道这里应该很明白了吧,即使这三个数值乘上定时器的周期,就可以得出每个比较单元的比较数值了。

今天做了一个实验来验证这几个变换之间的关系,发现了很多问题,来和大家分享一下。

既然clark变换是将三相正弦信号变成两相信号,那么我们给它一个间隔120°的信号,输出应该是一个相间隔为90°的信号。我加上的相隔120°的信号时这样的:

         clark1.As = _IQmpy(_IQcosPU(rampgen1.Out),_IQ(0.5));                         //clark变换

         clark1.Bs = _IQmpy(_IQdiv(clark1.As,_IQcosPU(rampgen1.Out)),_IQcosPU(rampgen1.Out - _IQdiv(_IQ(1.0),_IQ(3.0))));

上面是IQ格式,比较难理解,我们直观的写成如下格式:

         Clark1.As = cos(ɵ)

         Clark1.Bs = cos(ɵ + 2pi/3)

这两个相间隔120°问谁都说没错。我们加上这个信号后,clark输出信号如图1.7所示。

 

park,clark和ipark浅析_第11张图片

图1.7  clark变换输出

输出相间隔90°的信号没错。那么我们加到park变换上,输出应该是两个直流分量了。但是不是我想象中的那样子。如图1.8所示。

park,clark和ipark浅析_第12张图片

图1.8  park 变换输出

这是什么原因呢?为什么不是想我输入的那样子呢,为什么一个分量的数值几乎为零 ,另一个分量的数值却很大。为了验证程序的正确定,我直接将ipark变换的输出,加到park的输入,这样,又反变换回去,应该输出的是我之前设定的Ds和Qs的数值。加入park信号和park输出信号如图1.9和1.10所示。

 

park,clark和ipark浅析_第13张图片

图1.9  加入park信号

park,clark和ipark浅析_第14张图片

图1.10  park输出信号

这和我之前设定的Ds和Qs的数值几乎一样,我就纳闷了,为什么两次输入到park变换的波形一模一样,为什么会有不同的输出呢,后来我就用公式来推导导致这种结果的原因。推导如下:我加入的信号是这样的:

     Clark1.As = cos(ɵ)

         Clark1.Bs = cos(ɵ + 2pi/3);

参照上面的clark变换公式,我的clark输出的两个信号为:

         Clark1.Alpha = cos(ɵ)

         Clark1.Beta = sin(ɵ)

上面两个信号要输入到park中,在经过park变换之后,park的输出为:

         Ds = 0.5(之前设定的幅值就是 0.5)

         Qs = 0

我明白了为什么我的park输出为零了。那在看看从ipark中输出的信号为什么可以转变成之前设定的Ds和Qs,这两次信号的差异到底在哪里?直流分量经过ipark变换之后的输出为 :

         Ipark1.Alpha = 0.2cos(ɵ) – 0.3sin(ɵ) = Acos(ɵ + B)

         Ipark1.Beta = 0.2sin(ɵ) + 0.3cos(ɵ) = Asin(ɵ + B)

上面两个信号要输入到park中,注意,这里和我自己设定的信号有一个不同的地方,那就是相位不同,这里有一个差值B,这个差值也许就是导致park输出不同的原因吧。经过park变换,输出为:

         Ds = 0.2

         Qs = 0.3

我这之后突然明白,其实Ds和Qs的数值不只是决定了正弦信号的幅值,也同时决定了正弦信号的相位偏移,而我输入的信号,默认相位偏移为0,所以就得出,一个数值为0.5,而另一个为0。这样我把信号增加了一个偏移后,得出的信号如图1.11.

park,clark和ipark浅析_第15张图片

图1.11 增加偏移后park输出

经过这两个实验,我深刻理解了park,clark和ipark变换之间的关系,希望该文章能给大家带来帮助。

你可能感兴趣的:(电机矢量控制)