Skip to main content

Bibliothèque : Mécatronique

Astuce

le Mechatronics bibliothèque est censée être un exemple d'implémentation simple (et non complète) d'une unité mécatronique à exécution séquentielle. Il ne répond pas à toutes les exigences qu'une application mécatronique complète pourrait avoir. Il est plutôt destiné à être un point d'entrée ou une base pour une application de ce type.

Le noyau essentiel du modèle mécatronique proposé repose sur la structure de module suivante :

Figure 65. Exemple de compositeur d'applications Mechatronics
Exemple de compositeur d'applications Mechatronics


Ainsi toute machine est supposée posséder éventuellement plusieurs sous-ensembles mécatroniques (exemple : chacun représentant un préhenseur). Une telle sous-unité se décompose à nouveau en ses actionneurs (équivalant à l'unité mécanique elle-même, également sa mise en œuvre fonctionnelle ou la gestion des entrées/sorties) et un gestionnaire de programme. Le gestionnaire de programme est destiné à gérer les différents états d'un sous-ensemble mécatronique, par exemple son Idle ou Execute Etat. Finalement, ces états sont représentés par des séquences de programme contrôlant les actionneurs ou tout autre élément nécessaire à une exécution correcte.

À ce stade, les différentes parties seront brièvement décrites en détail. Lors de l'utilisation de la bibliothèque, dans de nombreux cas, il sera nécessaire d'implémenter vos propres actionneurs, étapes de flux ou séquences de programme, qui seront également expliqués ici.

  1. Actionneurs: Tous les modules qui doivent être des actionneurs doivent être implémentés par un bloc fonction qui implémente à son tour IActuator interface. Cette interface n'a pas de méthodes ou de propriétés et n'est utilisée que pour la compatibilité des modules (voir le IActuator documentation à la bibliothèque). Il n'y a pas de restrictions ou de règles données pour les implémentations d'actionneurs, de sorte que le mouvement ou l'activation d'un tel actionneur doit être effectué séparément. Normalement, cela se fait en mettant en œuvre un module d'étape de séquence, qui peut maintenir les actionneurs appropriés dans une fente de référence et ainsi déplacer ces derniers de la manière souhaitée (par exemple en utilisant des interfaces supplémentaires).

  2. Étapes de la séquence

    Il est fortement recommandé d'exécuter l'implémentation des étapes de flux en tant que classes dérivées du StepBase bloc fonctionnel. Cela fournit toutes les implémentations de base nécessaires du IProgramSequenceStep interface. Voir le IActuator documentation à la bibliothèque. Lors de l'utilisation de la classe de base StepBase, il suffit alors d'implémenter Execute méthode. Ce dernier est alors appelé cycliquement par le déroulement du programme jusqu'à ce que la variable xDone de la classe de base est défini sur TRUE. De plus, pour un bon fonctionnement, le drapeau xActive doit être réglé sur TRUE tant que l'étape est active. Cependant, la connexion aux actionneurs peut se faire de n'importe quelle manière, par exemple par les fentes de référence proposées (voir 1.).

  3. Séquence de programme et responsable de programme Une séquence de programme est un sous-module d'un gestionnaire de programme, qui représente un état. Ces états sont gérés sous la forme d'une machine à états OMAC. Ses implémentations reposent à nouveau sur une méthode "Execute" (pour plus de détails, voir l'implémentation dans la bibliothèque). Cependant, la mise en oeuvre d'un tel déroulement de programme par l'utilisateur n'est pas nécessaire dans la plupart des cas. Cependant, la manière dont le comportement de la machine d'état est mis en œuvre dans le gestionnaire de programme et exécute ainsi les séquences de programme doit être brièvement décrite ici :

    Il existe deux types d'états : les états actifs (se terminant par "ing") et les états d'attente/duels (le reste). Les états d'attente sont terminés par des commandes externes, tandis que les états actifs sont automatiquement exécutés et terminés. Les commandes disponibles dépendent de l'état dans lequel se trouve actuellement le gestionnaire de programme. Un bref aperçu est donné dans le diagramme d'état OMAC :

    Figure 66. Diagramme OMAC
    Diagramme OMAC


    Figure 67. Module: MovableBarrier
    Module: MovableBarrier


    Le module MovableBarrier est mis en œuvre de la manière suivante : Le bloc fonction correspondant MovableBarrier implémente l'interface créée IMovableBarrier. Cette dernière interface définit les méthodes de déplacement d'une barrière, alors que IMovableBarrier implémente lui-même l'interface IActuator, de sorte que le module MovableBarrier est insérable comme actionneur dans l'arborescence des modules sous une unité mécatronique :

    Figure 68. Implémentation du module MovableBarrier
    Implémentation du module MovableBarrier


    Cependant, cet actionneur "MovableBarrier" est déplacé par le module d'étape de séquence MoveBarrierForTime, qui est lui-même implémenté de la manière suivante :

    Figure 69. Implémentation du module MoveBarrierForTime
    Implémentation du module MoveBarrierForTime


    Le module implémentant le bloc fonctionnel MoveBarrierForTime dérive simplement du bloc fonctionnel de base contenu dans la bibliothèque AC_MEC.StepBase. Par là, le bloc fonctionnel MoveBarrierForTime implémente déjà l'interface IProgramSequenceStep. Par conséquent le module MoveBarrierForTime est insérable comme pas de séquence sous une séquence de programme. La mise en œuvre fonctionnelle du bloc fonction MoveBarrierForTime est la suivante : en définissant un emplacement de référence pour le module MoveBarrierForTime, pouvant recevoir un actionneur mettant en oeuvre l'interface IMovableBarrier, on obtient une connexion à un actionneur "MovableBarrier" existant. Le mouvement de cet actionneur se fait finalement dans le Execute fonction de la MoveBarrierForTimebloc fonction, qui appelle simplement la méthode de déplacement (pictural) du capot de protection. Cette méthode est fournie par l'actionneur référencé, qui met en œuvre IMovableBarrier . De plus la propriété Done et la variable xActive sont couplés à un TON, de sorte que les appels répétés aux fonctions de déplacement de IMovableBarrier sont effectués jusqu'à ce qu'un certain temps (TON) se soit écoulé, après quoi Done est défini sur TRUE et xActive à FAUX. La propriété Done fait partie de l'interface IProgramSequenceStep et indique ainsi à la séquence de programme supérieure que l'étape suivante de la séquence doit être exécutée.

    En dehors de votre propre implémentation des étapes de séquence, le AC_Mechatronics.library fournit également des étapes pré-implémentées, qui peuvent être utilisées pour des opérations logiques générales. Cela signifie par exemple une étape BranchOnBool est fourni, qui comporte deux sous-séquences / branches d'étapes, qui sont exécutées en fonction de la valeur d'une variable BOOL. Ces sous-étapes sont exécutées en fonction de la valeur d'une variable booléenne. Par ailleurs, la bibliothèque AC_Mechatronics.library contient des étapes de flux pour les flux parallèles, des sauts conditionnels ou des étapes d'attente simples et bien d'autres tâches.