Transformación de programas LD en ST

Tener en cuenta las siguientes indicaciones para transformar un programa LD en un programa ST:

1. Red con una salida normal

Programa LD

Código del programa ST

Observaciones

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

También:

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

El mismo comportamiento, pero consume más recursos.

NOTA

Un bucle WHILE podría generar error de ciclo de scan y por tanto un error de perro guardián.

2. Red con una salida a set o a reset

Programa LD

Código del programa ST

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

3. Red con un relé de pulso (flaco de subida/de bajada)

Programa LD

Código del programa ST

Observaciones

(* 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;

Detección explícita del flanco sin utilizar una función o un bloque de función.

También:

(* 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;

Si se utiliza una instancia de un bloque de función R_TRIG o F_TRIG de la librería estándar IEC.

También:

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

Utilizando las funciones básicas DF o DFN.

Modificado el: 2020-10-27Comentarios sobre esta páginaLínea directa de Panasonic