Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Modéliser et valider un système

Modélisez chaque composant dans la structure du système pour représenter le comportement physique ou fonctionnel de ce composant. Vérifiez les comportements de base des composants en les simulant avec des données de test.

Ouvrir le modèle du système

Une vue d'ensemble de la structure du système est utile lors de la modélisation des composants individuels. Commencez par charger le modèle de la structure. Sur la ligne de commande MATLAB, saisissez :

open_system('system_layout.slx')

Modéliser les composants

Un modèle Simulink® d'un composant est basé sur plusieurs points d'initialisation :

  • Une relation mathématique explicite entre la sortie et l'entrée d'un composant physique — Vous pouvez calculer les sorties du composant à partir des entrées, directement ou indirectement, via des calculs algébriques et l'intégration d'équations différentielles. Par exemple, le calcul du niveau d'eau dans un réservoir compte tenu du débit d'entrée est une relation explicite. Chaque bloc Simulink s'exécute à partir de la définition des calculs depuis ses entrées vers ses sorties.

  • Une relation mathématique implicite entre les variables du modèle d'un composant physique — Comme les variables sont interdépendantes, l'affectation d'une entrée et d'une sortie au composant n'est pas simple. Par exemple, la tension à l'extrémité + d'un moteur connecté dans un circuit et la tension à l'extrémité - ont une relation implicite. Pour modéliser une telle relation dans Simulink, vous pouvez utiliser des outils de modélisation physique tels que Simscape™ ou modéliser ces variables comme faisant partie d'un composant plus important qui permet la définition des entrées et des sorties. Parfois, un examen plus approfondi des objectifs de modélisation et des définitions des composants aide à définir les relations entrée/sortie.

  • Les données obtenues à partir d'un système réel — Vous avez mesuré les données d'entrée/sortie du composant réel, mais il n'existe aucune relation mathématique totalement définie. De nombreux appareils disposent de composants non modélisés qui correspondent à cette description. Par exemple, la chaleur dissipée par un téléviseur. Vous pouvez utiliser System Identification Toolbox™ pour définir la relation entrée/sortie d'un tel système.

  • Une définition fonctionnelle explicite — Définissez les sorties d'un composant fonctionnel à partir des entrées via des calculs algébriques et logiques. Par exemple, la logique de commutation d'un thermostat. Vous pouvez modéliser la plupart des relations fonctionnelles sous forme de blocs et de sous-systèmes Simulink.

Ce tutoriel permet de modéliser les composants physiques et fonctionnels avec des relations entrée/sortie explicites. Dans ce tutoriel, vous allez effectuer les tâches suivantes :

  1. Utilisez les équations du système pour créer un modèle Simulink.

  2. Ajoutez et connectez des blocs Simulink dans l'éditeur Simulink. Les blocs représentent les coefficients et les variables des équations.

  3. Créez le modèle pour chaque composant séparément. La façon la plus efficace de créer le modèle d'un système est de prendre en compte les composants de manière indépendante.

  4. Commencez par créer des modèles simples à l'aide d'approximations du système. Identifiez les hypothèses qui peuvent affecter la précision de votre modèle. Ajoutez des détails de manière itérative jusqu'à ce que le niveau de complexité réponde aux exigences de modélisation et de précision.

Modéliser les composants physiques

Décrivez les relations entre les composants, par exemple le transfert de données, d'énergie et de force. Utilisez les équations du système pour créer un modèle graphique du système dans Simulink.

Voici quelques questions à vous poser avant de commencer à modéliser un composant :

  • Quelles sont les constantes de chaque composant ? Quelles valeurs ne changent pas à moins qu'elles soient modifiées ?

  • Quelles sont les variables de chaque composant ? Quelles valeurs changent au fil du temps ?

  • Combien de variables d'état un composant possède-t-il ?

Dérivez les équations pour chaque composant en utilisant des principes scientifiques. De nombreuses équations du système se divisent en trois catégories :

  • Pour les systèmes continus, les équations différentielles décrivent le taux de changement des variables et elles sont définies pour toutes les valeurs de temps. Par exemple, une équation différentielle de premier ordre donne la vitesse d'une voiture :

    dv(t)dt=bmv(t)+u(t)

  • Pour les systèmes discrets, les équations aux différences décrivent le taux de changement des variables, mais elles ne sont définies qu'à des moments spécifiques. Par exemple, le signal de commande d'un contrôleur proportionnel dérivé discret :

    pd[n]=(e[n]e[n1])Kd+e[n]Kp

  • Les équations sans dérivées sont des équations algébriques. Par exemple, une équation algébrique donne le courant total dans un circuit parallèle comprenant deux composants :

    It=Ia+Ib

Roues et mouvement linéaire.  Deux forces agissent sur une roue :

  • La force appliquée par le moteur — La force F agit dans la direction du changement de vitesse et est une entrée des sous-systèmes des roues.

  • La force de traînée — La force Fdrag agit contre la direction du changement de vitesse et est une fonction de la vitesse.

    Fdrag=kdragV|V|

