Main Content

LPV System

Simulare sistemi lineari a parametri variabili (LPV)

Descrizione

Rappresentare e simulare sistemi lineari a parametri variabili (LPV) in Simulink®. Il blocco supporta inoltre la generazione di codice.

Un sistema lineare a parametri variabili (LPV) è un modello stato-spazio lineare la cui dinamica varia in funzione di alcuni parametri variabili nel tempo chiamati parametri di pianificazione. In MATLAB®, un modello LPV è rappresentato nella forma stato-spazio utilizzando i coefficienti che dipendono dai parametri.

A livello matematico, un sistema LPV è rappresentato come:

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

dove

  • u(t) sono gli input.

  • y(t) sono gli output.

  • x(t) sono gli stati del modello con il valore iniziale x0.

  • dx(t) è il vettore delle derivative di stato x˙ per i sistemi a tempo continuo e il vettore di aggiornamento di stato x(t+ΔT) per i sistemi a tempo discreto. ΔT è il tempo di campionamento.

  • A(p), B(p), C(p) e D(p) sono le matrici stato-spazio parametrizzate dal vettore dei parametri di pianificazione p.

  • I parametri p = p(t) sono funzioni misurabili degli input e degli stati del modello. Possono essere una quantità scalare o un vettore di diversi parametri. L'insieme dei parametri di pianificazione definisce lo spazio di pianificazione su cui viene definito il modello LPV.

Attenzione

Evitare che C(p) e D(p) dipendano dall'output del sistema y poiché, in caso contrario, l'equazione stato-spazio risultante y = C(y)x + D(y)u crea un loop algebrico in quanto per calcolare il valore di output y è necessario conoscere il valore di output. Questo loop algebrico è soggetto a instabilità e divergenza. Provare invece a esprimere C e D in termini di tempo t, l'input del blocco u e gli output dello stato x.

Per motivi simili, evitare di pianificare A(p) e B(p) in base all'output di dx. Si noti che è prudente che A e B dipendano da y quando y è una combinazione fissa di stati e input (in altre parole, quando y = Cx + Du, dove C e D sono matrici costanti).

Il blocco implementa una rappresentazione del sistema LPV basata su una griglia. Scegliere una griglia di valori per i parametri di pianificazione. Per ciascun valore p = p*, specificare il sistema lineare corrispondente come oggetto del modello stato-spazio e (ss o idss (System Identification Toolbox)). Utilizzare l'array dei modelli stato-spazio generato per configurare il blocco LPV System.

Il blocco accetta un array dei modelli stato-spazio con informazioni sui punti operativi. Le informazioni sulle variabili di pianificazione sono estratte dalla proprietà SamplingGrid dell'array LTI. Le variabili di pianificazione definiscono la griglia dei modelli LPV. Si tratta di quantità a valore scalare che possono essere funzioni di tempo, input e stati o costanti. Vengono utilizzate per cogliere le dinamiche locali nello spazio operativo. Il software esegue l'interpolazione dei valori di queste variabili. Il blocco utilizza questo array con tecniche di interpolazione ed estrapolazione dei dati per la simulazione.

La rappresentazione del sistema LPV può essere estesa per ammettere gli offset nelle variabili dx, x, u e y. Questa forma è nota come forma affine del modello LPV. In termini matematici, quanto segue rappresenta un sistema LPV:

dx(t)=A(p)x(t)+B(p)u(t)+(dx¯(p)A(p)x¯(p)B(p)u¯(p))y(t)=C(p)x(t)+D(p)u(t)+(y¯(p)C(p)x¯(p)D(p)u¯(p))x(0)=x0(2)

dx¯(p),  x¯(p),  u¯(p),  y¯(p) sono gli offset dei valori di dx(t), x(t), u(t) e y(t) a un valore del parametro p = p(t) dato.

Per ottenere tali rappresentazioni dell'array del sistema lineare, linearizzare un modello di Simulink su un batch di punti operativi (vedere Batch Linearization (Simulink Control Design).) Gli offset corrispondono ai punti operativi in cui è stato linearizzato il modello.

Si possono ottenere gli offset restituendo informazioni aggiuntive sulla linearizzazione quando si richiamano funzioni come linearize (Simulink Control Design) o getIOTransfer (Simulink Control Design). È quindi possibile estrarre gli offset utilizzando getOffsetsForLPV (Simulink Control Design). Per un esempio, vedere LPV Approximation of Boost Converter Model (Simulink Control Design).

