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