Contenuto principale

State-Space

Implementare un sistema lineare stato-spazio

  • State-Space block

Librerie:
Simulink / Continuous

Descrizione

Il blocco State-Space implementa un sistema il cui comportamento è definito come

x˙=Ax+Buy=Cx+Dux|t=t0=x0,

dove x è il vettore di stato, u è il vettore di input, y è il vettore di output e x0 è la condizione iniziale del vettore di stato. Le matrici A, B, C e D possono essere specificate come matrici rade o matrici dense. I coefficienti della matrice devono avere queste caratteristiche:

  • A deve essere una matrice n x n, dove n è il numero di stati.

  • B deve essere una matrice n x m, dove m è il numero di input.

  • C deve essere una matrice r x n, dove r è il numero di output.

  • D deve essere una matrice r x m.

In generale, il blocco ha una porta di input e una porta di output. Il numero di righe nella matrice C o D è uguale alla larghezza della porta di output. Il numero di colonne nella matrice B o D è uguale alla larghezza della porta di input. Se si desidera modellare un sistema lineare autonomo senza input, impostare le matrici B e D su vuoto. In questo caso, il blocco agisce come un blocco sorgente senza porta di input e con una porta di output e implementa il seguente sistema:

x˙=Axy=Cxx|t=t0=x0.

Il software Simulink® converte una matrice contenente zeri in una matrice rada per garantire una moltiplicazione efficiente.

Esempi

Porte

Input

espandi tutto

Vettore di input a valori reali di tipo double, dove la larghezza è uguale al numero di colonne nelle matrici B e D. Per ulteriori informazioni, vedere Descrizione.

Tipi di dati: double

Output

espandi tutto

Vettore di output a valori reali del tipo di dato double, con larghezza pari al numero di righe nelle matrici C e D. Per ulteriori informazioni, vedere Descrizione.

Tipi di dati: double

Parametri

espandi tutto

Specificare il coefficiente della matrice A, come matrice n x n a valore reale, dove n è il numero di stati. Per ulteriori informazioni sui coefficienti della matrice, vedere Descrizione.

Utilizzo programmatico

Parametro dei blocchi: A
Tipo: vettore di caratteri, stringa
Valori: scalare | vettore | matrice | matrice rada
Impostazione predefinita: '1'

Specificare il coefficiente della matrice B, come matrice n x m a valore reale, dove n è il numero di stati e m è il numero di input. Per ulteriori informazioni sui coefficienti della matrice, vedere Descrizione.

Utilizzo programmatico

Parametro dei blocchi: B
Tipo: vettore di caratteri, stringa
Valori: scalare | vettore | matrice | matrice rada
Impostazione predefinita: '1'

Specificare il coefficiente della matrice C, come matrice r x n a valore reale, dove r è il numero di output e n è il numero di stati. Per ulteriori informazioni sui coefficienti della matrice, vedere Descrizione.

Utilizzo programmatico

Parametro dei blocchi: C
Tipo: vettore di caratteri, stringa
Valori: scalare | vettore | matrice | matrice rada
Impostazione predefinita: '1'

Specificare il coefficiente della matrice D, come matrice r x m a valore reale, dove r è il numero di output e m è il numero di input. Per ulteriori informazioni sui coefficienti della matrice, vedere Descrizione.

Utilizzo programmatico

Parametro dei blocchi: D
Tipo: vettore di caratteri, stringa
Valori: scalare | vettore | matrice | matrice rada
Impostazione predefinita: '1'

Specificare il vettore di stato iniziale.

Limitazioni

Le condizioni iniziali di questo blocco non possono essere inf o NaN.

Utilizzo programmatico

Parametro dei blocchi: InitialCondition
Tipo: vettore di caratteri, stringa
Valori: scalare | vettore
Impostazione predefinita: '0'

In alternativa, utilizzare X0.

Livello di capacità di sincronizzazione delle matrici stato-spazio (A, B, C e D) per modalità di simulazione in accelerazione e simulazioni distribuite utilizzando Simulink Compiler™. Quando è impostato su Auto, Simulink sceglie il livello di capacità di sincronizzazione dei parametri appropriato.

