本帖最后由 freeelectron 于 2018-9-2 17:07 编辑
/ d! c7 L4 G1 N6 ?& x: R3 M4 C* ?* B
通过任务2:主要学习,取得MCT句柄,如何找到相关操作函数,调用控制函数以及参数设定。
+ L9 u2 _) z. R. A" O# o4 v 代码添加: 主函数,添加头文件:) Q* J. l" d" l& e, r* k
- /* USER CODE BEGIN Includes */2 c: U0 _3 }$ k+ B; F
- #include "mc_tuning.h", p" ^$ y2 R4 v+ B$ _* ]
- #include "mc_tasks.h"
' ]4 I7 X6 V$ g% j% r - ) ~) g6 \% U7 q
- /* USER CODE END Includes */
复制代码 定义变量: - /* USER CODE BEGIN 1 */! |- q) ] h- c. G
- static int16_t Speed_Kp,Speed_Ki;, y% h: ~! t0 j) ^4 Y& T
- MCT_Handle_t* pMctHdl;
* z" s2 P) }6 i/ U - /* USER CODE END 1 */
复制代码 控制程序添加:- while (1)
2 g# I% V+ u* Z- c3 i; t' U - {
: P* ~ F4 b; u7 N# D
3 T# t' J7 v7 o7 i( g- /* USER CODE END WHILE */
0 t# F. J4 N- N7 {- }# O
4 U. h4 K, t7 L, |- /* USER CODE BEGIN 3 */7 Y5 `. k0 S9 D8 X) |* r! l
- MC_ProgramSpeedRampMotor1(3000/6,1000);
3 S6 z8 B; a# x2 P - MC_StartMotor1();
/ j( e& {3 }& M! \ - HAL_Delay(10000);- [; [; n5 J C K( O
- MC_StopMotor1();; T* D" l7 n2 A. Q5 P
- HAL_Delay(3000);
& a& R3 f' K& `6 N -
; L5 t5 |! |8 \9 u - pMctHdl = GetMCT(M1);3 l& L# k3 T# B' N
- Speed_Kp = PID_GetKP(pMctHdl->pPIDSpeed);$ ~3 X; k R- @+ s2 T6 J& o/ q3 X6 y2 R
- Speed_Ki = PID_GetKI(pMctHdl->pPIDSpeed);4 w2 E& G% k% _1 ?$ M% t/ u
- PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*2);
v/ X8 K* v3 L7 F/ @ @ - PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*2);
, U' N& }: i7 k0 ?7 ]7 h - ) R E7 A: k3 W& Q' v7 `2 ~
- MC_ProgramSpeedRampMotor1(3000/6,1000);
1 U S1 K- w: M* r9 z$ a - MC_StartMotor1();
' V; C+ t9 R8 i, V* P3 |9 | | - HAL_Delay(10000);
+ o: A+ T8 u% k. | - MC_StopMotor1();
# G% Z1 @1 b/ Y/ S# k, y - HAL_Delay(3000);5 c7 W6 H$ e4 G+ W. R) E8 Y b
- PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp/2);; m$ j }8 R" n# C) h
- PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki/2);
/ P3 E E j# r# e - MC_ProgramSpeedRampMotor1(3000/6,1000);6 i2 k+ o& ^4 _1 b, O) R- x/ e4 f
- MC_StartMotor1();
" j8 G9 I8 q, i$ v5 H - HAL_Delay(10000);
! j( V" k8 e, H4 Q- ~# n - MC_StopMotor1();% }2 E0 q! }( p6 F% V l" ^/ ^
- HAL_Delay(3000);
- y( { h9 M4 ^/ q: d - }1 I, A1 b. H* h: t% N
- /* USER CODE END 3 */
5 y* U: @3 K7 @* m9 R - 5 x* i4 C* F1 y& G
- }
复制代码 在mc_tasks.h里面声明:- MCT_Handle_t* GetMCT(uint8_t bMotor);
复制代码 ; X' ~8 o; ^1 ^/ _1 K. }( H0 l
速度波形查看:3 z f2 R* O9 _0 b: z
5 H! G+ y3 M" b/ ^, S( @" a1 ]
8 A# U, g( l% ?( D+ O
0 Z) C2 X- K! i& w1 N P4 u# j) W
|