电流闭环到速度闭环无缝切换__示例代码 ,它特别适合对传统的三段式启动方式 定位——>电流闭环强拖——>速度闭环进行优化,它能够自适应各种负载大小的情况,切换过程中电流和速度连续不突变,启动平稳顺滑。 发送切换的示例代码,代码已经过产品上千次启动验证,注释清楚,完全可以自行理解。

该示例代码的核心功能是实现电机从电流闭环(IF闭环)启动阶段,到速度闭环运行阶段的无缝切换,通过角度误差控制和Iq基准值动态调整,确保切换过程平稳无冲击。

一、核心功能概述

代码通过状态机管理电机运行流程,分阶段完成闭环切换。整体流程为:强制加速启动(STARTUPACCELERATION)→ Iq基准值递减调整(STARTUPIQREFREDUCE)→ 速度闭环运行(RUN_CLOSELOOP),最终实现从依赖强制角度累加,到使用观测器估算角度的平稳过渡。

二、关键变量定义

变量分类 变量名 功能描述
状态变量 MotorRun_State 电机运行状态枚举,包含4个阶段:启动定位、启动加速、Iq基准值递减、速度闭环运行
角度相关 ParkParm.qAngle FOC变换中使用的角度(初始为强制累加角度,切换后结合观测角度)
角度相关 smc1.Theta 观测器估算的电机角度
角度相关 theta_error 强制累加角度与观测角度的差值
速度相关 MotorParm.end_speed 由强制累加旋转角度计算的实时速度
速度相关 speedloop_ref 切换到速度闭环时的速度设定值
电流相关 CtrlParm.IqRef 电流环Iq基准值(动态调整)
电流相关 iq_min Iq基准值的最小值限幅(防止过度减小)
计数相关 Iqrefreduce_counter Iq基准值递减的时间间隔计数器
计数相关 iqmincounter Iq基准值达到最小值后的持续时间计数器

三、核心宏定义(参数配置)

宏名称 数值 功能描述
TRANSFERSPEEDSTART 600 切换启动速度阈值,达到此速度进入Iq基准值递减阶段(建议为额定转速的1/10-1/5)
TRANSFERSPEEDEND 1500 切换最终速度阈值(目标速度)
TRANSFERFINISHANGLE 10 切换完成的角度差门槛值(小于10度时判定切换完成)
ANGLE_BASE 180 角度基准值,用于角度差的标幺化计算
IQREFCOUNTER_MAX 1000 Iq基准值递减的时间间隔计数最大值(控制调整频率)
TRANSFER_KP 550 Iq基准值递减的比例系数(P系数,误差越大递减越多)
DEGREEQ15_0POINT025 4 角度误差渐变步长(最终将误差减小到0.025度)
IQMINCOUNTER_MAX 2000 Iq基准值达到最小值后的最大持续时间(2秒,超时强制切换)

四、核心函数逻辑(calculate_angle_process)

函数通过状态机分支,实现不同阶段的核心控制逻辑,具体如下:

1. 启动加速阶段(STARTUP_ACCELERATION)
  • 核心动作:强制产生累加旋转角度,计算实时速度MotorParm.end_speed
  • 切换条件:当MotorParm.endspeedTRANSFERSPEEDSTART时,初始化计数器(Iqrefreducecounteriqmincounter)和Iq最小值(iqmin),并切换到STARTUPIQREFREDUCE阶段。
2. Iq基准值递减阶段(STARTUP_IQREFREDUCE)
  • 角度与速度更新:继续累加ParkParm.qAngle,并通过加速度accret和系数coeff实时计算MotorParm.end_speed
  • 角度差计算:计算thetaerror(强制角度-观测角度),并取绝对值thetaerror_done
  • 切换判定(满足任一即可):
    1. 角度差条件:thetaerrordone < 标幺化后的TRANSFERFINISHANGLE(即小于10度)。
    2. 超时条件:iqmincounterIQMINCOUNTER_MAX(防止切换卡住,强制进入闭环)。
  • Iq基准值调整:
    1. 当Iqrefreducecounter达到最大值时,重置计数器,并通过TRANSFERKPthetaerrordone计算递减量,更新CtrlParm.IqRef
    2. 若CtrlParm.IqRefiqmin,强制将其设为iqmin,并累加iqmincounter
3. 速度闭环运行阶段(RUN_CLOSELOOP)
  • 角度切换:ParkParm.qAngle = 观测角度(smc1.Theta) + 角度误差(theta_error),开始使用观测角度。
  • 角度误差渐变:若thetaerror绝对值大于0.025度,按DEGREEQ150POINT025步长逐步减小误差,最终实现纯观测角度控制。

五、关键技术特点

  1. 平稳切换机制:通过Iq基准值动态递减(基于角度误差的P控制),避免电流突变导致的电机冲击。
  2. 双重切换保障:同时设置角度差阈值和超时机制,既保证切换精度,又防止异常卡死。
  3. 角度渐变过渡:进入速度闭环后,逐步减小角度误差,确保观测角度与实际角度无缝衔接。

六、使用注意事项

  1. 代码不可直接执行,需根据实际电机参数调整宏定义(如TRANSFERSPEEDSTARTTRANSFER_KP)和变量(如accretcoeff)。
  2. Iq最小值iq_min需根据电机负载能力设定,避免过小导致电机失步。
  3. 观测器smc1.Theta的精度直接影响切换效果,需确保观测器算法稳定可靠。

要不要我帮你整理一份关键参数调试建议表?表格会包含各宏定义的调试范围、影响因素及优化方向,方便你根据实际电机快速配置参数。

电流闭环到速度闭环无缝切换__示例代码 ,它特别适合对传统的三段式启动方式 定位——>电流闭环强拖——>速度闭环进行优化,它能够自适应各种负载大小的情况,切换过程中电流和速度连续不突变,启动平稳顺滑。 发送切换的示例代码,代码已经过产品上千次启动验证,注释清楚,完全可以自行理解。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