13주차 · P와 PI의 Steady-State Error 비교하기

실습 전에

01 계속 남는 오차

목표보다 조금 낮은 값에서 더 이상 가까워지지 않습니다. 이 차이가 계속 남는다는 사실을 조작에 활용할 수 있을까요?

설명
  • 시간에 따라 누적된 Error
  • PI는 현재 Error와 누적 Error를 활용. 효과 판단의 전제는 Closed-loop 안정성

02 움직이는 목표 따라가기

정해진 속도를 유지하는 것과 계속 높아지는 목표 속도를 따라가는 것은 같은 문제일까요? 제어 방법을 비교할 때 무엇이 달라질까요?

설명
  • Step과 Ramp는 서로 다른 추종 문제
  • 목표 신호와 System Type을 함께 고려하여 Steady-State Error 판단

실습

1. Steady-State Error 계산

  • 실습용 Live Script의 ‘3. P와 PI의 Step 추종’ 코드에서 CPI(s)=10+5sC_{\mathrm{PI}}(s)=10+\frac5s와 G(s)=10.5s+1G(s)=\frac1{0.5s+1}를 사용하세요.
  • 실행 전에 L(s)=CPI(s)G(s)L(s)=C_{\mathrm{PI}}(s)G(s)와 1+L=01+L=0에서 얻는 특성다항식을 손으로 쓰세요.
  • 2차 다항식의 세 계수가 양수이면 두 Pole의 실수부가 음수라는 기준으로 안정성을 확인하세요.

여기서 Kp=lim⁡s→0L(s)K_p=\lim_{s\to0}L(s)는 Position Error Constant입니다. 뒤의 Controller 식에서 KpK_p로 표시한 비례 Gain과 구분해 계산하세요.

  • L의 원점 Pole 수로 System Type을 정하고 Kp=lim⁡s→0L(s)K_p=\lim_{s\to0}L(s), Kv=lim⁡s→0sL(s)K_v=\lim_{s\to0}sL(s)를 구하세요.
  • 안정성을 확인한 뒤 Unit Step 오차 11+Kp\frac1{1+K_p}와 Unit Ramp 오차 1Kv\frac1{K_v}를 계산하고 실행 결과와 비교하세요.
  • 이 계산을 KiK_i=5의 기준 기록으로 사용합니다.

2. Pole 위치 비교

실습용 Live Script의 ‘2. Pole 위치 비교’ 코드의 모델은 T1=tf(10,[1 2 10]), T2=tf(100,[1 10 100])입니다.

  1. 각 분모를 s2+2ζωns+ωn2s^2+2\zeta\omega_n s+\omega_n^2에 대응시켜 ωn,ζ\omega_n,\zeta를 구하고 두 행으로 기록하세요.
  2. T1의 ζ\zeta를 유지하고 ωn\omega_n만 T2의 값으로 바꾼 모델을 만드세요. 분자는 ωn2\omega_n^2로 두어 DC Gain을 유지합니다.
  3. 같은 시간축에서 T1과 새 모델의 Step Response를 겹쳐 그리고 stepinfo의 Rise Time·Settling Time·Overshoot를 표로 적으세요. 원래 T1·T2 비교와 달리 이번에 고정한 계수가 무엇인지 적으세요.

3. P와 PI의 Step 추종

  1. 기준 Plant G=1/(0.5*s+1)는 유지하고 P Gain Kp=20K_p=20의 Closed-loop를 만드세요. 이론적인 Unit Step 오차 1/(1+Kp)1/(1+K_p)와 1-dcgain(Tp)를 나란히 기록하세요.
  2. PI의 Kp=10K_p=10은 유지하고 Ki∈{2,5,10}K_i\in\{2,5,10\}을 각각 적용하세요. 같은 시간축에 Unit Step 곡선 세 개를 그리고 범례에 KiK_i를 적으세요.
  3. KiK_i별로 1-dcgain(Tpi), stepinfo(Tpi)의 Settling Time·Overshoot를 기록하세요. 최종 오차와 Transient Response 지표를 나누어 대조합니다.

4. Ramp 추종

  1. 실습용 Live Script의 ‘4. Ramp 추종’ 코드의 Loop L(s)=(10+10/s)G(s)L(s)=(10+10/s)G(s)를 만들고, 분모의 원점 Pole 수로 System Type을 정하세요. G(s)G(s)는 앞 활동과 같습니다.
  2. Kv=lim⁡s→0sL(s)K_v=\lim_{s\to0}sL(s)를 구하고 Unit Ramp 오차 1/Kv1/K_v를 계산하세요.
  3. 같은 시간축과 Ramp 입력을 유지하고, 이 활동에 주어진 적분 Gain 10을 사용하도록 코드의 적분 Gain 5를 바꾸어 PI 모델을 다시 만드세요. 이어서 lsim으로 출력 yy를 구하세요. 마지막 표본의 r−yr-y와 계산한 1/Kv1/K_v를 나란히 적고 두 값의 절대 차이를 기록하세요.

제출·저장

코드, 실제 Output·그래프, 직접 작성한 해석을 포함하세요. 제출은 KLAS를 이용하며 기한은 학기 일정과 최신 공지를 확인합니다.

파일명: 이름_학번_13주차.mlx.

실행 환경을 다시 시작하고 전체 코드를 위에서부터 실행한 뒤 저장하세요.

선택 실습

예: PI Controller에서 적분 항을 상수로 쓴 경우

  1. 실습용 Live Script의 ‘3. P와 PI의 Step 추종’ 코드 복사본에서 PI=10+5/s를 PI=10+5로 바꾸고, feedback(PI*G,1)를 다시 만드세요.
  2. 변경 전후의 1-dcgain(Tpi)를 기록하고, 원점 Pole이 있는지 대조하세요. Controller 정의 줄만 10+5/s로 바꾸세요.