Skip to main content

Exemple : AC Module Teaching

Produit: CODESYS Application Composer

Cet exemple montre comment créer et utiliser des modules apprenants au moyen de simples commandes d'éclairage.

Description

Le CODESYS Application Composer offre la possibilité d'une configuration modulaire d'une application. Lorsque la structure est définie une fois dans l'arborescence du module, une application CEI statique est générée à partir de celle-ci. Lorsque cela se produit, les modules sont connectés directement à leurs sous-modules et ne peuvent pas être modifiés lors de l'exécution.

Cet exemple montre comment créer une configuration dynamique à partir d'un pool de modules distincts lors de l'exécution.

De plus, cette configuration est stockée de manière persistante afin que la dernière configuration définie puisse être téléchargée à chaque redémarrage de l'application.

Vous pouvez utiliser la bibliothèque incluse sans aucune modification. Le projet montre simplement un cas d'utilisation possible de cette bibliothèque. Toutes les modifications requises ont été marquées dans le code au moyen de commentaires utilisant le mot-clé AC_ModuleTeaching.

Informations Complémentaires

Architecture

L'idée de modules apprenables repose sur le principe élève-sujet-enseignant.

Les élèves peuvent apprendre des matières qui leur sont enseignées par un enseignant. La décision de savoir si un élève peut ou non apprendre une matière particulière appartient à l'élève. Par conséquent, une configuration de module fonctionnel doit toujours être composée d'un enseignant, d'au moins un élève et d'au moins une matière.

Compte tenu de l'architecture du AC_ModuleTeaching bibliothèque, les résultats de conception suivants :

_example_img_ac_module_teaching1.png

Le TeacherModule, SubjectModule, et PupilModule (ou TeacherRegistration) les blocs fonctionnels dérivent de la AC.Module bloc fonctionnel. Cela permet de configurer ces trois types de modules dans une arborescence de modules.

Seuls deux blocs fonctionnels sont pertinents pour la mise en œuvre de modules apprenants :

  • SubjectModule et PupilModule.

  • TeacherModule peut être inséré en tant que module dans l'arborescence des modules sans aucune modification ou configuration supplémentaire.

Séquence

La phase d'initialisation se déroule comme suit :

_example_img_ac_module_teaching2.png

Init() est appelée depuis le contexte Application Composer de base dans le premier cycle de l'automate.

  • TeacherModule: Ce module analyse toutes les instances de module et fait un rapport pour chaque instance de SubjectModule et PupilModule (Register(THIS^)). Ceci établit le cadre de base pour la communication croisée des modules.

  • SubjectModule: Chacun de ces modules s'attribue un unique SubjectID (UDINT).

  • PupilModule: Chaque module doit enregistrer son propre SubjectIDs, qu'il devrait pouvoir apprendre, via AddSubjectID(UDINT).

L'apprentissage se déroule comme suit :

_example_img_ac_module_teaching3.png

Pour tout événement (par exemple, cliquer sur le bouton "Apprendre" dans une visualisation), un SubjectModule l'instance relève d'un TeacherModule à propos de l'appel de ReportTeacher(). Dans ReportTeacher(), Report(THIS^) de la TeacherModule est appelé implicitement. Le TeacherModule fournit le SubjectModule interface avec tous PupilModule instances via Learn(ISubject) avec la possibilité d'apprendre SubjectModule. Apprendre un SubjectModule signifie que le PupilModule doit éventuellement lancer et marquer le SubjectModule lui-même (par exemple, en le stockant dans une variable membre).

Application

Pour toute application spécifique, vous devez réfléchir à quoi et qui assumera respectivement le rôle de "sujets" et "d'élèves". Par exemple, les sujets peuvent être représentés par des capteurs et les élèves par des acteurs. Dans l'exemple, un capteur de lumière est utilisé pour un sujet et une lumière pour un élève. La lumière peut apprendre à écouter différents capteurs ou les oublier plus tard.

Concernant la mise en œuvre, il convient de noter ce qui suit :

  • Lumière PROLONGE ACMT.Pup

    Init(): Ajouter l'apprenable SubjectID

    Learn(): Cette méthode doit être écrasée. Au début, l'implémentation de base devrait alors s'appeler :

    IF SUPER^.Learn(itfSubjectToLearn := itfSubjectToLearn) = ACMT.ERROR.NO_ERROR THEN

    Si cela réussit, alors le sujet peut être appris. Sinon, le sujet n'est pas apprenable et peut être ignoré.

    END_IF

    ForgetAll(): Cette méthode doit également être écrasée et les sujets stockés locaux supprimés à nouveau.

  • SwitchPush EXTENDS ACMT.SubjectModule // indirectement via la chaîne d'héritage SwitchOnOff -> SwitchBase

    Init(): Définir la SubjectID

    CallPrioMediumStart(): Appel de ReportTeachersi le capteur a été appuyé plus de 3 secondes.

  • Gestionnaire de persistance

    En ajoutant le gestionnaire de persistance, les sujets appris peuvent être enregistrés. Par conséquent, le dernier état est restauré au redémarrage de l'application.

Configuration système requise et restrictions

Système de programmation

CODESYS Development System (version 3.5.5.0 ou supérieure)

Système d'exécution

CODESYS Control Win (version 3.5.5.0)

Composants complémentaires

CODESYS Application Composer

Avis

_example_icon.png TÉLÉCHARGER Projet

Après l'installation du paquet, vous trouverez le projet d'exemple dans le répertoire C:\Users\<user>\CODESYS Examples\AC Module Teaching Example.