汇川三种变频器源码,MD290,MD380,MD500变频器源码,基于TMS320F28035。 新的SVC3算法,高速速度波动小,新的转子电阻,漏感辩识算法!.

在工控领域,汇川变频器一直以其出色的性能和可靠性备受关注。今天咱们就来深入探讨基于 TMS320F28035 的汇川 MD290、MD380 和 MD500 变频器源码,特别是其中蕴含的新算法带来的卓越表现。

硬件基础:TMS320F28035

TMS320F28035 是一款高性能的 32 位定点 DSP 芯片,为变频器的精准控制提供了坚实的硬件平台。它具备丰富的外设资源和高速的运算能力,能够快速处理复杂的控制算法。例如,其 ePWM 模块可用于生成精确的脉宽调制信号,控制变频器的功率输出。以下是一个简单的 ePWM 初始化代码示例:

#include "DSP28x_Project.h"

void InitEPWM1(void)
{
    // 使能 EPWM1 时钟
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
    SysCtrlRegs.PCLKCR0.bit.EPWM1ENCLK = 1;
    EDIS;

    // 初始化时基模块
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;

    // 设置周期值
    EPwm1Regs.TBPRD = 1000;

    // 初始化比较模块
    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
    EPwm1Regs.CMPA.half.CMPA = 500;
    EPwm1Regs.CMPB = 500;

    // 初始化动作限定模块
    EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;
    EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;
    EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;
    EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR;

    // 使能 EPWM1
    EPwm1Regs.TBCTL.bit.TBCLKSYNC = 1;
}

这段代码首先使能了 EPWM1 的时钟,然后配置了时基模块,设定了计数器模式、分频系数以及周期值。接着初始化比较模块,决定了 PWM 信号的占空比,最后在动作限定模块中定义了计数器为 0 和递增计数到周期值时 PWM 输出引脚的动作。

新算法:SVC3 与转子电阻、漏感辨识算法

SVC3 算法:高速下的稳定之选

新的 SVC3 算法在高速运行时展现出了极小的速度波动。传统的矢量控制算法在高速场景下,由于电机参数变化、负载扰动等因素,容易出现速度不稳定的情况。而 SVC3 算法通过更精确的磁链估计和电流控制,有效解决了这一问题。

在代码实现上,SVC3 算法可能涉及到复杂的坐标变换和控制律计算。以下是一个简化的电流环控制代码片段,用于说明其基本思路:

void CurrentLoop(void)
{
    float Id_ref, Iq_ref;
    float Id, Iq;
    float Vd, Vq;

    // 获取电流反馈值
    Id = GetIdFeedback();
    Iq = GetIqFeedback();

    // 电流环 PI 控制
    Id_ref = CalculateIdRef();
    Iq_ref = CalculateIqRef();

    Vd = Kp * (Id_ref - Id) + Ki * IntegralId + PreviousVd;
    Vq = Kp * (Iq_ref - Iq) + Ki * IntegralIq + PreviousVq;

    // 坐标反变换,得到三相电压指令
    float Va, Vb, Vc;
    ParkInverse(Vd, Vq, &Va, &Vb, &Vc);

    // 将电压指令输出给 PWM 模块
    SetPwmVoltage(Va, Vb, Vc);

    // 更新积分项和上一时刻的电压值
    IntegralId += (Id_ref - Id);
    IntegralIq += (Iq_ref - Iq);
    PreviousVd = Vd;
    PreviousVq = Vq;
}

这段代码中,首先获取电流反馈值 IdIq,然后根据电机运行状态计算参考电流 IdrefIqref。通过 PI 控制器计算出 VdVq,再经过坐标反变换得到三相电压指令 VaVbVc,最后输出给 PWM 模块来控制变频器的输出。在高速运行时,SVC3 算法通过更优化的参数调整和控制策略,使得电机速度能够保持稳定。

转子电阻、漏感辨识算法

准确的电机参数对于变频器的高性能控制至关重要。新的转子电阻和漏感辨识算法能够实时在线估计这些参数,提高控制的准确性。

汇川三种变频器源码,MD290,MD380,MD500变频器源码,基于TMS320F28035。 新的SVC3算法,高速速度波动小,新的转子电阻,漏感辩识算法!.

在实际的代码实现中,可能会基于电机的数学模型,通过注入特定的信号,然后根据电机的响应来估计参数。例如,以下是一个简化的基于模型参考自适应系统(MRAS)的转子电阻辨识算法代码框架:

void RotorResistanceIdentification(void)
{
    float omega_r;
    float psi_alpha_est, psi_beta_est;
    float psi_alpha_ref, psi_beta_ref;
    float err_alpha, err_beta;
    float Kp_rotor, Ki_rotor;
    static float Integral_rotor;

    // 获取电机转速
    omega_r = GetMotorSpeed();

    // 估计磁链
    EstimateFlux(&psi_alpha_est, &psi_beta_est);

    // 参考磁链计算
    CalculateReferenceFlux(&psi_alpha_ref, &psi_beta_ref);

    // 计算磁链误差
    err_alpha = psi_alpha_ref - psi_alpha_est;
    err_beta = psi_beta_ref - psi_beta_est;

    // MRAS 自适应律更新转子电阻
    float rotor_resistance_update = Kp_rotor * (err_alpha * psi_beta_est - err_beta * psi_alpha_est) + Ki_rotor * Integral_rotor;
    RotorResistance += rotor_resistance_update;

    Integral_rotor += (err_alpha * psi_beta_est - err_beta * psi_alpha_est);
}

此代码通过获取电机转速,分别估计和计算参考磁链,进而得到磁链误差。基于 MRAS 的自适应律,根据磁链误差实时更新转子电阻估计值。这样,变频器能够随着电机运行状态的变化,动态调整控制参数,实现更精准的控制。

汇川基于 TMS320F28035 的这三款变频器源码中的新算法,为电机控制带来了更高的性能和稳定性,无论是在高速运行还是面对复杂的电机参数变化时,都能出色应对,推动了工控领域变频器技术的进一步发展。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