LPV System
Simule sistemas lineales de variación de parámetros (LPV)
Descripción
Represente y simule sistemas lineales de variación de parámetros (LPV) en Simulink®. El bloque LPV System también ofrece soporte para la generación de código.
Un sistema lineal de variación de parámetros (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:
(1) |
donde
u(t)
son las entradasy(t)
son las salidasx(t)
son los estados del modelo con valor inicialx0
.es el vector de derivadas de estado para sistemas de tiempo continuo y el vector de actualización de estado para sistemas de tiempo discreto. ΔT es el tiempo de muestreo.
A(p)
,B(p)
,C(p)
yD(p)
son las matrices de espacio de estados parametrizadas por el vector de parámetros de programaciónp
.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.
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:
(2) |
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 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.
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.
Tarea | Pará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 (véase 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 ().
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
1sysArraySize
]. Se utiliza cuando hay desplazamientos y varían en todo el espacio de programación. En este caso,nu
= número de entradas ysysArraySize
= tamaño del arreglo de espacio de estados. Utilicesize
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 ().
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
1sysArraySize
]. Se utiliza cuando hay desplazamientos y varían en todo el espacio de programación. En este caso,ny
= número de salidas ysysArraySize
= tamaño del arreglo de espacio de estados. Utilicesize
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 ().
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]
, dondenx
= número de estados ysysArraySize
= 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 ysysArraySize
= tamaño del arreglo de espacio de estados. Utilicesize
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 para un sistema de tiempo continuo y 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
1sysArraySize
], dondenx
= número de estados ysysArraySize
= 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 objetosys
y los coeficientes fijos se toman del modelosys(:,:,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 matrizA
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
ofalse
), 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-1Output delay ny
-por-1Internal delay ni
-por-1donde
nu
= número de entradas,ny
= número de salidas,nx
= número de estados yni
= 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
yInternalDelay
. El campoInternalDelay
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 .
Los campos de la estructura son los siguientes:
InputOffset
,OutputOffset
,StateOffset
yStateDerivativeOffset
en tiempo continuo.InputOffset
,OutputOffset
,StateOffset
yStateUpdateOffset
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 Acelerador 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 variación de parámetros
Considere un sistema lineal masa-muelle-amortiguador cuya masa cambia en función de un comando de carga externa. La ecuación que rige este sistema es la siguiente:
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:
donde 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: . 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:
Escriba
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. |
par | Entrada | 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 ( |
y | Salida | Salida del modelo |
x | Salida | Valores de estados del modelo |
xdot | Salida | Valores de las derivadas de estado. Las derivadas de estado se utilizan a veces para definir los parámetros de programación. |
ss | Salida | Modelo local de espacio de estados en las principales unidades de tiempo de la simulación |
offset | Salida | Desplazamientos del modelo LPV |
Capacidades ampliadas
Historial de versiones
Introducido en R2014b
Consulte también
getOffsetsForLPV
(Simulink Control Design)
Temas
- Linear Parameter-Varying Models
- Using LTI Arrays for Simulating Multi-Mode Dynamics
- Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design)
- LPV Approximation of Boost Converter Model (Simulink Control Design)