Pré. | Proc. |
Exemples Solveur Statemachine
Cette rubrique fournit quelques exemples simples d'utilisation et de mise en œuvre Solveurs dans les simulations Statemachine , notamment l'utilisation de scripts dans les opérations Statemachine ainsi que dans les connecteurs de transition. Les images de cette rubrique montrent des exemples Solveur Octave. Cependant, sauf indication contraire, le même script peut être utilisé pour MATLAB dans le Solveur MATLAB.
Initialisation du Solveur
Le script d'initialisation d'un Solveur dans une Statemachine peut être placé soit dans l'Effet d'une Transition, soit dans l'Opération d'Entrée d'un State . Il est généralement placé dans l'Effet de la première Transition sortant de l'Initial.
Attribution de valeurs et exécution de commandes
Pour attribuer une valeur , utilisez la fonction octave.set() ou matlab.set().
Pour Statemachines la méthode peut être placée dans l'effet d'une transition ou dans le comportement (entrée/do/sortie) d'une opération.
Pour éditer l'effet d'une transition, utilisez la page « Contraintes » de la dialogue « Propriétés ».
Pour placer la méthode dans une opération, ouvrez le script de comportement de l'opération :
- Créez une nouvelle opération d'entrée dans l' State à partir du diagramme ou de la fenêtre Navigateur , en cliquant avec le bouton droit sur l'élément et en sélectionnant l'option de menu contextuel « Fonctionnalités > Opérations ».
- Cliquez sur la nouvelle opération d’entrée et appuyez sur .
Lors de l'exécution de commandes MATLAB ou Octave à l'aide de la fonction .exec(), les commandes peuvent être placées dans l'effet de la transition ou dans le script de comportement de l'opération.
Branchement conditionnel
Lors de l'utilisation d'un branchement conditionnel dans une Statemachine , la condition peut être placée dans la garde d'une transition et peut contenir un script appelant des fonctions MATLAB ou Octave. Par exemple :
Note :
- La condition peut également être définie à l'aide d'un choix ; le placement de l'énoncé de condition est le même, dans la mesure où il est défini dans la garde de la transition sortante.
- L'exemple montre une simulation au Point d'Arrêt situé sur l'état 3
Obtenir des résultats
Lorsque vous renvoyez les résultats des appels de fonctions externes, vous pouvez utiliser la fonction get() de Solveur pour renvoyer les résultats dans le script. Il existe trois options principales pour transmettre ensuite les résultats du script à l'utilisateur :
- Tracer()
- Parcelle
- Affichage Win32
Utilisation de Trace
La commande Trace() est utile lors de l'écriture et du débogage d'une simulation, car elle vous permet de vérifier les résultats de votre script à différentes étapes. Les résultats sont affichés dans la fenêtre Simulation .
Exécution de complots
Octave et MATLAB mettent l'accent sur la capacité à générer un tracé, car il s'agit d'une méthode clé pour générer des résultats. Pour générer un tracé, vous utilisez la fonction .exec() de Solveur pour appeler une fonction de génération de tracé.
Tenir le terrain
Lors de l'exécution d'un tracé dans une simulation, si la simulation n'est pas mise en pause, le tracé ne sera visible que pendant un bref instant. Ainsi, pour Statemachines , il existe deux options pour mettre en pause le flux pendant que le tracé est visualisé :
- Utilisation de l'interface utilisateur dans Octave ou MATLAB. Par exemple, cela peut être défini dans l'opération de sortie ou dans un effet de transition. Voici un exemple utilisant Octave :
octave.exec('script','uiwait');
- Définition d'une séquence Déclencheur /Evénement pour mettre en pause la simulation dans une transition en dehors de l' State où le tracé a été généré. Dans le cas d'exemple, il s'agit de la transition finale.
Pour progresser au-delà de la transition, vous pouvez soit :
- Cliquez sur le Déclencheur affiché dans la fenêtre Simulation Événements ou
- Utilisez un BroadcastSignal() à partir, par exemple, d'un bouton dans l'écran Win32 (ceci est abordé dans la section Utilisation de l'interface Win32 , ci-après)
Utilisation de l'interface Win32
Lors de l'utilisation de l'interface Win32, les grandes étapes à suivre sont les suivantes :
- Créer une dialogue Win32
- Définir une ligne de script pour ouvrir le dialogue
- Obtenir une valeur d'un champ dans le dialogue
- Transmettez cette valeur au solveur
- Utilisez un bouton pour déclencheur l'intrigue
- Créez un « modèle Win32 de démarrage » à l'aide du Constructeur de Modèle - sélectionnez l'ensemble de perspectives « Conception UX » et la perspective « Modèles UI Win32 »
- Changer le nom de la <<Dialogue d'écran Win32>> en « ScreenA »
- Remplacez le nom de « Contrôle d'édition A » par quelque chose de plus significatif, comme « Terminer »
- Cliquez sur State1 et appuyez sur
dialogue . ScreenA . Show = vrai ; pour ajouter - dans le script de l'opération d'entrée - un appel pour ouvrir le dialogue :
Consultez les étapes pour créer et définir le Déclencheur et le Signal « Fin », comme indiqué dans la section Utilisation d'un Déclencheur pour maintenir le tracé , plus haut. Dans ce cas, nous définissons la même transition, mais pour un nouveau Déclencheur appelé « Plot ». Cela consiste à envoyer un BroadcastSignal('Plot') en utilisant la Valeur Étiquetée OnClick sur un bouton :
La transition sortant de l'état 1 est configurée pour être déclenchée par le BroadcastSignal :
Sur la Transition, vous devez créer un Déclencheur , définir le Trigger-Type sur Signal et créer le Signal. Pour plus de détails, consultez la rubrique d'aide Simulation d'Interface Utilisateur Win32 .
Le script pour exécuter le plot sera dans l'opération Entry de State2. Pendant la simulation la transition vers State2 ne se produira qu'après avoir cliqué sur le bouton OK Win32 et envoyé le déclencheur Plot. On va donc maintenant :
- Ajoutez une opération d'entrée et ouvrez le comportement à l'aide de Alt+7
- Dans l'opération d'entrée de cet état, nous obtenons la valeur du champ en utilisant :
var Fin des Temps = dialog.ScreenA.finish.Text;
Cela définit une variable avec la valeur du dernier paramètre à envoyer à Octave pour le tracé - Dans l'instruction octave.exec(), nous plaçons la variable pour définir le nombre de secondes à tracer :
octave.exec( 'script' , 't = 0:0.1:' + finHeure+ ';' );
Exécution de la Simulation
Pour exécuter la simulation :
- Sélectionnez le ruban Simuler et cliquez sur ' Exécuter Simulation > Démarrer '