Contenuto principale

LPV System

Simulare sistemi lineari a parametri variabili (LPV)

  • LPV System block

Librerie:
Control System Toolbox / Linear Parameter Varying

Descrizione

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.

In termini matematici, è possibile rappresentare un sistema LPV come segue.

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

In questo caso:

  • u(t) sono gli input

  • y(t) sono gli output

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

  • dx(t) è il vettore delle derivative di stato x˙ per i sistemi a tempo continuo e il vettore di aggiornamento di stato x[k+1] per i sistemi a tempo discreto. In questo caso, k è l'indice intero che conta il numero di periodi di campionamento Ts.

  • 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.

  • dx0(p), x0(p), u0(p) e y0(p) sono gli offset dei valori di dx(t), x(t), u(t) e y(t) ad un dato valore del parametro p = p(t) o p[k].

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

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 (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. Il blocco estrae le informazioni sulle variabili di pianificazione 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.

Esempi

espandi tutto

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.

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˙+ky=F(t)

In questo caso, 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 ad un dato momento t. Per un valore fisso di u, il sistema è lineare ed è espresso come

A=[01-km-cm],

B=[01m],

C=[10]

x˙=Ax+Buy=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.

c = 5;   
k = 300; 
u = 1:10;
m = 10*u + 0.1*u.^2;
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 (Array stato-spazio).

  • 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, il blocco utilizza l'interpolazione per calcolare il modello lineare ad una determinata istanza temporale. In caso contrario, il blocco utilizza l'estrapolazione.

Simulare il modello LPV con un input di forzatura costante di 100 N e valori casuali per la variabile di pianificazione del comando di carico.

model = "simMSDLPV";
open_system(model);

Questo esempio mostra come simulare un modello lineare a parametri variabili (LPV) della velocità di un motore utilizzando il blocco LPV System. Il blocco LPV System interpola un array stato-spazio per modellare la risposta LPV. In genere, è possibile ottenere tale array linearizzando in batch un modello non lineare su un intervallo di condizioni operative. Questo esempio fornisce un risultato linearizzato del modello di velocità del motore in scdspeedlpvData. Per ulteriori informazioni sulla linearizzazione di questo modello, vedere Linearize Engine Speed Model (Simulink Control Design).

Aprire il modello.

model = "scdspeedLPVCompare";
open_system(model);

Caricare il risultato della linearizzazione per implementare il modello LPV.

load scdspeedlpvData.mat

Il modello LPV è implementato all'interno del sottosistema LPV Model.

Implementation of LPV Model subsystem

Il blocco LPV System utilizza l'angolo di accelerazione come input e l'output della velocità come variabile di pianificazione. I parametri del blocco sono configurati come mostrato in questa immagine. In questo caso, l'array stato-spazio sys e gli offset si ottengono linearizzando in batch il modello non lineare.

Simulare il modello e tracciare il paragone delle risposte.

sim(model);
plot(logsOut{1}.Values.Time,logsOut{1}.Values.Data)
grid on
legend("Nonlinear sim","LPV sim","LTI sim",Location="best")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Nonlinear sim, LPV sim, LTI sim.

Il modello LPV fornisce una buona approssimazione della risposta non lineare.

Esempi approfonditi

Limiti

  • 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 sparsa 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 rettangolari create utilizzando ndgrid.

Porte

Input

espandi tutto

Specificare il segnale di input u(t). Nel caso di ingressi multipli, questa porta accetta un segnale della dimensione dell'input.

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. È possibile ottenere la dipendenza richiesta preparando un segnale di pianificazione utilizzando l'input di clock (per il tempo), il segnale di input (u), i segnali di stato di output (x) del blocco LPV o qualsiasi altro segnale esogeno, 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).

Da R2024b

Condizioni iniziali da utilizzare con il modello locale per avviare la simulazione, specificate come un vettore di lunghezza pari al numero di stati del modello.

Dipendenze

Per abilitare questa porta, impostare Initial condition source su external.

Output

espandi tutto

Risposta del modello lineare a parametri variabili.

Valori degli stati del modello.

Dipendenze

Per abilitare questa porta, selezionare Output states sulla scheda Outputs dei parametri del blocco.

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.

Dipendenze

Per abilitare questa porta, selezionare Output state derivatives (continuous-time) or updates (discrete-time) sulla scheda Outputs dei parametri del blocco.

Dati del modello stato-spazio locale nei passi temporali principali della simulazione, restituiti come un segnale bus in cui sono presenti questi elementi.

  • A: matrice di stato

  • B: matrice di input

  • C: matrice di output

  • D: matrice feedthrough

  • InputDelay: ritardo in ingresso

  • OutputDelay: ritardo di output

  • InternalDelay: ritardi interni nel modello

Dipendenze

Per abilitare questa porta, selezionare Output interpolated state-space data sulla scheda Outputs dei parametri del blocco.

Dati di offset del modello LPV nei passi temporali principali della simulazione, restituiti come un segnale bus in cui sono presenti questi elementi.

  • InputOffset

  • OutputOffset

  • StateOffset

  • StateDerivativeOffset

Dipendenze

Per abilitare questa porta, selezionare Output interpolated offsets sulla scheda Outputs dei parametri del blocco.

Parametri

espandi tutto

Per modificare i parametri del blocco in modo interattivo, utilizzare Property Inspector. Dalla barra degli strumenti di Simulink, nella scheda Simulation, nella galleria Prepare, selezionare Property Inspector.

Scheda del modello LPV

Un array di modelli stato-spazio (ss o idss (System Identification Toolbox)). Tutti i modelli dell'array devono utilizzare la stessa definizione degli stati.

L'array stato-spazio deve specificare i parametri di pianificazione e la griglia di interpolazione per il modello nella proprietà SamplingGrid. È inoltre possibile specificare gli offset del modello nella proprietà Offsets dell'array quando si imposta il parametro Operating Point Offsets su Use offsets in state-space array. Per ulteriori informazioni su queste proprietà, vedere la pagina di riferimento del modello ss.

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.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: sys
Valori: ss or idss model array name in quotes

Esempio set_param(gcb,"sys","sysArrayName")

Da R2024b

Specificare la sorgente della condizione iniziale.

  • internal: specificare le condizioni iniziali degli stati utilizzando il parametro condizione iniziale.

  • external: specificare le condizioni iniziali degli stati nella porta di input IC del blocco.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: InitialConditionSource
Valori: internal (predefinito) | external

Condizioni iniziali da utilizzare con il modello locale per avviare la simulazione, specificate come un vettore di lunghezza pari al numero di stati del modello.

Dipendenze

Per abilitare questo parametro, impostare Initial condition source su internal.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: InitialCondition
Valori: "0" (predefinito) | initial state values in quotes

Esempio set_param(gcb,"InitialCondition","[0 0.1]")

Da R2024a

Specificare il formato degli offset dei punti operativi.

  • Specify Offsets as double arrays: specificare gli offset utilizzando i parametri Input offset, Output offset, State Offset e State derivative/update offset.

  • Specify offsets as struct array: specificare gli offset come un array di strutture con i campi u, y, x e dx che specificano rispettivamente gli offset di input, output, stato e derivate di stato.

  • Use offsets in state-space array: utilizzare gli offset specificati nella proprietà Offsets dell'array stato-spazio.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: opSpecOption
Valori: "Specify Offsets as double arrays" (predefinito) | "Specify offsets as struct array" | "Use offsets in state-space array"

Esempio set_param(gcb,"opSpecOption","Specify offsets as struct array")

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

  • 0: 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 x 1 x N1 x ... x Nm: da utilizzare quando sono presenti offset che variano nello spazio di pianificazione. In questo caso, nu è il numero di input e N1 x ... x Nm è la grandezza della griglia di pianificazione. Ad esempio, se il modello ha tre input, due output e quattro stati ed è pianificato su una griglia di punti operativi di 5x6, la grandezza dell'array di input deve essere 3x1x5x6. Utilizzare size(sys) per determinare la grandezza dell'array stato-spazio sys.

Dipendenze

Per abilitare questo parametro, impostare il formato Operating Point Offsets su Specify Offsets as double arrays.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: uOffset
Valori: "0" (predefinito) | array name in quotes

Esempio set_param(gcb,"uOffset","uOffArray")

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

  • 0: 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 x 1 x N1 x ... x Nm: da utilizzare quando sono presenti offset che variano nello spazio di pianificazione. In questo caso, ny è il numero di output e N1 x ... x Nm è la grandezza della griglia di pianificazione. Ad esempio, se il modello ha tre input, due output e quattro stati ed è pianificato su una griglia di punti operativi di 5x6, la grandezza dell'array di input deve essere 2x1x5x6. Utilizzare size(sys) per determinare la grandezza dell'array stato-spazio sys.

Dipendenze

Per abilitare questo parametro, impostare il formato Operating Point Offsets su Specify Offsets as double arrays.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: yOffset
Valori: "0" (predefinito) | array name in quotes

Esempio set_param(gcb,"yOffset","yOffArray")

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

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

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

  • Array doppio di grandezza nx x 1 x N1 x ... x Nm: da utilizzare quando sono presenti offset che variano nello spazio di pianificazione. In questo caso, nx è il numero di stati e N1 x ... x Nm è la grandezza della griglia di pianificazione. Ad esempio, se il modello ha tre input, due output e quattro stati ed è pianificato su una griglia di punti operativi di 5x6, la grandezza dell'array di input deve essere 4x1x5x6. Utilizzare size(sys) per determinare la grandezza dell'array stato-spazio sys.

Dipendenze

Per abilitare questo parametro, impostare il formato Operating Point Offsets su Specify Offsets as double arrays.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: xOffset
Valori: "0" (predefinito) | array name in quotes

Esempio set_param(gcb,"xOffset","xOffArray")

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:

    • Vettore doppio di lunghezza pari al numero di stati: da utilizzare quando gli offset nella derivativa di stato sono uguali in tutto lo spazio di pianificazione.

    • Array doppio di grandezza nx x 1 x N1 x ... x Nm: da utilizzare quando sono presenti offset che variano nello spazio di pianificazione. In questo caso, nx è il numero di stati e N1 x ... x Nm è la grandezza della griglia di pianificazione. Ad esempio, se il modello ha tre input, due output e quattro stati ed è pianificato su una griglia di punti operativi di 5x6, la grandezza dell'array di input deve essere 4x1x5x6. Utilizzare size(sys) per determinare la grandezza dell'array stato-spazio sys.

Dipendenze

Per abilitare questo parametro, impostare il formato Operating Point Offsets su Specify Offsets as double arrays e disabilitare Assume equilibrium operating conditions.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: dxOffset
Valori: "0" (predefinito) | array name in quotes

Esempio set_param(gcb,"dxOffset","dxOffArray")

Da R2024a

Offset del modello, specificati come una struttura con questi campi.

CampoDescrizione
uOffset di input
yOffset di output
xOffset dello stato
dxOffset della derivativa di stato
  • Se i valori di offset sono uguali in tutto lo spazio di pianificazione, specificarli come un vettore doppio di lunghezza pari al numero di input, output o stati per i campi corrispondenti.

  • Se gli offset variano nello spazio di pianificazione, specificare un array di strutture. Ad esempio, si supponga che il modello abbia tre input, due output e quattro stati. Se si linearizza il modello utilizzando un array di punti operativi di 5x6, la grandezza dell'array deve essere di 5x6 e ciascuna voce deve contenere un vettore di lunghezza pari al numero di input, output o stati per i campi corrispondenti.

La funzione linearize (Simulink Control Design) restituisce gli offset in questo formato nell'output info.Offsets quando la linearizzazione viene eseguita con l'opzione StoreOffsets impostata su true.

Dipendenze

Per abilitare questo parametro, impostare il formato Operating Point Offsets su Specify Offsets as struct array. (da R2024a)

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: Offset
Valori: "struct" (predefinito) | structure array name in quotes

Esempio set_param(gcb,"Offset","OffsetStructName")

Scheda delle voci fisse

In alcuni casi, il modello LPV può contenere coefficienti con piccole variazioni. Utilizzando i parametri di questa scheda, è possibile 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. Per impostazione predefinita, il blocco utilizza i dati State-space array per determinare quali voci sono fisse e quali variano (per motivi di prestazione, il blocco interpola solo le voci che variano).

Con questa scheda è possibile sovrascrivere questo comportamento predefinito, ad esempio per cercare di semplificare il modello LPV. Ad esempio, si può decidere che la terza voce di A non vari molto e che si desideri fissarla al suo valore medio. Gli array logici specificano quali voci devono essere trattate come fisse e Read values from specifica quale valore utilizzare per tali voci. false corrisponde a non sovrascrivere i dati dell'array LTI, ossia a fare affidamento sui dati per decidere se questa voce è fissa o variabile.

Specificare la posizione di questi coefficienti in uno dei seguenti modi:

  • 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 è il numero di ingressi, ny è il numero di uscite, nx è il numero di stati e ni è la 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.

Dopo aver specificato la posizione, fornire i valori del coefficiente fisso utilizzando il parametro Read values from.

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

  • First model in state-space array: il primo modello nell'array stato-spazio viene utilizzato per i coefficienti fissi del 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 state-space model: specificare un modello stato-spazio diverso per le voci fisse. Specificare una variabile per il modello fisso nel campo Custom model. Il modello fisso deve utilizzare la stessa base di stato dell'array stato-spazio del modello LPV.

Scheda di pianificazione

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, indipendentemente 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à.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: IMethod
Valori: "Linear" (predefinito) | "Nearest" | "Flat"

Esempio set_param(gcb,"IMethod","Flat")

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.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: EMethod
Valori: "Clip" (predefinito) | "Linear"

Esempio set_param(gcb,"EMethod","Linear")

Il blocco determina la posizione dei valori dei parametri di pianificazione attuali nello spazio di pianificazione utilizzando 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).

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Per ottenere il valore del parametro del blocco in modo programmatico, utilizzare la funzione get_param (Simulink).

Parametro: IndexSearch
Valori: "Binary Search" (predefinito) | "Linear Search"

Esempio set_param(gcb,"IndexSearch","Linear Search")

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).

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: IndexBegin
Valori: "on" (predefinito) | "off"

Esempio set_param(gcb,"IndexBegin","off")

Scheda della generazione di codice

Tipo di dati del blocco, specificato come double o single.

Dipendenze

Per abilitare questa opzione, utilizzare come input un modello stato-spazio a tempo discreto.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: DataType
Valori: "double" (predefinito) | "single"

Esempio set_param(gcb,"DataType","single")

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 programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: InitBufferSize
Valori: "1024" (predefinito) | positive integer greater than 5 in quotes

Esempio set_param(gcb,"InitBufferSize","512")

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.

Utilizzo programmatico

Per impostare il valore del parametro del blocco in modo programmatico, utilizzare la funzione set_param (Simulink).

Parametro: FixedBuffer
Valori: "off" (predefinito) | "on"

Esempio set_param(gcb,"FixedBuffer","on")

Funzionalità estese

espandi tutto

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

Cronologia versioni

Introdotto in R2014b

espandi tutto