TRADUCTION D ’UN GRAFCET EN LANGAGE API
PROBLEME 1 2 I_bp_dcy I_cp_a1 I_cp_a0 O_EV_SA O_EV_RA 1 2 I_bp_dcy I_cp_a1 I_cp_a0 O_EV_SA O_EV_RA Comment puis-je traduire ce GRAFCET dans un langage accepté par l’automate ? La méthode que nous allons détailler est universelle et nous pourrons donc l’employer quelque soit l’automate utilisé...
CALCULER LES POSSIBILITES D ’EVOLUTION DU GRAFCET … autrement dit, quelles sont les transitions qui sont franchissables ? REGLE N°2 : Franchissement d'une transition Une transition est dite validée lorsque toutes les étapes immédiatement précédentes sont actives. La transition sera franchissable si la transition est validée ET la réceptivité associée à cette transition est vraie. Une transition franchissable est immédiatement franchie. Pour que la transition entre les étapes X1 et X2 soit franchissable, il faut : qu’elle soit validée B_X1=1 que la réceptivité associée soit vraie i_cp_a1=1 Le fait que la transition entre les étapes X1 et X2 soit franchissable ou non sera mémorisé dans un bit qu ’on appellera B_FT_X1_X2 (=1 si la transition est franchissable, =0 sinon) : c ’est le bit de franchissabilité de la transition. 1 2 I_cp_a1 O_EV_SA O_EV_RA On peut donc écrire : B_FT_X1_X2 = B_X1 . i_cp_a1 ou vraie B_X1 I_cp_a1 B_FT_X1_X2
CALCULER L ’EVOLUTION DU GRAFCET … autrement dit, quelles sont les étapes qui vont s’activer et celles qui vont se désactiver ? REGLE N°3 : Évolution des étapes actives Le franchissement d'une transition entraîne simultanément l'activation de toutes les étapes immédiatement suivantes et la désactivation de toutes les étapes immédiatement précédentes. Qu ’est ce qui active X1 ? Le franchissement de la transition entre X0 et X1, autrement dit si B_FT_X0_X1=1 Qu ’est ce qui désactive X1 ? Le franchissement de la transition entre X1 et X2, autrement dit B_FT_X1_X2=1 1 2 I_bp_dcy I_cp_a1 I_cp_a0 O_EV_SA O_EV_RA REGLE N°5 : Activation et désactivation simultanée d'une étape Si au cours du fonctionnement, la même étape est simultanément activée et désactivée elle reste active. On calcule donc B_X1 (« monostable » : mémoire priorité marche) : B_X1 = B_FT_X0_X1 + B_FT_X1_X2 . B_X1 ou bien (« bistable » : reset PUIS set) : R(B_X1) = B_FT_X1_X2 S(B_X1) = B_FT_X0_X1
INITIALISATION B_init = 1 B_init = %S0 + %S1 + %S13 REGLE N°1 : Situation initiale La situation initiale d'un GRAFCET caractérise le comportement initial de la partie commande vis-à-vis de la partie opérative, de l'opérateur et/ou des éléments extérieurs. Elle correspond aux étapes actives au début du fonctionnement. PROBLEME : Comment savoir que nous sommes au début du fonctionnement du système pour activer les étapes initiales de notre GRAFCET ? Deux situations existent : on vient de mettre sous tension la PC (1) on vient de mettre l ’API en marche (RUN) (2) Suivant les marques d ’API, le problème est abordé différemment... SCHNEIDER SIEMENS Des bits systèmes sont mis à 1 et permettent de savoir dans quelle situation se trouve l’API : %S0 et %S1 pour la situation (1) %S13 pour la situation (2) Un bloc d ’organisation spécifique, OB100, est automatiquement lu pour les situations (1) ET (2) Dans l’OB100, on calculera donc un bit B_init qui rentrera dans l’activation des étapes initiales : B_init = 1 Pour prendre en compte toutes les situations, on calculera un bit B_init qui rentrera dans l’activation des étapes initiales : B_init = %S0 + %S1 + %S13
STRUCTURE D ’UN PROGRAMME API Ceci est la recette ! Suivez-là, et vous éviterez de nombreux problèmes dus aux programmes « spaghettis » !!! 1. Initialisation 2. Calculs préliminaires - fronts (indispensable chez Siemens par exemple…) - tempos - compteurs - … 3. Calcul des B_FT 4. Calcul des B_X 5. Calcul des sorties Cette méthode est universelle et nous pourrons donc l’employer quelque soit l’automate utilisé...