[电赛电力电子方向]基于DQ坐标系的锁相环

参考

(51条消息) Clark变换与Park(派克)变换_park变换_feiyingzaishi的博客-CSDN博客
B站木修于淋 彻底搞懂电力电子中的坐标变换
【电力电子】坐标变换的可视化及其解释_哔哩哔哩_bilibili
基于SOGI的锁相环的代码实现-CSDN博客

电力电子坐标变换

如果系统输出是三相平衡(每相相差120°),那么可以用坐标变换将原本的三相的坐标系(三相正弦是按时间变化的),变换成两相,且值是稳定的。

三相静止坐标系

在这里插入图片描述
A=Umcos(wt)
B=Um
cos(wt-2/3pi)
C=Um
cos(wt+2/3*pi)
上面是三相静止坐标系,每个轴上的是对应相的值(按时间变化)。
三相可以合成一个向量,随着时间它可以在上面的坐标系里旋转。
合成向量可以用下面式子表示
V = A + B ∗ e j 2 π 3 + C ∗ e j 4 π 3 V = A+B*e^{j \frac{2\pi}{3}}+C*e^{j\frac{4\pi}{3} } V=A+Bej32π+Cej34π
利用欧拉公式
= A + B ( c o s ( 2 π 3 ) + j s i n ( 2 π 3 ) ) + C ( c o s ( 4 π 3 ) + j s i n ( 4 π 3 ) ) = A + B ( − 1 2 + j 3 2 ) + C ( − 1 2 − j 3 2 ) = ( A − 1 2 B − 1 2 C ) + j ( 3 2 B − 3 2 C ) =A+B(cos(\frac{2\pi}{3}) + jsin(\frac{2\pi}{3})) +C(cos(\frac{4\pi}{3})+jsin(\frac{4\pi}{3})) \\=A+B(-\frac{1}{2}+j\frac{\sqrt{3}}{2})+C(-\frac{1}{2}-j\frac{\sqrt{3}}{2}) \\=(A-\frac{1}{2}B-\frac{1}{2}C)+j(\frac{\sqrt{3}}{2}B-\frac{\sqrt{3}}{2}C) =A+B(cos(32π)+jsin(32π))+C(cos(34π)+jsin(34π))=A+B(21+j23 )+C21j23 =(A21B21C)+j(23 B23 C)
V = V α + j V β V=V\alpha+jV\beta V=Vα+jVβ
在这里插入图片描述
V α = A − 1 2 B − 1 2 C V β = 3 2 B − 3 2 C V\alpha = A-\frac{1}{2}B-\frac{1}{2}C \\V\beta=\frac{\sqrt{3}}{2}B-\frac{\sqrt{3}}{2}C Vα=A21B21CVβ=23 B23 C

这里的Vα Vβ就是克拉克变化后的坐标。

clark变换(ABC->αβ)

clark变换就是像上面,把三相分到两相。本质都是在描述那个合成矢量。
把式子整理成矩阵形式,如下
( α β ) = ( 1 − 1 2 − 1 2 0 3 2 − 3 2 ) ∗ ( A B C ) \begin{pmatrix} \alpha \\ \beta \\ \end{pmatrix}= \begin{pmatrix} 1 &-\frac{1}{2} &-\frac{1}{2} \\ 0 &\frac{\sqrt[]{3} }{2} &-\frac{\sqrt[]{3} }{2} \end{pmatrix}*\begin{pmatrix} A \\ B \\ C \end{pmatrix} (αβ)=(102123 2123 ) ABC
但一般你看到的并不是上面的式子,而是
( α β ) = 2 3 ∗ ( 1 − 1 2 − 1 2 0 3 2 − 3 2 ) ∗ ( A B C ) \begin{pmatrix} \alpha \\ \beta \\ \end{pmatrix}= \frac{2}{3}* \begin{pmatrix} 1 &-\frac{1}{2} &-\frac{1}{2} \\ 0 &\frac{\sqrt[]{3} }{2} &-\frac{\sqrt[]{3} }{2} \end{pmatrix}* \begin{pmatrix} A \\ B \\ C \end{pmatrix} (αβ)=32(102123 2123 ) ABC
把A B C三相的余弦表达式带入第一个克拉克变换式子可以得到
V α = 3 2 U m ∗ cos ⁡ ( w t ) V\alpha = \frac{3}{2}Um*\cos(wt) Vα=23Umcos(wt)
V β = 3 2 U m ∗ cos ⁡ ( w t − π 2 ) V\beta=\frac{3}{2}Um*\cos(wt-\frac{\pi}{2}) Vβ=23Umcos(wt2π)
可以看到上面有个系数3/2.
所以在第一个克拉克变换式子前面乘一个2/3把系数消去。
这也就是克拉克等幅值变换。
虽然克拉克变化可以把三相转换到两相垂直,但那个向量是旋转的,也就是说两相上的值都是一直在变化的。下面将介绍另一种变化能够静止描述合成向量。

