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

系统概述

本文基于汇川技术股份有限公司开发的MD290、MD380、MD500系列变频器的嵌入式软件源码进行分析。该软件系统运行于TI TMS320F28035 DSP平台,采用C语言与汇编语言混合编程,实现了完整的电机驱动控制功能。

系统初始化与启动流程

启动代码与系统初始化

系统启动过程由汇编启动文件DSP2803x_CodeStartBranch.asm开始,主要完成以下关键操作:

code_start:
    LB main_init       ; 跳转到用户代码

main_init:
    SETC OBJMODE        ; 设置28x目标代码模式
    EALLOW              ; 启用受保护的寄存器访问
    ; 禁用看门狗
    MOVZ DP, #7029h>>6  
    MOV @7029h, #0068h  
    EDIS
    
    ; 清零各内存区域(M0、M1、L0-L3)
    MOV ACC, #00H
    MOVL XAR5, #0000H
    ; ... 内存清零代码
    
    LB _c_int00         ; 跳转到C语言main函数

主程序架构

主程序main.c采用多任务时间片轮询架构,实现精确的时序控制:

void main(void)
{
    InitSysCtrl();                      // 系统控制初始化
    InitInterrupt();                   // 中断服务程序初始化
    InitPeripherals();                 // 外设初始化
    InitForMotorApp();                 // 电机应用初始化
    InitForFunctionApp();              // 功能应用初始化
    
    EnableDog();                       // 启用看门狗
    SetInterruptEnable();              // 启用中断
    EINT; ERTM;                        // 全局中断使能
    
    while(1) {
        // 0.5ms周期任务
        if(m_DetaTime >= C_TIME_05MS) {
            Main05msMotor();           // 电机0.5ms程序
            // 2ms周期任务分组执行
            if((m_LoopFlag & 0x03) == 0) {
                Main05msFunctionA();
                Main05msFunctionB();
            }
            // ... 其他时间片任务
            KickDog();                 // 喂狗
        }
        Main0msFunction();             // 非等待循环任务
    }
}

核心功能模块

1. 编码器与速度反馈系统

系统支持多种编码器类型:

  • ABZ增量式编码器
  • UVW霍尔传感器
  • 旋转变压器(Resolver)
  • 正弦编码器(SC)

速度检测采用QEP(正交编码脉冲)接口,实现高精度位置和速度反馈:

void VCGetFeedBackSpeed(void)
{
    switch(gPGData.PGType) {
        case PG_TYPE_UVW:
        case PG_TYPE_SPECIAL_UVW:
        case PG_TYPE_ABZ:
            GetFeedSpeedQEP();        // QEP测速
            gRotorSpeed.SpeedTemp = gRotorSpeed.SpeedFeed;
            break;
        case PG_TYPE_RESOLVER:
            RotorTransCalVel();       // 旋变测速
            gRotorSpeed.SpeedTemp = (long)gRotorTrans.FreqFeed<<9;
            break;
        case PG_TYPE_SC:
            // 正弦编码器处理
            break;
    }
    
    // 传动比折算
    gRotorSpeed.SpeedEncoderQ24 = (llong)gRotorSpeed.SpeedTemp * 
                                  gRotorSpeed.TransRatio / 1000;
}

2. 载波频率与调制策略

系统支持自适应载波频率调整和多种PWM调制方式:

void CalCarrierWaveFreq(void)
{
    // 温度自适应载频调整
    if((gSubCommand.bit.VarFcByTem != 0) && 
       (gTemperature.Temp > (m_TempLim-5))) {
        // 根据温度调整载波频率
        gFcCal.FcBak -= 5;
    }
    
    // CPWM/DPWM自动切换
    if((gFcCal.FcBak <= 20) || (1 == gExtendCmd.bit.ModulateType)) {
        gPWM.PWMModle = MODLE_CPWM;      // 连续PWM
    } else {
        // 基于频率点的调制方式切换
        if(gMainCmd.FreqReal > gPWM.PwmModeSwitchLF + 200) {
            gPWM.PWMModle = MODLE_DPWM;  // 不连续PWM
        }
    }
    
    // 同步/异步调制选择
    if((IDC_VF_CTL != gMainCmd.Command.bit.ControlMode) ||
       (gExtendCmd.bit.ModulateType == 0)) {
        gSynPWM.ModuleApply = 0;         // 异步调制
    } else {
        gSynPWM.ModuleApply = 1;         // 同步调制
    }
}