Le seguenti limitazioni si applicano al blocco LPV System:

  • I ritardi interni non possono essere estrapolati in modo che siano inferiori al loro valore minimo nell'array del modello stato-spazio.

  • Quando si utilizza una griglia irregolare di modelli lineari per definire il sistema LPV, si utilizza solo lo schema di interpolazione del vicino più prossimo. Questo può ridurre l'accuratezza dei risultati della simulazione. Si consiglia di lavorare con griglie regolari. Per saperne di più sulle griglie regolari e irregolari, vedere Regular vs. Irregular Grids.

  • LPV System block

Supporto del tipo di dati

Dati singoli e doppi. È necessario convertire qualsiasi altro tipo di dati per i segnali di input o le proprietà del modello in questi tipi di dati.

Parametri

La finestra di dialogo LPV System Block Parameter (Parametri del blocco LPV System) contiene cinque schede per specificare i dati del sistema, l'algoritmo di pianificazione e le porte di output. La tabella seguente riassume i parametri del blocco.

AttivitàParametri
Specificare un array dei modelli stato-spazio e degli stati iniziali

Nella scheda LPV Model:

Specificare gli offset dei punti operativi

Nella scheda LPV Model:

Specificare gli offset nella derivativa di stato o nella variabile di aggiornamento

Nella scheda LPV Model:

Specificare quali matrici del modello sono fisse e i loro valori nominali per sovrascrivere le voci nei dati del modello.
In alcune situazioni, si potrebbe voler sostituire una matrice dipendente dai parametri come A(p) con un valore fisso A* per la simulazione. Ad esempio, A* può rappresentare un valore medio sull'intervallo di pianificazione.

Nella scheda Fixed Entries:

Specificare le opzioni per l'interpolazione e l'estrapolazione

Nella scheda Scheduling:

Specificare ulteriori output per il blocco

Nella scheda Outputs:

Specificare le impostazioni per la generazione di codice

Nella scheda Code Generation:

Array stato-spazio

Un array di modelli stato-spazio (ss o idss (System Identification Toolbox)). Tutti i modelli dell'array devono utilizzare la stessa definizione degli stati. Utilizzare la proprietà SamplingGrid dell'oggetto stato-spazio per specificare i parametri di pianificazione del modello. Vedere la pagina di riferimento del modello ss o idss per ulteriori informazioni sulla proprietà SamplingGrid.

Quando il blocco si trova in un modello con controllo di stato sincrono (vedere il blocco State Control (HDL Coder)), è necessario specificare un array dei modelli a tempo discreto.

Stato iniziale

Condizioni iniziali da utilizzare con il modello locale per avviare la simulazione, specificate in uno dei seguenti modi:

  • 0 (predefinito)

  • Vettore doppio di lunghezza pari al numero di stati del modello

Offset di input

Offset di input u(t), specificato in uno dei seguenti modi:

  • 0 (predefinito): da utilizzare quando non sono presenti offset di input (u¯(p)=0  p).

  • Vettore doppio di lunghezza pari al numero di input: da utilizzare quando l'offset di input è uguale in tutto lo spazio di pianificazione.

  • Array doppio di grandezza [nu 1 sysArraySize]: da utilizzare quando sono presenti offset che variano nello spazio di pianificazione. In questo caso, nu = numero di input, sysArraySize = grandezza dell'array stato-spazio sys. Utilizzare sysArraySize = getArraySize(sys) per determinare la grandezza dell'array.

È possibile ottenere gli offset durante la linearizzazione e convertirli nel formato supportato dal blocco LPV System. Per ulteriori informazioni, vedere Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design) e getOffsetsForLPV (Simulink Control Design).

Offset di output

Offset di output y(t), specificato in uno dei seguenti modi:

  • 0 (predefinito): da utilizzare quando non sono presenti offset di output (y¯(p)=0  p).

  • Vettore doppio di lunghezza pari al numero di output. Da utilizzare quando gli offset di output sono uguali in tutto lo spazio di pianificazione.

  • Array doppio di grandezza [ny 1 sysArraySize]. Da utilizzare quando sono presenti offset che variano nello spazio di pianificazione. In questo caso, ny = numero di output, sysArraySize = grandezza dell'array stato-spazio. Utilizzare sysArraySize = getArraySize(sys) per determinare la grandezza dell'array.

È possibile ottenere gli offset durante la linearizzazione e convertirli nel formato supportato dal blocco LPV System. Per ulteriori informazioni, vedere Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design) e getOffsetsForLPV (Simulink Control Design).