park变换(αβ->dq)

既然合成向量旋转的,那么我们可以建立一个坐标系也旋转,只要坐标系旋转的速度与向量的速度相等,那么这个向量在这个坐标系里就是静止的了。
在这里插入图片描述
如上,dq坐标系是一个旋转的坐标系。
d = α ∗ cos ⁡ ( w t ) + β ∗ sin ⁡ ( w t ) q = − α ∗ sin ⁡ ( w t ) + β ∗ cos ⁡ ( w t ) d=\alpha*\cos(wt) + \beta*\sin(wt) \\ q=-\alpha*\sin(wt)+\beta*\cos(wt) d=αcos(wt)+βsin(wt)q=αsin(wt)+βcos(wt)
( d q ) = ( c o s ( w t ) s i n ( w t ) − s i n ( w t ) c o s ( w t ) ) ∗ ( α β ) \begin{pmatrix} d\\ q \end{pmatrix}= \begin{pmatrix} cos(wt) &sin(wt) \\ -sin(wt) &cos(wt) \end{pmatrix} * \begin{pmatrix} \alpha\\ \beta \end{pmatrix} (dq)=(cos(wt)sin(wt)sin(wt)cos(wt))(αβ)
带入克拉克变化等幅值变换形式
( d q ) = ( c o s ( w t ) s i n ( w t ) − s i n ( w t ) c o s ( w t ) ) ∗ 2 3 ∗ ( 1 − 1 2 − 1 2 0 3 2 − 3 2 ) ∗ ( A B C ) \begin{pmatrix} d\\ q \end{pmatrix}= \begin{pmatrix} cos(wt) &sin(wt) \\ -sin(wt) &cos(wt) \end{pmatrix} * \frac{2}{3}* \begin{pmatrix} 1 &-\frac{1}{2} &-\frac{1}{2} \\ 0 &\frac{\sqrt[]{3} }{2} &-\frac{\sqrt[]{3} }{2} \end{pmatrix}* \begin{pmatrix} A \\ B \\ C \end{pmatrix} (dq)=(cos(wt)sin(wt)sin(wt)cos(wt))32(102123 2123 ) ABC
( d q ) = ( c o s ( w t ) c o s ( w t − 2 π 3 ) c o s ( w t + 2 π 3 ) − s i n ( w t ) − s i n ( w t − 2 π 3 ) − s i n ( w t + 2 π 3 ) ) ∗ ( A B C ) \begin{pmatrix} d\\ q \end{pmatrix}=\begin{pmatrix} cos(wt) &cos(wt-\frac{2\pi}{3}) &cos(wt+\frac{2\pi}{3}) \\ -sin(wt) &-sin(wt-\frac{2\pi}{3}) &-sin(wt+\frac{2\pi}{3}) \end{pmatrix}* \begin{pmatrix} A \\ B \\ C \end{pmatrix} (dq)=(cos(wt)sin(wt)cos(wt32π)sin(wt32π)cos(wt+32π)sin(wt+32π)) ABC
在使用matlab时发现,park变换有两种形式
在这里插入图片描述
其实这是由于dq坐标系旋转起始位置不同导致的。上面的dq坐标系是与α轴也就是A轴对齐的。还有一种就是q轴与A轴对齐,也就是d轴滞后90°,如下
在这里插入图片描述
( d q ) = ( s i n ( w t ) − c o s ( w t ) c o s ( w t ) s i n ( w t ) ) ∗ ( α β ) \begin{pmatrix} d\\ q \end{pmatrix}= \begin{pmatrix} sin(wt) &-cos(wt) \\ cos(wt) &sin(wt) \end{pmatrix} * \begin{pmatrix} \alpha\\ \beta \end{pmatrix} (dq)=(sin(wt)cos(wt)cos(wt)sin(wt))(αβ)
( d q ) = ( s i n ( w t ) s i n ( w t − 2 π 3 ) s i n ( w t + 2 π 3 ) c o s ( w t ) c o s ( w t − 2 π 3 ) c o s ( w t + 2 π 3 ) ) ∗ ( A B C ) \begin{pmatrix} d\\ q \end{pmatrix}=\begin{pmatrix} sin(wt) &sin(wt-\frac{2\pi}{3}) &sin(wt+\frac{2\pi}{3}) \\ cos(wt) &cos(wt-\frac{2\pi}{3}) &cos(wt+\frac{2\pi}{3}) \end{pmatrix}* \begin{pmatrix} A \\ B \\ C \end{pmatrix} (dq)=(sin(wt)cos(wt)sin(wt32π)cos(wt32π)sin(wt+32π)cos(wt+32π)) ABC
上面的第一个dq也叫cos型,第二个叫sin型.
假如你需要你的dq坐标系的d轴与合成向量重合(这是常用的情况,比如FOC控制中需要把q轴分量闭环成0)。
将A B C三相(幅值为1)带入cos型
( d q ) = ( c o s ( w t ) s i n ( w t ) − s i n ( w t ) c o s ( w t ) ) ∗ 2 3 ∗ ( 1 − 1 2 − 1 2 0 3 2 − 3 2 ) ∗ ( c o s ( w t ) c o s ( w t − 2 π 3 ) c o s ( w t + 2 π 3 ) ) \begin{pmatrix} d\\ q \end{pmatrix}= \begin{pmatrix} cos(wt) &sin(wt) \\ -sin(wt) &cos(wt) \end{pmatrix} * \frac{2}{3}* \begin{pmatrix} 1 &-\frac{1}{2} &-\frac{1}{2} \\ 0 &\frac{\sqrt[]{3} }{2} &-\frac{\sqrt[]{3} }{2} \end{pmatrix}* \begin{pmatrix} cos(wt) \\ cos(wt-\frac{2\pi}{3}) \\ cos(wt+\frac{2\pi}{3}) \end{pmatrix} (dq)=(cos(wt)sin(wt)sin(wt)cos(wt))32(102123 2123 ) cos(wt)cos(wt32π)cos(wt+32π)
这里dq坐标系和ABC都取wt,也就是说向量与d轴重合。
计算后得到
( d q ) = ( 1 0 ) \begin{pmatrix} d\\ q \end{pmatrix}= \begin{pmatrix} 1\\ 0 \end{pmatrix} (dq)=(10)
刚好满足d轴值与向量幅值相等。而带入sin型得到
( d q ) = ( 0 1 ) \begin{pmatrix} d\\ q \end{pmatrix}= \begin{pmatrix} 0\\ 1 \end{pmatrix} (dq)=(01)
所以使用cos型帕克变换要ABC都为cos型的。这里你可能不能理解,后面说锁相环会提到这个的。
同理将sin型的ABC三相分别带入cos型帕克变换有,
( d q ) = ( 0 − 1 ) \begin{pmatrix} d\\ q \end{pmatrix}= \begin{pmatrix} 0\\ -1 \end{pmatrix} (dq)=(01)
带入sin型帕克变换有
( d q ) = ( 1 0 ) \begin{pmatrix} d\\ q \end{pmatrix}= \begin{pmatrix} 1\\ 0 \end{pmatrix} (dq)=(10)