3. 电流采样与坐标变换

系统采用Clarke和Park变换实现三相电流的坐标变换:

void ChangeCurrent(void)
{
    // Clarke变换:三相静止->两相静止
    UVWToAlphBetaAxes((UVW_STRUCT_Q24*)&gIUVWQ24, 
                      (ALPHABETA_STRUCT*)&gIAlphBeta);
    
    // Park变换:两相静止->两相旋转
    AlphBetaToDQ1((ALPHABETA_STRUCT*)&gIAlphBeta);
    
    // 电流幅值与相位计算
    gIAmpTheta.Theta = atan(gIMTQ12.M, gIMTQ12.T);
    
    // 功率因数角计算
    temp = gOutVolt.VoltPhaseApply - gIAmpTheta.Theta;
    gIAmpTheta.PowerAngle = Filter8(temp, gIAmpTheta.PowerAngle);
}

4. 保护与故障处理

系统实现全面的保护功能,包括过流、过压、过载等:

// 过载保护计算
void OverLoadProtect(void)
{
    // 变频器过载保护
    if(gLineCur.CurPerShow > gComPar.MotorOvLoad) {
        gOverLoad.InvTotal.all += gLineCur.CurPerShow;
    }
    
    // 电机过载保护
    if(gLineCur.CurPerShow > gComPar.PerMotorOvLoad) {
        gOverLoad.MotorTotal.all += gLineCur.CurPerShow;
    }
    
    // 制动电阻过载保护
    if(gBrake.IBreak > gInvInfo.InvBreakCurrent) {
        gOverLoad.BrakeTime++;
    }
}

中断服务程序

系统采用PIE(外设中断扩展)架构,关键中断包括:

  • ADC采样完成中断:电机电流、电压采样
  • PWM周期中断:矢量控制算法执行
  • PWM下溢中断:死区时间补偿
  • 过流保护中断:硬件故障快速响应
interrupt void ADC_Over_isr(void)
{
    ADCOverInterrupt();                    // ADC采样处理
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // 中断应答
}

interrupt void EPWM1_TZ_isr(void)
{
    DisableDrive();                       // 立即封锁输出
    HardWareErrorDeal();                  // 硬件故障处理
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
}

通信与数据交换

系统通过共享内存方式实现驱动与功能模块的数据交互:

void ParGet2Ms(void)
{
    gSubCommand.all = gSendToMotor2MsDataBuff[0];
    gMainCmd.FreqDesired = gSendToMotor2MsDataBuff[1];
    gBasePar.MaxFreq = gSendToMotor2MsDataBuff[2];
    // ... 参数接收
}

void ParSend2Ms(void)
{
    gSendToFunctionDataBuff[0] = gMainStatus.StatusWord.all;
    gSendToFunctionDataBuff[1] = gGetParVarable.StatusWord;
    gSendToFunctionDataBuff[2] = gError.ErrorCode.ErrorCodeStruct.ErrorCode1;
    // ... 状态发送
}

关键技术特性

1. 自适应控制策略

  • 根据运行状态自动切换V/F控制、矢量控制
  • 在线参数辨识与自适应调谐
  • 死区时间电压补偿

2. 高性能算法

  • 滑模观测器无速度传感器控制
  • 磁链观测与定向控制
  • 前馈补偿与抗饱和处理

3. 可靠性设计

  • 多重保护机制(软件+硬件)
  • 故障诊断与自恢复
  • 温度自适应降额运行

总结

汇川MD系列变频器软件展现了工业级电机驱动控制的先进技术水平,其模块化设计、实时性保证和全面的保护机制为变频器在各种工业应用场景中的稳定运行提供了坚实基础。系统通过精细的时序管理和优化的控制算法,实现了高效率、高精度的电机控制性能。

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

更多推荐