EJ_ST_01: Activar una bobina Z con un contacto abierto A.
(*---- Activar una bobina con un contacto abierto ----*)
Z := A;
(*---- Otra forma ----*)
IF A = TRUE THEN Z := TRUE;
ELSE Z := FALSE;
END_IF;
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO_00 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
EJ_ST_02:Activar una bobina Z con un contacto cerrado A.
(*---- Activar una bobina con un contacto cerrado ----*)
Z := NOT A;
(*---- Otra forma ----*)
IF A = TRUE THEN Z := FALSE;
ELSE Z := TRUE;
END_IF;
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO_00 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
EJ_ST_03: Activar una bobina con dos contactos en SERIE, función AND.
(*---- Activar una bobina con dos contactos en SERIE, función AND ----*)
Z := A AND B;
(*---- Otra forma ----*)
IF A = TRUE AND B = TRUE THEN Z := TRUE;
ELSE Z := FALSE;
END_IF;
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO _00 |
B |
BOOL |
0.01 |
CONTACTO_01 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
EJ_ST_04: Activar una bobina con dos contactos en PARLELO, función OR.
(*---- Activar una bobina con dos contactos en PARALELO, función OR ----*)
Z := A OR B;
(*---- Otra forma ----*)
IF A = TRUE OR B = TRUE THEN Z := TRUE;
ELSE Z := FALSE;
END_IF;
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO _00 |
B |
BOOL |
0.01 |
CONTACTO_01 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
EJ_ST_05: Activar una bobina con tres contactos en conexión PARALELO-SERIE, funciones OR y AND.
(*---- Activar una bobina con tres contactos en PARALELO-SERIE ----*)
Z := (A OR B) AND C;
(*---- Otra forma ----*)
IF (A = TRUE OR B = TRUE) AND C = TRUE THEN Z := TRUE;
ELSE Z := FALSE;
END_IF;
NOTA: La parte de la operación entre paréntesis, tiene prioridad sobre el resto.
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO _00 |
B |
BOOL |
0.01 |
CONTACTO_01 |
C |
BOOL |
0.02 |
CONTACTO_02 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
EJ_ST_06: Activar una bobina con tres contactos en conexión SERIE-PARALELO, funciones AND y OR.
(*---- Activar una bobina con tres contactos en SERIE-PARALELO ----*)
Z := A AND B OR C;
(*---- Otra forma ----*)
IF A = TRUE AND B = TRUE OR C = TRUE THEN Z := TRUE;
ELSE Z := FALSE;
END_IF;
NOTA: Aquí NO se pone paréntesis porque AND es prioritaria sobre OR.
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO _00 |
B |
BOOL |
0.01 |
CONTACTO_01 |
C |
BOOL |
0.02 |
CONTACTO_02 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
EJ_ST_07: Función AND LD.
(*---- Ejemplo AND LD ----*)
Z := (A OR B) AND (C OR D);
(*---- Otra forma ----*)
IF (A = TRUE OR B = TRUE) AND (C = TRUE OR D = TRUE) THEN Z:= TRUE;
ELSE Z := FALSE;
END_IF;
NOTA: Los paréntesis son muy importantes ya que AND es prioritaria sobre OR.
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO_00 |
B |
BOOL |
0.01 |
CONTACTO_01 |
C |
BOOL |
0.02 |
CONTACTO_02 |
D |
BOOL |
0.03 |
CONTACTO_03 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
EJ_ST_08: Función OR LD.
(*---- Ejemplo OR LD ----*)
Z := (A AND B) OR (C AND D);
(*---- Otra forma ----*)
IF (A = TRUE AND B = TRUE) OR (C = TRUE AND D = TRUE) THEN Z:= TRUE;
ELSE Z:= FALSE;
END_IF;
NOTA: Los paréntesis son muy importantes ya que AND es prioritaria sobre OR.
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO _00 |
B |
BOOL |
0.01 |
CONTACTO_01 |
C |
BOOL |
0.02 |
CONTACTO_02 |
D |
BOOL |
0.03 |
CONTACTO_03 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
EJ_ST_09: Marcha-paro con REALIMENTACIÓN.
(*---- Marcha-paro con REALIMENTACIÓN ----*)
IF A = TRUE AND B = FALSE THEN Z := TRUE;
ELSIF B = TRUE THEN Z := FALSE;
END_IF;
(*---- Otra forma ----*)
IF (A = TRUE OR Z = TRUE) AND NOT B = TRUE THEN Z := TRUE;
ELSE Z:=FALSE;
END_IF;
El mismo ejemplo en ladder:
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
A |
BOOL |
0.00 |
CONTACTO _00 |
B |
BOOL |
0.01 |
CONTACTO_01 |
Z |
BOOL |
100.00 |
BOBINA_100_00 |
NOTA: Para entender un poco mejor el primer caso del ejemplo de la realimentación vamos a ver la diferencia entre poner en comando AND en una línea normal o dentro de una secuencia IF.
(*---- Activar una bobina con dos contactos en SERIE, función AND ----*)
Z := A AND B;
En este caso Z será 1 si A y B están simultáneamente a 1, y si cualquiera de ellos o los dos pasan a 0, Z también será 0.
(* Activar una bobina con dos contactos en SERIE, función AND dentro de una secuencia IF*)
IF A = TRUE AND B = TRUE THEN Z := TRUE;
END_IF;
En este caso Z será 1 si A y B están simultáneamente a 1, pero si cualquiera de ellos o los dos pasan a 0, Z se mantiene en 1 ya le hemos asignado a Z el valor 1 y como no le decimos lo contrario se mantiene a 1.
Tenemos que tener en cuenta que si lo dejamos así no podemos volver a poner Z a 0, aunque lógicamente podremos poner Z a 0 en cualquier otra parte del programa.
Si en este caso quisiéramos que Z valiese 0 cuando A o B no estén a 1, deberemos añadir lo siguiente:
IF A = TRUE AND B = TRUE THEN Z := TRUE;
ELSE Z:= FALSE;
END_IF;
EJ_ST_10: Temporizador.
(*---- Ejemplo TEMPORIZADOR ----*)
IF BIT16 = TRUE AND P_0_1s = TRUE AND FLAG01 = FALSE THEN
FLAG01 := TRUE;
END_IF;
IF BIT16=TRUE AND P_0_1s=FALSE AND FLAG01=TRUE THEN
FLAG01:=FALSE;
END_IF
IF TIME0>=100 THEN
TIME0:=100;
SA06:=TRUE;
END_IF;
IF BIT16=FALSE THEN
TIME0:=0;
FLAG01:=FALSE;
SA06:=FALSE;
END_IF;
Temporizador con CJ2
TIMX (PM,Temporizador1,Valor_Tim1);
IF Temporizador1.CF = TRUE THEN
KM1:= TRUE;
END_IF;
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
PM |
BOOL |
0.00 |
CONTACTO_00 |
KM1 |
BOOL |
100.00 |
BOBINA_100_00 |
Valor_Tim1 |
UINT |
D0 |
Valor del temporizador |
Temporizador1 |
TIMER |
T0001 |
Nº de temporizador |
EJ_ST_11: Contador.
(*---- Ejemplo CONTADOR ----*)
IF BIT14 = TRUE AND FLAG00 = FALSE THEN
CONT0 := CONT0 + 1;
FLAG00 := TRUE;
END_IF;
IF BIT14 = FALSE AND FLAG00 = TRUE THEN
FLAG00 := FALSE;
END_IF;
IF CONT0 >= 10 THEN
CONT0 := 10;
SA05 := TRUE;
END_IF;
IF BIT15 = TRUE THEN
CONT0 := 0;
FLAG00 := FALSE;
SA05 := FALSE;
END_IF;
EJ_ST_12: Arranque directo de un motor.
IF (PM = TRUE ORKM1 = TRUE) AND NOT PP = TRUE AND NOT RT = TRUE
THEN KM1 := TRUE;
ELSE KM1:=FALSE;
END_IF;
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
PM |
BOOL |
0.00 |
Pulsador Marcha |
PP |
BOOL |
0.01 |
Pulsador Paro |
RT |
BOOL |
0.02 |
Relé Térmico |
KM1 |
BOOL |
100.00 |
Motor |
Nombre |
Tipo de datos |
Dirección/Valor |
Comentario |
PM |
BOOL |
0.00 |
CONTACTO_00 |
KM1 |
BOOL |
100.00 |
BOBINA_100_00 |
Valor_Tim1 |
UINT |
D0 |
Valor del temporizador |
Temporizador1 |
TIMER |
T0001 |
Nº de temporizador |