Offset dello stato

Offset negli stati x(t), specificati in uno dei seguenti modi:

  • 0 (predefinito): da utilizzare quando non sono presenti offset nello stato (x¯(p)=0  p).

  • Vettore doppio di lunghezza pari al numero di stati. Da utilizzare quando gli offset nello stato sono uguali in tutto lo spazio di pianificazione.

  • Array doppio di dimensione [nx 1 sysArraySize], dove nx = numero di stati, sysArraySize = grandezza dell'array stato-spazio. Da utilizzare quando sono presenti offset che variano nello spazio di pianificazione. In questo caso, nx = numero di stati, sysArraySize = grandezza dell'array stato-spazio. Utilizzare sysArraySize = getArraySize(sys) per determinare la grandezza dell'array.

È possibile ottenere gli offset durante la linearizzazione e convertirli nel formato supportato dal blocco LPV System. Per ulteriori informazioni, vedere Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design) e getOffsetsForLPV (Simulink Control Design).

Offset della derivativa di stato/dell'aggiornamento

Offset nella derivativa di stato o nella variabile di aggiornamento dx(t), specificato in uno dei seguenti modi:

  • Se l'array del sistema lineare è stato ottenuto mediante linearizzazione in condizioni di equilibrio, selezionare l'opzione Assume equilibrium operating conditions. Questa opzione corrisponde a un offset di dx¯(p)=0 per un sistema a tempo continuo e di dx¯(p)=x¯(p) per un sistema a tempo discreto. Questa opzione è selezionata per impostazione predefinita.

  • Se il sistema lineare contiene almeno un sistema ottenuto in condizioni di non equilibrio, deselezionare l'opzione Assume equilibrium operating conditions. Specificare una delle opzioni seguenti nel campo Offset value:

    • Se i valori di offset dx sono uguali in tutto lo spazio di pianificazione, specificarli come un vettore doppio di lunghezza pari al numero di stati.

    • Se gli offset dx sono presenti e variano nello spazio di pianificazione, specificarli come un array doppio di grandezza [nx 1 sysArraySize], dove nx = numero degli stati e sysArraySize = grandezza dell'array stato-spazio.

È possibile ottenere gli offset durante la linearizzazione e convertirli nel formato supportato dal blocco LPV System. Per ulteriori informazioni, vedere Approximate Nonlinear Behavior Using Array of LTI Systems (Simulink Control Design) e getOffsetsForLPV (Simulink Control Design).

Modello nominale

Modello stato-spazio che fornisce i valori dei coefficienti fissi, specificati come in uno dei seguenti modi:

  • Use the first model in state-space array (predefinito:): il primo modello stato-spazio viene utilizzato per rappresentare il modello LPV. Nell'esempio seguente, l'array stato-spazio è specificato dall'oggetto sys e i coefficienti fissi sono presi dal modello 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);  

    I coefficienti fissi sono presi dal modello sysFixed = sys(:,:,1), che corrisponde a [alpha=1, beta=10]. Qualora la voce (2,1) della matrice A sia forzata a essere fissa, il relativo valore utilizzato durante la simulazione è sysFixed.A(2,1).

  • Custom value: specificare un modello stato-spazio diverso per le voci fisse. Specificare una variabile per il modello fisso nel campo State space model. Il modello fisso deve utilizzare la stessa base di stato dell'array stato-spazio del modello LPV.

Indici a coefficiente fisso

Specificare quali coefficienti delle matrici stato-spazio e dei vettori di ritardo sono fissi.

Specificare una delle seguenti opzioni:

  • Booleano scalare (true o false), se tutte le voci di una matrice devono essere trattate allo stesso modo.

    Il valore predefinito per le matrici stato-spazio e i vettori di ritardo è false, che indica che sono trattati come liberi.

  • Matrice logica di grandezza compatibile con la grandezza della matrice corrispondente:

    Matrice stato-spazio

    Grandezza della matrice a voci fisse

    A matrix

    nx x nx

    B matrix

    nx x nu

    C matrix

    ny x nx

    D matrix

    ny x nu

    Input delay

    nu x 1

    Output delay

    ny x 1

    Internal delay

    ni x 1

    dove, nu = numero di input, ny = numero di output, nx = numero degli stati, ni = lunghezza del vettore di ritardo interno.

  • Indici numerici per specificare la posizione delle voci fisse. Vedere la pagina di riferimento sub2ind per ulteriori informazioni su come generare gli indici numerici corrispondenti a un dato pedice (i,j) per un elemento di una matrice.

