电流闭环到速度闭环无缝切换__示例代码 它特别适合对传统的三段式启动方式 定位——电流闭环强拖——速度闭环进行优化它能够自适应各种负载大小的情况切换过程中电流和速度连续不突变启动平稳顺滑。 发送切换的示例代码代码已经过产品上千次启动验证注释清楚完全可以自行理解。一、功能概述本程序实现电机从电流闭环启动阶段到速度闭环运行阶段的平滑过渡控制。通过状态机管理电机运行过程分阶段完成控制模式切换核心目标是在切换过程中避免电机运行状态的突变实现无冲击过渡。二、核心变量说明状态变量-MotorRunState电机运行状态枚举变量包含MOTORPOSITION定位、STARTUPACCELERATION启动加速、STARTUPIQREFREDUCEIq基准值递减、RUN_CLOSELOOP速度闭环运行四种状态角度相关变量-ParkParm.qAngleFOC控制中使用的角度值-smc1.Theta观测器输出的电机角度-thetaerror强制累加角度与观测器角度的差值-thetaerror_done角度误差的绝对值速度相关变量-MotorParm.endspeed根据强制累加角度计算的实时速度-speedloopref速度闭环的参考速度值电流相关变量-CtrlParm.IqRef电流环的Iq基准值-iq_minIq基准值的最小值限制计数变量-IqrefreducecounterIq基准值递减控制的计数器-iqmin_counterIq基准值达到最小值后的持续时间计数器三、核心参数定义参数名称设定值说明TRANSFERSPEEDSTART600进入Iq基准值递减阶段的速度阈值TRANSFERSPEEDEND1500目标速度阈值TRANSFERFINISHANGLE10判定切换完成的角度差阈值度ANGLE_BASE180角度基准值用于角度差的标幺化计算IQREFCOUNTER_MAX1000Iq基准值递减的时间间隔计数最大值TRANSFER_KP550Iq基准值递减控制的比例系数DEGREEQ15_0POINT0254角度误差的渐变步长对应0.025度IQMINCOUNTER_MAX2000Iq基准值达到最小值后的最大持续计数四、核心控制流程calculate_angle_process函数程序通过状态机实现分阶段控制各阶段逻辑如下1. 启动加速阶段STARTUP_ACCELERATION执行强制角度累加生成ParkParm.qAngle计算当前速度MotorParm.end_speed当MotorParm.endspeed达到TRANSFERSPEED_START时初始化Iqrefreduce_counter为0初始化iqmincounter为0设定iq_min初始值状态切换至STARTUP_IQREFREDUCE2. Iq基准值递减阶段STARTUP_IQREFREDUCE继续进行角度累加更新ParkParm.qAngle基于加速度参数accret和系数coeff更新MotorParm.end_speed计算角度误差thetaerror强制角度 - 观测器角度及绝对值thetaerror_done计算标幺化角度误差thetaerrornormthetaerrordone * 1000 / ANGLE_BASEIq基准值调整逻辑Iqrefreducecounter累加达到IQREFCOUNTERMAX时重置Iqrefreduce_counter为0计算Iq调整量TRANSFERKP * thetaerror_norm / 1000更新CtrlParm.IqRef当前值减去调整量若CtrlParm.IqRef小于iqmin则强制设为iqmin并累加iqmincounter切换判定满足任一条件即切换至RUN_CLOSELOOP角度误差条件thetaerrordoneTRANSFERFINISHANGLE超时条件iqmincounter≥IQMINCOUNTER_MAX3. 速度闭环运行阶段RUN_CLOSELOOP设置speedloopref为目标速度TRANSFERSPEED_END角度切换逻辑ParkParm.qAngle 观测器角度smc1.Theta 角度误差theta_error角度误差渐变处理若thetaerrorDEGREEQ150POINT025则减去该步长若thetaerror -DEGREEQ150POINT025则加上该步长否则将theta_error清零五、程序核心意图通过分阶段控制实现从电流闭环到速度闭环的平滑过渡利用角度误差反馈动态调整电流基准值逐步降低强制控制比重采用双重切换条件角度误差达标或超时确保系统可靠性引入角度误差渐变机制避免切换瞬间的角度突变通过计数器控制参数调整频率保证系统稳定性该程序通过上述机制最终实现电机从启动阶段的强制电流控制平稳过渡到稳定运行阶段的速度闭环控制避免切换过程中的冲击和震荡。电流闭环到速度闭环无缝切换__示例代码 它特别适合对传统的三段式启动方式 定位——电流闭环强拖——速度闭环进行优化它能够自适应各种负载大小的情况切换过程中电流和速度连续不突变启动平稳顺滑。 发送切换的示例代码代码已经过产品上千次启动验证注释清楚完全可以自行理解。