Réserver une Démo
Pré. Proc.

Statemachine Solveur de machine d'état

Cette rubrique fournit quelques exemples simples d'où et comment appliquer Solveurs dans Statemachine Simulations, ce qui inclut l'utilisation de scripts dans les opérations Statemachine ainsi que dans les connecteurs de transition. Les images de cette rubrique montrent des exemples d'Octave Solveur ; cependant, sauf indication contraire, le même script peut être utilisé pour MATLAB dans MATLAB Solveur .

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.

Affectation de valeurs et exécution de commandes

Pour assigner une valeur , utilisez la fonction octave.set() ou matlab.set().

Pour les Statemachines la méthode peut être placée dans l'Effet d'une Transition ou dans le Comportement (Entrée/Faire/Sortie) d'une opération.

Pour modifier l'effet d'une transition, vous utilisez la page 'Contraintes' de la boîte de dialogue ' Propriétés '.

Pour placer la méthode dans une opération, ouvrez le script Behavior de l'opération :

  1. Créez une nouvelle opération d'Entrée dans l' State depuis le diagramme ou la fenêtre du Navigateur , en faisant un clic droit sur l'élément et en sélectionnant l'option de menu contextuel ' Fonctionnalités > Opérations'.
  2. Cliquez sur la nouvelle opération d'entrée et appuyez sur Alt + 7.
Cela ouvrira le script de comportement dans l'éditeur.

Lors de l'exécution de commandes MATLAB ou Octave à l'aide de la fonction .exec(), les commandes peuvent être placées dans le script Effet de la transition ou 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, en ce sens qu'il est défini dans la garde de la transition sortante
  • L'exemple montre une simulation au Point d'Arrêt réglé sur State3

Obtenir des résultats

Lorsque vous renvoyez les résultats d'appels de fonctions externes, vous pouvez utiliser la Solveur get() du Solveur pour renvoyer les résultats dans le script. Il existe trois options clés pour fournir ensuite les résultats du script à l'utilisateur :

  • Trace()
  • Terrain
  • Affichage Win32
Avec les options Trace et Win32, vous devez renvoyer une copie locale dans votre JavaScript , à l'aide de la Solveur () du Solveur . À titre d'exemple d'utilisation de la commande .get(), consultez la garde dans l'image précédente.

Utilisation du traçage

La commande Trace() est utile lors de la première é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 tracés

Octave et MATLAB mettent fortement l'accent sur la capacité à générer un tracé, car il s'agit d'une méthode clé pour produire des résultats. Pour générer un tracé, vous utilisez la Solveur () du Solveur pour appeler une fonction de génération de tracé.

Tenir le complot

Lors de l'exécution d'un tracé dans une simulation, si la simulation n'est pas interrompue, le tracé ne sera visible que pendant un bref instant. Ainsi, pour Statemachines , il existe deux options pour suspendre le flux pendant la visualisation du tracé :

  1. Utilisation de l'uiwait 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');
  2. Définition d'une séquence de déclencheur/événement pour interrompre la simulation dans une transition hors de l' State où le tracé a été généré. Dans le cas de l'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 Événements de Simulation 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 à effectuer sont :

  • Créer une boîte de dialogue Win32
  • Définir une ligne de script pour ouvrir le dialogue
  • Obtenir une valeur d'un champ dans le dialogue
  • Passer cette valeur au solveur
  • Utiliser un bouton pour déclencher l'intrigue
Les étapes pour configurer une interface Win32 sont :
  • Créez un 'Starter Win32 Model' à l'aide de l' Page Démarrage 'Create from Motif ' ( Assistant de Modèle ) - sélectionnez l'ensemble de perspectives 'UX Design' et la perspective 'Win32 UI Models'
  • Changez le nom de <<Win32 Screen Dialog>> en 'ScreenA'
  • Remplacez le nom de "Modifier le contrôle A" par quelque chose de plus significatif, tel que "terminer"
  • Cliquez sur State1 et appuyez sur Alt+7 pour ajouter - dans le script Entry Operation - un appel pour ouvrir le dialogue :
    dialogue . ÉcranA . Afficher = vrai ;
Pour obtenir une valeur d'entrée utilisateur valide, l'utilisateur doit cliquer sur le bouton OK , donc à partir du bouton OK , vous devez diffuser un événement pour qu'un déclencheur démarre le processus. Pour recevoir le déclencheur, vous devez avoir un signal et définir une transition à déclencher par cette diffusion vers le signal.

Reportez-vous aux é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 tôt. Dans ce cas, nous définissons la même transition, mais pour un nouveau déclencheur appelé 'Plot'. Ceci envoie un BroadcastSignal('Plot') en utilisant le OnClick Valeur Étiquetée sur un bouton :

La transition sortant de State1 est configurée pour être déclenchée par le BroadcastSignal :

Sur la transition, vous devez créer un déclencheur, définir le type de déclencheur sur Signal et créer le signal. Pour plus de détails voir la rubrique d'aide Simulation d'Interface Utilisateur Win32 .

Le script pour exécuter le tracé 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 Win32 OK et envoyé le déclencheur Plot. Donc on 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 heure de fin = 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 également le nombre de secondes à tracer :
    octave.exec( 'script' , 't = 0:0.1:' + heureFin+ ';' );
Cela donne deux States avec les scripts dans les opérations d'entrée :

Exécution de la Simulation

Pour exécuter la simulation :

  • Sélectionnez le ruban Simuler et cliquez sur ' Exécuter Simulation > Début '
Lorsque vous saisissez une valeur et que vous cliquez sur le bouton OK , cela renvoie :

Apprendre encore plus