Compteur – ST
La norme IEC 61131 offre une définition des compteurs. PLC3000 intègre les compteurs et décompteurs. Dans ce cas, il est nécessaire de définir une valeur de présélection %Ci.PV, paramétrable avec une valeur entière. La valeur courante d’un compteur est mise à 0 lorsque %Ci.R est activé. La valeur courante d’un compteur est mise à la valeur de présélection %Ci.PV, lorsque %Ci.LD est activé. La valeur courante d’un compteur s’incrémente à chaque nouvelle activation de l’entrée %Ci.CU, elle se décrémente à chaque nouvelle activation de l’entrée %Ci.CD.
Un compteur possède deux sorties ; %Ci.QU passe à 1 lorsque la valeur courante du compteur est égale ou supérieur à la valeur de présélection %Ci.PV ; %Ci.QD passe à 1 lorsque la valeur courante du compteur est égale à 0.
Déclaration en ST
Soit un Compteur %C1 défini avec une valeur de présélection
IF %S1 THEN %C1.PV := 5;
END_IF
Illustration avec un Grafcet
Considérons le Grafcet suivant
Programmation en ST – Etape par Etape avec Bits de franchissabilité
PROGRAM Counter
(* TIMER *)
IF %S1 THEN
%C0.PV := 5;
END_IF
(* EDGE *)
%M4 := %I1 AND NOT %M3;
%M3 := %I1;
(* STEP *)
%M10 := %M2 AND %C0.QU OR %M0 AND NOT %I0 OR %S2;
%M11 := (%M0 AND %I0 OR %M2 AND NOT %C0.QU OR %M1 AND NOT %M4) AND NOT %S2;
%M12 := (%M1 AND %M4) AND NOT %S2;
(* CROSSING *)
IF %M10 THEN
%M0 := TRUE;
%M1 := FALSE;
%M2 := FALSE;
END_IF
IF %M11 THEN
%M1 := TRUE;
%M0 := FALSE;
%M2 := FALSE;
END_IF
IF %M12 THEN
%M2 := TRUE;
%M0 := FALSE;
%M1 := FALSE;
END_IF
(* ACTIONS *)
%C0.R := %M0;
%C0.CU := %M2;
END_PROGRAM
