Généralités
Les projets PLC
Le contrôle du spectro et de la tête de fibres est fait dans 2 boitiers WAGO possédant chacun une PLC CX8090 Beckhoff avec son bus.
Il y a un projet par PLC:
- CoralieSpectro_X.Y.pro
- CoralieTeteDeFibres_X.Y.pro
Chaque PLC possède son propre programme MAIN
Le MAIN
D'une construction identique pour les 2 projets, chaque MAIN gère l'arrêt d'urgence, et lance successivement chacun des programmes qui contrôle un mécanisme.
L'arret d'urgence
C'est un simple flag qui est levé lorsque le bouton d'urgence (à l'intérieur des boitiers) est pressé. Il est pris en considération par les programmes contrôlant un moteur.
Si le flag est activé, l'asservissement du moteur est arrêté et la consigne en tension est mise à zéro. Cet arrêt d'urgence est utile essentiellement en mode développement.
Les programmes
Un programme par mécanisme.
Lors du développement, on construit un programme après l'autre avec la possibilité de les commenter ou non.
Chaque programme utilise un zone de mémoire pour la communication modus.
Il est impératif:
- que les adresses de la zone mémoire soient définies correctement (identiques) dans le POU et dans le fichier include libspePLC.h.
- que la définition des éléments en mémoire (les %M) respectent en type et en séquence la structure CommStruct.
En cas de modification de la structure CommStruct, tout les POU doivent être modifiés.
Base des Algorithmes
Tout les programmes suivent a peu près le même cheminement:
Conditions de demarrage (AND):
- Le flag MbRunning vaut 1 (variable running coté C)
- La consigne est différente de la position courante
- Pas d'arrêt d'urgence
Conditions d'arrêt (OR):
- Le flag MbRunning vaut 0
- La position courante est égale à la consigne
- Arrêt d'urgence
Le flag MbRunning passe à zéro dans les cas suivants:
- Le timer déclenche un timeout
- La position courante est égale à la consigne (redondance avec le point 2 ci-dessus)
- Détection d'un warning sur un moteur (uniquement pour EntryShutter)
En general:
Lors de la première itération le timer est démarré.
Le sens de rotation est déterminé
La tension du moteur est calculée (asservissement proportionnel) ou fixé pour les mouvement sans codeur.
Les condition d'arrêt sont vérifiées (position, timer, warning)