锁相环

基本原理

在这里插入图片描述
上面是一张网上找到的锁相环示意图。
主要就是参考信号,鉴相器,压控振荡器(调节输出频率的),下面程序分频器是采回来做闭环的。
在这里插入图片描述
锁相环基本思路就是判断相位偏差,然后加快频率或者减少频率去追。比如参考信号超前实际信号,那么可以控制w增加,接近相位后逐渐减小直道同频同相。
dq坐标系有个角度wt,它可以用作输出正弦波输出的相位。也就是上面的A相,BC相就是在它的基础上加减2π/3.而如果你是用了dq坐标系的wt那么就是说,你输出的正弦波合成矢量是与d轴对齐的.然后再根据上面推导的,如果是使用cos型帕克变换就要用cos型三相分量.
现在你的输出向量就是d轴,那么在dq坐标系下,参考信号向量与d轴的偏差相位就是他们实际差的相位.而为了同频同相,那么就要使得参考信号在q轴上的分量为0.
在这里插入图片描述

SOGI

上面是针对三相信号的,那么如果是单相信号,相当于只有一个A相,那么怎么使用上述的锁相环呢?
可以想到,你把单相信号相位加(π/2)就是beta轴了.也就得到了alpha和beta分量,后面就和三相处理方式一样了.
得到bete轴可以用延时方式,也可以用SOGI.
因为SOGI可以对参考信号(一般为电网,谐波含量大)进行滤波,所以更推荐使用SOGI.
广义二阶积分器(Second-Order General Integrator,SOGI)的传递函数在描述其频率响应和动态特性方面起着关键作用。它通常包含两个关键的传递函数:一个是与输入信号v(s)和输出信号v’(s)之间的关系,另一个是与正交分量q和输出信号v’(s)之间的关系。

