DSP

park,clark和ipark浅析

2019-07-13 16:04发布

 http://blog.sina.com.cn/s/blog_531237a90101j7uw.html
相信做过电动机矢量控制或者直接转矩控制的朋友们肯定会对parkclarkipark变换再熟悉不过了,肯定有人认为没有必要写这个东西。其实我写这个东西只是为了加深自己对上面三种变化的理解,因为今天我在调程序的时候,这三个变换把我弄糊涂了。 好,下面先来介绍这三个变换。 Clark变换。为什么会有这三个变换呢,从宏观上来讲,三相异步电动机是三相对称的交流供电,那么既然三相对称,我们可以用两相交流电来产生和三相交流相同的磁场效应,这样一来,我们只剩下了两相。经过变换之后,以前三相对称,相隔120o ,而经过变换之后,变成了两相想间隔90o的交流供电。计算过程如下: [转载]park,clark和ipark浅析

变换过程如图1.1所示。 [转载]park,clark和ipark浅析
1.1  clark变换过程 我们看到IaIbIc都三相对称的交流,而IqId是两相间隔90°的交流电。那么变换之后的效果如下图1.2所示。 [转载]park,clark和ipark浅析
1.2  clark变换后效果 在控制电动的过程中,clark变换的输入输出为图1.3所示。 [转载]park,clark和ipark浅析
1.3  clark变换模块图 这里AsBs是想间隔120°的输入正弦信号,而AlphaBeta是想间隔90°的输出正弦信号。所以这AsBs分别对应上面的IaIb,而AlphaBeta分别对应上面的IdIq Park变换。我们知道,我们现在讨论的坐标都是在定子角度来看的,也就是静止坐标。我们知道,三相异步电动机是高耦合,非线性,多变量的系统,控制起来非常困难。矢量控制的思想就是要实现三相电动机的解耦控制,什么意思呢,就是要像控制直流电动机那样去控制三相电动机,可以分别对励磁电流和转矩电流分别控制,有人问,怎么实现,我回答:马上就可以实现。我们上面说了,clark变换就是将三相变成两相,但这时候还是静止的,但是相对转子是旋转的 ,我们要实现解耦控制,就要实现坐标相对转子静止,park变换这个时候可以派上用场了。Park变换的输入输出如图1.4所示。 [转载]park,clark和ipark浅析
1.4  park变换模块图 上面AlphaBeta是相对定子静止的两相正弦信号,想间隔90°,而Angle是转子相对定子的角度。通过这三个变量,可以将相对定子静止的坐标变成相对转子静止的坐标。变换过程如图1.5所示。 [转载]park,clark和ipark浅析
1.5  park变换过程 上图中,IdIq分别对应输入的Alpha Beta,而IDIQ分别对应DsQs,经过这个变换之后,输出的 变量就变成了相对转子静止的两个变量了,这两个变量,ID对应励磁电流,IQ对应转矩电流,注意,这两个变量不再是正弦信号,而是直流分量了,因为要想直流电动机那样控制嘛。这样我们可以通过改变这两个变量来分别控制电动机的励磁和转矩,就是控制直流电动机那样。从上图可以退出Park变化公式如下: [转载]park,clark和ipark浅析

其实话说回来了,这是从三相(相对定子静止)>两相(相对定子静止)>两相(相对转子静止)这个推导过程,那么我们在控制电动机的时候,肯定是倒着来的,也就是先设定励磁电流和转矩电流,然后变换到相对定子静止的两相,然后变换到相对定子静止的三相。我们来看逆推过程。 Ipark变换。从相对转子静止两相到相对定子静止的两相的变换就是ipark变换。该模块的输入输出如图1.6所示。 [转载]park,clark和ipark浅析
1.6  ipark变换模块 大家看,上上面的park变换多么相似,其实就是park的逆变换。这里我就不想多说了。Ipark的变换公式如下: [转载]park,clark和ipark浅析

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

1.6  SVGEN_DQ 模块 经过变换之后,生成TaTbTc,这三个变量时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浅析 1.7  clark变换输出 输出相间隔90°的信号没错。那么我们加到park变换上,输出应该是两个直流分量了。但是不是我想象中的那样子。如图1.8所示。 [转载]park,clark和ipark浅析
1.8  park 变换输出 这是什么原因呢?为什么不是想我输入的那样子呢,为什么一个分量的数值几乎为零 ,另一个分量的数值却很大。为了验证程序的正确定,我直接将ipark变换的输出,加到park的输入,这样,又反变换回去,应该输出的是我之前设定的DsQs的数值。加入park信号和park输出信号如图1.91.10所示。   [转载]park,clark和ipark浅析 1.9  加入park信号 [转载]park,clark和ipark浅析
1.10  park输出信号 这和我之前设定的DsQs的数值几乎一样,我就纳闷了,为什么两次输入到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中输出的信号为什么可以转变成之前设定的DsQs,这两次信号的差异到底在哪里?直流分量经过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 我这之后突然明白,其实DsQs的数值不只是决定了正弦信号的幅值,也同时决定了正弦信号的相位偏移,而我输入的信号,默认相位偏移为0,所以就得出,一个数值为0.5,而另一个为0。这样我把信号增加了一个偏移后,得出的信号如图1.11. [转载]park,clark和ipark浅析
1.11 增加偏移后park输出 经过这两个实验,我深刻理解了parkclarkipark变换之间的关系,希望该文章能给大家带来帮助。