Standardisez le pilotage de vos vérins pneumatiques, la validation des retours capteurs et la surveillance de dépassement de temps de course.
Les vérins pneumatiques représentent la majorité des mouvements sur machine spéciale. Une modélisation Grafcet mal cadrée entraîne des collisions mécaniques et des arrêts de production inexpliqués.
Ce patron de conception standard traite :
qualificatif N).qualificatifs S et R).+-------------------------------------------------------------+
| BOUCLE STANDARD VÉRIN PNEUMATIQUE |
| |
| [Étape 10: Vérin Rentré (Repos)] |
| | |
| (bCmd_Sortir) |
| v |
| [Étape 11: Mouvement Sortie] --(Timeout > 2s)--> [Défaut] |
| | |
| (sCapteur_Sorti) |
| v |
| [Étape 12: Position Travail] |
+-------------------------------------------------------------+
| Nom de Variable | Type | Direction | Rôle |
|---|---|---|---|
bCyl_Extend_Cmd |
BOOL |
Sortie | Bobine électrovanne Sortie vérin |
bCyl_Retract_Cmd |
BOOL |
Sortie | Bobine électrovanne Rentrée vérin (bistable) |
sCyl_Home_Sensor |
BOOL |
Entrée | Capteur magnétique ILS Vérin Rentré |
sCyl_Work_Sensor |
BOOL |
Entrée | Capteur magnétique ILS Vérin Sorti |
tCyl_Extend_Watchdog |
TON |
Interne | Temporisation de surveillance de course (2 000 ms) |
bCyl_Motion_Fault |
BOOL |
Sortie | Alerte défaut mécanique ou chute de pression |
from automation_machine import Sequence, StepType, ActionInstruction
class PneumaticActuatorPattern(Sequence):
def setup(self):
s10 = self.add_step(StepType.INITIAL, name="Cylinder_Home")
s11 = self.add_step(name="Cylinder_Extending")
s12 = self.add_step(name="Cylinder_Work_Position")
s_fault = self.add_step(name="Cylinder_Motion_Fault")
self.add_transition(s10, s11, condition="bCmd_Extend_Request AND sCyl_Home_Sensor")
self.add_transition(s11, s12, condition="sCyl_Work_Sensor")
self.add_transition(s11, s_fault, condition="tCyl_Watchdog.Q")
self.add_transition(s_fault, s10, condition="bFault_Reset AND sCyl_Home_Sensor")
s11.add_action("bCyl_Extend_Cmd", "Alimenter bobine electrovanne")
s11.add_action("tCyl_Watchdog", "Surveillance temps de course", instruction=ActionInstruction.TON, duration=2000)
s_fault.add_action("bCyl_Motion_Fault", "Signaler defaut mouvement verin")
duration du temporisateur à environ 1,5 fois le temps mécanique nominal de déplacement.