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

Simulez le modèle avec un signal de 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, double-cliquez 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 suivants pour le 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. Simulez le modèle pendant 20 secondes.

    Pour analyser les résultats de la simulation, consultez les signaux connectés aux scopes dans le modèle.

    Le premier scope indique que la vitesse du robot diminue rapidement une fois que l'impulsion représentant la force d'entrée devient nulle à un temps de simulation de 3 secondes. La vitesse s'approche asymptotiquement de zéro mais ne l'atteint jamais tout à fait. La modélisation précise d'une dynamique à faible vitesse sans forces externes nécessite une représentation beaucoup plus complexe du système. Toutefois, cette représentation approximative suffit à nos besoins actuels.

    The scope shows the speed of the robot over the 20 second simulation.

    Le deuxième scope indique la position du robot au cours de la simulation. Au départ, cette position change plus rapidement. Une fois que le temps de simulation atteint environ 3 secondes, la position change plus lentement à mesure que la vitesse du robot diminue.

    The scope shows the position of the robot over the 20 second simulation.

Zoomez sur le tracé du scope qui indique la position du robot. Au temps 3, la position du robot est à environ 0.55 m. À la fin de la simulation, la position du robot est à environ 0.7 m. Comme la vitesse est très proche de zéro à la fin de la simulation, les résultats indiquent que le robot se déplace de moins de 0.16 m une fois que la force externe devient nulle.

The scope shows a closer view of the robot position over the 20 second simulation. The maximum value on the y-axis is 0.7.

Pour trouver la vitesse maximale :

  1. Zoomez sur la zone plate du signal de vitesse pour la période de temps de 1 à 3 s.

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

  3. Cliquez sur « Cursor Measurements » .

  4. Positionnez le deuxième curseur sur la zone où la courbe de vitesse est plate.

    The scope shows a closely zoomed view of the robot speed in the part of the simulation where the pulse signal is high. The cursor measurements panel is shown in the Scope window to the right of the plot.

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 un résultat de 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 entre chaque mesure de distance effectuée par le système d'alerte — Pour maintenir l'erreur de mesure en dessous de 0,05 m, l'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 lorsque le robot est à environ 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 avec quatre ports d'entrée et un port de sortie. Le sous-système reçoit des données d'entrée correspondant aux coordonnées x et y du robot et aux coordonnées x et y de l'obstacle. Le signal d'alerte produit par le capteur est connecté au port de sortie.

    The view of the sensor subsystem in the parent diagram shows the input and output ports.

  2. Créez le sous-système Distance measurement. Dans le sous-système Sensor model, utilisez le bloc Subtract, le bloc Math Function avec la fonction magnitude^2 et les blocs Sum et Sqrt pour implémenter le calcul de la distance. Notez qu'il n'est pas nécessaire que les ports d'entrée du sous-système soient organisés de la même manière que les ports de l'interface du bloc Subsystem.

    Blocks inside the subsystem that represents the sensor implement the distance calculation.

  3. Pour modéliser l'échantillonnage, ajoutez au sous-système un bloc Zero-Order Hold de la bibliothèque Discrete et définissez le paramètre Sample time du bloc à 0.25.

  4. Connectez le résultat du calcul de la distance à l'entrée du bloc Zero-Order Hold.

  5. Pour modéliser la logique d'alerte, ajoutez un bloc Compare to Constant de la bibliothèque Logic and Bit Operations et définissez les paramètres de bloc suivants :

    • Operator: <=

    • Constant Value: 0.21

    • Output data type: boolean

    Avec ces valeurs de paramètres, la valeur de sortie du bloc est 1 lorsque la valeur d'entrée est inférieure ou égale à 0.21.

  6. Connectez la sortie du bloc Zero-Order Hold à l'entrée du bloc Compare to Constant.

  7. Enfin, connectez la sortie du bloc Compare to Constant au bloc Outport nommé Alert.

    The block diagram shows the contents of the subsystem that models the sensor.

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.

    The view of the top model shows the floating scope added to the Alert output of the subsystem that represents the sensor.

  3. Simulez le modèle.

Le tracé de la position du robot dans le scope est identique à celui de l'exécution précédente.

The scope shows the position of the robot over the 20 second simulation.

Le scope connecté au signal d'alerte indique que la valeur de ce signal passe à 1 lorsque le robot se trouve à 0.21 m ou moins de l'obstacle, ce qui satisfait aux exigences de design de ce composant.

The scope shows the value of the alert signal over the 20 second simulation.

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