Metodo di interpolazione

Metodo di interpolazione. Definisce il modo in cui i dati stato-spazio devono essere calcolati per i valori dei parametri di pianificazione che si trovano lontano dalle loro posizioni nella griglia.

Specificare una delle seguenti opzioni:

  • Flat: scegliere i dati stato-spazio nel punto della griglia più vicino, ma non più grande, del punto attuale. Il punto attuale è il valore dei parametri di pianificazione al momento attuale.

  • Nearest: scegliere i dati stato-spazio nel punto della griglia più vicino nello spazio di pianificazione.

  • Linear: ottenere i dati stato-spazio mediante l'interpolazione lineare dei secondi vicini più prossimi nello spazio di pianificazione, dove d = numero dei parametri di pianificazione.

Lo schema di interpolazione predefinito è Linear per griglie regolari dei valori dei parametri di pianificazione. Per le griglie irregolari, viene sempre utilizzato lo schema di interpolazione Nearest, a prescindere dalla scelta effettuata. Per saperne di più sulle griglie regolari e irregolari, vedere Regular vs. Irregular Grids.

Il metodo Linear fornisce la massima precisione, ma richiede più tempo per il calcolo. I metodi Flat e Nearest sono adatti per i modelli che presentano dinamiche di commutazione della modalità.

Metodo di estrapolazione

Metodo di estrapolazione. Definisce come calcolare i dati stato-spazio dei valori dei parametri di pianificazione che non rientrano nell'intervallo per il quale è stato fornito l'array stato-spazio (come specificato nella proprietà SamplingGrid).

Specificare una delle seguenti opzioni:

  • Clip (Predefinito:): disattiva l'estrapolazione e restituisce i dati corrispondenti all'ultimo punto della griglia di pianificazione disponibile più vicino al punto attuale.

  • Linear: adatta una linea tra la prima o l'ultima coppia di valori per ciascun parametro di pianificazione, a seconda che il valore attuale sia rispettivamente inferiore al primo valore del punto della griglia o superiore all'ultimo valore del punto della griglia. Questo metodo restituisce il punto della linea corrispondente al valore attuale. L'estrapolazione lineare richiede che anche lo schema di interpolazione sia lineare.

Metodo di ricerca per indice

La posizione dei valori attuali dei parametri di pianificazione nello spazio di pianificazione è determinata da un algoritmo di prelookup. Selezionare Linear search o Binary search. Ciascun metodo di ricerca presenta vantaggi in termini di velocità in situazioni diverse. Per ulteriori informazioni su questo parametro, vedere la pagina di riferimento del blocco Prelookup (Simulink).

Inizio di una ricerca per indice utilizzando il risultato dell'indice precedente

Selezionare questa casella di spunta quando si desidera che il blocco inizi la ricerca utilizzando l'indice trovato al passo temporale precedente. Per ulteriori informazioni su questo parametro, vedere la pagina di riferimento del blocco Prelookup (Simulink).

Stati di output

Aggiungere la porta x al blocco per generare i valori di stato. Questa opzione è selezionata per impostazione predefinita.

Derivative dello stato di output (tempo continuo) o aggiornamenti (tempo discreto)

Aggiungere la porta dx al blocco per generare i valori delle derivative di stato o aggiornare i valori. Questa opzione è selezionata per impostazione predefinita.

Dati stato-spazio interpolati di output

Aggiungere la porta ss al blocco per generare i dati stato-spazio come struttura. Questa opzione è selezionata per impostazione predefinita.

I campi della struttura generata sono:

  • Matrici stato-spazio A, B, C, D.

  • Ritardi InputDelay, OutputDelay e InternalDelay. Il campo InternalDelay è disponibile solo quando il modello presenta un ritardo interno.

Offset interpolati di output

Aggiungere la porta offset al blocco per generare gli offset del modello LPV (u¯(p), y¯(p), x¯(p),dx¯(p)).

I campi della struttura sono:

  • InputOffset, OutputOffset, StateOffset e StateDerivativeOffset a tempo continuo.

  • InputOffset, OutputOffset, StateOffset e StateUpdateOffset a tempo discreto.

Tipo di dati del blocco (solo nel caso del tempo discreto)

Tipo di dati supportato. Utilizzare questa opzione solo per i modelli stato-spazio a tempo discreto. Specificare double o single.

Grandezza iniziale del buffer per i ritardi

