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

Génération de code - Statemachines

Une Statemachine illustre comment un object (représenté par une Classe) peut changer d'état, chaque changement d'état étant une transition initiée par un déclencheur issu d'un événement, souvent dans des conditions ou des contraintes définies comme des gardes. Lorsque vous modélisez la façon dont l' object change d'état, vous pouvez générer et construire (compiler) du code à partir de celui-ci dans le langage logiciel approprié et exécuter le code, en visualisant l'exécution via le simulateur de Modèle .

Il est également possible, dans Enterprise Architect , de combiner les Statemachines d'objets distincts mais liés pour voir comment ils interagissent (via Broadcast Événements ), et de créer et générer rapidement du code à partir de variantes du modèle. Par exemple, vous pouvez modéliser le comportement de :

  • La roue arrière hors-bord d'un véhicule en modes propulsion et traction avant (une Statemachine )
  • Le volant et les quatre roues motrices d'un véhicule en mode 4 roues motrices (cinq Statemachines )
  • Les roues d'un véhicule tout-terrain et d'une voiture de sport (deux Artifacts, instances d'une combinaison de Statemachines )
L'élément Statemachine Exécutable Artifact est d'une importance cruciale pour la génération et le test de code pour toutes ces options. Cela agit comme le conteneur et l'unité de génération de code pour vos modèles Statemachine .

Vous n'utilisez pas cette méthode pour générer du code pour les langages de définition matérielle, mais vous pouvez également générer à la fois du code HDL et du code logiciel à partir de Statemachines en utilisant les facilités génériques de génération de facilités dans Enterprise Architect (voir les procédures Générer Code Source ).

Conditions préalables

  • Sélectionnez 'Settings > Modèle > Options > Source Code Engineering' et, pour le langage de codage logiciel approprié (Java, C, C# ou ANSI C++), définissez l'option 'Use the new Statemachine Gabarit ' sur 'True'
  • Si vous travaillez en C++, sélectionnez 'Settings > Modèle > Options > Source Code Engineering > C++' et réglez l'option 'C++ Version' sur 'ANSI'
Cette méthode de génération de code ne s'applique pas aux gabarits Statemachine avant la version 11.0 d' Enterprise Architect , ni à la génération de code Hardware Definition Language.

Accéder

Faites glisser un artefact Statemachine Exécutable de la page ' Simulation ' de la boîte à outils Diagramme , sur votre diagramme . La page ' Simulation ' de la boîte à outils Diagramme est accessible à l'aide de l'une des méthodes décrites dans ce tableau .

Ruban

Conception > Diagramme > Boîte à outils > Simulation

Raccourcis Clavier

Ctrl+Maj+3 > Simulation

Autre

Vous pouvez afficher ou masquer la boîte à outils Diagramme en cliquant sur les icônes deChevron Right ou Chevron Left gauche à l'extrémité gauche de la barre de légende en haut de la Vue Diagramme .

Préparez votre ou vos diagramme Statemachine

Marcher

Action

Voir également

1

Pour chaque Statemachine que vous souhaitez modéliser, créez un diagramme de classe .

Ajouter de nouveaux Diagrammes

2

Depuis la page 'Classe' de la boîte à outils Diagramme , faites glisser l'icône 'Classe' sur votre diagramme et donnez à l'élément un nom approprié.

Créer des éléments

3

Cliquez-droit sur l'élément Classe et sélectionnez l'option 'Nouveau Diagramme Enfant | Option de menu contextuel Statemachine '.

Donnez au diagramme Statemachine un nom approprié.

4

Créez le modèle Statemachine pour refléter les transitions appropriées entre les States .

Statemachines

Configurer l'artefact Statemachine Exécutable

Marcher

Action

Voir également

1

Créez un nouveau diagramme de classe pour contenir la ou les Statemachine d'état modélisées à partir desquelles vous avez l'intention de générer du code.

Ajouter de nouveaux Diagrammes

2

Depuis la page ' Simulation ' de la boîte à outils Diagramme , faites glisser l'icône ' Statemachine Exécutable ' sur le diagramme pour créer l'élément Artifact. Nommez l'élément et faites glisser ses bordures pour l'agrandir.

Artefact

3

Depuis la fenêtre Navigateur , faites glisser le (premier) élément Class contenant un diagramme Statemachine sur l'élément Artifact du diagramme .

La boîte de dialogue 'Coller <nom de l'élément>' s'affiche. Dans le champ 'Drop as', cliquez sur la flèche déroulante et sélectionnez la valeur 'Property'.

(Si la le dialogue fichier ne s'affiche pas, appuyez sur Ctrl pendant que vous faites glisser l'élément Classe depuis la fenêtre du Navigateur .)

Déposer des éléments de la fenêtre du Navigateur

4

Cliquez sur le bouton OK . L'élément de classe est collé à l'intérieur de l'artefact en tant que pièce.

Partie

5

Répétez les étapes 3 et 4 pour toutes les autres classes avec Statemachines que vous souhaitez combiner et générer du code pour. Ceux-ci pourraient être :

  • Répétez les 'drops' de la même Class et Statemachine , en modélisation des objets parallèles
  • Différentes classes et Statemachines , modélisation d'objets en interaction séparés

6

Cliquez-droit sur l'élément Artefact et sélectionnez l'option ' Propriétés > Propriétés ', développez la catégorie 'Avancé' et, dans le champ 'Langue', cliquez sur la flèche déroulante et définissez la langue du code sur la même langue que celle-ci défini pour les éléments de classe.

Vous pouvez maintenant faire glisser cet Statemachine Exécutable Artifact de la fenêtre Navigateur sur le diagramme un certain nombre de fois, et modifier les parties pour modéliser des variations du système ou du processus, ou le même système ou processus avec différents langages de programmation.

Générer code de l'artefact

Marcher

Action

Voir également

1

Cliquez sur l' Statemachine Exécutable Artifact et sélectionnez l'option de ruban 'Simuler > États Statemachine États Exécutables Générer '.

La boîte de dialogue "Génération de code de Statemachine d'état exécutable" s'affiche.

2

Dans le champ "Répertoire de sortie du projet", saisissez ou recherchez le chemin du répertoire sous lequel créer les fichiers de sortie.

Lors de la génération du code, tous les fichiers existants dans ce répertoire sont supprimés.

3

Sélectionnez le système cible. Si vous utilisez Windows , sélectionnez l'option "Local". Si vous travaillez sous Linux, choisissez l'option 'Remote'. Le choix affecte les scripts générés pour prendre en support la Simulation .

4

Dans le champ "Emplacement du répertoire d'installation du <compilateur>", tapez ou recherchez le chemin du répertoire d'installation du compilateur, à mapper automatiquement sur le chemin local (affiché à gauche du champ). Pour chaque langage de programmation, les chemins peuvent ressembler à ces exemples :

  • Java
    JAVA_HOME C:\Program Files (x86)\Java\jdk1.7.0_17
  • C/C++
    VC_HOME C:\Program Files (x86)\Microsoft Visual Studio 9.0
  • C#
    CS_HOME C:\ Windows \Microsoft.NET\Framework\V3.5

5

Cliquez sur le bouton Générer . Les fichiers de code sont créés en fonction du langage de programmation.

La fenêtre System Output s'affiche avec un onglet ' Statemachine Exécutable Output', indiquant la progression et l'état de la génération.

Lors de la génération du code, une fonction de validation automatique est exécutée pour vérifier les erreurs de diagramme ou de modèle par rapport aux contraintes UML . Toutes les erreurs sont identifiées par des messages d'erreur dans l'onglet ' Statemachine Exécutable Output'.

Double-cliquez sur un message d'erreur pour afficher la structure de modélisation dans laquelle l'erreur se produit, et corrigez l'erreur avant de re-générer le code.

6

Lorsque le code se génère sans erreur, cliquez sur l'élément Artifact et sélectionnez l'option de ruban 'Simuler > États Statemachine États Exécutables Build' pour compiler le code.

La fenêtre System Output s'affiche avec un onglet « Build », indiquant la progression et l'état de la compilation. Notez que la compilation inclut la configuration de l'opération de simulation.

Macros de génération de code

Vous pouvez également utiliser deux macros dans la génération de code pour Statemachines .

Nom de la macro

Description

SEND_EVENT

Envoie un événement à un récepteur (la partie). Par exemple:

%SEND_EVENT("événement1", "Part1")%

DIFFUSER_ÉVÉNEMENT

Diffuser un événement à tous les récepteurs. Par exemple:

%BROADCAST_EVENT("événement2")%

Exécuter/simuler le code à partir de l'artefact

Marcher

Action

Voir également

1

Sélectionnez l'option du ruban 'Simuler > Simulation Dynamique > Simulateur > Appliquer l'espace de travail' pour afficher ensemble la fenêtre Simulation et la fenêtre Simulation Événements

Ancrez les deux fenêtres dans une zone pratique de l'écran.

Fenêtres de Simulation Fenêtre Événements Simulation

2

Sur la fenêtre du diagramme ou du Navigateur , cliquez sur l'élément Artefact et sélectionnez l'option de ruban 'Simuler > États Statemachine États Exécutables Exécuter '.

Le premier diagramme Statemachine de la série s'affiche avec la simulation du processus déjà démarrée. Dans la fenêtre Simulation , les étapes de traitement sont indiquées dans ce format :

[03516677] Part1[Class1].Initial_367_TO_State4_142 Effet

[03516683] Part1[Class1].StateMachine_State4 ENTRÉE

[03516684] Part1[Class1].StateMachine_State4 DO

[03518375] Bloqué

3

Cliquez sur les boutons appropriés de la barre d'outils de la fenêtre Simulation pour parcourir la simulation selon vos préférences.

Lorsque la simulation se termine à l'élément Quitter ou Terminer, cliquez sur le bouton Arrêter dans la barre d'outils de la fenêtre Simulation .

Exécuter Simulation de Modèle

4

Lorsque la trace affiche Bloqué, la simulation a atteint un point où un événement déclencheur doit se produire avant que le traitement puisse continuer. Dans la fenêtre Simulation Événements , dans la colonne ' Déclencheurs en Attente ', double-cliquez sur le Trigger approprié.

Lorsque le déclencheur est activé, la simulation continue jusqu'au prochain point de pause, déclencheur ou sortie.

Déclencheurs Déclencheurs en Attente

Notes

  • Si vous apportez de petites modifications à un modèle de Statemachine existant, vous pouvez combiner les opérations de génération de code, de construction et d'exécution en sélectionnant l'option de ruban "Simuler > États Exécutables Statemachine exécuter Générer , construire et exécuter ".
  • Vous pouvez également générer du code en JavaScript

Apprenez Plus