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.

LPV System

Simule sistemas lineales de parámetros variables (LPV)

Descripción

Represente y simule sistemas lineales de parámetros variables (LPV) en Simulink®. El bloque LPV System también ofrece soporte para la generación de código.

Un sistema lineal de parámetros variantes (LPV) es un modelo lineal de espacio de estados cuya dinámica varía en función de ciertos parámetros variables en el tiempo llamados parámetros de programación. En MATLAB®, los modelos LPV se representan en forma de espacio de estados utilizando coeficientes dependientes de los parámetros.

Matemáticamente, los sistemas LPV se representan de la siguiente forma:

dx(t)=A(p)x(t)+B(p)u(t)y(t)=C(p)x(t)+D(p)u(t)x(0)=xinit(1)

donde

  • u(t) son las entradas

  • y(t) son las salidas

  • x(t) son los estados del modelo con valor inicial x0.

  • dx(t) es el vector de derivadas de estados x˙ para sistemas de tiempo continuo y el vector de actualización de estados x(t+ΔT) para sistemas de tiempo discreto. ΔT es el tiempo de muestreo.

  • A(p), B(p), C(p) y D(p) son las matrices de espacio de estados parametrizadas por el vector de parámetros de programación p.

  • Los parámetros p = p(t) son funciones medibles de las entradas y los estados del modelo. Pueden ser una cantidad escalar o un vector de varios parámetros. El conjunto de parámetros de programación define el espacio de programación sobre el que se define el modelo LPV.

Precaución

Evite que C(p) y D(p) dependan de la salida del sistema y. De lo contrario, la ecuación de espacio de estados resultante y = C(y)x + D(y)u crea un lazo algebraico, ya que calcular el valor de salida y requiere conocer el valor de salida. Este lazo algebraico tiende a ser inestable y divergente. En su lugar, intente expresar C y D en términos de tiempo t, la entrada de bloque u y las salidas de estado x.

Por motivos similares, evite planificar A(p) y B(p) basándose en la salida dx. Tenga en cuenta que es seguro que A y B dependan de y cuando y es una combinación fija de estados y entradas (dicho de otra forma, cuando y = Cx + Du donde C y D son matrices constantes).

El bloque implementa una representación en forma de cuadrícula del sistema LPV. Se elige una cuadrícula de valores para los parámetros de programación. En cada valor p = p* se especifica el sistema lineal correspondiente como objeto de modelo de espacio de estados (ss o idss (System Identification Toolbox)). Para configurar el bloque LPV System se utiliza el arreglo generado de modelos de espacio de estados.

El bloque admite un arreglo de modelos de espacio de estados con información sobre el punto de funcionamiento. La información sobre las variables de programación se extrae de la propiedad SamplingGrid del arreglo LTI. Las variables de programación definen la cuadrícula de los modelos LPV. Son cantidades de valor escalar que pueden ser funciones de tiempo, entradas y estados, o constantes. Se utilizan para elegir la dinámica local en el espacio operativo. El software interpola los valores de estas variables. El bloque utiliza este arreglo con técnicas de interpolación y extrapolación de datos para la simulación.

La representación del sistema LPV puede ampliarse para permitir desplazamientos en las variables dx, x, u e y. Esta forma se conoce como la forma afín del modelo LPV. Matemáticamente, lo siguiente representa un sistema LPV:

dx(t)=dx0(p)+A(p)(x(t)x0(p))+B(p)(u(t)u0(p))y(t)=y0(p)+C(p)(x(t)x0(p))+D(p)(u(t)u0(p))x(0)=xinit(2)

dx¯(p),  x¯(p),  u¯(p),  y¯(p) son los desplazamientos en los valores de dx(t), x(t), u(t) e y(t) para un valor determinado del parámetro p = p(t).

Para obtener estas representaciones del arreglo de sistemas lineales, se ha de linealizar un modelo Simulink sobre un conjunto de puntos de funcionamiento (consulte Batch Linearization (Simulink Control Design).) Los desplazamientos corresponden a los puntos de funcionamiento en los que se ha linealizado el modelo.

Los desplazamientos se pueden obtener devolviendo información adicional de linealización al llamar a las funciones linearize (Simulink Control Design) o getIOTransfer (Simulink Control Design). A continuación, puede extraer los desplazamientos con getOffsetsForLPV (Simulink Control Design). Para ver un ejemplo, consulte LPV Approximation of Boost Converter Model (Simulink Control Design).

