Main Content

이득 여유 및 위상 여유 평가하기

이 예제에서는 안정성 여유가 제어 시스템의 폐루프 응답 특성에 미치는 영향을 검토하는 방법을 보여줍니다.

피드백 루프의 안정성

안정성은 일반적으로 모든 내부 신호가 유계 상태를 유지한다는 의미입니다. 이는 제어 손실 및 장비 손상을 방지하기 위한 제어 시스템의 표준 요구 사항입니다. 선형 피드백 시스템의 경우 안정성은 폐루프 전달 함수의 극점을 검토하여 평가할 수 있습니다. 예를 들어 다음과 같은 SISO 피드백 루프가 있다고 가정하겠습니다.

그림 1: SISO 피드백 루프

단위 루프 이득 k의 경우 다음을 사용하여 폐루프 전달 함수 T를 계산할 수 있습니다.

G = tf([.5 1.3],[1 1.2  1.6 0]);
T = feedback(G,1);

T의 극점을 구하기 위해 다음을 입력합니다.

pole(T)
ans =

  -0.2305 + 1.3062i
  -0.2305 - 1.3062i
  -0.7389 + 0.0000i

모든 극점에 음수 실수부가 있으므로 k=1에 대한 피드백 루프는 안정적입니다.

안정적이라면 얼마나 안정적일까요?

폐루프 극점을 확인하여 안정성 여부를 평가할 수 있습니다. 사실 안정성이 얼마나 강인한지 또는 취약한지를 알면 더 유용합니다. 안정성을 잃기 전까지 루프 이득을 얼마나 변경할 수 있는지가 이러한 강인성에 대한 하나의 지표입니다. 다음과 같이 근궤적 플롯을 사용하여 안정적인 루프의 k 값 범위를 추정할 수 있습니다.

rlocus(G)

궤적이 y축과 교차하는 지점을 클릭하면 이 피드백 루프가 다음 범위에서 안정적이라는 사실이 드러납니다.

$$ 0 < k < 2.7 $$

이 범위는 k=1일 때 안정성을 잃기 전까지 루프 이득이 270% 증가할 수 있음을 보여줍니다.

이득 여유와 위상 여유

루프 이득의 변경은 강인한 안정성의 한 가지 특성에 불과합니다. 일반적으로 플랜트 모델링이 불완전하다는 것은 이득과 위상이 둘다 정확히 알려지지 않았음을 의미합니다. 모델링 오류가 있으면 이득 교차 주파수(개루프 이득이 0dB인 주파수) 부근에서 가장 손상이 크므로 이 주파수에서 위상 변동이 얼마나 용인될 수 있는지도 중요합니다.

위상 여유는 이득 교차 주파수에서 안정성이 손실되려면 얼마만큼의 위상 변동이 필요한지 측정합니다. 이와 유사하게 이득 여유는 위상 교차 주파수에서 안정성이 손실되려면 어떤 상대적 이득 변동이 필요한지 측정합니다. 이들 두 개의 수치를 함께 사용하여 폐루프 안정성에 대한 "안전 여유"를 추정할 수 있습니다. 안정성 여유가 작을수록 안정성이 취약합니다.

다음과 같이 보드 플롯에 이득 여유와 위상 여유를 표시할 수 있습니다. 먼저 플롯을 만듭니다.

bode(G), grid

그런 다음, 플롯을 마우스 오른쪽 버튼으로 클릭하고 특성 -> 최소 안정성 여유 하위 메뉴를 선택합니다. 마지막으로, 파란색 점 마커를 클릭합니다. 결과로 생성되는 플롯은 아래와 같습니다.

이 플롯은 약 9dB의 이득 여유와 약 45도의 위상 여유를 나타냅니다. 대응되는 폐루프 계단 응답은 약 20% 오버슈트와 약간의 진동을 보입니다.

step(T), title('Closed-loop response for k=1')

이득을 k=2로 증가시키면 안정성 여유가 다음과 같이 감소하고

[Gm,Pm] = margin(2*G);
GmdB = 20*log10(Gm)   % gain margin in dB
Pm  % phase margin in degrees
GmdB =

    2.7435


Pm =

    8.6328

폐루프 응답에는 불량 감쇠된 진동이 포함되어 거의 불안정함을 나타냅니다.

step(feedback(2*G,1)), title('Closed-loop response for k=2')

여러 개의 이득 또는 위상 교차가 있는 시스템

일부 시스템에는 여러 개의 이득 교차 주파수 또는 위상 교차 주파수가 있으며, 이 경우 이득 또는 위상 여유 값이 여러 개가 됩니다. 예를 들어 다음과 같은 피드백 루프가 있다고 가정하겠습니다.

그림 2: 여러 개의 위상 교차가 있는 피드백 루프

k=1에 대한 폐루프 응답은 안정적입니다.

G = tf(20,[1 7]) * tf([1 3.2 7.2],[1 -1.2 0.8]) * tf([1 -8 400],[1 33 700]);
T = feedback(G,1);
step(T), title('Closed-loop response for k=1')

이 루프의 안정성이 얼마나 강인한지 평가하기 위해 보드 응답을 플로팅합니다.

bode(G), grid

그런 다음, 플롯을 마우스 오른쪽 버튼으로 클릭하고 특성 -> 모든 안정성 여유 하위 메뉴를 선택하여 모든 교차 주파수 및 연관된 안정성 여유를 표시합니다. 결과로 생성되는 플롯은 아래와 같습니다.

두 개의 180도 위상 교차 및 대응되는 -9.35dB와 +10.6dB의 이득 여유가 있습니다. 음의 이득 여유는 이득을 낮춤으로써 안정성이 손실됨을 나타내는 반면, 양의 이득 여유는 이득을 높임으로써 안정성이 손실됨을 나타냅니다. k=1에 대한 플러스/마이너스 6dB 이득 변동에 대해 폐루프 계단 응답을 플로팅하여 이를 확인합니다.

k1 = 2;     T1 = feedback(G*k1,1);
k2 = 1/2;   T2 = feedback(G*k2,1);
step(T,'b',T1,'r',T2,'g',12),
legend('k = 1','k = 2','k = 0.5')
ans = 

  Legend (k = 1, k = 2, k = 0.5) with properties:

         String: {'k = 1'  'k = 2'  'k = 0.5'}
       Location: 'northeast'
    Orientation: 'vertical'
       FontSize: 9
       Position: [0.7167 0.7614 0.1692 0.1144]
          Units: 'normalized'

  Use GET to show all properties

플롯을 보면 작은 이득 값과 큰 이득 값 모두에 대해 진동이 증가했음을 알 수 있습니다.

allmargin 명령을 사용하여 모든 안정성 여유를 계산할 수 있습니다. 참고로, 이득 여유는 dB가 아닌 이득비로 표현됩니다. mag2db를 사용해 값을 dB로 변환합니다.

m = allmargin(G)

GainMargins_dB = mag2db(m.GainMargin)
m = 

  struct with fields:

     GainMargin: [0.3408 3.3920]
    GMFrequency: [1.9421 16.4807]
    PhaseMargin: 68.1140
    PMFrequency: 7.0776
    DelayMargin: 0.1680
    DMFrequency: 7.0776
         Stable: 1


GainMargins_dB =

   -9.3510   10.6091

참고 항목

| | (Robust Control Toolbox)

관련 항목