Allocazione iniziale di memoria per il numero di punti di input da memorizzare per i modelli che contengono ritardi. Se il numero di punti di input supera la grandezza del buffer iniziale, il blocco assegna ulteriore memoria. La grandezza predefinita è 1024.

Quando si esegue il modello in modalità di accelerazione o si costruisce il modello, assicurarsi che la grandezza del buffer iniziale sia sufficiente per gestire il ritardo massimo atteso nel modello.

Utilizzo di una grandezza fissa del buffer

Specificare se utilizzare una grandezza fissa del buffer per salvare i dati di input e output ritardati dei passi temporali precedenti. Utilizzare questa opzione per i sistemi LPV a tempo continuo che contengono ritardi in input o in output. Se il buffer è pieno, i nuovi dati sostituiscono quelli già presenti nel buffer. Il software utilizza l'estrapolazione lineare per stimare i valori di output non presenti nel buffer.

Esempi

Configurazione della porta di input dei parametri di pianificazione

Si consideri un modello LPV a 2 input, 3 output e 4 stati. Utilizzare l'input u(2) e lo stato x(1) come parametri di pianificazione. Configurare il modello di Simulink come mostrato nella figura seguente.

Simulazione di un sistema lineare a parametri variabili

Si consideri un sistema lineare massa-molla-smorzatore la cui massa varia in funzione di un comando di carico esterno. L'equazione di governo è la seguente:

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

dove m(u) è la massa dipendente dal comando esterno u, c è il rapporto di smorzamento, k è la rigidità della molla e F(t) è l'input di forzatura. y(t) è la posizione della massa in un dato momento t. Per un valore fisso di u, il sistema è lineare ed è espresso come:

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

dove x=[yy˙] è il vettore di stato e m è il valore della massa per un dato valore di u.

In questo esempio, si intende studiare il comportamento del modello su un intervallo di valori di input compreso tra 1 e 10 Volt. Per ciascun valore di u, misurare la massa e calcolare la rappresentazione lineare del sistema. Si supponga che la massa sia legata all'input dalla relazione: m(u)=10u+0.1u2. Per valori di u compresi tra 1 e 10 si ottiene il seguente array di sistemi lineari.

% 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 variabile u è l'input di pianificazione. Aggiungere questa informazione al modello.

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

Configurare il blocco LPV System:

  • Digitare sys nel campo State-space array.

  • Collegare la porta di input par a un segnale sorgente monodimensionale che genera i valori del comando di carico. Se la sorgente fornisce valori compresi tra 1 e 10, si utilizza l'interpolazione per calcolare il modello lineare in una determinata istanza temporale. In caso contrario, si utilizza l'estrapolazione.

Porte

Nome della porta

Tipo di porta

(In/Out)

Descrizione
u In

Segnale di input u(t) in Equazione 2 precedentemente descritto. Nel caso di ingressi multipli, questa porta accetta un segnale della dimensione dell'input.

parIn

Fornisce i segnali per le variabili che definiscono lo spazio di pianificazione (variabili della "griglia di campionamento"). Le variabili di pianificazione possono essere funzioni di tempo, input e stati o costanti. La dipendenza richiesta può essere ottenuta preparando un segnale di pianificazione utilizzando l'input di clock (per il tempo), il segnale di input (u) e i segnali di output (x, dx/dt, y) del blocco LPV, come richiesto.

Attenzione

Evitare che C(p) e D(p) dipendano dall'output del sistema y poiché, in caso contrario, l'equazione stato-spazio risultante y = C(y)x + D(y)u crea un loop algebrico in quanto per calcolare il valore di output y è necessario conoscere il valore di output. Questo loop algebrico è soggetto a instabilità e divergenza. Provare invece a esprimere C e D in termini di tempo t, l'input del blocco u e gli output dello stato x.

Per motivi simili, evitare di pianificare A(p) e B(p) in base all'output di dx. Si noti che è prudente che A e B dipendano da y quando y è una combinazione fissa di stati e input (in altre parole, quando y = Cx + Du dove C e D sono matrici costanti).

yOut

Output del modello

x Out

Valori degli stati del modello

dxOut

Valori delle derivative di stato. Le derivative di stato vengono talvolta utilizzate per definire i parametri di pianificazione. Tuttavia, evitare di pianificare A e B sulla base dell'output dx.

ssOut

Modello stato-spazio locale nei principali passi temporali di simulazione

offsetOutOffset del modello LPV

Funzionalità estese

Generazione di codice C/C++
Genera codice C e C++ con Simulink® Coder™.

Cronologia versioni

Introdotto in R2014b