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

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

[复制链接]
STM1024 发布时间:2018-9-6 18:54
本帖最后由 stm1024 于 2018-9-7 08:12 编辑
6 [( T% J" ?( p# r+ o; z' r$ l- a3 b3 m5 N/ J* y$ f; V
这次测试相当于是培训中的试验4“基于MC SDK5.0 状态的切换 ”3 r7 g- _! b0 H: W/ ?4 R. _, E2 @  n
让电机正反转,常规的做法是:
% i7 B8 ?: D4 t- q) S7 S% i! m/ K
  1. MC_ProgramSpeedRampMotor1(3000 / 6, 1000);
    / N, e5 a3 e  b3 n9 o9 e
  2.         MC_StartMotor1();1 `. W6 K; D9 w* q3 y1 p2 y
  3.         HAL_Delay(10000);; c3 C7 o7 K# X6 @" b
  4.         MC_StopMotor1();
    ' h0 q* |5 y/ l& b# z" s7 Q" O
  5.         HAL_Delay(5000);
    . m4 J9 v' ^9 j/ z( u
  6.         1 M4 H& M# H5 @4 e7 [7 N8 p2 J
  7.         MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);
    5 ^* |/ [4 ~. J5 I- n0 }5 K: |- J
  8.         MC_StartMotor1();
    ( K( f2 G. J2 N0 L- H4 Q
  9.         HAL_Delay(10000);+ H+ Z& V: Z$ i2 M. b% j" A2 S& N
  10.         MC_StopMotor1();
    8 q( O3 T& Y3 C6 I
  11.         HAL_Delay(5000);
复制代码
这段代码可以保证电机正转10秒后停5秒,然后反转10秒后停5秒,如此反复,而且不会出现故障。$ u/ Y1 r1 r5 B# |& I

+ r3 ^+ u- F: S. m1 @" r- d+ Y不过试验中的要求是,速度反转3000后立即切换为正转3000,通过前面的介绍可以知道,在速度接近0的时候,会产生speed feedback的故障报警。
4 c2 H( _6 s* Y0 V6 C这也简单:
2 W, ~) A9 ?) n8 ^, p- D2 J
  1. MC_StartMotor1();7 I7 {, v8 u2 b. u6 e& f4 V$ [8 P6 a  J
  2.         MC_ProgramSpeedRampMotor1(3000 / 6, 1000);     h6 o' a% Q% U3 ~7 C1 F1 K2 F9 F
  3.         HAL_Delay(10000);
    / Q) V$ k6 T% v0 M6 n7 S
  4.         MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);/ H2 U% p& y  O* }
  5.         HAL_Delay(10000);
复制代码
运行的效果是:+ E/ _5 C& U& _( d/ m+ D
1.gif
  `. ]. l! O# Z1 G+ z9 R
可见在运转过程中是会出现speed feedback错误的。
接下来是如何消除错误。
  1. MC_StartMotor1();( t5 Z- i6 B6 E, C1 L# X
  2.         0 _5 e, w  X: I4 F6 Q
  3.         MC_ProgramSpeedRampMotor1(3000 / 6, 1000);  
    3 t1 Q. _  a0 @6 o
  4.         MC_AcknowledgeFaultMotor1();3 D3 ^! A$ \2 b- E- C# T
  5.         MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);
    3 E! y% L, |; Q$ f
  6.         HAL_Delay(10000);
    & p% l$ r6 [8 N4 ?5 X% A) [. B4 a4 u
  7.         " t% U( p* d7 u4 D) C
  8.         MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);. G' I: l0 ]; R1 X  h
  9.         MC_AcknowledgeFaultMotor1();  j% U2 \8 T/ w. G/ p, o$ x
  10.         MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);' h+ a! L$ S/ Z) u' p
  11.         HAL_Delay(10000);
复制代码
这样就可以消除错误,电机也会正反转,不过没有最开始的代码处理的快,毕竟stop motor直接让motor回到了idle状态。测试过程中还发现,如果延时时间太短,例如把两个10000都改为5000,则电机也会一直朝着一个方向转动,估计是留给错误恢复的时间不够?或者是我对SDK的理解不够深入吧
* F. ?; b- W* e  s$ F
收藏 1 评论0 发布时间:2018-9-6 18:54

举报

0个回答

所属标签

相似分享

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