Skip to main content

Concevoir et développer

Lorsque vous programmez graphiquement dans le diagramme de classes, vos modifications entraînent automatiquement des adaptations pour les objets du POU voir et Dispositifs voir. De nouveaux objets sont insérés dans leur structure de base et les objets existants sont adaptés. Par exemple, vous pouvez insérer des déclarations dans les POU via le diagramme de classes.

Cela vous permet de concevoir l'architecture de votre application dans un diagramme de classes et d'obtenir les POU appropriés de manière synchrone. Ensuite, vous complétez les implémentations dans les POU.

Les étapes suivantes créent un diagramme de classes pour une application.

1. Créer un projet

  1. Ouvrir CODESYS.

  2. Cliquez sur Fichier → Nouveau projet.

  3. Spécifiez le nom et l'emplacement, puis sélectionnez le Projet standard modèle.

    le Projet standard la boîte de dialogue s'ouvre.

  4. Pour PLC_PRG dans, sélectionnez le Texte structuré (ST) langage d'implémentation.

    Le projet est créé.

  5. Sélectionnez le Application coder et cliquer Ajouter un objet → Diagramme de classes UML.

    le Ajouter un diagramme de classes UML la boîte de dialogue s'ouvre.

  6. Spécifiez le nom de l'objet CD_Simple.

  7. Sélectionnez le Importer la structure du projet dans le diagramme de classes actif option.

  8. Cliquez sur Ajouter.

    _uml_img_cd_simple.png
  9. Enregistrez le projet sous SimpleMachine.project.

2. Identification des interfaces

Les interfaces déterminent des méthodes et des propriétés visibles publiquement afin d'implémenter des classes.

  1. Ouvrir l'éditeur du diagramme de classes CD_Simple.

  2. Dans le Boîte à outils vue, sélectionnez une interface.

  3. Faites glisser l'interface vers l'éditeur.

    le Ajouter une interface la boîte de dialogue s'ouvre.

  4. Précisez le nom IBaseMachine. Cliquez sur Ajouter pour quitter la boîte de dialogue.

  5. Dans le Boîte à outils vue, sélectionnez une méthode.

  6. Faites glisser la méthode vers l'interface.

    le Ajouter une méthode d'interface la boîte de dialogue s'ouvre.

  7. Précisez le nom DoIt.

  8. Spécifiez le type de retour BOOL. Cliquez sur Ajouter pour quitter la boîte de dialogue.

  9. Dans le Boîte à outils vue, sélectionnez une propriété.

  10. Faites glisser la propriété vers l'interface.

    le Ajouter une propriété d'interface la boîte de dialogue s'ouvre.

  11. Précisez le nom StateNumber.

  12. Spécifiez le type de retour INT. Cliquez sur Ajouter pour quitter la boîte de dialogue.

    _uml_img_cd_simple_imachine.png

Astuce

Pour plus d'informations sur les interfaces, consultez : Objet : Interface et Objet : Propriété de l'interface

3. Identifier les classes et implémenter une interface

Différentes classes qui implémentent la même interface contiennent les mêmes méthodes et propriétés. Si l'interface est modifiée ou étendue ultérieurement, cela affectera toutes les classes d'implémentation.

  1. Ouvrir l'éditeur du diagramme de classes CD_Simple.

  2. Dans le Boîte à outils vue, sélectionnez une classe.

  3. Faites glisser la classe vers l'éditeur.

    le Ajouter un POU la boîte de dialogue s'ouvre.

  4. Précisez le nom FB_Machine.

  5. Sélectionnez le Bloc fonction option.

  6. Pour la langue d'implémentation, sélectionnez Organigramme UML (SC). Cliquez sur Ajouter pour quitter la boîte de dialogue.

    La classe FB_Machine est ajouté au diagramme de classes.

  7. Sélectionnez la classe.

    Les icônes de commande sont affichées au-dessus de la classe.

  8. Clique le _uml_icon_realization.png La concrétisation (IMPLEMENTS) icône de commande et cliquez sur le IMachine interface.

    le Sélectionnez la langue d'implémentation la boîte de dialogue s'ouvre.

  9. Sélectionner Texte structuré (ST).

    La classe FB_Machine hérite des propriétés et des méthodes de l'interface et implémente donc l'interface IMachine.

    _uml_img_cd_simple_fbmachine.png

4. Généraliser

