13 | 12 | 2017
MENÚ PRINCIPAL
ZONAS
ACCESO USUARIO

USUARIOS CONECTADOS

Hay 83 invitados y ningún miembro en línea

VISITAS
02872788



Tu IP:54.145.16.43
PUBLICIDAD

EJERCICIOS DE PROGRAMACIÓN CON TEXTO ESTRUCTURADO

EJ_ST_01: Activar una bobina Z con una 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

Ejemplo 1

 

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

 Ejemplo 2

 

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

 Ejemplo 3

 

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

 Ejemplo 4

 

 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

 Ejemplo 5

 

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

 Ejemplo 6

 

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

Ejemplo 7

 

 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

Ejemplo 8

 

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

Ejemplo 9

 

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

      TIME0 := TIME0 + 1;

      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;

 

Ejemplo 10

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;

 

Ejemplo 11

 

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

Ejemplo 12

 

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

BUSCAR EN PORTAL
PORTAL ELECTROZONA