Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

place

Diseño de la ubicación de polos

    Descripción

    La ubicación de polos es un método para calcular la matriz de ganancia óptima utilizada para asignar polos de lazo cerrado a ubicaciones especificadas, asegurando así la estabilidad del sistema. Las ubicaciones de los polos de lazo cerrado tienen un impacto directo en las características de respuesta en el tiempo, como el tiempo de subida, el tiempo de estabilización y las oscilaciones transitorias. Para obtener más información, consulte Ubicación de polos.

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

    Basándose en la figura, considere un sistema dinámico lineal en formato de espacio de estados

    x˙=Ax+Bu

    y=Cx+Du

    Para un vector p dado de las ubicaciones deseadas de los polos de lazo cerrado autoconjugados, place calcula una matriz de ganancia K de manera que el feedback de estado u = –Kx ubica los polos en las ubicaciones p. Dicho de otra forma, los valores propios de ABK coincidirán con las entradas de p (hasta el orden).

    ejemplo

    K = place(A,B,p) ubica los polos de lazo cerrado deseados p calculando una matriz de ganancias de feedback de estados K. Todas las entradas de la planta se consideran entradas de control. place también funciona en sistemas de entrada múltiple y se basa en el algoritmo de [1]. Este algoritmo utiliza los grados de libertad adicionales para encontrar una solución que disminuya la sensibilidad de los polos de lazo cerrado a las perturbaciones en A o B.

    [K,prec] = place(A,B,p) también devuelve prec, una estimación de la precisión con que los valores propios de ABK coinciden con las ubicaciones especificadas p (prec mide el número de dígitos decimales exactos en los polos de lazo cerrado reales). Se emite una advertencia si la separación de algún polo de lazo cerrado distinto de cero es superior al 10% con respecto a la ubicación deseada.

    Ejemplos

    contraer todo

    Para este ejemplo, considere un sistema simple de segundo orden con las siguientes matrices de espacio de estados:

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

    Introduzca las matrices y cree el sistema de espacio de estados.

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

    Calcule los polos de lazo abierto y compruebe la respuesta al escalón del sistema de lazo abierto.

    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.

    Observe que hay un polo inestable y el sistema resultante está subamortiguado. Por tanto, elija polos reales de la mitad izquierda del plano complejo para eliminar las oscilaciones.

    p = [-1,-2];

    Encuentre la matriz de ganancia K mediante la ubicación de polos y compruebe los polos de lazo cerrado de 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
    
    

    A continuación, compare la respuesta al escalón del sistema de lazo cerrado.

    figure(1)
    step(syscl)

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

    Por tanto, el sistema de lazo cerrado obtenido mediante la ubicación de polos es estable y tiene una buena respuesta de estado estacionario.

    Tenga en cuenta que al elegir polos que estén más alejados del eje imaginario se obtiene un tiempo de respuesta más rápido, pero se reduce la ganancia de estado estacionario del sistema. Por ejemplo, considere los polos [-2,-3] para el sistema anterior.

    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
    
    

    Para este ejemplo, considere las ubicaciones de los polos [-2e-13,-3e-4,-3e-3]. Calcule la precisión de los polos reales.

    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
    

    Un valor de precisión de 2 se obtiene indicando que las ubicaciones reales de los polos son precisas hasta dos decimales.

    Para este ejemplo, considere la siguiente función de transferencia con polos complejos conjugados en -2±2i:

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

    Introduzca el modelo de función de transferencia. Después, conviértalo al formato de espacio de estados, dado que place usa las matrices A y B como argumentos de entrada.

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

    Luego, calcule la matriz de ganancia K mediante los polos complejos conjugados.

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

    Los valores de la matriz de ganancia son reales, ya que los polos son autoconjugados. Los valores de K serían complejos si p no contuviera polos autoconjugados.

    Ahora, verifique la respuesta al escalón del sistema de lazo cerrado.

    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.

    Para este ejemplo, considere el siguiente modelo de espacio de estados SISO:

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

    Cree el modelo de espacio de estados SISO definido por las siguientes matrices de espacio de estados:

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

    A continuación, proporcione un pulso a la planta y simúlelo mediante lsim. Represente la salida.

    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.

    Para este ejemplo, asuma que no se pueden medir todas las variables de estado y solo se mide la salida. Por tanto, diseñe un observador con esta medición. Utilice place para calcular la ganancia del estimador trasponiendo la matriz A y sustituyendo C' por la matriz B. Para este ejemplo, seleccione las ubicaciones deseadas de los polos en -2 y -3.

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

    Use la ganancia del estimador para sustituir las matrices de estado mediante el principio de dualidad/separación y cree el modelo de espacio de estados estimado.

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

    Simule la respuesta en el tiempo del sistema utilizando la misma entrada de pulso.

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

    Compare la respuesta del sistema real y el sistema estimado.

    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.

    Argumentos de entrada

    contraer todo

    Matriz de estado, especificada como una matriz de Nx por Nx, donde Nx es el número de estados.

    Matriz de entrada a estado, especificada como una matriz de Nx por Nu, donde Nx es el número de estados y Nu es el número de entradas.

    Ubicaciones de los polos de lazo cerrado, especificadas como vector de longitud Nx, donde Nx es el número de estados. Dicho de otra forma, la longitud de p debe coincidir con el tamaño de fila de A. Las ubicaciones de los polos de lazo cerrado tienen un impacto directo en las características de respuesta en el tiempo, como el tiempo de subida, el tiempo de estabilización y las oscilaciones transitorias. Para ver un ejemplo de cómo seleccionar polos, consulte Diseño de la ubicación de polos para un sistema de segundo orden.

    place devuelve un error si algunos polos de p tienen una multiplicidad mayor que rank(B).

    En problemas de orden superior, algunas opciones de ubicación de los polos derivan en ganancias muy grandes. Los problemas de sensibilidad asociados a las grandes ganancias sugieren precaución en el uso de las técnicas de ubicación de polos. Consulte [2] para obtener resultados de las pruebas numéricas.

    Argumentos de salida

    contraer todo

    Ganancia óptima o ganancia de feedback de estado completo, devuelta como una matriz de Ny por Nx, donde Nx es el número de estados y Ny es el número de salidas. place calcula una matriz de ganancia K de manera que el feedback de estado u = –Kx ubica los polos de lazo cerrado en las ubicaciones p.

    Cuando las matrices A y B son reales, K es

    • real cuando p es autoconjugado.

    • compleja cuando las ubicaciones de los polos no son complejas conjugadas.

    Estimación de precisión de los polos asignados, devuelta como escalar. prec mide el número de dígitos decimales exactos en los polos de lazo cerrado reales en contraste con las ubicaciones de los polos especificadas en p.

    Sugerencias

    • Puede utilizar place para seleccionar la ganancia del estimador trasponiendo la matriz A y sustituyendo C' por la matriz B de la siguiente manera, como se muestra en Diseño del observador de la ubicación de polos. Puede utilizar la ganancia del estimador resultante para flujos de trabajo del estimador de estado usando estim.

    Referencias

    [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.

    Historial de versiones

    Introducido antes de R2006a