En généralisation, une classe hérite des propriétés et des méthodes d'une autre classe.

  1. Ouvrir l'éditeur du diagramme de classes CD_Simple.

  2. Dans le Boîte à outils vue, sélectionnez une classe.

  3. Faites glisser une classe vers l'éditeur.

    le Ajouter un POU la boîte de dialogue s'ouvre.

  4. Précisez le nom FB_Machine_A.

  5. Sélectionnez le Prolonge option et spécifiez la classe FB_Machine dans le champ de saisie.

    Le bloc fonction FB_Machine est étendu et donc c'est une généralisation de FB_Machine_A.

  6. Pour la langue d'implémentation, sélectionnez Organigramme UML (SC). Cliquez sur Ajouter pour quitter la boîte de dialogue.

    La classe FB_Machine_A est créé dans le diagramme de classes. Une généralisation existe entre les classes FB_Machine et FB_Machine_A. FB_Machine_A hérite de ses propriétés et méthodes de FB_Machine.

  7. Dans le Boîte à outils vue, sélectionnez le Déclaration des variables élément et faites-le glisser vers la classe FB_Machine_A.

    le Déclarer une variable la boîte de dialogue s'ouvre.

  8. Précisez le nom iCounter et le type de données INT. Cliquez sur d'accord pour quitter la boîte de dialogue.

    maintenant la classe FB_Machine_A a ses propres variables en plus des propriétés et méthodes héritées.

  9. Dans la classe FBMachine_A, sélectionnez la méthode DoIt() et appuyez sur le Suppr clé.

    La méthode est supprimée du diagramme, ainsi que l'objet dans le Dispositifs voir. Le bloc fonction héritier FBMachine_A n'a pas besoin de sa propre implémentation spéciale pour la méthode. Au lieu de cela, il appelle la méthode DoIt du bloc fonction de base FBMachine quand c'est nécessaire.

    Note

    Lorsque vous appelez des méthodes, qui sont affectées à un bloc fonctionnel de base et héritées, utilisez le pointeur SUPER.

    _uml_img_cd_simple_fbmachine_a.png

Astuce

Pour plus d'informations, voir Extension d'un bloc fonctionnel et Pointeur : SUPER.

5. Instancier

  1. Ouvrir l'éditeur du diagramme de classes CD_Simple.

  2. Sélectionnez le programme PLC_PRG.

    Les icônes de commande sont affichées au-dessus du programme.

  3. Clique le _uml_icon_composition.png Composition (VAR) icône de commande et cliquez sur le FB_Machine_A classer.

    le Déclaration des variables la boîte de dialogue s'ouvre.

  4. Précisez le nom fb_A.

    L'object fb_A de la classe FBMachine_A est instancié. Maintenant, l'instance de la classe dans sa forme concrète est générée à l'exécution.

    _uml_img_cd_simple_plc_prg.png

Le diagramme de classes affiche tous les objets pertinents pour générer le code de l'application. Mais surtout, le diagramme de classes visualise les relations entre les objets : qui implémente qui ? Qui hérite de qui ? Qui instancie quoi ? Dans le cas contraire, ces informations sont cachées dans la déclaration et par exemple ne peuvent pas être vues dans le Dispositifs voir.

6. Mise en œuvre

  1. Ouvrir le bloc fonction FBMachine.

  2. Déclarez les variables du bloc fonction.

    FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine
    VAR
        iState: INT;
        iMachine : INT;
    END_VAR
  3. Implémenter le bloc fonction.

    iState := iState + 1; // Dummy for control ID
  4. Mettre en œuvre sa méthode DoIt.

    METHOD PUBLIC DoIt : BOOL
    iMachine := iMachine + 1; // Dummy
  5. Implémenter la méthode Get de la propriété StateNumber de FBMachine.

    StateNumber := iState;
  6. Implémenter la méthode Set de la propriété StateNumber de FBMachine.

    iState := StateNumber;
  7. Ouvrir le bloc fonction FBMachine_A.

  8. Déclarez les variables du bloc fonction.

    FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine
    VAR
     iCounter: INT;
    END_VAR
  9. Implémenter le bloc fonction.

    iCounter := iCounter + 1;
  10. Implémenter la méthode Get de la propriété StateNumber de FBMachine_A.

    StateNumber := iCounter;
  11. Implémenter la méthode Set de la propriété StateNumber de FBMachine_A.

    iCounter := StateNumber;
  12. Cliquez sur Construire → Générer du code.

    L'application est compilée sans erreur.

    _uml_img_cd_simple_objects.png
  13. Téléchargez et démarrez l'application.

    Vous pouvez surveiller l'instance du bloc fonction fb_A.

    _uml_img_cd_simple_monitoring.png