本帖最后由 stm1024 于 2018-9-7 08:12 编辑
5 \% B4 c9 J6 u4 ~: ]( o6 a: c8 R3 Q6 v$ Z7 j4 K4 V+ l' k
这次测试相当于是培训中的试验4“基于MC SDK5.0 状态的切换 ”; r& \5 k' W+ \* a+ l# ?% c/ E
让电机正反转,常规的做法是:9 h! a9 |' b; C0 S
- MC_ProgramSpeedRampMotor1(3000 / 6, 1000);
4 r, _9 k7 u$ z% I9 | - MC_StartMotor1();
; k1 E% l1 C+ A8 B! @ - HAL_Delay(10000);
; W/ D/ b1 t; n, F - MC_StopMotor1();
/ f/ @5 S) |" E- `& P2 j# B; C9 l - HAL_Delay(5000); # M# a1 o; N) D; {
-
8 e6 e' K. E& ~- H: W - MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);! [$ ~* P9 u: `, k3 x- x# t& I/ t% L1 v
- MC_StartMotor1();) o/ H( O1 }; ]) N
- HAL_Delay(10000);, o4 q1 h6 b% ~9 k+ {+ `
- MC_StopMotor1();
4 b; h A9 Q6 x ^ y. X7 r - HAL_Delay(5000);
复制代码 这段代码可以保证电机正转10秒后停5秒,然后反转10秒后停5秒,如此反复,而且不会出现故障。
0 z* a W. ^# {% |
8 e! d4 H5 C* X; q不过试验中的要求是,速度反转3000后立即切换为正转3000,通过前面的介绍可以知道,在速度接近0的时候,会产生speed feedback的故障报警。4 t+ u% h2 q' k- s) Q9 r* h i
这也简单:
+ Q8 l" x0 F7 t- MC_StartMotor1();( F7 f. e& q, {
- MC_ProgramSpeedRampMotor1(3000 / 6, 1000);
7 I' Q6 _5 k [: }6 J- ~4 M7 c - HAL_Delay(10000);
4 S5 ^( {& p8 F% u q- {& Q - MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);- {1 Z7 Q( R, D; P4 B
- HAL_Delay(10000);
复制代码 运行的效果是:
0 i+ j# E/ M& O" }" K! O5 d6 H& _/ t. U, [
可见在运转过程中是会出现speed feedback错误的。 接下来是如何消除错误。 - MC_StartMotor1();1 ^ i" ~% i6 s( ?- Y" ^
- 1 G7 S2 Z* j* N$ b+ F
- MC_ProgramSpeedRampMotor1(3000 / 6, 1000);
, m$ k1 j" y( b7 U( x! R8 T - MC_AcknowledgeFaultMotor1();8 [) P; n/ a- C8 ~* S4 c
- MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);
1 j+ ?9 W+ s9 f) R' i x3 V3 [* g - HAL_Delay(10000);6 q. m4 w0 J% l7 o" L9 R R
-
: c0 w7 k# `! L$ V% J - MC_ProgramSpeedRampMotor1(-3000 / 6, 1000);: \) J# n% K/ R% c0 E8 M6 Z
- MC_AcknowledgeFaultMotor1();
9 e7 j2 P: \$ P0 g# M# }3 O& {. W - MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);
+ D* U7 A& \( X$ _! \7 A F: O) I - HAL_Delay(10000);
复制代码 这样就可以消除错误,电机也会正反转,不过没有最开始的代码处理的快,毕竟stop motor直接让motor回到了idle状态。测试过程中还发现,如果延时时间太短,例如把两个10000都改为5000,则电机也会一直朝着一个方向转动,估计是留给错误恢复的时间不够?或者是我对SDK的理解不够深入吧
; B4 Y6 |. p* \8 q4 J2 e" @7 ?+ \ |