L'accélération est proportionnelle à la somme de ces forces :

(m/2)V˙=FFdrag(m/2)V˙=FkdragV|V|V˙=FkdragV|V|(m/2)

kdrag est le coefficient de traînée et m la masse du robot. Chaque roue porte la moitié de cette masse.

Créez le modèle de roue :

  1. Dans le modèle system_layout, double-cliquez sur le sous-système Right Wheel pour afficher le sous-système vide.

  2. Modélisez la vitesse et l'accélération. Ajouter un bloc Integrator. Laissez la condition initiale définie à 0. L'entrée de ce bloc est l'accélération Vdot et la sortie est la vitesse V.

  3. Modélisez la force de traînée. Ajoutez un bloc MATLAB Function de la bibliothèque User-Defined Functions. Le bloc MATLAB Function offre un moyen rapide d'implémenter des expressions mathématiques dans votre modèle. Pour modifier la fonction, double-cliquez sur le bloc pour ouvrir l'éditeur MATLAB Function.

  4. Définissez les arguments du bloc MATLAB Function. Dans l'éditeur de bloc MATLAB Function, cliquez sur le bouton Edit Data . Cliquez sur k_drag, définissez Scope sur Parameter, puis cliquez sur Apply.

  5. Soustrayez la force de traînée de la force motrice avec le bloc Subtract. Complétez l'équation force-accélération par un bloc Gain dont le paramètre est 1/(m/2).

  6. Pour inverser la direction du bloc MATLAB Function, sélectionnez le bloc. Dans la barre d'outils, dans l'onglet Format, cliquez sur Flip left-right Flip left-right button. Connectez les blocs.

  7. La dynamique des deux roues est la même. Copiez le sous-système Right Wheel que vous venez de modéliser et collez-le dans le sous-système Left Wheel.

  8. Affichez le niveau supérieur du modèle. Cliquez sur le bouton Navigate Up To Parent .

Mouvement de rotation.   Lorsque les deux roues tournent dans des directions opposées, elles se déplacent dans un cercle de rayon r, entraînant un mouvement de rotation du robot. Lorsque les roues tournent dans la même direction, il n'y a pas de rotation. En supposant que les vitesses des roues sont toujours égales en amplitude, il est utile de modéliser le mouvement de rotation en fonction de la différence de vitesses des deux roues VR et VL :

θ˙=VRVL2r

Créez le modèle de dynamique de rotation :

  1. Au niveau supérieur du modèle system_layout, double-cliquez sur le sous-système Rotation pour afficher le sous-système vide. Supprimez la connexion entre les blocs Inport et Outport.

  2. Modélisez l'angle et la vitesse angulaire. Ajouter un bloc Integrator. Laissez la condition initiale définie sur 0. La sortie de ce bloc est l'angle theta et l'entrée est la vitesse angulaire theta_dot.

  3. Calculez la vitesse angulaire à partir de la vitesse tangentielle. Ajoutez un bloc Gain dont le paramètre est 1/(2*r).

  4. Connectez les blocs.

  5. Affichez le niveau supérieur du modèle. Cliquez sur le bouton Navigate Up To Parent .

Modéliser les composants fonctionnels

Décrivez la fonction de son entrée à sa sortie. Cette description peut inclure des équations algébriques et des constructions logiques, que vous pouvez utiliser pour créer un modèle graphique du système dans Simulink.

Transformation des coordonnées.  La vitesse du robot aux coordonnées X et Y, VX and VY, est liée à la vitesse linéaire VN et à l'angle theta :

VX=VNcos(θ)VY=VNsin(θ)

Créez le modèle de transformation des coordonnées :

  1. Au niveau supérieur du modèle system_layout, double-cliquez sur le sous-système Coordinate Transform pour afficher le sous-système vide.

  2. Modélisez les fonctions trigonométriques. Ajoutez un bloc SinCos de la bibliothèque Math Operations.

  3. Modélisez les multiplications. Ajoutez deux blocs Product de la bibliothèque Math Operations.

  4. Connectez les blocs.

  5. Affichez le niveau supérieur du modèle. Cliquez sur le bouton Navigate Up To Parent .

Définir les paramètres du modèle

Les valeurs des paramètres du modèle peuvent provenir des sources suivantes :

  • Des spécifications écrites telles que des tables de propriétés standard ou des fiches techniques de fabricant

  • Des mesures directes sur un système existant

  • Des estimations utilisant les entrée/sortie du système

Ce modèle utilise les paramètres suivants :

ParamètreSymboleValeur
Massm2.5 kg
Rolling resistancek_drag30 Ns2/m
Robot radiusr0.15 m

Simulink utilise l'espace de travail MATLAB® pour évaluer les paramètres. Définissez les paramètres suivants dans la fenêtre de commande MATLAB :

m = 2.5;
k_drag = 30;
r = 0.15;

Valider les composants à l'aide de la simulation

