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