Main Content

Modelos lineales (LTI)

¿Qué es una planta?

Normalmente, los departamentos de ingeniería de control empiezan desarrollando una descripción matemática del sistema dinámico que desean controlar. El sistema que se va a controlar se denomina planta. Como ejemplo de planta, esta sección utiliza un motor de CC. Esta sección desarrolla las ecuaciones diferenciales que describen las propiedades electromecánicas de un motor de CC con una carga inercial. Después, muestra cómo utilizar las funciones de Control System Toolbox™ para crear modelos lineales basados en estas ecuaciones.

Representaciones de modelos lineales

Puede utilizar funciones de Control System Toolbox para crear las siguientes representaciones de modelos:

  • Modelos de espacio de estados (SS) con el siguiente formato

    dxdt=Ax+Buy=Cx+Du

    donde A, B, C y D son matrices de dimensiones adecuadas, x es el vector de estado y u e y son los vectores de entrada y salida.

  • Funciones de transferencia (TF), por ejemplo,

    H(s)=s+2s2+s+10

  • Modelos de cero-polo-ganancia (ZPK), por ejemplo,

    H(z)=3(z+1+j)(z+1j)(z+0.2)(z+0.1)

  • Modelos de datos de respuesta en frecuencia (FRD), que se componen de mediciones muestreadas de la respuesta en frecuencia de un sistema. Por ejemplo, puede almacenar datos de respuesta en frecuencia recopilados de manera experimental en un modelo FRD.

    Nota

    El diseño de modelos FRD es un tema especializado que no se aborda en esta sección. Para más información, consulte Frequency Response Data (FRD) Models.

Ejemplo de SISO: motor de CC

Un modelo sencillo de un motor de CC que impulsa una carga inercial muestra la velocidad angular de la carga, ω(t), como la salida y el voltaje aplicado, υapp(t), como la entrada. El objetivo de este ejemplo es controlar la velocidad angular variando el voltaje aplicado. Esta figura muestra un modelo sencillo del motor de CC.

Modelo sencillo de un motor de CC que impulsa una carga inercial

En este modelo, la dinámica del propio motor se idealiza; por ejemplo, se asume que el campo magnético es constante. La resistencia del circuito se representa con R y la autoinductancia del inducido con L. Si no conoce bien los conceptos básicos del modelado de un motor de CC, consulte un texto básico sobre el modelado físico. Con este modelo sencillo y las leyes básicas de la física, es posible desarrollar ecuaciones diferenciales que describen el comportamiento de este sistema electromecánico. En este ejemplo, las relaciones entre el potencial eléctrico y la fuerza mecánica son la ley de inducción de Faraday y la ley de Ampère sobre la fuerza en un conductor que atraviesa un campo magnético.

Derivación matemática

El par motor τ que se observa en el eje del motor es proporcional a la corriente i inducida por el voltaje aplicado,

τ(t)=Kmi(t)

donde Km, la constante del inducido, se relaciona con las propiedades físicas del motor, como la intensidad del campo magnético, el número de giros del alambre en torno a la bobina, etc. La fuerza electromotriz (inducida) trasera, υemf, es un voltaje proporcional a la velocidad angular ω que se observa en el eje,

υemf(t)=Kbω(t)

donde Kb, la constante emf, también depende de determinadas propiedades físicas del motor.

La parte mecánica de las ecuaciones del motor se deriva mediante la ley de Newton, que establece que la carga inercial J multiplicada por la derivativa de la velocidad angular es igual a la suma de todos los pares motor alrededor del eje del motor. El resultado es esta ecuación,

Jdwdt=τi=Kfω(t)+Kmi(t)

donde Kfω es una aproximación lineal para la fricción viscosa.

Por último, la parte eléctrica de las ecuaciones del motor se puede describir mediante

υapp(t)υemf(t)=Ldidt+Ri(t)

o resolviendo el voltaje aplicado y sustituyendo por la contraemf,

υapp(t)=Ldidt+Ri(t)+Kbω(t)

Esta secuencia de ecuaciones conduce a un conjunto de dos ecuaciones diferenciales que describen el funcionamiento del motor, la primera para la corriente inducida,

didt=RLi(t)KbLω(t)+1Lυapp(t)

y la segunda para la velocidad angular resultante,