Per i coefficienti della matrice rada, impostare il parametro su Optimized per consentire la possibilità di sincronizzazione degli elementi diversi da zero mantenendo costanti il pattern e il numero degli elementi diversi da zero. Impostare questo parametro su Unconstrained per consentire la sincronizzazione di tutti gli elementi, purché il numero di elementi diversi da zero rimanga costante, ossia sia possibile modificare il pattern della matrice rada.

Per i coefficienti della matrice densa, selezionare Optimized per consentire la possibilità di sincronizzazione di tutti gli elementi della matrice, a condizione che il numero di elementi diversi da zero inizialmente specificati nella matrice rimanga costante. Impostare questo parametro su Unconstrained per consentire la possibilità di completa sincronizzazione di tutti gli elementi della matrice.

Nota

Per sincronizzare la matrice D del blocco quando D = 0, è necessario abilitare il parametro Allow non-zero values for D matrix initially specified as zero.

Utilizzo programmatico

Parametro dei blocchi: ParameterTunability
Tipo: vettore di caratteri | stringa
Valori: 'Auto' | 'Optimized' | 'Unconstrained'
Impostazione predefinita: 'Auto'

Abilitare questo parametro per supportare la possibilità di sincronizzazione di D anche quando D = 0.

Nota

L'abilitazione di questo parametro consente il feedthrough diretto per il blocco State-Space.

Utilizzo programmatico

Parametro dei blocchi: AllowTunableDMatrix
Tipo: vettore di caratteri | stringa
Valori: 'off' | 'on'
Impostazione predefinita: 'off'

I risolutori a passo variabile utilizzano tolleranze assolute e relative nella scelta della dimensione del passo per determinare se l'errore nei calcoli di stato è accettabile.

Per ereditare la tolleranza assoluta dal parametro di configurazione Absolute tolerance specificare questo valore del parametro come auto o -1.

Per specificare una tolleranza assoluta per questo blocco che sovrascriva il valore specificato per il parametro di configurazione Absolute tolerance:

  • Inserire un valore scalare reale e positivo da utilizzare per calcolare tutti gli stati del blocco.

  • Inserire un vettore reale con dimensioni che corrispondono alle dimensioni degli stati continui del blocco.

Utilizzo programmatico

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

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

Parametro: AbsoluteTolerance
Valori: 'auto' (predefinito) | '-1' | positive real scalar number | vector of positive real scalar numbers
Tipi di dati: char | string

Esempio set_param("MyModel/Descriptor State-Space",AbsoluteTolerance="-1")

Utilizzare questo parametro per assegnare opzionalmente nomi agli stati di questo blocco. I nomi assegnati si applicano solo agli stati di questo blocco.

  • Per utilizzare i nomi predefiniti degli stati, lasciare in bianco questo campo ('').

  • Per assegnare un singolo nome a un singolo stato, inserire il nome tra virgolette. Ad esempio, per assegnare un nome a un singolo stato position, inserire 'position'.

  • Per assegnare nomi a più stati, specificare questo valore del parametro come array di celle di vettori di caratteri. Ogni nome nell'array di celle deve essere univoco. Ad esempio, per assegnare i nomi a, b e c, inserire {'a','b','c'}.

  • Per specificare i nomi utilizzando una variabile MATLAB, inserire il nome della variabile senza virgolette. Ad esempio, per utilizzare la variabile names per specificare i nomi degli stati, inserire names.

È possibile specificare un numero di nomi inferiore rispetto al numero di stati presenti nel blocco. In questo caso, i nomi degli stati vengono utilizzati per più stati e il numero di stati deve essere divisibile in modo equo per il numero di nomi degli stati. Ad esempio, quando si specificano due nomi per un blocco che presenta quattro stati, il primo nome viene utilizzato per i primi due stati e il secondo nome per gli ultimi due stati.

Utilizzo programmatico

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

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

Parametro: ContinuousStateAttributes
Valori: '' (predefinito) | valid MATLAB variable name
Tipi di dati: char | string | cell

Esempio set_param("MyModel/Descriptor State-Space",ContinuousStateAttributes={'position','velocity'})

Caratteristiche del blocco

Tipi di dati:

double

Passaggio diretto

Segnali multidimensionali

no

Segnali di dimensioni variabili

no

Rilevamento zero-crossing

no

Funzionalità estese

espandi tutto

Cronologia versioni

Introduzione prima di R2006a