Main Content

Concevoir un système dans Simulink

Le paradigme de l'approche Model-Based Design est centré sur les modèles des systèmes et des composants physiques, qui sont utilisés comme base pour les activités de design, de test et d'implémentation. Ce tutoriel vous permet de concevoir un nouveau composant et de l'ajouter à un modèle de système existant.

Ouvrir un modèle de système

Le modèle est un robot plat qui peut se déplacer ou tourner sur deux roues, comme un aspirateur-robot domestique. Ouvrez le modèle en saisissant ce qui suit sur la ligne de commande MATLAB® :

open_system('system_model.slx')

Ce tutoriel permet d'analyser ce système et de lui ajouter des fonctionnalités.

Identifier les composants à concevoir et les objectifs de design

La spécification de l'objectif de design est une première étape essentielle de la tâche de design. Même avec un système simple, il peut y avoir plusieurs objectifs de design, et parfois des objectifs concurrents. Examinons ces objectifs pour le modèle en exemple :

  • Concevoir un contrôleur qui fait varier la force en entrée de sorte que les roues tournent à la vitesse souhaitée.

  • Concevoir des entrées qui font déplacer l'appareil sur une trajectoire prédéterminée.

  • Concevoir un capteur et un contrôleur de manière à ce que l'appareil suive une ligne.

  • Concevoir un algorithme de planification de sorte que l'appareil atteigne un certain point en utilisant le chemin le plus court possible, tout en évitant les obstacles.

  • Concevoir un capteur et un algorithme de façon à ce que l'appareil se déplace sur une certaine zone tout en évitant les obstacles.

Ce tutoriel vous propose de concevoir un système d'alerte. Vous déterminerez les paramètres d'un capteur pour mesurer la distance à un obstacle. Un capteur parfait mesure précisément la distance à un obstacle. Un système d'alerte échantillonne ces mesures à intervalles fixes afin que la sortie se trouve toujours à moins de 0,05 m de la mesure. Le système génère une alerte à temps pour que le robot s'arrête avant de heurter l'obstacle.

Analyser le comportement du système avec la simulation

Le design du nouveau composant nécessite l'analyse du mouvement linéaire du robot pour déterminer :

  • La distance que le robot peut parcourir à la vitesse maximale lorsque l'alimentation des roues est coupée

  • La vitesse maximale du robot

Exécutez le modèle avec une force d'entrée qui démarre le mouvement, attend que le robot atteigne une vitesse constante, et revient à une valeur égale à zéro :

  1. Dans le modèle, cliquez deux fois sur le sous-système Inputs.

  2. Supprimez l'entrée Step existante et ajoutez un bloc Pulse Generator.

  3. Définissez les paramètres du bloc Pulse Generator :

    • Amplitude : 1

    • Period : 20

    • Pulse Width : 15

    Ces paramètres sont conçus pour garantir que la vitesse maximale est atteinte. Vous pouvez modifier les paramètres pour voir leur effet.

  4. Exécutez le modèle pendant 20 s.

La première visualisation Scope indique que la vitesse commence à diminuer rapidement lorsque l'alimentation est coupée au temps 3. La vitesse s'approche alors asymptotiquement de zéro mais ne l'atteint pas tout à fait. Il s'agit d'une limitation de la modélisation ; la dynamique à faible vitesse sans force externe nécessite une représentation plus complexe. Toutefois, il est possible d'effectuer des approximations pour notre objectif. Effectuez un zoom avant sur le signal de position.

Au temps 3, la position du robot est à environ 0,55 m. À la fin de la simulation, la position est inférieure à 0,71 m. On peut donc dire sans trop se tromper que le robot se déplace de moins de 0,16 m après la coupure de l'alimentation.

Pour trouver la vitesse maximale :

  1. Zoomez sur la zone stable de la vitesse en sortie (Speed) pour la période de temps de 1 à 3 s.

  2. Quittez le mode zoom en cliquant de nouveau sur le bouton de zoom. Cliquez sur le bouton Cursor Measurements .

  3. Définissez le deuxième curseur sur la zone où la courbe de vitesse est plate.

La colonne Value du panneau Cursor Measurements indique que la vitesse maximale du robot est de 0,183 m/s. Pour calculer le temps nécessaire au robot pour se déplacer de 0,05 m, divisez 0,05 m par 0,183 m/s. Vous obtenez 0,27 s.

Concevoir les composants et vérifier le design

Le design du capteur comprend les composants suivants :

  • Mesure de la distance entre le robot et l'obstacle — Cet exemple suppose que la mesure est parfaite.

  • Intervalle de temps auquel le système d'alerte mesure la distance — Pour maintenir l'erreur de mesure en dessous de 0,05 m, cet intervalle d'échantillonnage doit être inférieur à 0,27 s. Utilisez 0,25 s.

  • Distance à laquelle le capteur produit une alerte — L'analyse indique que le ralentissement doit commencer à 0,16 m de l'obstacle. La distance d'alerte réelle doit également prendre en compte l'erreur des mesures discrètes, 0,05 m.

Ajouter le composant à concevoir

Créez le capteur :

  1. Créez un sous-système contenant les ports indiqués.

  2. Créez le sous-système Distance measurement. Dans le bloc Sensor Model, utilisez les blocs Subtract, Math Function avec la fonction magnitude^2, Sum et Sqrt, comme indiqué. Notez la réorganisation des ports d'entrée.

  3. Modélisez l'échantillonnage. Ajoutez un bloc Zero-Order Hold de la bibliothèque Discrete au sous-système et définissez le paramètre Sample time à 0.25.

  4. Modélisez la logique d'alerte. Ajoutez un bloc Compare to Constant de la bibliothèque Logic and Bit Operations et définissez les paramètres suivants :

    • Operator: <=

    • Constant Value: 0.21

    • Output data type: boolean

    Ce bloc logique définit sa sortie sur 1 lorsque son entrée est inférieure ou égale à 0.21.

  5. Terminez la connexion des blocs.

Vérifier le design

Testez le design avec une position d'obstacle définie à X = 0.65, Y = 0 en utilisant des blocs Constant comme entrées du sous-système Sensor model. Ce test vérifie les fonctionnalités de design dans la direction des X. Vous pouvez créer des tests similaires pour différentes trajectoires. Ce modèle génère uniquement une alerte. Il ne contrôle pas le robot.

  1. Définissez la position de l'obstacle. Ajoutez deux blocs Constant de la bibliothèque Sources et définissez les valeurs constantes à 0.65 et 0. Connectez la position en sortie du robot aux entrées du capteur.

  2. Ajoutez une visualisation Scope à la sortie Alert.

  3. Exécutez le modèle.

Observez que l'état de l'alerte devient 1 une fois que la position du robot se trouve à moins de 0,21 m de la position de l'obstacle et que les exigences de design de ce composant sont satisfaites.

Pour les systèmes réels présentant des composants complexes et des exigences formelles, la gamme de produits Simulink® inclut des outils supplémentaires pour affiner et automatiser le processus de design. Requirements Toolbox™ offre des outils permettant de définir formellement les exigences et de les associer aux composants du modèle. Simulink Control Design™ peut faciliter le design si vous souhaitez créer un contrôleur pour ce robot. Les produits Simulink Verification and Validation™ établissent un cadre formel pour tester les composants et les systèmes.

Sujets associés