打印
[电机控制专用MCU]

F035常规报错处理以及初始调试步骤

[复制链接]
743|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#技术资源# 报超速故障OVER_SPEED,可以先查看SPEED_CALIBRATION与OVER_SPEED_VALUE的值是否正确。SPEED_CALIBRATION应为电机最大转速的1.3倍左右,而OVER_SPEED_VALUE比SPEED_CALIBRATION略小一点



报软件过流OVER_CUR_SOFT,意思就是电流过大,这个时候我们就要把电机的启动电流ID_ALIGN减小。一般我们可以根据电机的电流大小去改动ID_ALIGN,电流过大就会报错启动保护,电机停止运作;电流过小即会导致电机启动失败。


报低压错误UNDER_VOL,这边一般就是电压没有给到启动电压,导致电机未能启动。当供电电压大于DCBUS_UNDER,电机才可以启动,这个值我们可以根据需求修改。



Tips
当把电机参数填进去sdk,并烧录。电机如果能跑起来,但不稳定,这个时候我们可以调试pi参数。一般我们是把电机状态设置在开环,调试电流环的pi,当电流环调试结束可以;再把电机状态设置在闭环,调试速度环,电流环与速度环调试完成,基本电机就可以平稳跑起来。

查看m1_app_mainstate_t eM1_MainStat与m1_run_substate_t eM1_RunSubState这两个结构体,可以知道电机的四个主状态以及六个子状态。


无感电机设置电机开环/闭环状态:
通过调整MAX_RPM控制电机的转速。当电机速度达到STOP_TO_RUN_SPEED,则进入开环状态;当电机速度达到STARTUP_TO_SPIN_SPEED,则进入闭环状态;电机速度下降到FREEWHEEL_SPEED,则进入自由轮状态,即这个时候电机开始减速,直到0。



有感感电机设置电机开环/闭环状态:
有感电机如果按照无感电机那样子设置开环状态,查看子状态的时候就会发现尽管你设置的值处于STOP_TO_RUN_SPEED与STARTUP_TO_SPIN_SPEED之间,电机已经处于闭环状态了。
这个时候就要把速度环的操作给屏蔽掉,让程序一直停留在电流环,我们就可以开始调试电流环。


这个时候由于反馈不完善,所以我们需要对Motor->Foc.stc_IdqCmd.s16q15_Q进行赋值,给定一个稳定的电流值(大家可以)。运转电机,会发现电机运转不平顺,这个可以暂时不管,查看Motor->Foc.stc_IdqCmd.s16q15_Q与 Motor->Foc.stc_Idq.s16q15_Q变化,调整电流环pi值使两者误差维持在+-200以内即可往下跑调整速度环。

接着恢复屏蔽的代码,设置电机速度大于STARTUP_TO_SPIN_SPEED,开始调试速度环pi参数(可以参照无感电机)
有感/无感电机上手调试步骤
有感电机
确定霍尔相序

1.根据电机参数,把电机极对数POLEPAIRS填进去。打开霍尔学习功能。


2.编译下载,进入debug模式运行。开始等待电机开始自学习,这时候会看到电机开始动。这个过程会持续2分钟左右,自学习结束后,把下图watch窗口四个数组的值分别填入user_function.c对应的的数组内。

3. CW_hall_table值的确定。
CW_hall_table[0]& CW_hall_table[7]保持不变,为0。
u8CW_Hall_Value[0]=1,该值前面的值为5,则CW_hall_table[u8CW_Hall_Value[0]] =5;u8CW_Hall_Value[1] = 3,则前面值为1,则CW_hall_table[u8CW_Hall_Value[1]] = 1;以此类推……

4.这个时候把这几组值填好,关闭霍尔学习,编译烧录进去板子,基本就可以把电机跑起来(如果电机未能转起来,可以查看Motor->User.u16_Fault**错误类型(fault.h)),但基于电机参数不一样,转起来顺畅度会不一样。
电机转起来的视频。
5.如果电机跑起来不够平稳,这个时候就需要调整PI参数去优化电流环与速度环(关于电流环与速度环相关解释可以自己自行百度)。
由于电流环是最内环,最终影响的也是电流环,所以我们一般先把电流环的值调试好,接着再去调试速度环,两环的值最终调试在合适范围内,电机即可平稳运行(基于每台电机参数不同,不同电机要适配不同的调试参数)。
打开图形可视gui,查看此时电流环的参考值与实际值的情况:

电流环变换视频
Motor->Foc.stc_IdqCmd.s16q15_Q为参考值
Motor->Foc.stc_Idq.s16q15_Q为实际值
两者波动在+-200以内为ok,当然波动范围越小越好。
电流环调试结束,我们就可以调整速度环,如下图:

Motor_type.Foc.s16SpdCmd给定值
Motor_type.Foc.s16SpdFilt实际值
Motor_type.Foc.s16SpeedRamp
Motor_type.Foc.s16SpdFilt& Motor_type.Foc.s16SpeedRamp两者波动在+-100以内为ok,当然波动范围越小越好。


无感电机
根据电机参数,把电机极对数POLEPAIRS填进去。同时使用电桥与万用表测量电机三相两两之间的相电感Ls与相电阻Rs,得到的值取其平均数再除以2。
Ls=((L(uv)+L(uw)+L(wv))/3)/2
Rs=((R(uv)+R(uw)+R(wv))/3)/2

还有一个值得注意的地方,下图的两个速度值需要根据电机的额定转速去更改,
SPEED_CALIBRATION = MAX_RPM*1.3;
OVER_SPEED_VALUE = SPEED_CALIBRATION*0.95;

把以上参数填入并烧录进开发板,基本就可以把电机跑起来(如果电机未能转起来,可以查看Motor->User.u16_Fault**错误类型(fault.h)),但基于电机参数不一样,转起来顺畅度会不一样。
如果电机跑起来不够平稳,这个时候就需要调整PI参数去优化电流环与速度环(关于电流环与速度环相关解释可以自己自行百度)。
由于电流环是最内环,最终影响的也是电流环,所以我们一般先把电流环的值调试好,接着再去调试速度环,两环的值最终调试在合适范围内,电机即可平稳运行(基于每台电机参数不同,不同电机要适配不同的调试参数)。
打开图形可视gui,查看此时电流环的参考值与实际值的情况:

电流环变换视频
Motor->Foc.stc_IdqCmd.s16q15_Q为参考值
Motor->Foc.stc_Idq.s16q15_Q为实际值
两者波动在+-200以内为ok,当然波动范围越小越好。
电流环调试结束,我们就可以调整速度环,如下图:

Motor_type.Foc.s16SpdCmd给定值
Motor_type.Foc.s16SpdFilt实际值
Motor_type.Foc.s16SpeedRamp跟随值
Motor_type.Foc.s16SpdFilt& Motor_type.Foc.s16SpeedRamp两者波动在+-100以内为ok,当然波动范围越小越好。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

45

帖子

0

粉丝