基于DQ解耦控制的单相PWM整流

文章介绍了如何使用Simulink进行DQ解耦控制的单相PWM整流器仿真,包括alpha轴信息移相得到beta轴信息、Park变换以及调制发波的关键代码。仿真结果展示了输入电压、电流和输出电压的波形跟踪。
摘要由CSDN通过智能技术生成

Simulink仿真

基于DQ解耦控制搭建了单相PWM整流器,可以实现单位功率因素运行,直流侧输出电压可控,功率因素可调。

输入端220V交流电,直流侧期望输出电压800V.

仿真文件已上传资源,需要自取.

注:Simulink版本为2021b

完整框图

在这里插入图片描述

仿真结果

输入电压与输入电流
输入电压和输入电流
输出电压波形
输出电压
无功电流跟踪
无功电流跟踪
有功电流跟踪
有功电流跟踪

关键代码部分

alpha轴信息移相90°得到beta轴信息

利用数组存储物理量,改变索引值到达移相的效果。

void GetBeta()
{
    static Uint16 count_alpha = 0;

    // orthogonal signal
    U[count_alpha] = Ualpha; 
    I[count_alpha] = Ialpha;

    if (count_alpha >= 125)
        Flag_Alpha = 1;

    if (Flag_Alpha == 1) // finished 1/4 cycle
    {
        if (count_alpha < 125)
        {
            Ubeta = U[count_alpha + 375];
            Ibeta = I[count_alpha + 375];
        }
        else if (count_alpha < 500 && count_alpha >= 125)
        {

            Ubeta = U[count_alpha - 125];
            Ibeta = I[count_alpha - 125];
        }
    }
    count_alpha++;

    if (count_alpha >= 500)
        count_alpha = count_alpha - 500;
}

Park变换

在simulink搭建仿真的过程中,到dq轴变换模块还有一个参数。
在这里插入图片描述
详细讲解可以参考该位博主的讲解

Matlab的dq变换模块到底选哪一种变换方式?90 degree behind phase A axis和 Aligned with phase A axis有什么区别?

Aligned with phase A axis-基于余弦的变换,中国课本大多沿用。
90 degree behind phase A axis-基于正弦的变换,国外课本大多沿用。

不同的参考轴需要不同的控制策略。

基于余弦的变换下,D轴是有功分量,而Q轴是无功分量。
譬如本例子将DQ用于单相PWM整流,要实现单位功率因数则需要Q轴电流为0,即无无功分量。电压外环的输出作为D轴电流的指令值。
在这里插入图片描述

基于正弦的变换下,Q轴是有功分量,而D轴是无功分量。
该情况多用于电机控制中,如PMSM。速度外环的输出作为Q轴电流的指令值,而D轴电流指令值为0。再得到UdUq、判断扇区生成SVPWM。
在这里插入图片描述

void ParkTrsfm()
{
    Ud = Sin * Ualpha - Cos * Ubeta;
    Uq = Cos * Ualpha + Sin * Ubeta;
    Id = Sin * Ialpha - Cos * Ibeta;
    Iq = Cos * Ialpha + Sin * Ibeta;
}

调制发波

在Simulink中的载波我们通常都是设为正负半周对称的三角波,而在利用DSP芯片实现时,TBCTR是载波,CMP是调制波

芯片的特性使得载波是一个位于0轴线以上的三角载波,而调制波也相应的是一个非负值。

解决办法是在数字芯片中,抬升载波,以TBPRD/2为0轴线,从而使得调制波在0轴线上下波动,从而正确发波。

void GeneratePWM()
{
    temp1 = 0.5 * tbprd + Modulation * ModulateWave;
    temp2 = 0.5 * tbprd - Modulation * ModulateWave;

// limit modulate wave // 限幅考虑死区时间的占空比
    if (temp1 > 0.98 * tbprd)
        temp1 = 0.98 * tbprd;
    if (temp1 < 0.02 * tbprd)
        temp1 = 0.02 * tbprd;
    if (temp2 > 0.98 * tbprd)
        temp2 = 0.98 * tbprd;
    if (temp2 < 0.02 * tbprd)
        temp2 = 0.02 * tbprd;

// assign modulate wave
    EPwm1Regs.CMPA.bit.CMPA = (Uint16) temp1;
    EPwm2Regs.CMPA.bit.CMPA = (Uint16) temp2;
}

仿真及工程代码链接

基于DQ解耦控制的单相PWM整流器

  • 10
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天美美吃饭啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值