Validez les composants en fournissant une entrée et en observant la sortie. Même une validation aussi simple peut mettre en avant des moyens immédiats d'améliorer le modèle. Cet exemple valide les comportements suivants :

  • Lorsqu'une force est appliquée en continu à une roue, la vitesse augmente jusqu'à ce qu'elle atteigne une vitesse en régime permanent.

  • Lorsque les roues tournent dans des directions opposées, l'angle de rotation augmente à une vitesse constante.

Valider le composant de roue

Créez et exécutez un modèle de test pour le composant de roue :

  1. Créez un nouveau modèle. Dans l'onglet Simulation, cliquez sur New . Copiez le bloc Right Wheel dans le nouveau modèle.

  2. Créez une entrée de test. Ajoutez un bloc Step de la bibliothèque Sources et connectez-le à l'entrée du bloc Right Wheel. Laissez le paramètre Step time défini sur 1.

  3. Ajoutez un Viewer à la sortie. Faites un clic droit sur le port de sortie du bloc Right Wheel et sélectionnez Create & Connect Viewer > Simulink > Scope.

  4. Exécutez la simulation. Dans l'onglet Simulation, cliquez sur Run .

Le résultat de la simulation présente le comportement général attendu. Il n'y a pas de mouvement jusqu'à ce que la force soit appliquée au temps du paramètre Step time. Lorsque la force est appliquée, la vitesse commence à augmenter, puis se stabilise à une constante lorsque la force appliquée et la force de traînée atteignent un équilibre. En plus de la validation, cette simulation fournit également des informations sur la vitesse maximale de la roue pour la force donnée.

Valider le composant de rotation

Créez et exécutez un modèle de test pour le modèle de rotation :

  1. Créez un nouveau modèle. Cliquez sur et copiez le bloc Rotation dans le nouveau modèle.

  2. Créez une entrée de test dans le nouveau modèle. Ajoutez un bloc Step de la bibliothèque Sources. Laissez le paramètre Step time défini sur 1. Connectez-le à l'entrée du bloc Rotation. Cette entrée représente la différence de vitesse des roues lorsque les roues tournent dans des directions opposées.

  3. Ajoutez un Viewer à la sortie. Faites un clic droit sur le port de sortie du bloc Rotation et sélectionnez Create & Connect Viewer > Simulink > Scope.

  4. Exécutez la simulation. Dans l'onglet Simulation, cliquez sur Run .

Cette simulation montre que l'angle augmente de façon constante lorsque les roues tournent à la même vitesse dans des directions opposées. Vous pouvez apporter quelques améliorations au modèle pour faciliter l'interprétation de la sortie Angle, par exemple :

  • Vous pouvez convertir la sortie de radians en degrés. Ajoutez un bloc Gain avec un gain de 180/pi.

  • Vous pouvez afficher la sortie en degrés par cycles de 360 degrés. Ajoutez un bloc Math Function avec la fonction mod.

Les fonctions trigonométriques MATLAB prennent des valeurs d'entrée en radians.

Valider le modèle

Une fois que vous avez validé les composants individuels, vous pouvez effectuer une validation similaire sur le modèle complet. Cet exemple valide le comportement suivant :

  • Lorsque la même force est appliquée aux deux roues dans la même direction, le robot se déplace en ligne droite.

  • Lorsque la même force est appliquée aux deux roues dans des directions opposées, le robot tourne sur place.

  1. Dans le modèle system_layout, double-cliquez sur le sous-système Inputs pour afficher le sous-système vide.

  2. Créez une entrée de test en ajoutant un bloc Step. Laissez le paramètre Step time défini sur 1. Connectez-le aux deux blocs Outport.

  3. Au niveau supérieur du modèle, connectez les deux signaux de sortie au même Viewer Scope :

  4. Exécutez le modèle.

    Dans cette figure, la ligne jaune correspond à la direction X et la ligne bleue à la direction Y. Comme l'angle est nul et ne change pas, le véhicule se déplace uniquement dans la direction X, comme prévu.

  5. Double-cliquez sur le sous-système Inputs et ajoutez un bloc Gain dont le paramètre est -1 entre la source et la deuxième sortie. Ceci inverse la direction de la roue gauche.

  6. Ajoutez un Scope à la sortie Angle.

  7. Exécutez le modèle.

    La première vue indique qu'il n'y a pas de mouvement dans le plan X-Y. La deuxième vue indique une rotation stable.

Vous pouvez utiliser ce modèle final pour répondre à de nombreuses questions sur le modèle en modifiant l'entrée. Par exemple :

  • Que se passe-t-il lorsque l'angle initial n'est pas nul ?

  • Combien de temps faut-il pour que le mouvement s'arrête lorsque la force devient nulle ?

  • Que se passe-t-il lorsque le robot est plus lourd ?

  • Que se passe-t-il lorsque le robot se déplace sur une surface plus lisse, c'est-à-dire lorsque le coefficient de traînée est inférieur ?

Sujets associés