本帖最后由 stm1024 于 2018-9-7 08:12 编辑 . _8 K* l: b% o* Y
V7 z; s, [& ]" R
这次测试相当于是培训中的试验4“基于MC SDK5.0 状态的切换 ”+ D0 {% o: Y- d2 [ _0 D/ Q$ F, a7 _
让电机正反转,常规的做法是:. K" T5 m4 Y% f
- MC_ProgramSpeedRampMotor1(3000 / 6, 1000);
( t9 A( V6 y3 v/ Y7 {- { - MC_StartMotor1();+ u+ B; ]6 C; W0 m& N
- HAL_Delay(10000);3 ]2 u4 f) X( d5 X4 V, ]" z9 K1 ]0 S: v- p
- MC_StopMotor1();
; H$ i$ E% o0 ]5 X! Q! g2 s ? - HAL_Delay(5000); # K1 u3 V/ l& }& C$ o0 t
-
3 [$ [( d1 ~9 { - MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);- O% H& m1 \# y9 ~
- MC_StartMotor1();
6 B9 ^) g! g( l' w# R - HAL_Delay(10000);. v* ` e% E# q! G8 r% a2 o
- MC_StopMotor1();
! c& m, S \9 k, l - HAL_Delay(5000);
复制代码 这段代码可以保证电机正转10秒后停5秒,然后反转10秒后停5秒,如此反复,而且不会出现故障。" e# _2 W. m5 Y5 J
, D7 |* u6 Y% g: U( ?' ]2 }3 P" H
不过试验中的要求是,速度反转3000后立即切换为正转3000,通过前面的介绍可以知道,在速度接近0的时候,会产生speed feedback的故障报警。
1 Y- A# H7 h2 H' `+ [" b3 K这也简单:
7 y( u$ C# S+ x/ L- Z- MC_StartMotor1();- L7 E. D; }+ J
- MC_ProgramSpeedRampMotor1(3000 / 6, 1000);
# R6 H( o: V' B& t U" H9 d) B" A2 O - HAL_Delay(10000);% x2 _( M5 W r+ p6 r# h7 ~
- MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);
0 D. l& D, f/ m. }+ e8 g - HAL_Delay(10000);
复制代码 运行的效果是:$ Q2 z4 P$ L/ B; ]2 \; ?
' `; ?& Z e+ j! }5 T% x& e: c
可见在运转过程中是会出现speed feedback错误的。 接下来是如何消除错误。 - MC_StartMotor1();
9 z' ]+ [/ ~& u8 K- j+ Q -
; e4 n/ y3 t" _: V' w$ a4 V - MC_ProgramSpeedRampMotor1(3000 / 6, 1000);
0 |( J. p+ d( ?$ N - MC_AcknowledgeFaultMotor1();
+ M2 G* W0 M( K8 o4 a4 d+ u - MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);
) G2 n! b2 T/ ^9 v1 X I# | - HAL_Delay(10000);
: |& y- W; Y, n* {" W6 t - }, j6 {, P; X. g; S
- MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);
0 E* a6 e9 r' T5 O8 T, ? - MC_AcknowledgeFaultMotor1();0 Y" K& \! f. w: G. o% n) S4 b( p% D) x
- MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);' s* W+ x. K$ S9 G7 s: c o2 U* ~& R
- HAL_Delay(10000);
复制代码 这样就可以消除错误,电机也会正反转,不过没有最开始的代码处理的快,毕竟stop motor直接让motor回到了idle状态。测试过程中还发现,如果延时时间太短,例如把两个10000都改为5000,则电机也会一直朝着一个方向转动,估计是留给错误恢复的时间不够?或者是我对SDK的理解不够深入吧
% a* K8 w. v$ g |