Convertir un programme LD en ST

A noter ce qui suit si vous souhaitez transformer votre programme LD en un programme ST :

1. Réseau avec sortie normale

Programme LD

Code programme ST

Remarques

Y0 := X0 AND X1 OR X2 AND NOT X3;
 

Egalement possible :

IF X0 AND X1 OR X2 AND NOT X3 THEN
	Y0:=TRUE;
ELSE 
	Y0:=FALSE;
END_IF;

Comportement identique mais exigeant plus de mémoire.

NOTA

Une boucle WHILE provoquerait une erreur du chien de garde, le temps de scrutation étant dépassé.

2. Réseau avec sortie Set ou Reset

Programme LD

Code programme ST

 
IF X0 AND X1 THEN
	Y0 := TRUE;
END_IF;
IF X2 AND NOT X3 THEN
	Y0 := FALSE;
END_IF;
 

3. Réseau avec drapeau d’impulsion (front montant / descendant)

Programme LD

Code programme ST

Remarques

(* rising edge *)
IF	X0 AND NOT X0_Old THEN
	Count:=Count+1;
END_IF;
X0_Old:=X0;
(* falling edge *)
IF	NOT X1 AND X1_Old THEN
	Count:=Count-1;
END_IF;
X1_Old:=X1;

Exemple avec demande explicite de détection de front sans utiliser de fonction ou de bloc fonction.

Egalement possible :

(* rising edge *)
R_TRIG_X0( CLK:= X0 );
IF	R_TRIG_X0.Q THEN
	Count:=Count+1;
END_IF;
(* falling edge *)
F_TRIG_X1( CLK:= X1 );
IF	F_TRIG_X1.Q THEN
	Count:=Count-1;
END_IF;

Exemple avec les instances de blocs fonctions R_TRIG ou F_TRIG de la bibliothèque IEC standard library.

Egalement possible :

(* rising edge *)
IF	DF(X0) THEN
	Count:=Count+1;
END_IF;
(* falling edge *)
IF	DFN(X1)  THEN
	Count:=Count-1;
END_IF;

Exemple avec les fonctions de base DF ou DFN.

Modifié le : 2020-05-12Commentaires sur cette pageAssistance téléphonique