dωdt=1JKfω(t)+1JKmi(t)

Ecuaciones de espacio de estados para el motor de CC

A partir de las dos ecuaciones diferenciales derivadas en la última sección, ahora puede desarrollar una representación de espacio de estados del motor de CC como sistema dinámico. La corriente i y la velocidad angular ω son los dos estados del sistema. El voltaje aplicado, υapp, es la entrada al sistema y la velocidad angular ω es la salida.

ddt[iω]=[RLKbLKmJKfJ][iω]+[1L0]υapp(t)

Ejemplo de representación de espacio de estados de un motor de CC

y(t)=[01][iω]+[0]υapp(t)

Crear modelos SISO

Después de desarrollar un conjunto de ecuaciones diferenciales que describen la planta, puede construir modelos SISO utilizando comandos sencillos. Las siguientes secciones abordan estos temas:

  • Construir un modelo de espacio de estados del motor de CC

  • Convertir entre representaciones de modelos

  • Crear modelos de función de transferencia y de cero-polo-ganancia

Construir un modelo de espacio de estados del motor de CC

Introduzca los siguientes valores nominales para los distintos parámetros de un motor de CC.

R= 2.0 % Ohms
L= 0.5 % Henrys
Km = .015 % torque constant
Kb = .015 % emf constant
Kf = 0.2 % Nms
J= 0.02 % kg.m^2

A partir de estos valores, puede construir la representación numérica de espacio de estados utilizando la función ss.

A = [-R/L -Kb/L; Km/J -Kf/J]
B = [1/L; 0];
C = [0 1];
D = [0];
sys_dc = ss(A,B,C,D)

Estos comandos devuelven el siguiente resultado:

a = 
                        x1           x2
           x1           -4        -0.03
           x2         0.75          -10
 
 
b = 
                        u1
           x1            2
           x2            0
 
 
c = 
                        x1           x2
           y1            0            1
 
 
d = 
                        u1
           y1            0

Convertir entre representaciones de modelos

Ahora que tiene una representación de espacio de estados del motor de CC, puede convertirla a otras representaciones de modelos, tales como modelos de función de transferencia (TF) y de cero-polo-ganancia (ZPK).

Representación de funciones de transferencia.  Puede utilizar tf para convertir la representación de espacio de estados a la función de transferencia. Por ejemplo, use este código para convertir a la representación de función de transferencia del motor de CC.

sys_tf = tf(sys_dc)
Transfer function:
       1.5
------------------
s^2 + 14 s + 40.02

Representación de cero-polo-ganancia.  Del mismo modo, la función zpk convierte representaciones de espacio de estados o de función de transferencia al formato cero-polo-ganancia. Use este código para convertir la representación de espacio de estados al formato cero-polo-ganancia para el motor de CC.

sys_zpk = zpk(sys_dc)
 
Zero/pole/gain:
        1.5
-------------------
(s+4.004) (s+9.996)

Nota

La representación de espacio de estados resulta más adecuada para cálculos numéricos. Para una mayor precisión, convierta al espacio de estados antes de combinar modelos y evite las representaciones de función de transferencia y de cero-polo-ganancia, excepto para la especificación y la revisión del modelo.

Construir modelos de función de transferencia y de cero-polo-ganancia

En el ejemplo del motor de CC, el enfoque de espacio de estados genera un conjunto de matrices que representa el modelo. Si elige un enfoque distinto, puede construir los modelos correspondientes utilizando tf, zpk, ss o frd.

sys = tf(num,den)               % Transfer function
sys = zpk(z,p,k)                % Zero/pole/gain
sys = ss(a,b,c,d)               % State-space
sys = frd(response,frequencies) % Frequency response data

Por ejemplo, puede crear la función de transferencia especificando el numerador y el denominador con este código.

sys_tf = tf(1.5,[1 14 40.02])
 
Transfer function:
       1.5
------------------
s^2 + 14 s + 40.02

Como alternativa, si desea crear directamente la función de transferencia del motor de CC, use estos comandos.

s = tf('s');
sys_tf = 1.5/(s^2+14*s+40.02)

Estos comandos resultan en esta función de transferencia.

Transfer function:
        1.5
--------------------
s^2 + 14 s + 40.02

Para crear el modelo de cero-polo-ganancia, utilice este comando.