Las siguientes limitaciones son aplicables al bloque LPV System:

  • Los retardos internos no se pueden extrapolar para que sean menores que su valor mínimo en el arreglo del modelo de espacio de estados.

  • Cuando se utiliza una cuadrícula irregular de modelos lineales para definir el sistema LPV, solo se utiliza el esquema de interpolación del vecino más cercano. Esto puede reducir la precisión de los resultados de la simulación. Se recomienda trabajar con cuadrículas regulares. Para obtener más información sobre cuadrículas regulares e irregulares, consulte Regular vs. Irregular Grids.

  • LPV System block

Soporte de distintos tipos de datos

Datos simples y dobles. Cualquier otro tipo de datos para señales de entrada o propiedades del modelo debe convertirse a estos tipos de datos.

Parámetros

El cuadro de diálogo Parámetros del bloque LPV System contiene cinco pestañas para especificar los datos del sistema, el algoritmo de programación y los puertos de salida. La siguiente tabla resume los parámetros del bloque.

TareaParámetros
Especifique un arreglo de modelos de espacio de estados y estados iniciales

En la pestaña LPV Model:

Especifique los desplazamientos de los puntos de funcionamiento

En la pestaña LPV Model:

Especifique los desplazamientos en la derivada de estado o la variable de actualización

En la pestaña LPV Model:

Especifique qué matrices del modelo son fijas y sus valores nominales para anular las entradas en los datos del modelo.
En algunos casos, es posible que desee sustituir una matriz dependiente de parámetros como A(p) por un valor fijo A* para la simulación. Por ejemplo, A* puede representar un valor medio a lo largo del rango de programación.

En la pestaña Fixed Entries:

Especifique las opciones de interpolación y extrapolación

En la pestaña Scheduling:

Especifique las salidas adicionales para el bloque

En la pestaña Outputs:

Especifique la configuración de generación de código

En la pestaña Code Generation:

Arreglo de espacio de estados

Un arreglo de modelos de espacio de estados (ss o idss (System Identification Toolbox)). Todos los modelos del arreglo deben utilizar la misma definición de estados. Utilice la propiedad SamplingGrid del objeto de espacio de estados para especificar los parámetros de programación del modelo. Consulte la página de referencia del modelo ss o idss para obtener más información sobre la propiedad SamplingGrid.

Cuando el bloque está en un modelo con control de estado síncrono (consulte el bloque State Control (HDL Coder)), debe especificar un arreglo de modelos de tiempo discreto.

Estado inicial

Condiciones iniciales que se han de utilizar con el modelo local para iniciar la simulación, especificadas como una de las siguientes:

  • 0 (Valor predeterminado)

  • Vector doble de longitud igual al número de estados del modelo

Desplazamiento de entrada

Desplazamientos en la entrada u(t), especificados como una de las siguientes opciones:

  • 0 (Valor predeterminado). Se utiliza cuando no hay desplazamientos de entrada (u¯(p)=0  p).

  • Vector doble de longitud igual al número de entradas. Se utiliza cuando el desplazamiento de entrada es el mismo en todo el espacio de programación.

  • Arreglo doble de tamaño [nu 1 sysArraySize]. Se utiliza cuando hay desplazamientos y varían en todo el espacio de programación. En este caso, nu = número de entradas y sysArraySize = tamaño del arreglo de espacio de estados sys. Utilice sysArraySize = getArraySize(sys) para determinar el tamaño del arreglo.

Puede obtener los desplazamientos durante la linealización y convertirlos al formato compatible con el bloque LPV System. Para obtener más información, consulte Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design) y getOffsetsForLPV (Simulink Control Design).

Desplazamiento de salida

Desplazamientos en la salida y(t), especificados como una de las siguientes opciones:

  • 0 (Valor predeterminado). Se utiliza cuando no hay desplazamientos de salida (y¯(p)=0  p).

  • Vector doble de longitud igual al número de salidas. Se utiliza cuando los desplazamientos de salida son los mismos en todo el espacio de programación.

  • Arreglo doble de tamaño [ny 1 sysArraySize]. Se utiliza cuando hay desplazamientos y varían en todo el espacio de programación. En este caso, ny = número de salidas y sysArraySize = tamaño del arreglo de espacio de estados. Utilice sysArraySize = getArraySize(sys) para determinar el tamaño del arreglo.

Puede obtener los desplazamientos durante la linealización y convertirlos al formato compatible con el bloque LPV System. Para obtener más información, consulte Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design) y getOffsetsForLPV (Simulink Control Design).

Desplazamiento de estado

