本帖最后由 freeelectron 于 2018-9-2 17:07 编辑 2 [6 i' [% `8 A# s8 n' h7 v
2 u6 m! [! o! E6 L3 F6 k 通过任务2:主要学习,取得MCT句柄,如何找到相关操作函数,调用控制函数以及参数设定。
7 \3 _: Y3 }% i7 L/ Q, J
代码添加: 主函数,添加头文件:
N( Z8 Z! ~* R/ ^/ b( s- /* USER CODE BEGIN Includes */( d$ }& ?! T2 y+ I
- #include "mc_tuning.h"- N, W, H2 K% v# w F9 M( }3 g; E
- #include "mc_tasks.h"
0 A" Z1 Q! \9 x M5 Z ?& f! s8 t: t
; X% m) z& i# T) b2 p- /* USER CODE END Includes */
复制代码 定义变量: - /* USER CODE BEGIN 1 */. m5 U, d- e6 _
- static int16_t Speed_Kp,Speed_Ki;
" f) d2 E- u& ~5 Z9 o3 g - MCT_Handle_t* pMctHdl;
+ R: T+ U; B& ~) u6 ~' P - /* USER CODE END 1 */
复制代码 控制程序添加:- while (1)
` ^2 V% \9 s$ A: M - {3 d7 G. X/ i0 |( B7 E
- / Z% Z3 m5 F9 x7 e
- /* USER CODE END WHILE */: n* Y6 e8 G* O, u4 j$ W6 Z9 n
- 8 U; Z' X" f. P4 h+ K1 i
- /* USER CODE BEGIN 3 */* U9 S9 L$ }' k9 M2 z
- MC_ProgramSpeedRampMotor1(3000/6,1000);0 r3 r) t% Y* m4 E$ ~7 U& C4 ?
- MC_StartMotor1();# S+ j" U v: q: ^+ x! C
- HAL_Delay(10000);
~2 O* Q. e9 H4 ^: X$ B* B - MC_StopMotor1();0 N6 j% P$ I) y; u( P/ o
- HAL_Delay(3000);
1 e% M7 o1 I3 F* e. U4 Q% w - % l' |6 d8 S) U. o
- pMctHdl = GetMCT(M1);
, Z8 E+ I5 p' L( | - Speed_Kp = PID_GetKP(pMctHdl->pPIDSpeed);2 s; }& S: N6 p# i3 _
- Speed_Ki = PID_GetKI(pMctHdl->pPIDSpeed);' p% z0 q! v/ t: s. d( ~. [
- PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*2);
y2 N0 T4 w6 Z" d5 J3 x1 p - PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*2);7 K. ^# [+ a& u: r
- ' {: R7 H. n3 f: N, O5 y$ e- w
- MC_ProgramSpeedRampMotor1(3000/6,1000);0 g" p R# e5 g' a
- MC_StartMotor1();
' N9 P9 e3 ?, R$ S, O" C - HAL_Delay(10000);
Y F3 t1 X; m - MC_StopMotor1();+ Z/ I7 C$ u# o! U# s# @
- HAL_Delay(3000);
: Y% J6 b/ P1 ]' \# w3 x& q1 p - PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp/2);2 Q; b" {0 P# Y9 l- u9 y
- PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki/2);
, j% r# O- K! s1 \, y2 c - MC_ProgramSpeedRampMotor1(3000/6,1000);: g2 f* O9 b6 k5 p/ Q8 b% _
- MC_StartMotor1();
& r! A, y0 N3 r: B - HAL_Delay(10000);
/ @ V9 G5 u& d. l - MC_StopMotor1();
/ F$ s2 W- k8 d - HAL_Delay(3000);
7 U* h. `0 e9 ? - }8 Z! H3 S1 u2 j. k' c% X, e0 d1 a0 j' S
- /* USER CODE END 3 */$ A- g M2 K! q& n4 J
- 4 {7 Z* }5 V* @( Q
- }
复制代码 在mc_tasks.h里面声明:- MCT_Handle_t* GetMCT(uint8_t bMotor);
复制代码 ( `( A# u5 ]: s Z. h3 y
速度波形查看:5 m, e3 {+ h% y. b8 Y. {1 p
4 {+ t, T$ s4 V" ~2 W4 j
" Q* ^3 b/ c8 e) x9 F/ C, O# d) a3 n& `4 l" f
|