Contenu principal

State-Space

Implémenter un système de représentation d’état linéaire

  • State-Space block

Bibliothèques :
Simulink / Continuous

Description

Le bloc State-Space implémente un système dont vous définissez le comportement comme

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

x est le vecteur d’état, u le vecteur d’entrée, y le vecteur de sortie et x0 la condition initiale du vecteur d’état. Les matrices A, B, C et D peuvent être spécifiées comme des matrices creuses ou comme des matrices denses. Les coefficients de la matrice doivent présenter les caractéristiques suivantes :

  • A doit être une matrice n x n, où n est le nombre d’états.

  • B doit être une matrice n x m, où m est le nombre d’entrées.

  • C doit être une matrice r x n, où r est le nombre de sorties.

  • D doit être une matrice r x m.

En général, le bloc possède un port d’entrée et un port de sortie. Le nombre de lignes dans la matrice C ou D est le même que la largeur du port de sortie. Le nombre de colonnes dans la matrice B ou D est le même que la largeur du port d’entrée. Si vous souhaitez modéliser un système linéaire autonome sans entrées, définissez les matrices B et D comme vides. Le bloc agit alors comme un bloc source sans port d’entrée et avec un port de sortie, et il implémente le système suivant :

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

Pour une multiplication efficace, le logiciel Simulink® convertit une matrice contenant des zéros en matrice creuse.

Exemples

Ports

Entrée(s)

développer tout

Vecteur d’entrée à valeur réelle de type double, où la largeur est égale au nombre de colonnes dans les matrices B et D. Pour plus d’informations, consultez Description.

Types de données : double

Sortie(s)

développer tout

Vecteur de sortie à valeur réelle de type de données double, avec une largeur égale au nombre de lignes dans les matrices C et D. Pour plus d’informations, consultez Description.

Types de données : double

Paramètres

développer tout

Spécifiez le coefficient de la matrice A comme une matrice n x n à valeur réelle, où n est le nombre d’états. Pour plus d’informations sur les coefficients de matrice, consultez Description.

Utilisation programmatique

Paramètre de bloc : A
Type : vecteur de caractères, chaîne de caractères
Valeurs : scalaire | vecteur | matrice | matrice creuse
Par défaut : '1'

Spécifiez le coefficient de la matrice B comme une matrice n x m à valeur réelle, où n est le nombre d’états et m le nombre d’entrées. Pour plus d’informations sur les coefficients de matrice, consultez Description.

Utilisation programmatique

Paramètre de bloc : B
Type : vecteur de caractères, chaîne de caractères
Valeurs : scalaire | vecteur | matrice | matrice creuse
Par défaut : '1'

Spécifiez le coefficient de la matrice C comme une matrice r x n à valeur réelle, où r est le nombre de sorties et n le nombre d’états. Pour plus d’informations sur les coefficients de matrice, consultez Description.

Utilisation programmatique

Paramètre de bloc : C
Type : vecteur de caractères, chaîne de caractères
Valeurs : scalaire | vecteur | matrice | matrice creuse
Par défaut : '1'

Spécifiez le coefficient de la matrice D comme une matrice r x m à valeur réelle, où r est le nombre de sorties et m le nombre d’entrées. Pour plus d’informations sur les coefficients de matrice, consultez Description.

Utilisation programmatique

Paramètre de bloc : D
Type : vecteur de caractères, chaîne de caractères
Valeurs : scalaire | vecteur | matrice | matrice creuse
Par défaut : '1'

Spécifiez le vecteur d’état initial.

Limitations

Les conditions initiales de ce bloc ne peuvent pas être inf ni NaN.

Utilisation programmatique

Paramètre de bloc : InitialCondition
Type : vecteur de caractères, chaîne de caractères
Valeurs : scalaire | vecteur
Par défaut : '0'

Vous pouvez également utiliser X0.

Niveau de réglage des matrices de représentation d’état (A, B, C et D) pour les modes de simulation accélérée et les simulations déployées à l’aide de Simulink Compiler™. Lorsque vous le définissez sur Auto, Simulink choisit le niveau de réglage approprié pour les paramètres.

Pour les coefficients de la matrice creuse, définissez le paramètre sur Optimized pour autoriser le réglage des éléments non nuls tout en maintenant constants le diagramme et le nombre d’éléments non nuls. Définissez ce paramètre sur Unconstrained pour autoriser tous les éléments à être réglables, à condition que le nombre d’éléments non nuls soit maintenu constant, c’est-à-dire que vous puissiez modifier le diagramme de la matrice creuse.

