본문 바로가기
전자/제어

PID 제어기 코드 (TI)

by Begi 2023. 6. 5.
반응형

TI의 ControlSUITE 라이브러리에 정의된 PID 제어기 코드는 다음과 같다.

 

PID_MACRO(v) 매크로로 정의되어 있다.

 

/* proportional term */
v.data.up = _IQmpy(v.param.Kr, v.term.Ref) - v.term.Fbk;

/* integral term */ 
v.data.ui = _IQmpy(v.param.Ki, _IQmpy(v.data.w1, (v.term.Ref - v.term.Fbk))) + v.data.i1;
v.data.i1 = v.data.ui;

/* derivative term */ 
v.data.d2 = _IQmpy(v.param.Kd, _IQmpy(v.term.c1, (_IQmpy(v.term.Ref, v.param.Km) - v.term.Fbk))) - v.data.d2;
v.data.ud = v.data.d2 + v.data.d1;
v.data.d1 = _IQmpy(v.data.ud, v.term.c2);

/* control output */ 
v.data.v1 = _IQmpy(v.param.Kp, (v.data.up + v.data.ui + v.data.ud));
v.term.Out= _IQsat(v.data.v1, v.param.Umax, v.param.Umin);
v.data.w1 = (v.term.Out == v.data.v1) ? _IQ(1.0) : _IQ(0.0);

 

파일 위치는 다음과 같다.

C:\ti\controlSUITE\libs\app_libs\motor_control\math_blocks\v4.3\pid_grando.h

 

※ 위 코드는 Anti-Windup에 문제가 있다.

 

 Anti-windup 알고리즘

 

반응형

'전자 > 제어' 카테고리의 다른 글

스텝 응답 특성  (0) 2023.06.24
영상성분이 0일 때 알파베타 변환  (0) 2023.06.20
PI 제어기 코드 (TI)  (0) 2023.06.04
PI 제어기를 이용한 전류제한 기법  (0) 2023.06.03
장난감 소형 DC 모터 스펙  (0) 2023.05.14

댓글