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에 문제가 있다.
'전자 > 제어' 카테고리의 다른 글
스텝 응답 특성 (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 |
댓글