本帖最后由 freeelectron 于 2018-9-2 17:07 编辑 ! j0 c( L0 ?3 G/ L% q* S# I
5 y5 F* c! g2 H# Q0 j 通过任务2:主要学习,取得MCT句柄,如何找到相关操作函数,调用控制函数以及参数设定。
& y3 u$ d4 E* R" V8 G 代码添加: 主函数,添加头文件:
, ]4 B. Z$ I! ?% [. f3 x- /* USER CODE BEGIN Includes */
3 I, X- [ u2 b+ p6 C+ j9 |+ y - #include "mc_tuning.h"
( e9 p T8 o! m( y, L - #include "mc_tasks.h"
- \% g. k6 i" j! D+ L6 P - ( u2 X7 q5 r6 ?2 _5 t) A
- /* USER CODE END Includes */
复制代码 定义变量: - /* USER CODE BEGIN 1 */$ U& A, p8 Q6 T; S H2 v+ a
- static int16_t Speed_Kp,Speed_Ki;
- J' E7 E; |# o8 x5 c0 [ - MCT_Handle_t* pMctHdl;
- U; J7 _" o, s6 C* c# c: `# K - /* USER CODE END 1 */
复制代码 控制程序添加:- while (1)
3 b7 ]% r- \( }' t: M& e5 O# O- L( g - {0 ?8 F; i- o, Q. k; F5 H/ R
* L1 ~' Y% |; K$ w8 X- /* USER CODE END WHILE */! n# C* f; R5 C2 ~
7 o9 e1 ~6 ~$ j2 @4 L) P! p- /* USER CODE BEGIN 3 */
3 G& ?' E0 G: L! e2 | H - MC_ProgramSpeedRampMotor1(3000/6,1000);+ r# W$ B6 c6 h6 y% j% e/ w, M
- MC_StartMotor1();% a. ], N% Q! c2 [: c ]! ~
- HAL_Delay(10000);
6 p- e0 F6 V2 z! C5 N' O - MC_StopMotor1();5 \" e1 r& @7 ^" F3 Z3 z, j: @: _1 [. |
- HAL_Delay(3000);
6 [6 v3 @1 D" u; z$ y. G - 3 y4 z/ M/ c3 o% ?7 G) R
- pMctHdl = GetMCT(M1);
1 O+ B- a$ d# k, W2 W - Speed_Kp = PID_GetKP(pMctHdl->pPIDSpeed);9 f+ [% n& a9 P$ t/ \8 E9 Y
- Speed_Ki = PID_GetKI(pMctHdl->pPIDSpeed);
3 }' ^) ^- z# v) p% G* z* ]+ b9 ^ - PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*2);' y7 G5 ^) O) F! E& F/ H! O
- PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*2);% g+ E6 \+ G; c* J
- 0 r1 ?7 T6 I5 f$ Z
- MC_ProgramSpeedRampMotor1(3000/6,1000);& w4 [ N; F0 y4 ^! W/ p7 N
- MC_StartMotor1();
, v3 R1 H* C3 [: u0 V - HAL_Delay(10000); N/ V, {% l$ p/ L/ k5 d2 b
- MC_StopMotor1();
, K) G- m2 N7 X6 y5 c8 l - HAL_Delay(3000);0 j% _. ?6 I- |# F7 V" n) d
- PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp/2);
I! L( [7 I5 @ - PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki/2);2 g7 N5 `) z" t- L
- MC_ProgramSpeedRampMotor1(3000/6,1000);
( K9 l0 x6 ^& ~- T - MC_StartMotor1();
% d _2 Q+ a, S9 @- `/ h+ W - HAL_Delay(10000);
3 H* @& \0 I4 B9 j - MC_StopMotor1();$ s- a4 M6 a) M: L4 s2 G9 R
- HAL_Delay(3000);
. I- d1 `' _$ f& T' w8 u - }
2 J. O6 {3 y6 i' X* i" @! F) u - /* USER CODE END 3 */% ]5 d$ Z! a0 J. D# R
- # q: h. `4 B8 h. Y: ^3 a$ `
- }
复制代码 在mc_tasks.h里面声明:- MCT_Handle_t* GetMCT(uint8_t bMotor);
复制代码 , W, p+ c& a* ~4 p
速度波形查看:
3 x0 k' }( S v+ J/ c4 q
; Z# Q( T& o4 f( ?4 ]. {
. H0 i6 b* A2 u2 N- Q* c
5 O5 H5 D5 x: T8 b
|