Desplazamientos en los estados x(t), especificados como una de las siguientes opciones:

  • 0 (Valor predeterminado). Se utiliza cuando no hay desplazamientos de estado (x¯(p)=0  p).

  • Vector doble de longitud igual al número de estados. Se utiliza cuando los desplazamientos de estado son los mismos en todo el espacio de programación.

  • Arreglo doble de tamaño [nx 1 sysArraySize], donde nx = número de estados y sysArraySize = tamaño del arreglo de espacio de estados. Se utiliza cuando hay desplazamientos y varían en todo el espacio de programación. En este caso, nx = número de estados y sysArraySize = tamaño del arreglo de espacio de estados. Utilice sysArraySize = getArraySize(sys) para determinar el tamaño del arreglo.

Puede obtener los desplazamientos durante la linealización y convertirlos al formato compatible con el bloque LPV System. Para obtener más información, consulte Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design) y getOffsetsForLPV (Simulink Control Design).

Desplazamiento de la derivada de estado/actualización

Desplazamientos en la derivada de estado o variable de actualización dx(t), especificados como una de las siguientes opciones:

  • Si ha obtenido el arreglo del sistema lineal por linealización en condiciones de equilibrio, seleccione la opción Assume equilibrium operating conditions. Esta opción corresponde a un desplazamiento de dx¯(p)=0 para un sistema de tiempo continuo y dx¯(p)=x¯(p) para un sistema de tiempo discreto. Es la opción seleccionada de forma predeterminada.

  • Si el sistema lineal contiene al menos un sistema obtenido en condiciones de no equilibrio, desactive la opción Assume equilibrium operating conditions. Especifique una de las siguientes opciones en el campo Offset value:

    • Si los valores de desplazamiento dx son los mismos en todo el espacio de programación, especifique un vector doble de longitud igual al número de estados.

    • Si hay desplazamientos de dx y varían en todo el espacio de programación, especifique un arreglo doble de tamaño [nx 1 sysArraySize], donde nx = número de estados y sysArraySize = tamaño del arreglo de espacio de estados.

Puede obtener los desplazamientos durante la linealización y convertirlos al formato compatible con el bloque LPV System. Para obtener más información, consulte Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design) y getOffsetsForLPV (Simulink Control Design).

Modelo nominal

Modelo de espacio de estados que proporciona los valores de los coeficientes fijos, especificados como una de las siguientes opciones:

  • Use the first model in state-space array (Valor predeterminado): el primer modelo del arreglo de espacio de estados se utiliza para representar el modelo LPV. En el siguiente ejemplo, el arreglo de espacio de estados se especifica mediante el objeto sys y los coeficientes fijos se toman del modelo sys(:,:,1).

    % Specify a 4-by-5 array of state-space models.
    sys = rss(4,2,3,4,5);
    a = 1:4; 
    b = 10:10:50;
    [av,bv] = ndgrid(a,b);
    % Use "alpha" and "beta" variables as scheduling parameters.
    sys.SamplingGrid = struct('alpha',av,'beta',bv);  

    Los coeficientes fijos se toman del modelo sysFixed = sys(:,:,1), que corresponde a [alpha=1, beta=10]. Si la entrada (2,1) de la matriz A se fuerza para que sea fija, su valor utilizado durante la simulación será sysFixed.A(2,1).

  • Custom value. Especifique un modelo de espacio de estados diferente para las entradas fijas. Especifique una variable para el modelo fijo en el campo State space model. El modelo fijo debe utilizar la misma base de estado que el arreglo de espacio de estados en el modelo LPV.

Índices de coeficiente fijo

Especifique qué coeficientes de las matrices de espacio de estados y de los vectores de retardo son fijos.

Especifique una de las siguientes opciones:

  • Booleano escalar (true o false), si todas las entradas de una matriz se han de tratar de la misma manera.

    El valor predeterminado es false para las matrices de espacio de estados y los vectores de retardo, lo que significa que se tratan como libres.

  • Matriz lógica de tamaño compatible con el tamaño de la matriz correspondiente:

    Matriz de espacio de estados

    Tamaño de la matriz de entrada fija

    A matrix

    nx-por-nx

    B matrix

    nx-por-nu

    C matrix

    ny-por-nx

    D matrix

    ny-por-nu

    Input delay

    nu-por-1

    Output delay

    ny-por-1

    Internal delay

    ni-por-1

    donde nu = número de entradas, ny = número de salidas, nx = número de estados y ni = longitud del vector de retardo interno.

  • Índices numéricos para especificar la ubicación de las entradas fijas. Consulte la página de referencia sub2ind para obtener más información sobre cómo generar índices numéricos correspondientes a un subíndice dado (i,j) para un elemento de una matriz.

Método de interpolación

Método de interpolación. Define cómo deben calcularse los datos de espacio de estados para los valores de los parámetros de programación que se encuentran lejos de sus ubicaciones en la cuadrícula.