具体的传递函数形式如下:

  1. 输入信号v(s)与输出信号v’(s)之间的传递函数D(s)可以表示为:
    D ( s ) = v ′ ( s ) v ( s ) = k ω ′ s s 2 + k ω s + ω ′ 2 D(s) = \frac{v'(s)}{v(s)} = \frac{k\omega's}{s^2 + k\omega s + \omega'^2} D(s)=v(s)v(s)=s2+s+ω′2kωs
  2. 正交分量q与输出信号v’(s)之间的传递函数Q(s)可以表示为:
    Q ( s ) = q v ′ ( s ) v ( s ) = k ω ′ 2 s 2 + k ω s + ω ′ 2 Q(s) = \frac{qv'(s)}{v(s)} = \frac{k\omega'^2}{s^2 + k\omega s + \omega'^2} Q(s)=v(s)qv(s)=s2+s+ω′2kω′2
    在上述公式中,ω’代表系统的共振频率,ω代表输入信号的频率,而g是广义二阶积分器的控制参数。这些参数可以根据具体的应用需求进行调整,以实现所需的滤波或积分效果。
figure()
subplot(1,2,1)
sogi_k=0.1;sogi_w0=2*pi*50;sogi_Gs1=sogi_k*sogi_w0*s/(s*s+sogi_k*sogi_w0*s+sogi_w0*sogi_w0);bode(sogi_Gs1);hold on;
sogi_k=1;sogi_w0=2*pi*50;sogi_Gs1=sogi_k*sogi_w0*s/(s*s+sogi_k*sogi_w0*s+sogi_w0*sogi_w0);bode(sogi_Gs1);hold on;
sogi_k=10;sogi_w0=2*pi*50;sogi_Gs1=sogi_k*sogi_w0*s/(s*s+sogi_k*sogi_w0*s+sogi_w0*sogi_w0);bode(sogi_Gs1);hold on;
legend('K=0.1','K=1','K=10');title('变K,sogi-alpha')

subplot(1,2,2)
sogi_k=0.1;sogi_w0=2*pi*50;sogi_Gs2=sogi_k*sogi_w0*sogi_w0/(s*s+sogi_k*sogi_w0*s+sogi_w0*sogi_w0);bode(sogi_Gs2);hold on;
sogi_k=1;sogi_w0=2*pi*50;sogi_Gs2=sogi_k*sogi_w0*sogi_w0/(s*s+sogi_k*sogi_w0*s+sogi_w0*sogi_w0);bode(sogi_Gs2);hold on;
sogi_k=10;sogi_w0=2*pi*50;sogi_Gs2=sogi_k*sogi_w0*sogi_w0/(s*s+sogi_k*sogi_w0*s+sogi_w0*sogi_w0);bode(sogi_Gs2);hold on;
legend('K=0.1','K=1','K=10');title('变K,sogi-beta')

在这里插入图片描述

function [Ualpha, Ubeta] = sogi_fun(ugird, w0)  
    persistent  integral_2;
    persistent  integral_3;
    if isempty(integral_2)
       integral_2=0; 
    end
    if isempty(integral_3)
       integral_3=0; 
    end
    x_a=(ugird - integral_2)*1;
    integral_2=integral_2+w0*(x_a-integral_3)* 0.00005;
    Ualpha = integral_2;
    integral_3 = integral_3 + w0*integral_2* 0.00005;
    Ubeta = integral_3;
end

上面是matlab写的测试程序.SOGI需要参考信号与频率.频率的话直接用锁相环最后锁出来的W.
在这里插入图片描述
第一个波是输入信号,第二个是过sogi后的α分量,第三个β分量.可以看到过sogi后得到延时90°的向量.

附:单相逆变器锁相环部分代码

void Sogi_init(SOGI_t *SOGI_Struct, float t)
{
	SOGI_Struct->integral_2=0;
	SOGI_Struct->integral_3=0;
	SOGI_Struct->samp_t = t;
}

void Sogi_fun(SOGI_t *SOGI_Struct)
{

    float x_a;
    x_a=(SOGI_Struct->ualfa_0 - SOGI_Struct->integral_2)*k_sogi;
    SOGI_Struct->integral_2=SOGI_Struct->integral_2+SOGI_Struct->Ugird_W0*(x_a-SOGI_Struct->integral_3)*SOGI_Struct->samp_t;
    SOGI_Struct->SOGI_Ualfa = SOGI_Struct->integral_2;
    SOGI_Struct->integral_3 = SOGI_Struct->integral_3 + SOGI_Struct->Ugird_W0*SOGI_Struct->integral_2*SOGI_Struct->samp_t;
    SOGI_Struct->SOGI_Ubeta = SOGI_Struct->integral_3;
}
/**
 * @brief 基于dq的锁相环
 * 
 * @param ualfa_1 alpha
 * @param ualfa_q beta
 * @param t 采样时间
 */
void dq_pll(float ualfa_1, float ualfa_q,float t, float *wt, float *w0)
{
    uq = arm_cos_f32(*wt) * ualfa_q - arm_sin_f32(*wt) * ualfa_1;	//帕克变化
	con_increase = zl_pid_increase(-1*uq,&PLL_Pid);					//增量式pid
    *w0 = 2*pi*50 - con_increase;
    *wt += *w0 * t;
    if(*wt >= 2*pi) *wt = 0;                 //计到2*pi重新计数          
}

具体使用如下,

  1. 采样:定时器触发ADC采样(保证采样周期) DMA搬运数据 DMA中断处理采样信号
  2. 确定定时器频率,计算周期.
  3. 在DMA中断里调用dq_pll(wt更新的t就是采样周期).
  4. 调制,基波=cos(wt).因为这里使用的是cos型帕克板换.
    调制部分我后面会再写文章说明的。
    注意:如果你采样周期是20k(周期50us),那么在50us里就要完成dq_ppl,这里面有很多三角函数,如果你使用C库的三角函数大概率是算不完的(除非你主频足够牛逼).那么就需要使用STM32的DSP库.使用可以参考我之前的文章.
    【电赛电力电子方向】STM32F4DSP库添加与问题记录

欢迎加入扣扣交流群,群号:807477521

基于dq变换的锁相环(Phase-Locked Loop,PLL)是一种常用的控制系统,用于同步输入信号和参考信号的相位和频率。PLL由相位检测器(Phase Detector,PD)、环路滤波器(Loop Filter,LF)、电压控制振荡器(Voltage Controlled Oscillator,VCO)和频率分频器(Frequency Divider,FD)等组成。 dq变换将传统三相坐标系下的信号变换到dq坐标系下,dq坐标系中,d轴与参考信号保持一致,q轴与d轴正交,d轴对应信号的幅值,q轴对应信号的相位。dq变换可通过傅里叶级数展开来实现,其中包括正弦和余弦函数。 基于dq变换的PLL设计与仿真首先需要确定参考信号和输入信号的频率和相位关系。传统的PLL设计中,需要使用电位计调整PD的增益以满足跟踪速度和相位噪声的要求。然而,基于dq变换的PLL可以通过调整d或q轴的增益来实现对相位和频率的调节。通过在LF中添加额外的增益控制环节,可以对PLL的性能进行优化。 基于dq变换的PLL设计和仿真可以使用MATLAB等软件来实现。首先,需要建立PLL的数学模型,包括PD、LF、VCO和FD。然后,可以通过设置参考信号和输入信号的频率和相位差来模拟PLL的运行。可以通过调整增益参数和参数变化范围来优化PLL的性能,例如调节d轴和q轴的增益、LF中的增益参数等。 通过基于dq变换的PLL设计和仿真,可以确定合适的参数和控制策略,从而实现对输入信号和参考信号的精确同步。这种方法能够提高控制系统的可靠性和稳定性,并广泛应用于通信、电力系统等领域。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值