Pour les coefficients de la matrice dense, sélectionnez Optimized pour autoriser le réglage de tous les éléments de la matrice, à condition que le nombre d’éléments non nuls initialement spécifiés dans la matrice soit maintenu constant. Définissez ce paramètre sur Unconstrained pour autoriser le réglage total de tous les éléments de la matrice.

Remarque

Pour régler la matrice D du bloc lorsque D = 0, vous devez activer le paramètre Allow non-zero values for D matrix initially specified as zero.

Utilisation programmatique

Paramètre de bloc : ParameterTunability
Type : vecteur de caractères | chaîne de caractères
Valeurs : 'Auto' | 'Optimized' | 'Unconstrained'
Par défaut : 'Auto'

Activez ce paramètre pour supporter le réglage de D, y compris lorsque D = 0.

Remarque

L’activation de ce paramètre active la traversée directe (direct feedthrough) pour le bloc State-Space.

Utilisation programmatique

Paramètre de bloc : AllowTunableDMatrix
Type : vecteur de caractères | chaîne de caractères
Valeurs : 'off' | 'on'
Par défaut : 'off'

Les solveurs à pas variable utilisent des tolérances absolues et relatives lors du choix de la taille de pas pour déterminer si l’erreur des calculs d’état est acceptable.

Pour que la tolérance absolue soit héritée du paramètre de configuration Absolute tolerance, spécifiez la valeur auto ou -1 pour ce paramètre.

Pour spécifier pour ce bloc une tolérance absolue qui remplace la valeur du paramètre de configuration Absolute tolerance :

  • Saisissez une valeur scalaire réelle positive à utiliser pour le calcul de tous les états du bloc.

  • Saisissez un vecteur réel dont les dimensions correspondent à celles des états continus du bloc.

Utilisation programmatique

Pour définir la valeur du paramètre du bloc de manière programmatique, utilisez la fonction set_param.

Pour obtenir la valeur du paramètre du bloc de manière programmatique, utilisez la fonction get_param.

Paramètre : AbsoluteTolerance
Valeurs : 'auto' (par défaut) | '-1' | positive real scalar number | vector of positive real scalar numbers
Types de données : char | string

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

Utilisez ce paramètre pour attribuer des noms aux états de ce bloc, si vous le souhaitez. Les noms que vous attribuez ne s’appliquent qu’aux états de ce bloc.

  • Pour utiliser les noms d’état par défaut, laissez ce champ vide ('').

  • Pour attribuer un seul nom à un seul état, saisissez le nom entre guillemets. Par exemple, pour attribuer le nom position à un seul état, saisissez 'position'.

  • Pour attribuer des noms à plusieurs états, spécifiez la valeur du paramètre sous forme de cell array de vecteurs de caractères. Chaque nom du cell array doit être unique. Par exemple, pour attribuer les noms a, b et c, saisissez {'a','b','c'}.

  • Pour spécifier les noms avec une variable MATLAB, saisissez le nom de la variable sans guillemets. Par exemple, pour utiliser la variable names pour spécifier les noms d’état, saisissez names.

Vous pouvez spécifier un nombre de noms inférieur au nombre d’états du bloc. Dans ce cas, les noms d’état sont utilisés pour plusieurs états et le nombre d’états doit pouvoir être réparti uniformément entre le nombre de noms d’état. Par exemple, si vous spécifiez deux noms pour un bloc ayant quatre états, le premier nom est utilisé pour les deux premiers états et le second nom est utilisé pour les deux derniers états.

Utilisation programmatique

Pour définir la valeur du paramètre du bloc de manière programmatique, utilisez la fonction set_param.

Pour obtenir la valeur du paramètre du bloc de manière programmatique, utilisez la fonction get_param.

Paramètre : ContinuousStateAttributes
Valeurs : '' (par défaut) | valid MATLAB variable name
Types de données : char | string | cell

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

Caractéristiques des blocs

Types de données

double

Traversée directe

oui

Signaux multidimensionnels

non

Signaux de taille variable

non

Détection des passages à zéro

non

Capacités étendues

développer tout

Historique des versions

Introduit avant R2006a