请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【电机培训】左右逢源-电机正反转及报错信息

[复制链接]
STM1024 发布时间:2018-9-6 18:54
本帖最后由 stm1024 于 2018-9-7 08:12 编辑 * q- u; d0 P- Z& _; Q% i

( X  E% j( f6 L% i& S这次测试相当于是培训中的试验4“基于MC SDK5.0 状态的切换 ”
) B* p( K( j' J5 X. m+ V# ~让电机正反转,常规的做法是:
, i* M7 y2 d, w: t+ U
  1. MC_ProgramSpeedRampMotor1(3000 / 6, 1000);
    % k* k" ^% o: G& y( q1 @0 \; p0 }' X9 P9 {
  2.         MC_StartMotor1();
    2 c( |$ E2 p6 c, ~$ `
  3.         HAL_Delay(10000);
    % Y+ U) |7 `% r& B! v2 Y' y
  4.         MC_StopMotor1();
    2 T4 r+ N; F4 n5 S5 q
  5.         HAL_Delay(5000); 0 b% j7 ~, A; @: G8 U! E. G
  6.         4 X0 f) k% s5 y! G% t
  7.         MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);
    6 j- V8 O" G$ m; _% N
  8.         MC_StartMotor1();7 `& C$ v6 Y6 u. M* U5 R7 {
  9.         HAL_Delay(10000);
    , V! o. W  Q" U) J
  10.         MC_StopMotor1();
    - J  {- k) \( Q: x0 R
  11.         HAL_Delay(5000);
复制代码
这段代码可以保证电机正转10秒后停5秒,然后反转10秒后停5秒,如此反复,而且不会出现故障。8 }; e/ x& [& T! n5 C

3 E" t2 i# }: m- V- @4 x* S不过试验中的要求是,速度反转3000后立即切换为正转3000,通过前面的介绍可以知道,在速度接近0的时候,会产生speed feedback的故障报警。
3 E6 b& A% `' X' ]( y这也简单:
  E# N' M+ O5 d3 C7 Q4 T$ \
  1. MC_StartMotor1();4 ]/ ^& _/ B. v. b, Y
  2.         MC_ProgramSpeedRampMotor1(3000 / 6, 1000);   
    6 N; k' |0 N9 N* I6 ]
  3.         HAL_Delay(10000);
    # g; l' s0 a, k1 B% h+ }
  4.         MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);, {4 u4 f! K% m' w4 Q4 j
  5.         HAL_Delay(10000);
复制代码
运行的效果是:: n6 z; U6 N. t; C* O- W
1.gif

0 j0 P8 H) z1 R7 I5 D
可见在运转过程中是会出现speed feedback错误的。
接下来是如何消除错误。
  1. MC_StartMotor1();! K- r) k; y# X7 ?% D- W4 J
  2.         7 Q4 q* [' ]0 M$ ^: N: c7 s8 r
  3.         MC_ProgramSpeedRampMotor1(3000 / 6, 1000);  - P0 w3 n, [0 ?- T, x" ]
  4.         MC_AcknowledgeFaultMotor1();
    5 P/ q$ @/ M- G. z- d+ W
  5.         MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);( j& ]7 |, e& R0 t) ~% G( z, A; T
  6.         HAL_Delay(10000);5 k$ C5 w' b+ u3 t5 N; F! b9 S
  7.         - }: z+ q' P  t5 y2 G3 h6 L
  8.         MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);
    * {: F% a6 i! A" j0 |6 }
  9.         MC_AcknowledgeFaultMotor1();, `7 {9 {; C4 B+ _6 i$ C- h
  10.         MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);* Q+ y0 Y( W, T7 v
  11.         HAL_Delay(10000);
复制代码
这样就可以消除错误,电机也会正反转,不过没有最开始的代码处理的快,毕竟stop motor直接让motor回到了idle状态。测试过程中还发现,如果延时时间太短,例如把两个10000都改为5000,则电机也会一直朝着一个方向转动,估计是留给错误恢复的时间不够?或者是我对SDK的理解不够深入吧
8 C! m/ u/ x$ P
收藏 1 评论0 发布时间:2018-9-6 18:54

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版