Contenido principal

Diseñar un servocontrolador LQG

Este ejemplo muestra cómo diseñar un servocontrolador para el siguiente sistema.

La planta tiene tres estados (x), dos entradas de control (u), dos entradas aleatorias (w), una salida (y), ruido de medición para la salida (v) y las ecuaciones de estado y medición siguientes:

x˙=Ax+Bu+Gwy=Cx+Du+Hw+v

donde

A=[010001100]B=[0.31010.30.9]G=[0.71.121.1710.141.5]C=[1.91.31]D=[0.530.61]H=[1.20.89]

El sistema tiene los siguientes datos de covarianza de ruido:

Qn=E(wwT)=[4221]Rn=E(vvT)=0.7

Utilice la siguiente función de coste para definir el tradeoff entre rendimiento del seguidor y esfuerzo de control:

J(u)=0(0.1xTx+xi2+uT[1002]u)dt

Para diseñar un servocontrolador LQG para este sistema:

  1. Cree el sistema de espacio de estados escribiendo la siguiente instrucción en la ventana de comandos de MATLAB®:

    A = [0 1 0;0 0 1;1 0 0];    
    B = [0.3 1;0 1;-0.3 0.9];
    G = [-0.7 1.12; -1.17 1; .14 1.5];
    C = [1.9 1.3 1];  
    D = [0.53 -0.61];
    H = [-1.2 -0.89];
    sys = ss(A,[B G],C,[D H]);

  2. Genere la ganancia de retroalimentación de estados óptima utilizando la función de coste dada escribiendo los comandos siguientes:

    nx = 3;    %Number of states
    ny = 1;    %Number of outputs
    Q = blkdiag(0.1*eye(nx),eye(ny));
    R = [1 0;0 2];
    K = lqi(ss(A,B,C,D),Q,R);
    

  3. Genere el estimador de estado de Kalman utilizando los datos de covarianza de ruido dados escribiendo los comandos siguientes:

    Qn = [4 2;2 1]; 
    Rn = 0.7;
    kest = kalman(sys,Qn,Rn);
    

  4. Conecte el estimador de estado de Kalman y la ganancia de retroalimentación de estados óptima para formar el servocontrolador LQG escribiendo el comando siguiente:

    trksys = lqgtrack(kest,K)
    Este comando devuelve el siguiente servocontrolador LQG:
    >> trksys = lqgtrack(kest,K)
     
    a = 
               x1_e    x2_e    x3_e     xi1
       x1_e  -2.373  -1.062  -1.649   0.772
       x2_e  -3.443  -2.876  -1.335  0.6351
       x3_e  -1.963  -2.483  -2.043  0.4049
       xi1        0       0       0       0
     
    b = 
                 r1      y1
       x1_e       0  0.2849
       x2_e       0  0.7727
       x3_e       0  0.7058
       xi1        1      -1
     
    c = 
              x1_e     x2_e     x3_e      xi1
       u1  -0.5388  -0.4173  -0.2481   0.5578
       u2   -1.492   -1.388   -1.131   0.5869
     
    d = 
           r1  y1
       u1   0   0
       u2   0   0
     
    Input groups:              
           Name        Channels
         Setpoint         1    
        Measurement       2    
                               
    Output groups:             
          Name      Channels   
        Controls      1,2      
                               
    Continuous-time model.

Consulte también

| |

Temas