Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

place

극점 배치 설계

    설명

    극점 배치는 폐루프 극점을 지정된 위치에 할당하여 시스템 안정성을 보장하는 데 사용되는 최적 이득 행렬을 계산하는 방법입니다. 폐루프 극점 위치는 상승 시간, 정착 시간, 과도 진동과 같은 시간 응답 특성에 직접적인 영향을 미칩니다. 자세한 내용은 극점 배치 항목을 참조하십시오.

    System with state matrix A, input matrix B, output matrix C, and feedthrough matrix D, with full state feedback matrix K

    그림으로부터 다음과 같은 상태공간 형식의 선형 동적 시스템을 고려해 보겠습니다.

    x˙=Ax+Bu

    y=Cx+Du

    원하는 자기 켤레(self-conjugate) 폐루프 극점 위치로 구성된 벡터 p가 주어졌을 때 place는 상태 피드백 u = –Kx가 위치 p에 극점을 배치하도록 하는 이득 행렬 K를 계산합니다. 즉, A – BK의 고유값은 p의 요소와 일치합니다(순서까지 일치).

    예제

    K = place(A,B,p)는 상태-피드백 이득 행렬 K를 계산하여 원하는 폐루프 극점 p를 배치합니다. 플랜트의 모든 입력은 제어 입력으로 간주됩니다. 또한 place는 다중 입력 시스템에서도 작동하며 [1]의 알고리즘을 기반으로 합니다. 이 알고리즘은 추가 자유도를 사용하여 A 또는 B에서의 섭동에 대한 폐루프 극점의 민감도를 최소화하는 해를 구합니다.

    [K,prec] = place(A,B,p)는 A – BK의 고유값이 지정된 위치 p와 얼마나 일치하는지에 대한 정확도를 추정하는 prec도 반환합니다(prec는 실제 폐루프 극점의 정확한 소수 자릿수의 개수를 측정함). 일부 0이 아닌 폐루프 극점이 원하는 위치에서 10% 이상 떨어져 있는 경우 경고가 발생합니다.

    예제

    모두 축소

    이 예제에서는 다음 상태공간 행렬을 사용하는 간단한 2차 시스템을 살펴보겠습니다.

    A=[-1-210]B=[20]C=[01]D=0Spate-space matrices

    행렬을 입력하고, 상태공간 시스템을 만듭니다.

    A = [-1,-2;1,0];
    B = [2;0];
    C = [0,1];
    D = 0;
    sys = ss(A,B,C,D);

    개루프 극점을 계산하고, 개루프 시스템의 계단 응답을 확인합니다.

    Pol  = pole(sys)
    Pol = 2×1 complex
    
      -0.5000 + 1.3229i
      -0.5000 - 1.3229i
    
    
    figure(1)
    step(sys)
    hold on;

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    결과로 얻은 시스템은 부족감쇠됩니다. 따라서 복소 평면의 좌반면에서 실수 극점을 선택하여 진동을 제거합니다.

    p = [-1,-2];

    극점 배치를 사용하여 이득 행렬 K를 찾고, syscl의 폐루프 극점을 확인합니다.

    K = place(A,B,p);
    Acl = A-B*K;
    syscl = ss(Acl,B,C,D);
    Pcl = pole(syscl)
    Pcl = 2×1
    
       -2.0000
       -1.0000
    
    

    이제 폐루프 시스템의 계단 응답을 비교합니다.

    figure(1)
    step(syscl)

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent sys, syscl.

    따라서 극점 배치를 사용하여 얻은 폐루프 시스템은 양호한 정상 상태 응답과 함께 안정적입니다.

    허수축에서 더 멀리 떨어진 극점을 선택하면 응답 시간은 더 빨라지지만 시스템의 정상 상태 이득은 낮아집니다. 예를 들어 위의 시스템에 극점 [-2,-3]을 사용해 보십시오.

    p = [-2, -3];
    K2 = place(A,B,p);
    syscl2 = ss(A-B*K2,B,C,D);
    figure(1);
    step(syscl2);

    Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent sys, syscl, syscl2.

    stepinfo(syscl)
    ans = struct with fields:
             RiseTime: 2.5901
        TransientTime: 4.6002
         SettlingTime: 4.6002
          SettlingMin: 0.9023
          SettlingMax: 0.9992
            Overshoot: 0
           Undershoot: 0
                 Peak: 0.9992
             PeakTime: 7.7827
    
    
    stepinfo(syscl2)
    ans = struct with fields:
             RiseTime: 1.4130
        TransientTime: 2.4766
         SettlingTime: 2.4766
          SettlingMin: 0.3003
          SettlingMax: 0.3331
            Overshoot: 0
           Undershoot: 0
                 Peak: 0.3331
             PeakTime: 4.1216
    
    

    이 예제에서는 극점 위치 [-2e-13,-3e-4,-3e-3]이 있다고 가정하겠습니다. 실제 극점의 정밀도를 계산합니다.

    A = [4,2,1;0,-1,2;0,1e-8,1];
    B = [1,2;3,1;1e-6,0];
    p = [-2e-13,-3e-4,3e-3];
    [~,prec] = place(A,B,p)
    prec = 2
    

    계산된 정밀도 값은 2이며, 이는 실제 극점 위치가 소수점 이하 2자리까지 정확함을 나타냅니다.

    이 예제에서는 -2±2i에서 켤레 복소수 극점을 갖는 다음과 같은 전달 함수가 있다고 가정하겠습니다.

    systf(s)=8s2+4s+8Transfer function of the system

    전달 함수 모델을 입력합니다. 그런 다음, placeA 행렬과 B 행렬을 입력 인수로 사용하므로 이를 상태공간 형식으로 변환합니다.

    s = tf('s');
    systf = 8/(s^2+4*s+2);
    sys = ss(systf);

    다음으로, 켤레 복소수 극점을 사용하여 이득 행렬 K를 계산합니다.

    p = [-2+2i,-2-2i];
    K = place(sys.A,sys.B,p)
    K = 1×2
    
             0    1.5000
    
    

    극점이 자기 켤레이므로 이득 행렬의 값은 실수입니다. p에 자기 켤레 극점이 없는 경우 K의 값은 복소수입니다.

    이제 폐루프 시스템의 계단 응답을 확인합니다.

    syscl = ss(sys.A-sys.B*K,sys.B,sys.C,sys.D);
    step(syscl)

    Figure contains an axes object. The axes object contains an object of type line. This object represents syscl.

    이 예제에서는 다음 SISO 상태공간 모델이 있다고 가정하겠습니다.

    A=[-1-0.7510]B=[10]C=[11]D=0SISO State-Space Model

    다음 상태공간 행렬로 정의된 SISO 상태공간 모델을 만듭니다.

    A = [-1,-0.75;1,0];
    B = [1;0];
    C = [1,1];
    D = 0;
    Plant = ss(A,B,C,D);

    이제 플랜트에 펄스를 제공하고 lsim을 사용하여 시뮬레이션합니다. 출력을 플로팅합니다.

    N = 250;
    t = linspace(0,25,N);
    u = [ones(N/2,1); zeros(N/2,1)];
    x0 = [1;2];
    [y,t,x] = lsim(Plant,u,t,x0);
    
    figure
    plot(t,y);
    title('Output');

    Figure contains an axes object. The axes object with title Output contains an object of type line.

    이 예제의 경우, 모든 상태 변수를 측정할 수는 없으며 출력만 측정한다고 가정합니다. 따라서 이 측정으로 관측기를 설계합니다. place를 사용하여 A 행렬을 전치하고 행렬 BC'으로 바꿔 추정기 이득을 계산합니다. 이 예에서는 원하는 극점 위치를 -2-3으로 선택합니다.

    L = place(A',C',[-2,-3])';

    쌍대성/분리의 원리를 사용하여 상태 행렬을 대체하고 추정된 상태공간 모델을 만들기 위해 추정기 이득을 사용합니다.

    At = A-L*C;
    Bt = [B,L];
    Ct = [C;eye(2)];
    sysObserver = ss(At,Bt,Ct,0);

    동일한 펄스 입력을 사용하여 시스템의 시간 응답을 시뮬레이션합니다.

    [observerOutput,t] = lsim(sysObserver,[u,y],t);
    yHat = observerOutput(:,1);
    xHat = observerOutput(:,[2 3]);

    실제 시스템의 응답과 추정된 시스템의 응답을 비교합니다.

    figure;
    plot(t,x);
    hold on;
    plot(t,xHat,'--');
    legend('x_1','x_2','xHat_1','xHat_2')
    title('Comparison - Actual vs. Estimated');

    Figure contains an axes object. The axes object with title Comparison - Actual vs. Estimated contains 4 objects of type line. These objects represent x_1, x_2, xHat_1, xHat_2.

    입력 인수

    모두 축소

    상태 행렬로, Nx×Nx 행렬로 지정됩니다. 여기서 Nx는 상태의 개수입니다.

    입력-상태 행렬로, Nx×Nu 행렬로 지정됩니다. 여기서 Nx는 상태의 개수이고 Nu는 입력의 개수입니다.

    폐루프 극점 위치로, 길이가 Nx인 벡터로 지정되며, 여기서 Nx는 상태의 개수입니다. 즉, p의 길이는 A의 행 크기와 일치해야 합니다. 폐루프 극점 위치는 상승 시간, 정착 시간, 과도 진동과 같은 시간 응답 특성에 직접적인 영향을 미칩니다. 극점 선택에 대한 예제는 2차 시스템을 위한 극점 배치 설계 항목을 참조하십시오.

    p의 일부 극점이 rank(B)보다 큰 중복도를 갖는 경우 place는 오류를 반환합니다.

    고차 문제에서는 몇몇 극점 위치 선택이 매우 큰 이득으로 이어질 수 있습니다. 큰 이득과 결부된 민감도 문제의 경우 극점 배치 기법을 사용할 때 주의를 기울여야 합니다. 수치 테스트의 결과는 [2] 항목을 참조하십시오.

    출력 인수

    모두 축소

    최적 이득 또는 전체 상태 피드백 이득으로, Ny×Nx 행렬로 반환됩니다. 여기서 Nx는 상태의 개수이고 Ny는 출력의 개수입니다. place는 상태 피드백 u = –Kx가 위치 p에 폐루프 극점을 배치하도록 하는 이득 행렬 K를 계산합니다.

    행렬 AB가 실수일 때 K는 다음과 같습니다.

    • p가 자기 켤레인 경우 실수입니다.

    • 극점 위치가 켤레 복소수가 아닌 경우 복소수입니다.

    할당된 극점의 정확도 추정으로, 스칼라로 반환됩니다. precp에 지정된 극점 위치와 대조되는 실제 폐루프 극점의 정확한 소수 자릿수를 측정합니다.

    • 극점 배치 관측기 설계에 보여지는 대로 A 행렬을 전치하고 행렬 B 대신 C'으로 바꿔 place를 추정기 이득 선택을 위해 사용할 수 있습니다. 결과로 얻은 추정기 이득은 estim을 사용하여 상태 추정기 워크플로에 사용할 수 있습니다.

    참고 문헌

    [1] Kautsky, J., N.K. Nichols, and P. Van Dooren, "Robust Pole Assignment in Linear State Feedback," International Journal of Control, 41 (1985), pp. 1129-1155.

    [2] Laub, A.J. and M. Wette, Algorithms and Software for Pole Assignment and Observers, UCRL-15646 Rev. 1, EE Dept., Univ. of Calif., Santa Barbara, CA, Sept. 1984.

    버전 내역

    R2006a 이전에 개발됨

    참고 항목

    | |

    도움말 항목