Especifique una de las siguientes opciones:

  • Flat: elija los datos de espacio de estados en el punto de la cuadrícula más cercano al punto actual, sin sobrepasarlo. El punto actual es el valor de los parámetros de programación en el momento actual.

  • Nearest: elija los datos de espacio de estados en el punto de la cuadrícula más cercano en el espacio de programación.

  • Linear: obtenga los datos de espacio de estados por interpolación lineal de los vecinos 2d más cercanos en el espacio de programación, donde d = número de parámetros de programación.

El esquema de interpolación predeterminado es Linear para cuadrículas regulares de valores de parámetros de programación. En el caso de las cuadrículas irregulares, siempre se utiliza el esquema de interpolación Nearest independientemente de la elección realizada. Para obtener más información sobre cuadrículas regulares e irregulares, consulte Regular vs. Irregular Grids.

El método Linear ofrece la mayor precisión posible, pero tarda más en calcularse. Los métodos Flat y Nearest son adecuados para los modelos que tienen una dinámica de cambio de modo.

Método de extrapolación

Método de extrapolación. Define cómo calcular los datos de espacio de estados para los valores de los parámetros de programación que quedan fuera del rango sobre el que se ha proporcionado el arreglo de espacio de estados (como se especifica en la propiedad SamplingGrid).

Especifique una de las siguientes opciones:

  • Clip (Valor predeterminado): desactiva la extrapolación y devuelve los datos correspondientes al último punto de cuadrícula de programación disponible más cercano al punto actual.

  • Linear: introduce una línea entre el primer o el último par de valores para cada parámetro de programación, dependiendo de si el valor actual es menor que el primero o mayor que el último valor del punto de la cuadrícula, respectivamente. Este método devuelve el punto de esa línea correspondiente al valor actual. En la extrapolación lineal el esquema de interpolación también ha de ser lineal.

Método de búsqueda de índice

La ubicación de los valores de parámetros de programación actuales en el espacio de programación se determina mediante un algoritmo de búsqueda previa. Seleccione Linear search o Binary search. Cada método de búsqueda tiene ventajas en términos de velocidad en diferentes situaciones. Para obtener más información sobre este parámetro, consulte la página de referencia del bloque Prelookup (Simulink).

Inicio de la búsqueda de índice a partir del resultado del índice anterior

Seleccione esta casilla si desea que el bloque inicie su búsqueda utilizando el índice encontrado en la unidad de tiempo anterior. Para obtener más información sobre este parámetro, consulte la página de referencia del bloque Prelookup (Simulink).

Estados de salida

Añada el puerto x al bloque para dar salida a los valores de estado. Es la opción seleccionada de forma predeterminada.

Derivadas de estado de salida (tiempo continuo) o actualizaciones (tiempo discreto)

Añada el puerto dx al bloque para dar salida a los valores de derivadas de estado o actualice los valores. Es la opción seleccionada de forma predeterminada.

Datos de espacio de estados interpolado de salida

Añada el puerto ss al bloque para dar salida a los datos de espacio de estados como una estructura. Es la opción seleccionada de forma predeterminada.

Los campos de la estructura generada son los siguientes:

  • Matrices de espacio de estados A, B, C, D.

  • Retardos InputDelay, OutputDelay y InternalDelay. El campo InternalDelay está disponible solo cuando el modelo tiene un retardo interno.

Desplazamientos interpolados de salida

Añada el puerto offset al bloque para dar salida a los desplazamientos del modelo LPV (u¯(p), y¯(p), x¯(p),dx¯(p)).

Los campos de la estructura son los siguientes:

  • InputOffset, OutputOffset, StateOffset y StateDerivativeOffset en tiempo continuo.

  • InputOffset, OutputOffset, StateOffset y StateUpdateOffset en tiempo discreto.

Tipo de datos en bloque (solo en el caso de tiempo discreto)

Tipos de datos compatibles. Utilice esta opción solo para modelos de espacio de estados de tiempo discreto. Especifique double o single.

Tamaño del buffer inicial para los retardos

Asignación de memoria inicial para el número de puntos de entrada que se ha de almacenar para los modelos que contienen retardos. Si el número de puntos de entrada supera el tamaño del buffer inicial, el bloque asigna memoria adicional. El tamaño predeterminado es 1024.

Cuando ejecute el modelo en modo Accelerator o construya el modelo, asegúrese de que el tamaño del buffer inicial sea lo suficientemente grande para que soporte el máximo retardo previsto en el modelo.

Uso de un tamaño de buffer fijo

