Stability와 Performance Index 비교

제어공학1 · 14주차

이번 주 목표 · Pole·Steady-State Error·유한 구간 성능지수를 구분합니다.

실행: MathWorks 로그인 후 내 작업 공간의 .mlx를 엽니다. 코드 안 클릭 → Live Editor → Run Section으로 한 Section씩 실행하세요. Run은 전체 실행입니다. 값 수정 후에는 관련 Section을 다시 실행해야 합니다. ⟦직접 입력⟧ 작성란은 설명을 직접 수정하며 실행하지 않습니다. Windows/Linux는 Ctrl+Enter, Mac은 ⌘+Enter를 사용할 수 있습니다.

1. 먼저 응답이 안정한지 확인

BIBO Stability는 크기가 제한된 입력에 출력의 크기도 제한되는 성질입니다. 이 실습의 연속시간 Proper Transfer Function에서는 상쇄 후 모든 Pole의 실수부가 음수인지 확인합니다. 내부 안정성은 숨은 불안정 모드까지 고려하는 더 강한 조건입니다.

먼저 응답이 안정한지 확인

Routh 표의 첫 열 부호 변화는 우반평면 근 개수를 알려줍니다. 첫 원소가 0이거나 행 전체가 0인 특수 경우는 별도 처리가 필요하며 무조건 안정으로 표시하면 안 됩니다.

2. 비단위 Feedback에서 오차 정의

T=GcG1+GcGHT=\frac{G_cG}{1+G_cGH}는 목표값 r에서 실제 출력 y까지의 관계입니다. Tracking Error r−yr-y는 목표값에서 실제 출력을 뺀 값입니다. 센서를 거친 측정값 Hy를 목표값에서 빼면 r−Hyr-Hy이며, Controller는 이 값을 받습니다. 센서가 신호의 크기나 시간에 따른 변화를 바꾸면 두 오차가 다를 수 있습니다. 이번 실습에서는 실제 출력이 목표에 가까운지 보려고 r−yr-y를 사용합니다.

비단위 Feedback에서 오차 정의

K=4,G=1/(s+2),H=2/(s+4)를 사용합니다. 1−dcgain(T)와 1−H(0)dcgain(T)를 따로 계산해 차이를 확인하세요.

3. 같은 시간 구간에서 Performance Index 비교

오차가 얼마나 오래, 얼마나 크게 남는지를 하나의 수치로 비교합니다. ISE=∫e(t)2dt\mathrm{ISE}=\int e(t)^2\,dt는 큰 오차에 더 큰 비중을 주고, IAE=∫|e(t)|dt\mathrm{IAE}=\int|e(t)|\,dt는 오차 크기를 그대로 더합니다. ITAE=∫t|e(t)|dt\mathrm{ITAE}=\int t|e(t)|\,dt는 같은 크기의 오차라도 늦게 남아 있으면 더 크게 반영합니다. KpK_p=1,2,4 비교에서는 모든 모델에 같은 0~20초, 같은 시간 간격을 사용하고 trapz로 적분합니다.

같은 시간 구간에서 지수 비교

Steady-State Error가 0이 아니면 무한 시간 ISE는 발산할 수 있습니다. 여기서 구하는 값은 0~20초 동안 쌓인 오차만을 반영합니다. 자동으로 선택된 서로 다른 시간축을 비교하면 공정하지 않습니다.

4. 최적화와 저차 근사의 조건

ISE(K3)=1K3+0.1K3\mathrm{ISE}(K_3)=\frac1{K_3}+0.1K_3는 K3>0에서 비교합니다. 미분으로 구한 후보와 격자 탐색을 대조하세요. GH=11+11s/6+s2+s3/6G_H=\frac1{1+11s/6+s^2+s^3/6}과 GL=11+1.615s+0.624s2G_L=\frac1{1+1.615s+0.624s^2}의 step 응답도 비교합니다.

최적화와 저차 근사의 조건

최적화는 선택한 지수와 허용 범위에서의 최적입니다. 저차 근사는 모든 입력과 주파수에서 원 모델과 같다는 뜻이 아니므로 최대 오차와 최종값을 함께 확인합니다.

학습 내용 확인

  1. 코드에 넣을 값은 무엇이며, 결과 배열의 각 행·열은 무엇을 뜻하나요? 물리량을 계산한다면 단위도 확인했나요?
  2. 조건을 하나 바꿨을 때 다시 실행해야 하는 부분을 찾을 수 있나요?
  3. 실행 결과가 예상과 맞나요? 다르다면 출력값이나 그래프를 보고 이유를 설명할 수 있나요?

MATLAB 공식 문서 · Control System Toolbox

실습 자료