PID 제어란
PID 제어(PID Control)는 비례(Proportional), 적분(Integral), 미분(Derivative) 세 가지 항을 이용해 시스템의 오차를 보정하는 가장 기본적이면서도 널리 쓰이는 피드백 제어 방식임
P (비례 제어)
현재 오차(error) 크기에 비례하여 제어 입력을 발생시킵니다. 오차가 크면 큰 조치를 취해 빠르게 응답하도록 하며, 응답 속도를 높이고 초기 오차를 급속히 줄이는 역할을 함
장점: 구현이 간단하고 즉각적인 반응을 제공함
단점: 이 항만으로는 steady-state error(잔류 편차) 를 완전히 제거하지 못해 목표값에 정확히 도달하지 못할 수 있고, 비례 이득 K_p를 너무 크게 하면 시스템에 진동이나 오버슈트(overshoot)를 유발할 수 있음
I (적분 제어)
과거의 오차 누적에 반응하여 작은 오차도 시간이 지나면 점점 제어 입력을 키워 줌
이로써 P제어만으로 남는 영구 편차(steady-state error)를 제거해 정확도를 높이는 역할을 함
장점: 오차가 장기적으로 0이 되도록 해 정밀 제어가 가능함
단점: 적분 작용으로 인해 응답 속도가 느려지고 오버슈트가 커질 수 있으며, 큰 오차가 오래 지속되면 적분 항이 누적되어 과도한 출력을 내는 적분 풍초(wind-up) 문제가 생길 수 있음
D (미분 제어)
오차의 변화율(미래 변화 예측)에 반응하여 제어 입력을 가합니다. 오차가 급변하면 이를 빠르게 감지해 예견 동작을 함으로써 시스템 감쇠(damping) 역할을 함
장점: 시스템의 과도 진동이나 오버슈트를 억제하고 안정화를 도와줌
특히 변화가 급격한 시스템(예: 드론, 로켓 등)에서 유용하며 노이즈에 대한 민감도를 줄여줌
단점: 고속 미분 연산 특성상 측정 신호의 잡음을 증폭시키는 경향이 있어 노이즈가 많은 환경에서는 제어 입력이 불안정해질 수 있음
반응이 너무 강하면 시스템에 고주파 진동을 유발할 수 있어, D 이득 K_d설정에 주의가 필요함
PID SIMULINK
1. matlab에 들어가 simulink를 검색

2. simulink에 들어가면 빈모델을 들어감

3. 해당 부분에서 source 추가 sinkㄴ 출력 신호 수학연산 등의 기능이 가능하게됨


4. Simulink의 가장 기본적인 1차 시스템(step 응답) 시뮬레이션


5. Simulink의 Transfer Fcn 블록에 전달함수를 도입하는 과정

전달함수는 해당 예제로 가지고 온것
5-1. Simulink의 Transfer Fcn 블록에 전달함수를 도입하는 과정

6. Simulink의 Step 블록 설정 창


7. 실행 누르고 오실로스코프에 부분을 클릭

8. 전달함수의 단위 계단응답으로 파형의 특징으로 볼 때 시스템은 감쇠가 부족한 고차 시스템으로 판단

9. 이 창은 Simulink의 Sum 블록 속성 설정 창


10. Simulink 결과는 폐루프(Feedback) 시스템을 구성해 진행된 결과

11. 비례 제어기(Proportional Controller, 𝐾𝑝) 를 추가한 단순 폐루프 제어 시스템

12. Simulink의 Gain 블록(Kp) 설정 창

y(t)=Kp×u(t)
해당 것 처럼 입력 오차를 Kp배 한 값으로 출력 제어 입력으로 전달됨
폐루프 전달 함수 : T(s)=KpG(s) / 1+KpG(s)
13. 비례제어 폐루프 시스템의 Step 응답 결과

-
응답 형태는 감쇠진동(Underdamped response) 이며 진동이 빠르게 줄고 1 근처로 수렴함
-
정상상태 오차 거의 없음 (steady-state error ≈ 0)
-
약한 오버슈트(1.02 근처) 존재 → 빠른 응답 속도 확보.
14. PID Controller 블록을 새로 추가하려는 중간 상태


16. 기존의 비례 제어기 (Kp) 구조에 적분기(Integrator, 1/s) 를 추가하려는 단계

17. PI 제어기(Proportional + Integral) 피드백 제어 루프가 올바르게 연결된 상태(폐루프 상태)

18. PI 제어기 적용 이후의 응답

- 처음에 약한 오버슈트가 발생하여 순간적으로 과반응, 그 후 진동하면서 감쇠하고 6초 이후 1로 수렴
- PI제어기 전달함수 : C(s)=5 + 5 / s
- 페루프 전달함수 :

결론
- 비례제어(P): 빠르지만 잔여 오차 존재
- PI제어: 느리지만 완전한 수렴
- 현재 설정(Kp=5, Ki=5)은 이상적인 안정 수렴형 PI 제어기 응답
19. PID 제어기 (Proportional + Integral + Derivative) 구조가 완성된 상태


- 2초 까지 오버슈트 10프로 미만, 2~5초로 감쇠 진동 후 안정화 그후 정상태로 1로 수렴
하지만
“Solver was unable to reduce the step size…” 경고는 시스템 강성(stiffness) 또는 미분 항의 급격한 변화 때문
-> Derivative 블록의 low-pass 필터 옵션을 사용해 노이즈 완화사용
20. 비정상적으로 10¹³ 수준으로 발산(diverge) 하고 있음을 보여줌

21. Saturation 블록은 PID 제어기의 출력(특히 미분항 포함 시) 폭주를 제한하기 위한 안정화 장치 역할 수행

Saturation 블록 설정 설명
- 상한 = 2
- 하한 = -2로제어 신호로 V(t)를 -2 ~ +2 사이로 강제 제한

해당 식에서

이런식의 결과가 나오게 함
22. Saturation 블록 적용 후 PID 제어기의 응답 안정화가 성공한 상태


- saturation을 도입 전에는 미분항 폭주로 수치적으로 불완전 하다는 것을 확인
- 도입 후에는 제어 입력이 제한되어 수치적 안정성 확보하게 됨
23. 해당 거는 오랫동안 포화상태를 유지하는것을 확인할수 있었고 이것으로 인해 포화상태를 너무 오랫동안 하면 그렇게 하면 안됨

24. PID 제어기 사용(아직 내부적으로 변경 안함)

25. PID 제어기 파라미터

26. PID 제어기가 두 개의 플랜트를 제어하는 병렬 구조

- 해당 결과값에서 응답은 유사하지만 미세한 차이가 있다는 것을 확인 할수 있었음
- 이는 아직 Saturation 블록 즉 출력 제한을 안걸어 놓아 이런 오차가 발생함
27. Simulink PID Controller 블록의 출력 제한

27. 그 이후 결과값