Especifique si se utiliza un tamaño de buffer fijo para guardar los datos de entrada y salida con retardo de las unidades de tiempo anteriores. Utilice esta opción para sistemas LPV de tiempo continuo que contengan retardos de entrada o salida. Si el buffer está lleno, los datos nuevos sustituirán a los que ya están en el buffer. El software utiliza la extrapolación lineal para calcular los valores de salida que no están en el buffer.

Ejemplos

Configuración del puerto de entrada de los parámetros de programación

Considere un modelo LPV de dos entradas, tres salidas y cuatro estados. Utilice la entrada u(2) y el estado x(1) como parámetros de programación. Configure el modelo de Simulink como se muestra en la siguiente figura.

Simulación de un sistema lineal de parámetros variantes

Considere un sistema lineal masa-resorte-amortiguador cuya masa cambia en función de un comando de carga externa. La ecuación que rige este sistema es la siguiente:

m(u)y¨+cy˙+k(y)y=F(t)

donde m(u) es la masa dependiente del comando externo u, c es el coeficiente de amortiguamiento, k es la rigidez del muelle y F(t) es la aplicación de la fuerza. Por su parte, y(t) es la posición de la masa en un momento t dado. Para un valor fijo de u, el sistema es lineal y se expresa como:

A=[01kmcm],  B=[01m],  C=[10]x˙=Ax+Bu,  y=Cx

donde x=[yy˙] es el vector de estado y m es el valor de la masa para un valor dado de u.

En este ejemplo, se quiere estudiar el comportamiento del modelo en un rango de valores de entrada de 1 a 10 V. Para cada valor de u, mida la masa y calcule la representación lineal del sistema. Supongamos que la masa está relacionada con la entrada según la relación: m(u)=10u+0.1u2. Para valores de u del 1 al 10 se obtiene el siguiente arreglo de sistemas lineales.

% Specify damping coefficient.
c = 5;   
% Specify stiffness.
k = 300; 
% Specify load command.
u = 1:10;
% Specify mass.
m = 10*u + 0.1*u.^2;
% Compute linear system at a given mass value.
for i = 1:length(u)
   A = [0 1; -k/m(i), -c/m(i)];
   B = [0; 1/m(i)];
   C = [1 0];
   sys(:,:,i) = ss(A,B,C,0); 
end

La variable u es la entrada de programación. Añada esta información al modelo.

sys.SamplingGrid = struct('LoadCommand',u);

Configure el bloque LPV System:

  • Introduzca sys en el campo State-space array.

  • Conecte el puerto de entrada par a una señal fuente unidimensional que genere los valores del comando de carga. Si la fuente proporciona valores entre 1 y 10, se utiliza la interpolación para calcular el modelo lineal en un momento determinado. En caso contrario, se utiliza la extrapolación.

Puertos

Nombre del puerto

Tipo de puerto

(entrada/salida)

Descripción
u Entrada

Señal de entrada u(t) en Ecuación 2 descrita anteriormente. En caso de entradas múltiples, este puerto acepta una señal de la dimensión de la entrada.

parEntrada

Proporciona las señales para las variables que definen el espacio de programación (variables de la "cuadrícula de muestreo"). Las variables de programación pueden ser funciones de tiempo, entradas y estados, o constantes. La dependencia necesaria se puede lograr preparando una señal de programación utilizando una entrada de reloj (para tiempo), una señal de entrada (u) y señales de salida (x, dx/dt, y) del bloque LPV, según sea necesario.

Precaución

Evite que C(p) y D(p) dependan de la salida del sistema y. De lo contrario, la ecuación de espacio de estados resultante y = C(y)x + D(y)u crea un lazo algebraico, ya que calcular el valor de salida y requiere conocer el valor de salida. Este lazo algebraico tiende a ser inestable y divergente. En su lugar, intente expresar C y D en términos de tiempo t, la entrada de bloque u y las salidas de estado x.

Por motivos similares, evite planificar A(p) y B(p) basándose en la salida dx. Tenga en cuenta que es seguro que A y B dependan de y cuando y es una combinación fija de estados y entradas (dicho de otra forma, cuando y = Cx + Du donde C y D son matrices constantes).

ySalida

Salida del modelo

x Salida

Valores de estados del modelo

dxSalida

Valores de las derivadas de estado. Las derivadas de estado se utilizan a veces para definir los parámetros de programación. Sin embargo, evite planificar A y B basándose en la salida dx.

ssSalida

Modelo local de espacio de estados en las principales unidades de tiempo de la simulación

offsetSalidaDesplazamientos del modelo LPV

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.

Historial de versiones

Introducido en R2014b