当前位置: 首页 > news >正文

基于TMS320F28035的汇川变频器源码:MD290、MD380、MD500三种型号及新的...

变频器汇川的三种变频器源码,包括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算法,高速速度波动小,新的转子电阻,漏感辩识算法.

http://www.jsqmd.com/news/674472/

相关文章:

  • jQuery 遍历 - 祖先
  • 博通(Broadcom)数据中心交换机芯片的介绍
  • 鸿蒙市场份额飙升但国产厂商仍观望,生态差距与商业考量成阻碍
  • 22.React.js 中所谓的 “Pure Component” 是怎样的一类组件?
  • Spring Cloud Eureka停更后,我们团队是如何平滑迁移到Nacos的(附完整配置对比)
  • 极域电子教室2015版虚拟机环境搭建全流程(附Windows Server 2003镜像)
  • 从AT24C02到BMP280:手把手教你用STM32 HAL库玩转IIC,避开那些新手必踩的坑
  • 从Date到LocalDateTime:一次搞懂Java 8日期API的升级逻辑与实战迁移
  • 保姆级教程:用STM32和飞特STS3215舵机做个机械臂关节(附完整代码与协议解析)
  • 8Mb高速低功耗串行SPI SRAM嵌入式应用
  • YOLOFuse功能体验:多种融合策略,满足不同精度需求
  • 全球半导体展哪家好?2026年优质展会对比甄选顶级平台 - 品牌2026
  • 解锁BilibiliDown的5大隐藏功能:从基础下载到批量管理的完整探索指南
  • 3分钟永久激活Windows和Office:KMS_VL_ALL_AIO智能脚本终极指南
  • RMBG-1.4与Anaconda集成:Python数据科学工作流
  • 【Dify 2026多模态集成权威指南】:涵盖图像/语音/文本联合推理的7大实战陷阱与3步零代码接入法
  • 适合放在简历上的开源项目与练手项目Idea清单
  • 新手初步学习Java——从c语言到Java
  • QQ空间说说备份神器:GetQzonehistory完整使用指南
  • CSS如何创建三角箭头图标_通过border透明技巧实现
  • 【CTF那些事儿】ascii.txt
  • ARM地址转换与分支记录缓冲区(BRB)机制详解
  • GitX智能版本控制助手:告别Git命令行,让版本控制更高效
  • 3、IoT物理极限架构最佳实践:一文讲透端边双主(可分可合,非传统高可用)
  • HTML函数在旧版Windows跑得动吗_系统版本与硬件协同影响【指南】
  • HTML5中Canvas模拟物理重力与碰撞反弹的逻辑
  • 因漏洞数量激增,NIST 已停止对低优先级漏洞的评分
  • 摄影入门 | 从光到电:数码相机的成像核心
  • 【CTF那些事儿】b64steg.txt
  • Vite现代化的前端构建工具详解