sys_zpk = zpk([],[-9.996 -4.004], 1.5)

Este comando devuelve la siguiente representación de cero-polo-ganancia.

Zero/pole/gain:
        1.5
-------------------
(s+9.996) (s+4.004)

Construir sistemas de tiempo discreto

Control System Toolbox es totalmente compatible con sistemas de tiempo discreto. Puede crear sistemas discretos igual que sistemas analógicos; la única diferencia es que debe especificar un periodo de tiempo de muestreo para cualquier modelo que cree. Por ejemplo,

sys_disc = tf(1, [1 1], .01);

crea un modelo SISO en el formato de función de transferencia.

Transfer function:
  1
-----
z + 1
 
Sample time: 0.01

Añadir retardos de tiempo a modelos de tiempo discreto

Puede añadir retardos de tiempo a modelos de tiempo discreto especificando un retardo de entrada, un retardo de salida o un retardo de E/S al crear el modelo. El retardo de tiempo debe ser un entero no negativo que represente un múltiplo del tiempo de muestreo. Por ejemplo,

sys_delay = tf(1, [1 1], 0.01,'ioDelay',5)

devuelve un sistema con un retardo de E/S de 5 s.

Transfer function:
           1
z^(-5) * -----
         z + 1
 
Sample time: 0.01

Añadir retardos a modelos lineales

Puede añadir retardos de tiempo a modelos lineales especificando un retardo de entrada, un retardo de salida o un retardo de E/S al crear un modelo. Por ejemplo, para añadir un retardo de E/S al motor de CC, utilice este código.

sys_tfdelay = tf(1.5,[1 14 40.02],'ioDelay',0.05)

Este comando construye la función de transferencia del motor de CC, pero añade un retardo de 0,05 segundos.

Transfer function:
                      1.5
exp(-0.05*s) * ------------------
               s^2 + 14 s + 40.02

Para más información sobre cómo añadir retardos de tiempo a modelos, consulte Retardos de tiempo en sistemas lineales.

Objetos LTI

Para mayor facilidad, Control System Toolbox utiliza estructuras de datos personalizadas denominadas objetos LTI para almacenar datos relacionados con el modelo. Por ejemplo, la variable sys_dc creada para el ejemplo del motor de CC se denomina objeto SS. También hay objetos TF, ZPK y FRD para los modelos de función de transferencia, de cero-polo-ganancia y de datos de respuesta en frecuencia, respectivamente. Los cuatro objetos LTI engloban los datos del modelo y permiten manejar sistemas lineales como entidades únicas en lugar de recopilaciones de vectores o matrices.

Para ver qué contienen los objetos LTI, utilice el comando get. Este código describe el contenido de sys_dc a partir del ejemplo del motor de CC.

get(sys_dc)
                A: [2×2 double]
                B: [2×1 double]
                C: [0 1]
                D: 0
                E: []
           Scaled: 0
        StateName: {2×1 cell}
        StateUnit: {2×1 cell}
    InternalDelay: [0×1 double]
       InputDelay: 0
      OutputDelay: 0
               Ts: 0
         TimeUnit: 'seconds'
        InputName: {''}
        InputUnit: {''}
       InputGroup: [1×1 struct]
       OutputName: {''}
       OutputUnit: {''}
      OutputGroup: [1×1 struct]
            Notes: [0×1 string]
         UserData: []
             Name: ''
     SamplingGrid: [1×1 struct]

Puede manipular los datos que contienen los objetos LTI utilizando el comando set; consulte las páginas de referencia online de Control System Toolbox para ver descripciones de set y get.

Otra forma práctica de establecer o recuperar propiedades del modelo LTI es acceder directamente utilizando la notación de puntos. Por ejemplo, si desea acceder al valor de la matriz A, en lugar de utilizar get, puede escribir

sys_dc.A

en la línea de comandos de MATLAB®. Esta notación devuelve la matriz A.

ans =

   -4.0000   -0.0300
    0.7500  -10.0000

Del mismo modo, si desea cambiar los valores de la matriz A, puede hacerlo directamente, como se observa en este código.

A_new = [-4.5 -0.05; 0.8 -12.0];
sys_dc.A = A_new;

Consulte también

| |

Ejemplos relacionados

Más acerca de