Ejercicios Resueltos Para Autómatas SIMATIC S7-300 (Lenguaje AWL) Emilio González Rueda

March 13, 2018 | Author: Jordan Andres Segovia Solis | Category: Books, Author, Programming Language, Bit, Office Equipment
Share Embed Donate


Short Description

Descripción: Este libro de ejercicios es un complemento del titulado Programación de Autómatas SIMATIC S7-300 (Lenguaje ...

Description

Ejercicios

resueltos

para autómatas

SIMATIC S7-300 (Lenguaje AWL) Emilio González Rueda

e-mail: [email protected] www.canopina.com

Cano Pina, S.L. – Ediciones Ceysa © © Este producto está protegido por las leyes de propiedad intelectual. Está prohibida la reproducción o distribución de parte alguna de la presente edición, ya sea por medios electrónicos, mecánicos o cualquier otro, sin la previa autorización del editor. © de la presente edición: Cano Pina, S.L. – Ediciones Ceysa © © de la obra: el autor

Título: Ejercicios resueltos para autómatas SIMATIC S7-300 (Lenguaje AWL) Autor: Emilio González Rueda Edita: Cano Pina, S.L.- Ediciones Ceysa ISBN: 978-84-15884-61-3 Producción: Susana Encinas Diseño de portada: Josep Costa i Ardiaca

Prólogo A quién va dirigido este libro Este libro de ejercicios es un complemento del titulado Programación de Autómatas SIMATIC S7-300 (Lenguaje AWL), del mismo autor, publicado por CANO PINA, S.L., Ediciones CEYSA, y va dirigido a aquellos lectores que dispongan de los conocimientos específicos que se detallan en el mismo.

Convenios

A lo largo de su contenido, en ocasiones se remite al lector a determinadas páginas del libro anteriormente mencionado. Para ello, se emplea la palabra genérica “libro” en lugar de poner el título completo. Así, por ejemplo cuando en el libro de ejercicios, y por razones de brevedad, decimos “ir a la página 123 del libro”, realmente el lector debe entender “ir a la página 123 del libro de Programación”, excepto que se diga lo contrario.

Alcance de este libro Este libro de ejercicios debe entenderse como lo que realmente es: una herramienta donde se presentan soluciones de ejercicios con el objeto de que el lector aprenda las ventajas e inconvenientes que ofrece cada uno de los métodos de programación que se presentan. Normalmente las soluciones que se dan en estos ejercicios no están optimizadas para casos reales, por lo que deben considerarse como ejercicios de aprendizaje únicamente.

Material necesario para el aprendizaje Es aquí válido lo que ya dijimos en el libro teórico anteriormente mencionado, esto es, que sería aconsejable practicar los ejemplos de este libro, bien con un autómata real o bien con un programa de simulación, y en cualquier caso con un ordenador personal (PC) como mínimo con: o Procesador Pentium III. o Memoria central de 64 MB . o Capacidad en disco libre de 500 MB. o Sistema operativo W98. o STEP-7, v5.0.

Lenguaje de programación En su contenido se hace uso exclusivamente del lenguaje de programación AWL de SIE-MENS, cuyas reglas se fijan en la norma DIN EN-61131-3 (int. IEC 1131-3). Los nombres de productos que se listan a continuación (entre otros), son marcas registradas por SIEMENS AG: SIMATIC, SIMATIC NET, SIMATIC HMI, PLCSIM, STEP 7, AWL, KOP, FUP, NETPRO, MPI. Así, los nombres que se listan a continuación (entre otros), son marcas registradas por LENZE: QUICKSTOP

Índice 1

Motores trifásicos

2

Contadores

3

Máquina remachadora

4

Máquina transfer

5

Variadores de frecuencia

6

Manipulador, cinta incremental y V/F

7

Motores servo

8

Programación por recetas

9

Hardware

Motores trifásicos

Motores trifásicos

Índice

• Ejemplo de manejo de motores trifásicos en una instalación de grúa.

Se trata de una grúa gobernada por dos (2) motores trifásicos. El primero (M1) permite subir y bajar el gancho, mientras que el segundo (M2) permite desplazar a derecha e izquierda el conjunto. Los finales de carrera “1”, “2”, “3” y “4” (que llamaremos FC1, FC2, FC3 y FC4 respectivamente), permiten informar al autómata de las posiciones extremas de la grúa. En cuanto a los motores M1 y M2, los supondremos dotados de elementos adicionales que nos permiten excitarlos directamente con señales de +24VDC con arreglo a la siguiente tabla: DM1

IM1

DM2

M1

IM2

M2

DM1 0 0 +24 VDC +24 VDC

IM1 0 +24 VDC 0 +24 VDC

MOVIMIENTO GANCHO Quieto Baja Sube No permitido

DM2 0 0 +24 VDC +24 VDC

IM2 0 +24 VDC 0 +24 VDC

MOVIMIENTO CONJUNTO Quieto Derecha Izquierda No permitido

7

Motores trifásicos

Tabla de contactos de entrada/salida: E124.0 E124.1 E124.2 E124.3 E124.4

Entradas Botón Empezar (BE) FC1 (gancho abajo) FC2 (gancho arriba) FC3 (conjunto a la izquierda) FC4 (conjunto a la derecha)

A124.0 A124.1 A124.2 A124.3

Salidas DM1 (sube gancho) IM1 (baja gancho) DM2 (conjunto grúa hacia la izquierda) IM2 (conjunto grúa hacia la derecha)

La posición de partida de la grúa es con el gancho abajo y pegado a la pared de la izquierda. Se dispone de un Botón Empezar (BE) que al ser oprimido (siempre y cuando la grúa se encuentre en su posición correcta de partida), primero hace que suba el gancho, después se desplaza la grúa a la derecha, baja el gancho, permanece diez (10) segundos sin hacer nada, sube el gancho, se desplaza a la izquierda, finalmente baja y se queda en reposo esperando una nueva pulsación sobre BE. Grafcet G1:

3

7

0

¿Gancho arriba?

¿Gancho arriba? 1

5

Parar subir gancho

Grúa a izquierda

Parar subir gancho

Grúa a derecha ¿Grúa derecha?

¿Grúa izquierda? 2

Subir gancho

4

Subir gancho

Parar grúa derecha

Bajar gancho

6

Parar grúa izquierda

Bajar gancho

¿Gancho abajo?

¿Gancho abajo?

Parar bajar gancho

7 3

Temporizador = 10 seg.

Parar bajar gancho

¿10 seg?

¿(BE) Y Grúa en posición? 0

4

8

Motores trifásicos

Pasaremos ahora al Grafcet G2: 3

7 M0.4

M0.0

E124.2 M0.1

E124.4 M0.6

A124.3=0 A124.1=1

6

A124.2=0 A124.1=1

2

A124.0=0 A124.3=1

5

E124.3

M0.2

E124.2

M0.5

A124.0=0 A124.2=1

1

A124.0=1

4

A124.0=1

0

E124.1 M0.7

E124.1 M0.3

A124.1=0 T0 = 10 seg. (sv)

7

A124.1=0

3

¿10 seg?

E124.0 Y E124.1 Y E124.3 0 4

Y la traducción a AWL de este G2: OB1: U M 0.0 SPBN _000 S A 124.0 U E 124.2 R M 0.0 S M 0.1 _000: NOP 0 U M 0.1 SPBN _001 R A 124.0 S A 124.2 U E 124.3 R M 0.1 S M 0.2 _001: NOP 0 U M 0.2 SPBN _002 R A 124.2 S A 124.1 U E 124.1 R M 0.2 S M 0.3 _002: NOP 0

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.3 SPBN _003 R A 124.1 U E 124.0 U E 124.1 U E 124.3 R M 0.3 S M 0.4 _003: NOP 0 U M 0.4 SPBN _004 S A 124.0 U E 124.2 R M 0.4 S M 0.5 _004: NOP 0 U M 0.5 SPBN _005 R A 124.0 S A 124.3 U E 124.4 R M 0.5 S M 0.6 _005: NOP 0 9

U M 0.6 SPBN _006 R A 124.3 S A 124.1 U E 124.1 R M 0.6 S M 0.7 _006: NOP 0 U R

M 0.7 A 124.1

U M 0.7 L S5T#10S SV T 0 U M UN T R M S M

0.7 0 0.7 0.0

Motores trifásicos

En cuanto a OB100: L B#16#0 T MB0 CALL SFC21 BVAL:= P#M0.0 BYTE 1 RET_VAL:MW100 BLK := P#M 1.0 BYTE 500 L W#16#0 T AW124 SET S M0.0

10

Contadores

Contadores

Índice

• Ejemplo primero de manejo de un contador ascendente colocado en el bloque OB1.

U E 124.0 ZV Z 0 NOP 0 U E 124.1 L C#5 S Z 0 U E 124.2 R Z 0 L Z 0 T AW 124 LC Z 0 T AW 126 U Z 0 = A 128.0

//Se incrementa Z0 en cada flanco de subida de E124.0 //Se carga Z0 con la constante 5, en el flanco de subida //de E124.1 //Se pone a cero el contador Z0, si E124.2=1 //Carga el contenido de Z0 y lo muestra en AW124 en formato HEX //Carga el contenido de Z0 y lo muestra en AW126 en formato BCD //Si Z00, A128.0=1, pero si Z0=0, entonces A128.0=0.

• Ejemplo segundo de manejo de un contador ascendente y descendente colocado en el bloque OB1. U E 124.0 ZV Z 0 U E 124.1 ZR Z 0 NOP 0 U E 124.2 L C#5 S Z 0 U E 124.3 R Z 0 L Z 0 T AW 124 LC Z 0 T AW 126 U Z 0 = A 128.0

//Se incrementa Z0 en cada flanco de subida de E124.0 //Se decrementa Z0 en cada flanco de subida de E124.1 //Se carga Z0 con la constante 5, en el flanco de subida //de E124.2 //Se pone a cero el contador Z0, si E124.3=1 //Carga el contenido de Z0 y lo muestra en AW124 en formato HEX //Carga el contenido de Z0 y lo muestra en AW126 en formato BCD //Si Z00, A128.0=1, pero si Z0=0, entonces A128.0=0.

11

Contadores

• Ejemplo tercero de un contador ascendente y descendente colocado en FC1. La conexión con FC1 se corta automáticamente cuando el contador alcanza el valor prefijado. Contenido de FC1: Declaración de parámetros formales: In_out In_out In_out In_out In_out In_out In In In_out

BitQueIncrementaContador BitQueDecrementaContador BitQuePoneACeroContador ContenidoDelContador ContenidoBCDDelContador SalidaBOOLDelContador ValorDeComparacion Contador BitDeFin

BOOL BOOL BOOL INT INT BOOL INT COUNTER BOOL

O M 0.0 ON M 0.0 FP M 10.0 SPBN _100 S M 10.1 R M 10.2 R M 10.3 L 2 T #PalabraDeContar R #BitDeFin _100: NOP 0 U M 10.1 SPBN _101 U #BitQueIncrementaContador ZV #Contador U #BitQueDecrementaContador ZR #Contador U #BitQuePoneACeroContador R #Contador L #Contador T #ContenidoDelContador LC #Contador T #ContenidoBCDDelContador U #Contador = #SalidaBOOLDelContador L #Contador L #ValorDeComparacion -I SPN _101 SET R M 10.1 S M 10.2 _101: NOP 0

//Se incrementa #Contador en cada flanco de subida //Se decrementa #Contador en cada flanco de subida //Se pone a cero #Contador //Deposita en #ContenidoDelContador el valor de //#Contador //Deposita en #ContenidoDelContador en formato //BCD el valor de #Contador //Si #Contador0, #SalidaBOOLDelContador=1, //Y si #Contador=0, #SalidaBOOLDelContador=0.

12

Contadores

U M 10.2 SPBN _102 R #Contador L #PalabraDeContar L 1 -I T #PalabraDeContar SPN _102 SET R M 10.2 S M 10.3 _102: NOP 0 U M 10.3 SPBN _103 R M 10.3 R M 10.0 S #BitDeFin _103: NOP 0 Contenido de OB1: U E 124.0 FP M 0.0 S M 0.1

//Estas tres primeras líneas, sirven únicamente //para poner a “1” el Bit M0.1.

U M 0.1 SPBN _001 CALL FC 1 Contador :=Z0 ValorDeComparacion :=5 BitQueIncrementaContador :=E125.0 BitQueDecrementaContador:=E125.1 BitQuePoneACeroContador :=E125.2 ContenidoDelContador :=AW124 ContenidoBCDDelContador:=AW126 SalidaBOOLDelContador :=A128.0 BitDeFin :=M150.0 PalabraDeContar :=MW100 U M 150.0 R M 0.1 _001: NOP 0

13

Máquina remachadora

Máquina remachadora

Índice

• Ejemplo de manejo de una máquina de remachar. B

D ARRASTRADOR 3 ARRASTRADOR 2

C

N2

N3

N4

N1

ARRASTRADOR 1

A

La máquina del dibujo, ensambla dos (2) chapas de la siguiente forma. El operario coloca manualmente dos (2) chapas, una en el arrastrador 2 y la otra en arrastrador 3, después pulsa un Botón Empezar (BE) y a partir de aquí ocurre lo siguiente: 1.2.3.4.5.6.7.8.9.10.11.12.13.14.-

Sale cilindro A que mueve el arrastrador N2-N1 hasta situar N1 bajo el cilindro D. Sale el cilindro D y efectúa el remachado de N1. Se retrae el cilindro D. Sale el cilindro C y sitúa N2 bajo el cilindro D. Sale el cilindro D y efectúa el remachado de N2. Se retrae el cilindro D. Se retrae el cilindro C. Se retrae el cilindro A y sitúa N3 bajo el cilindro D. Sale el cilindro D y efectúa el remachado de N3. Se retrae el cilindro D. Sale el cilindro B y sitúa N4 bajo el cilindro D. Sale el cilindro D y efectúa el remachado de N4. Se retrae el cilindro D. Se retrae el cilindro B.

El operario retira las chapas, coloca dos (2) nuevas chapas y el ciclo vuelve a comenzar. En todos los casos los cilindros están gobernados por electro válvulas del tipo 5/2 monoestables. Se pide realizar un programa que controle el proceso. Este ejercicio lo hemos resuelto ya en la página 194 del libro empleando funciones tipo C, aunque aquí vamos a resolverlo empleando funciones tipo D, para que el lector pueda comparar las ventajas e inconvenientes de cada una de las soluciones adoptadas. 15

Máquina remachadora

Lo mismo que antes, haremos primeramente un estudio de los movimientos elementales que pensamos manejar desde funciones Salir cilindro A Entrar cilindro A Salir cilindro B Entrar cilindro B

Salir cilindro C Entrar cilindro C Salir cilindro D Entrar cilindro D

(A+) (A-) (B+) (B-)

(C+) (C-) (D+) (D-)

Empezaremos resolviendo el problema empleando funciones tipo D. Para ello, crearemos dos (2) funciones FC1 y FC2 tales que la FC1 realice la tarea de sacar el émbolo de un cilindro cualquiera y la FC2 realice la tarea de introducir el émbolo de un cilindro cualquiera. Empezaremos como siempre pintando la tabla de entradas/salidas, que lógicamente debe ser la misma que ya hemos visto en la página 195 del libro. E124.0 E124.1 E124.2 E124.3 E124.4 E124.5 E124.6 E124.7 E125.0

Entradas Botón Empezar (BE) El émbolo del cilindro A está fuera El émbolo del cilindro A está dentro El émbolo del cilindro B está fuera El émbolo del cilindro B está dentro El émbolo del cilindro C está fuera El émbolo del cilindro C está dentro El émbolo del cilindro D está fuera El émbolo del cilindro D está dentro

A124.0 A124.1 A124.2 A124.3

Salidas Salir cilindro/retraer cilindro A Salir cilindro/retraer cilindro B Salir cilindro/retraer cilindro C Salir cilindro/retraer cilindro D

Veamos ahora el G1 de la función FC1: Desde OB1

Inicializar la función en la 1ª pasada y no volver a ejecutar esta etapa

0

=1

Salir émbolo del cilindro

1

El émbolo ha salido

BitDeFin=1

2 =1

Hacia OB1

16

Máquina remachadora

Y ahora el G2 de FC1:

Desde OB1

En la 1ª pasada hacer: 0

Inicializar valores =1

BitDeEtapa_1=1 BitDeEtapa_2=0 BitDeFin = 0)

BitDeEtapa_1 BitDeSalidaAfectada = 1

1

BitDeEntradaAfectada=1

BitDeEtapa_2

BitDeFin=1 BitDeTrabajo=0

2

=1

Hacia OB1 Podemos ahora crear la función FC1 y declararemos los siguientes parámetros formales: In In In Out Out In

BOOL BitDeTrabajo BitDeEtapa_1 BOOL BitDeEtapa_2 BOOL BitDeFin BOOL BitDeSalidaAfectada BOOL BitDeEntradaAfectada BOOL

Los parámetros actuales que pasaremos a FC1, según se trate de ordenar salir el émbolo de A, B, C o D, serán los siguientes: A BitDeTrabajo M10.0 BitDeEtapa_1 M10.1 BitDeEtapa_2 M10.2 BitDeFin M200.0 BitDeSalidaAfectada A124.0 BitDeEntradaAfectada E124.1

B M11.0 M11.1 M11.2 M200.1 A124.1 E124.3

C M12.0 M12.1 M12.2 M200.2 A124.2 E124.5

D M13.0 M13.1 M13.2 M200.3 A124.3 E124.7

El contenido de FC1 será el siguiente: FC1: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U #BitDeEtapa_1 U #BitDeEtapa_2 ON M 0.0 SPBN _101 SPBN _102 FP #BitDeTrabajo S #BitDeSalidaAfectada R #BitDeEtapa_2 SPBN _100 U #BitDeEntradaAfectada S #BitDeFin S #BitDeEtapa_1 R #BitDeEtapa_1 R #BitDeTrabajo R #BitDeEtapa_2 S #BitDeEtapa_2 _102: NOP 0 R #BitDeFin _101: NOP 0 _100: NOP 0

17

Máquina remachadora

La función FC2, encargada de introducir los émbolos de los cuatro (4) cilindros, es igual que la función FC1, sólo que la línea tres (3) de la etapa uno (1) dirá “R #BitDeSalidaAfectada” en lugar de “S #BitDeSalidaAfectada”, razón por la que no la volveremos a escribir aquí. Así, los parámetros actuales que pasaremos a FC2, según se trate de ordenar entrar el émbolo de A, B, C ó D, serán los siguientes: A BitDeTrabajo M14.0 BitDeEtapa_1 M14.1 BitDeEtapa_2 M14.2 BitDeFin M200.4 BitDeSalidaAfectada A124.0 BitDeEntradaAfectada E124.2

B M15.0 M15.1 M15.2 M200.5 A124.1 E124.4

C M16.0 M16.1 M16.2 M200.6 A124.2 E124.6

D M17.0 M17.1 M17.2 M200.7 A124.3 E125.0

Ahora que ya tenemos FC1 y FC2, podemos pensar en OB1, que tendrá el siguiente G1: 6

0

ENTRAR A ENTRAR B ENTRAR C ENTRAR D

(A-) (B-) (C-) (D-)

7

C entrado

BE*(A entrado)*(B entrado)* (C entrado)*(D entrado) 1

10

ENTRAR A (A-) A entrado

SALIR A (A+) 11

A salido 2

ENTRAR C (C-)

SALIR D (D+) D salido

SALIR D (D+) 12

ENTRAR D (D-)

D salido D entrado 3

ENTRAR D (D-) 13

D entrado 4

B salido

SALIR C (C+) 14

C salido 5

SALIR D (D+) D salido

SALIR D (D+)

15

D salido 6

SALIR B (B+)

ENTRAR D (D-) D entrado

ENTRAR D (D-)

0 16

D entrado

ENTRAR B (B-) B entrado

7

0 18

Máquina remachadora

Y el siguiente G2:

M0.0 0

CALL FC2 CALL FC2 CALL FC2 CALL FC2

(A) (B) (C) (D)

7

1

10

CALL FC1 (A)

M0.2

11

CALL FC1 (D) M200.3

M1.2

CALL FC1 (D)

2

CALL FC2 (A) M200.4

M1.1

M200.0

CALL FC2 (C) M200.6

M1.0

E124.0*M200.4*M200.5* *M200.6*M200.7

M0.1

6

M0.7

12

CALL FC2 (D)

M200.3

M0.3 3

M200.7

M1.3

CALL FC2 (D)

13

M200.7

M0.4 4

M200.1

M1.4

CALL FC1 (C)

14

M200.2

M0.5 5

15

M200.3

M0.6 6

CALL FC2 (D) M200.7

M1.6

CALL FC2 (D)

CALL FC1 (D) M200.3

M1.5

CALL FC1 (D)

CALL FC1 (B)

0 16

M200.7

CALL FC2 (B) M200.5

7

0

Donde: FC1 (LETRA) = Función FC1 con parámetros actuales de cilindro “LETRA” FC2 (LETRA) = Función FC2 con parámetros actuales de cilindro “LETRA” Escribamos ahora el contenido de OB1 a partir de este último G2:

19

Máquina remachadora

OB1: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.0 U M 0.2 SPBN _000 SPBN _002 CALL FC 2 CALL FC 1 BitDeTrabajo :=M14.0 BitDeTrabajo :=M13.0 BitDeEtapa_1 :=M14.1 BitDeEtapa_1 :=M13.1 BitDeEtapa_2 :=M14.2 BitDeEtapa_2 :=M13.2 BitDeFin :=M200.4 BitDeFin :=M200.3 BitDeEntradaAfectada:=E124.2 BitDeEntradaAfectada:=E124.7 BitDeSalidaAfectada :=A124.0 //ABitDeSalidaAfectada :=A124.3 //D+ CALL FC 2 U M 200.3 BitDeTrabajo :=M15.0 R M 0.2 BitDeEtapa_1 :=M15.1 S M 0.3 BitDeEtapa_2 :=M15.2 _002: NOP 0 BitDeFin :=M200.5 BitDeEntradaAfectada:=E124.4 U M 0.3 BitDeSalidaAfectada :=A124.1 //BSPBN _003 CALL FC 2 CALL FC 2 BitDeTrabajo :=M16.0 BitDeTrabajo :=M17.0 BitDeEtapa_1 :=M16.1 BitDeEtapa_1 :=M17.1 BitDeEtapa_2 :=M16.2 BitDeEtapa_2 :=M17.2 BitDeFin :=M200.6 BitDeFin :=M200.7 BitDeEntradaAfectada:=E124.6 BitDeEntradaAfectada:=E125.0 BitDeSalidaAfectada :=A124.2 //CBitDeSalidaAfectada :=A124.3 //DCALL FC 2 U M 200.7 BitDeTrabajo :=M17.0 R M 0.3 BitDeEtapa_1 :=M17.1 S M 0.4 BitDeEtapa_2 :=M17.2 _003: NOP 0 BitDeFin :=M200.7 BitDeEntradaAfectada:=E125.0 U M 0.4 BitDeSalidaAfectada :=A124.3 //DSPBN _004 U M 200.4 CALL FC 1 U M 200.5 BitDeTrabajo :=M12.0 U M 200.6 BitDeEtapa_1 :=M12.1 U M 200.7 BitDeEtapa_2 :=M12.2 U E 124.0 BitDeFin :=M200.2 R M 0.0 BitDeEntradaAfectada:=E124.5 S M 0.1 BitDeSalidaAfectada :=A124.2 //C+ _000: NOP 0 U M 200.2 R M 0.4 U M 0.1 S M 0.5 SPBN _001 _004: NOP 0 CALL FC 1 BitDeTrabajo :=M10.0 BitDeEtapa_1 :=M10.1 BitDeEtapa_2 :=M10.2 BitDeFin :=M200.0 BitDeEntradaAfectada:=E124.1 BitDeSalidaAfectada :=A124.0 //A+ U M 200.0 R M 0.1 S M 0.2 _001: NOP 0

20

Máquina remachadora

OB1 (continuación): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.5 U M 1.0 SPBN _005 SPBN _010 CALL FC 1 CALL FC 2 BitDeTrabajo :=M13.0 BitDeTrabajo :=M14.0 BitDeEtapa_1 :=M13.1 BitDeEtapa_1 :=M14.1 BitDeEtapa_2 :=M13.2 BitDeEtapa_2 :=M14.2 BitDeFin :=M200.3 BitDeFin :=M200.4 BitDeEntradaAfectada:=E124.7 BitDeEntradaAfectada:=E124.2 BitDeSalidaAfectada :=A124.3 //D+ BitDeSalidaAfectada :=A124.0 //AU M 200.3 U M 200.4 R M 0.5 R M 1.0 S M 0.6 S M 1.1 _005: NOP 0 _010: NOP 0 U M 0.6 SPBN _006 U M 1.1 CALL FC 2 SPBN _011 BitDeTrabajo :=M17.0 CALL FC 1 BitDeEtapa_1 :=M17.1 BitDeTrabajo :=M13.0 BitDeEtapa_2 :=M17.2 BitDeEtapa_1 :=M13.1 BitDeFin :=M200.7 BitDeEtapa_2 :=M13.2 BitDeEntradaAfectada:=E125.0 BitDeFin :=M200.3 BitDeSalidaAfectada :=A124.3 //DBitDeEntradaAfectada:=E124.7 U M 200.7 BitDeSalidaAfectada :=A124.3 //D+ R M 0.6 U M 200.3 S M 0.7 R M 1.1 _006: NOP 0 S M 1.2 _011: NOP 0 U M 0.7 SPBN _007 U M 1.2 CALL FC 2 SPBN _012 BitDeTrabajo :=M16.0 CALL FC 2 BitDeEtapa_1 :=M16.1 BitDeTrabajo :=M17.0 BitDeEtapa_2 :=M16.2 BitDeEtapa_1 :=M17.1 BitDeFin :=M200.6 BitDeEtapa_2 :=M17.2 BitDeEntradaAfectada:=E124.6 BitDeFin :=M200.7 BitDeSalidaAfectada :=A124.2 //CBitDeEntradaAfectada:=E125.0 U M 200.6 BitDeSalidaAfectada :=A124.3 //DR M 0.7 U M 200.7 S M 1.0 R M 1.2 _007: NOP 0 S M 1.3 _012: NOP 0

21

Máquina remachadora

OB1 (continuación): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 1.3 U M 1.5 SPBN _013 SPBN _015 CALL FC 1 CALL FC 2 BitDeTrabajo :=M11.0 BitDeTrabajo :=M17.0 BitDeEtapa_1 :=M11.1 BitDeEtapa_1 :=M17.1 BitDeEtapa_2 :=M11.2 BitDeEtapa_2 :=M17.2 BitDeFin :=M200.1 BitDeFin :=M200.7 BitDeEntradaAfectada:=E124.3 BitDeEntradaAfectada:=E125.0 BitDeSalidaAfectada :=A124.1 //B+ BitDeSalidaAfectada :=A124.3 //DU M 200.1 U M 200.7 R M 1.3 R M 1.5 S M 1.4 S M 1.6 _013: NOP 0 _015: NOP 0 U M 1.4 SPBN _014 CALL FC 1 BitDeTrabajo :=M13.0 BitDeEtapa_1 :=M13.1 BitDeEtapa_2 :=M13.2 BitDeFin :=M200.3 BitDeEntradaAfectada:=E124.7 BitDeSalidaAfectada :=A124.3 //D+ U M 200.3 R M 1.4 S M 1.5 _014: NOP 0

U M 1.6 SPBN _016 CALL FC 2 BitDeTrabajo :=M15.0 BitDeEtapa_1 :=M15.1 BitDeEtapa_2 :=M15.2 BitDeFin :=M200.5 BitDeEntradaAfectada:=E124.4 BitDeSalidaAfectada :=A124.1 U M 200.5 R M 1.6 S M 0.0 _016: NOP 0

Quedándonos finalmente OB100, cuyo contenido podría ser el siguiente: L B#16#0 T MB0 CALL SFC21 BVAL :=P#M0.0 BYTE 1 RET_VAL:=MW100 BLK :=P#M1.0 BYTE 200 SET S M0.0

22

//B-

Máquina transfer

Máquina transfer

Índice

• Ejemplo de manejo de una máquina transfer.

Fig.17.6

Este ejemplo ya lo vimos en el apartado 15.3 del libro, y posteriormente también lo vimos en la página 199 del mismo libro, sólo que allí lo vimos con funciones tipo C y aquí lo resolveremos empleando funciones tipo D, con objeto de que el lector saque sus propias conclusiones sobre la ventaja de emplear un método u otro. Pasamos directamente a la tabla de contactos de entrada/salida: E124.0 E124.1 E124.2 E124.3 E124.4 E124.5 E124.6 E124.7 E125.0 E125.1 E125.2 E125.3 E125.4 E125.5 E125.6 E125.7 E126.0 E126.1 E126.2

Entradas Botón Empezar (BE) El émbolo del cilindro A está dentro (RR1) El émbolo del cilindro A está fuera (RR2) El émbolo del cilindro B está dentro (RR3) El émbolo del cilindro B está fuera (RR4) El émbolo del cilindro C está dentro (RR5) El émbolo del cilindro C está fuera (RR6) El émbolo del cilindro D está dentro (RR7) El émbolo del cilindro D está fuera (RR8) El émbolo del cilindro E está dentro (RR9) El émbolo del cilindro E está fuera (RR10) El émbolo del cilindro F está dentro (RR11) El émbolo del cilindro F está fuera (RR12) El émbolo del cilindro G está dentro (RR13) El émbolo del cilindro G está fuera (RR14) El émbolo del cilindro H está dentro (RR15) El émbolo del cilindro H está fuera (RR16) El émbolo del cilindro I/J está dentro (RR17) El émbolo del cilindro I/J está fuera (RR18)

23

A124.0 A124.1 A124.2 A124.3 A124.4 A124.5 A124.6 A124.7 A125.0

Salidas Salir cilindro/retraer cilindro A Salir cilindro/retraer cilindro B Salir cilindro/retraer cilindro C Salir cilindro/retraer cilindro D Salir cilindro/retraer cilindro E Salir cilindro/retraer cilindro F Salir cilindro/retraer cilindro G Salir cilindro/retraer cilindro H Salir cilindro/retraer cilindros I/J

Máquina transfer

Llamaremos “RRn” al relé Reed “n” que detecta la posición del émbolo del cilindro sobre el que esté montado. Emplearemos las siguientes funciones tipo D: Nombre FC1 FC2

Tarea Hace salir el émbolo de cualquier cilindro. Hace entrar el émbolo de cualquier cilindro.

Emplearemos electro válvulas 5/2 monoestables. Antes de pintar los G1 y G2 de OB1, empezaremos poniendo las tablas que después usaremos en las llamadas a FC1 y FC2:

Para FC1 (que hace salir cualquier cilindro): BitDeTrabajo BitDeEtapa_1 BitDeEtapa_2 BitDeFin BitDeSalidaAfectada BitDeEntradaAfectada

A

M10.0 M10.1 M10.2 M200.0 A124.0 E124.2

B

M11.0 M11.1 M11.2 M200.1 A124.1 E124.4

C

M12.0 M12.1 M12.2 M200.2 A124.2 E124.6

D

M13.0 M13.1 M13.2 M200.3 A124.3 E125.0

E

M14.0 M14.1 M14.2 M200.4 A124.4 E125.2

F

M15.0 M15.1 M15.2 M200.5 A124.5 E125.4

G

M16.0 M16.1 M16.2 M200.6 A124.6 E125.6

H

M17.0 M17.1 M17.2 M200.7 A124.7 E126.0

I/J

M20.0 M20.1 M20.2 M201.0 A125.0 E126.2

Tabla 1

Para FC2 (que hace entrar cualquier cilindro):

BitDeTrabajo BitDeEtapa_1 BitDeEtapa_2 BitDeFin BitDeSalidaAfectada BitDeEntradaAfectada

A

M21.0 M21.1 M21.2 M201.1 A124.0 E124.1

B

M22.0 M22.1 M22.2 M201.2 A124.1 E124.3

C

M23.0 M23.1 M23.2 M201.3 A124.2 E124.5

D

M24.0 M24.1 M24.2 M201.4 A124.3 E124.7

E

M25.0 M25.1 M25.2 M201.5 A124.4 E125.1

F

M26.0 M26.1 M26.2 M201.6 A124.5 E125.3

G

M27.0 M27.1 M27.2 M201.7 A124.6 E125.5

H

M30.0 M30.1 M30.2 M202.0 A124.7 E125.7

I/J

M31.0 M31.1 M31.2 M202.1 A125.0 E126.1

Tabla 2

Ahora que ya tenemos estas tablas, pasaremos a pintar el G1 de OB1 que ya vimos en las páginas 203 y 204 del libro:

24

Máquina transfer

12,20,25,27

Hacer: A- , B+, C-, D-, E-, F-, G-, H- e I/J-

0

BE*Todos los cilindros están en posición B-

1

Hecho A+

2

Hecho B+

3

Hecho

4

C+

13

D+

14

Hecho 6

D-

15

Hecho 7

D+ Hecho

10

DHecho

11

C-

F+

I+ J+

22

27

IJ-

23

Hecho

G-

H-

24

Hecho

E-

25

ESPERAR

Hecho 20

ESPERAR

Hecho 12

ESPERAR

TODAS LAS SECUENCIAS HAN TERMINADO

1

25

AHecho

Hecho

Hecho FG+

Hecho 17

26

Hecho

Hecho 16

H+

21

Hecho

Hecho 5

E+

ESPERAR

Máquina transfer

Y ahora podemos pintar el G2 de OB1: M0.0 0

12,20,25,27

FC2(A), FC1(B), FC2(C), FC2(D), FC2(E), FC2(F), FC2(G), FC2(H), FC2(I/J) E124.0*M201.1*M200.1*M201.3*M201.4* M201.5*M201.6*M201.7*M202.0*M202.1

M0.1 FC2(B)

1

M201.2

M0.2 2

FC1(A) M200.0

M0.3 3

FC1(B) M200.1

M0.4

M1.3 4

FC1(C) M200.2

M0.5 5

6

7

10

M201.4

M1.1 11

FC2(G)

16

M201.7

M1.7 17

M201.0 FC2(I/J) M202.1 FC2(H)

24

M2.5 FC2(E) 25

M202.0

M201.5

M2.0

ESPERAR

20

M201.3

M1.2 12

ESPERAR

M1.2*M2.0*M2.5*M2.7

1

26

26

M2.7 FC1(I/J) 27

22

M201.6*M200.6 M2.4

M1.6

FC2(C)

M200.7

M2.3 FC2(F) 23 FC1(G)

15

FC1(H)

21

M200.5

M1.5

FC2(D)

M2.6

M2.2

FC1(F)

14

FC1(D) M200.3

M1.0

M200.4

M1.4

FC2(D) M201.4

M0.7

FC1(E)

13

FC1(D) M200.3

M0.6

M2.1

ESPERAR

FC2(A) M201.1 ESPERAR

Máquina transfer

Vamos a pensar ahora en FC1 y FC2. Empezaremos creando primeramente FC1, y declararemos previamente los siguientes parámetros formales: In In In In Out Out

BitDeTrabajo BitDeEtapa_1 BitDeEtapa_2 BitDeEntradaAfectada BitDeFin BitDeSalidaAfectada

BOOL BOOL BOOL BOOL BOOL BOOL

Y rápidamente escribiremos FC2, que es igual que FC1 excepto que ordenamos que entre el cilindro y no que salga: Así pues: FC1 O M 0.0 ON M 0.0 FP #BitDeTrabajo SPBN _100 S #BitDeEtapa_1 R #BitDeEtapa_2 R #BitDeFin _100: NOP 0

//*

U #BitDeEtapa_1 SPBN _101 S #BitDeSalidaAfectada

U #BitDeEntradaAfectada R #BitDeEtapa_1 S #BitDeEtapa_2 _101: NOP 0 U #BitDeEtapa_2 SPBN _102 R #BitDeEtapa_2 S #BitDeFin R #BitDeTrabajo _102: NOP 0

FC2 O M 0.0 ON M 0.0 FP #BitDeTrabajo SPBN _100 S #BitDeEtapa_1 R #BitDeEtapa_2 R #BitDeFin _100: NOP 0 U #BitDeEtapa_1 SPBN _101 R #BitDeSalidaAfectada U #BitDeEntradaAfectada R #BitDeEtapa_1 S #BitDeEtapa_2 _101: NOP 0

//*

U #BitDeEtapa_2 SPBN _102 R #BitDeEtapa_2 S #BitDeFin R #BitDeTrabajo _102: NOP 0

Obsérvese que la línea marcada con “*” es la única diferencia entre FC1 y FC2. Con esto y con el G2 de OB1, que ya hemos visto, tenemos suficiente para escribir OB1 en lenguaje AWL:

27

Máquina transfer

OB1: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.0 CALL FC 2 //GSPBN _000 BitDeTrabajo :=M27.0 CALL FC 2 //ABitDeEtapa_1 :=M27.1 BitDeTrabajo :=M21.0 BitDeEtapa_2 :=M27.2 BitDeEtapa_1 :=M21.1 BitDeEntradaAfectada:=E125.5 BitDeEtapa_2 :=M21.2 BitDeFin :=M201.7 BitDeEntradaAfectada:=E124.1 BitDeSalidaAfectada :=A124.6 BitDeFin :=M201.1 CALL FC 2 //HBitDeSalidaAfectada :=A124.0 BitDeTrabajo :=M30.0 CALL FC 1 //B+ BitDeEtapa_1 :=M30.1 BitDeTrabajo :=M11.0 BitDeEtapa_2 :=M30.2 BitDeEtapa_1 :=M11.1 BitDeEntradaAfectada:=E125.7 BitDeEtapa_2 :=M11.2 BitDeFin :=M202.0 BitDeEntradaAfectada:=E124.4 BitDeSalidaAfectada :=A124.7 BitDeFin :=M200.1 CALL FC 2 //I/JBitDeSalidaAfectada :=A124.1 BitDeTrabajo :=M31.0 CALL FC 2 //CBitDeEtapa_1 :=M31.1 BitDeTrabajo :=M23.0 BitDeEtapa_2 :=M31.2 BitDeEtapa_1 :=M23.1 BitDeEntradaAfectada:=E126.1 BitDeEtapa_2 :=M23.2 BitDeFin :=M202.1 BitDeEntradaAfectada:=E124.5 BitDeSalidaAfectada :=A125.0 BitDeFin :=M201.3 U E 124.0 BitDeSalidaAfectada :=A124.2 U M 201.1 CALL FC 2 //DU M 200.1 BitDeTrabajo :=M24.0 U M 201.3 BitDeEtapa_1 :=M24.1 U M 201.4 BitDeEtapa_2 :=M24.2 U M 201.5 BitDeEntradaAfectada:=E124.7 U M 201.6 BitDeFin :=M201.4 U M 201.7 BitDeSalidaAfectada :=A124.3 U M 202.0 CALL FC 2 //EU M 202.1 BitDeTrabajo :=M25.0 R M 0.0 BitDeEtapa_1 :=M25.1 S M 0.1 BitDeEtapa_2 :=M25.2 _000: NOP 0 BitDeEntradaAfectada:=E125.1 BitDeFin :=M201.5 BitDeSalidaAfectada :=A124.4 CALL FC 2 //FBitDeTrabajo :=M26.0 BitDeEtapa_1 :=M26.1 BitDeEtapa_2 :=M26.2 BitDeEntradaAfectada:=E125.3 BitDeFin :=M201.6 BitDeSalidaAfectada :=A124.5

28

Máquina transfer

OB1 (continuación): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.1 U M 0.4 SPBN _001 SPBN _004 CALL FC 2 //BCALL FC 1 //C+ BitDeTrabajo :=M22.0 BitDeTrabajo :=M12.0 BitDeEtapa_1 :=M22.1 BitDeEtapa_1 :=M12.1 BitDeEtapa_2 :=M22.2 BitDeEtapa_2 :=M12.2 BitDeEntradaAfectada:=E124.3 BitDeEntradaAfectada:=E124.6 BitDeFin :=M201.2 BitDeFin :=M200.2 BitDeSalidaAfectada :=A124.1 BitDeSalidaAfectada :=A124.2 U M 201.2 U M 200.2 R M 0.1 R M 0.4 S M 0.2 S M 0.5 _001: NOP 0 _004: NOP 0 U M 0.2 SPBN _002 CALL FC 1 //A+ BitDeTrabajo :=M10.0 BitDeEtapa_1 :=M10.1 BitDeEtapa_2 :=M10.2 BitDeEntradaAfectada:=E124.2 BitDeFin :=M200.0 BitDeSalidaAfectada :=A124.0 U M 200.0 R M 0.2 S M 0.3 _002: NOP 0

U M 0.5 SPBN _005 CALL FC 1 //D+ BitDeTrabajo :=M13.0 BitDeEtapa_1 :=M13.1 BitDeEtapa_2 :=M13.2 BitDeEntradaAfectada:=E125.0 BitDeFin :=M200.3 BitDeSalidaAfectada :=A124.3 U M 200.3 R M 0.5 S M 0.6 _005: NOP 0

U M 0.3 SPBN _003 CALL FC 1 //B+ BitDeTrabajo :=M11.0 BitDeEtapa_1 :=M11.1 BitDeEtapa_2 :=M11.2 BitDeEntradaAfectada:=E124.4 BitDeFin :=M200.1 BitDeSalidaAfectada :=A124.1 U M 200.1 R M 0.3 S M 0.4 S M 1.3 S M 2.1 S M 2.6 _003: NOP 0

U M 0.6 SPBN _006 CALL FC 2 //DBitDeTrabajo :=M24.0 BitDeEtapa_1 :=M24.1 BitDeEtapa_2 :=M24.2 BitDeEntradaAfectada:=E124.7 BitDeFin :=M201.4 BitDeSalidaAfectada :=A124.3 U M 201.4 R M 0.6 S M 0.7 _006: NOP 0

29

Máquina transfer

OB1 (continuación): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.7 U M 1.4 SPBN _007 SPBN _014 CALL FC 1 //D+ CALL FC 1 //F+ BitDeTrabajo :=M13.0 BitDeTrabajo :=M15.0 BitDeEtapa_1 :=M13.1 BitDeEtapa_1 :=M15.1 BitDeEtapa_2 :=M13.2 BitDeEtapa_2 :=M15.2 BitDeEntradaAfectada:=E125.0 BitDeEntradaAfectada:=E125.4 BitDeFin :=M200.3 BitDeFin :=M200.5 BitDeSalidaAfectada :=A124.3 BitDeSalidaAfectada :=A124.5 U M 200.3 U M 200.5 R M 0.7 R M 1.4 S M 1.0 S M 1.5 _007: NOP 0 _014: NOP 0 U M 1.0 SPBN _010 U M 1.5 CALL FC 2 //DSPBN _015 BitDeTrabajo :=M24.0 CALL FC 2 //FBitDeEtapa_1 :=M24.1 BitDeTrabajo :=M26.0 BitDeEtapa_2 :=M24.2 BitDeEtapa_1 :=M26.1 BitDeEntradaAfectada:=E124.7 BitDeEtapa_2 :=M26.2 BitDeFin :=M201.4 BitDeEntradaAfectada:=E125.3 BitDeSalidaAfectada :=A124.3 BitDeFin :=M201.6 U M 201.4 BitDeSalidaAfectada :=A124.5 R M 1.0 CALL FC 1 //G+ S M 1.1 BitDeTrabajo :=M16.0 _010: NOP 0 BitDeEtapa_1 :=M16.1 U M 1.1 BitDeEtapa_2 :=M16.2 SPBN _011 BitDeEntradaAfectada:=E125.6 CALL FC 2 //CBitDeFin :=M200.6 BitDeTrabajo :=M23.0 BitDeSalidaAfectada :=A124.6 BitDeEtapa_1 :=M23.1 BitDeEtapa_2 :=M23.2 U M 201.6 BitDeEntradaAfectada:=E124.5 U M 200.6 BitDeFin :=M201.3 R M 1.5 BitDeSalidaAfectada :=A124.2 S M 1.6 U M 201.3 _015: NOP 0 R M 1.1 S M 1.2 U M 1.6 _011: NOP 0 SPBN _016 U M 1.3 CALL FC 2 //GSPBN _013 BitDeTrabajo :=M27.0 CALL FC 1 //E+ BitDeEtapa_1 :=M27.1 BitDeTrabajo :=M14.0 BitDeEtapa_2 :=M27.2 BitDeEtapa_1 :=M14.1 BitDeEntradaAfectada:=E125.5 BitDeEtapa_2 :=M14.2 BitDeFin :=M201.7 BitDeEntradaAfectada:=E125.2 BitDeSalidaAfectada :=A124.6 BitDeFin :=M200.4 U M 201.7 BitDeSalidaAfectada :=A124.4 R M 1.6 U M 200.4 S M 1.7 R M 1.3 _016: NOP 0 S M 1.4 _013: NOP 0

30

Máquina transfer

OB1 (continuación): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 1.7 U M 2.4 SPBN _017 SPBN _024 CALL FC 2 //ECALL FC 2 //HBitDeTrabajo :=M25.0 BitDeTrabajo :=M30.0 BitDeEtapa_1 :=M25.1 BitDeEtapa_1 :=M30.1 BitDeEtapa_2 :=M25.2 BitDeEtapa_2 :=M30.2 BitDeEntradaAfectada:=E125.1 BitDeEntradaAfectada:=E125.7 BitDeFin :=M201.5 BitDeFin :=M202.0 BitDeSalidaAfectada :=A124.4 BitDeSalidaAfectada :=A124.7 U M 201.5 U M 202.0 R M 1.7 R M 2.4 S M 2.0 S M 2.5 _017: NOP 0 _024: NOP 0 U M 2.1 SPBN _021 U M 2.6 CALL FC 1 //H+ SPBN _026 BitDeTrabajo :=M17.0 CALL FC 2 //ABitDeEtapa_1 :=M17.1 BitDeTrabajo :=M21.0 BitDeEtapa_2 :=M17.2 BitDeEtapa_1 :=M21.1 BitDeEntradaAfectada:=E126.0 BitDeEtapa_2 :=M21.2 BitDeFin :=M200.7 BitDeEntradaAfectada:=E124.1 BitDeSalidaAfectada :=A124.7 BitDeFin :=M201.1 U M 200.7 BitDeSalidaAfectada :=A124.0 R M 2.1 U M 201.1 S M 2.2 R M 2.6 _021: NOP 0 S M 2.7 U M 2.2 _026: NOP 0 SPBN _022 CALL FC 1 //I/J+ U M 1.2 BitDeTrabajo :=M20.0 U M 2.0 BitDeEtapa_1 :=M20.1 U M 2.5 BitDeEtapa_2 :=M20.2 U M 2.7 BitDeEntradaAfectada:=E126.2 R M 1.2 BitDeFin :=M201.0 R M 2.0 BitDeSalidaAfectada :=A125.0 R M 2.5 U M 201.0 R M 2.7 R M 2.2 S M 0.1 S M 2.3 Colocaremos aquí el contenido de _022: NOP 0 OB100 con objeto de no dejar sin uso U M 2.3 este espacio: SPBN _023 CALL FC 2 //I/JL B#16#0 BitDeTrabajo :=M31.0 T MB 0 BitDeEtapa_1 :=M31.1 CALL "FILL" //SFC21 BitDeEtapa_2 :=M31.2 BVAL :=P#M 0.0 BYTE 1 BitDeEntradaAfectada:=E126.1 RET_VAL:=MW100 BitDeFin :=M202.1 BLK :=P#M 1.0 BYTE 200 BitDeSalidaAfectada :=A125.0 SET U M 202.1 S M 0.0 R M 2.3 S M 2.4 _023: NOP 0

31

Variadores de frecuencia

Índice

Variadores de frecuencia

Introducción: Como ya es sabido, la velocidad de giro (en RPM) de un motor trifásico asíncrono con rotor en cortocircuito, viene dado por la expresión:

F × 60 P Siendo F la frecuencia y P el número de polos magnéticos del motor. A la vista de esta fórmula, se entiende que ya que P es una constante del motor, la única forma que tenemos de variar la velocidad de giro, es haciendo variar la frecuencia F. Esto es precisamente lo que se consigue con los variadores de frecuencia, los que, en esencia, no son nada más que aparatos que entregan una tensión alterna trifásica, de frecuencia variable a voluntad (dentro de ciertos límites). Sobre este funcionamiento básico, los fabricantes de este tipo de material añaden otras funcionalidades, como por ejemplo la posibilidad de invertir dos (2) fases para que el motor gire en sentido contrario, o bien la posibilidad de arrancar y parar el motor según curvas de velocidad previamente introducidas en el aparato, o la posibilidad de trabajar con frecuencias fijas también previamente grabadas en el aparato (frecuencias JOG), etc. Es también típico de estos aparatos, el disponer de un juego de bornes codificados, cada uno con una misión concreta, como veremos en breve. El ejemplo que vamos a ver a continuación, se fundamenta en el variador de frecuencia 8200 SMD de la casa LENZE, que podemos representar esquemáticamente de la siguiente forma:

33

Variadores de frecuencia

Donde: Borne 7 8 9 20 28 E1 E2 E3 K12 K14

Datos de las conexiones (negrita=Lenze) Potencial de referencia Entrada analógica (0…+10 modificable con C34) Resistencia entrada > 50 K Alimentación DC interna para potenciómetro de consigna +10 V, máx., 10 mA. Alimentación DC interna para entradas digitales +12 V, máx., 20 mA Entrada digital Stara/Stop 0=Stop, 1=Start Entrada digital configurable con CE1 (JOG1) E1=1 Entrada digital configurable con CE2 (Sentido de giro) E2=0 (CW), E2=1 (CCW) Entrada digital configurable con CE3 (DCB) E3=1 (DCB) AC250 V/3 A Salida relé (N.O.) DC 24 V/2 A...240 V/0,22 A Fallo (Trip)

Para la resolución de nuestros ejemplos, antes de usar el variador, introduciremos en el mismo las siguientes constantes: CE1=1 CE2=4 CE3=5 La elección de estos parámetros significa que cuando por E1 se reciba un “1”, el V/F trabajará con JOG1=20 Hz como frecuencia de consigna. Cuando por E2 se reciba un “1”, el motor girará en sentido contrario a las agujas del reloj (CCW), y cuando reciba un “0” girará en sentido de las agujas del reloj (CW), y finalmente cuando E3 reciba “1”, el motor se comportará según el siguiente esquema de velocidad (paro Quickstop de Lenze):

Hz fmax fd2 fd1 0

tif

tir Tir

t

Tif

Siendo fmax la frecuencia introducida en C11 (normalmente 50 Hz.), fd2 la frecuencia de la que se parte (caso de desaceleración) o final (caso de aceleración) que se desea alcanzar, fd1 la frecuencia de la que se parte (caso de aceleración) o final (caso de desaceleración) que se desea alcanzar.

34

Variadores de frecuencia

Con estos valores, se calcula Tir (tiempo de aceleración) y Tif (tiempo de desaceleración) con las expresiones: C12=Tir = tir*(C11/(fd2-fd1))

C13=Tif = tif*(C11/(fd2-fd1))

• Ejemplo primero de variador de frecuencia. Se dispone de un móvil impulsado por un motor trifásico que se desplaza sobre un rail-guía. En los extremos del rail, se tienen dos (2) finales de carrera FC1 y FC2 que informan al PLC que el móvil se encuentra en el extremo izquierdo o derecho del rail respectivamente. El motor deseamos controlarlo con el variador de frecuencia anterior. Además disponemos de dos (2) pulsadores P1 y P2, de los que P1 sirve para desplazar el móvil hacia la derecha y P2 para desplazar el móvil hacia la izquierda. Cuando el móvil llegue a un extremo del recorrido, no deberá aceptar ninguna nueva orden de movimiento hasta pasados 3 segundos desde su llegada a dicho extremo. Además se desea que en cuanto el autómata pase de STOP a RUN, el móvil se posicione en el extremo izquierdo y se quede allí esperando. Tabla de entradas/salidas digitales: Entradas E124.0 E124.1 E124.2 E124.3

Salidas

A124.0 Desplazar móvil a la izquierda (P2) A124.1 FC1 (móvil está en extremo izquierdo) A124.2 FC2 (móvil está en extremo derecho) A124.3 Desplazar móvil a la derecha (P1)

G1de OB1:

Borne 28 (Start/Stop) Borne E1 (JOG1=20Hz) Borne E2 (Izda/dcha. = CCW/CW) Borne E3 (Quickstop)

G2 de OB1: M0.0 Quickstop=OFF Mover móvil a la izquierda

0 ¿FC1? 1

0

A124.3=1 T0=6s (SV)

1

Temporizar 6S/X1

T0=0

M0.2

Quickstop=OFF STOP

2

E124.2=1

M0.1

Quickstop=ON

A124.0=1 A124.1=1 A124.2=1 A124.3=0

A124.3=0 A124.0=0

2

¿P1?

E124.0=1 Hacia próxima página

Hacia próxima página

35

Variadores de frecuencia

De página anterior

De página anterior

M0.3

Mover móvil a dcha.

3

¿FC2?

A124.3=1 T1=6s (SV)

4

6S/X4

T1=0

M0.5

Quickstop=OFF STOP

5

E124.3=1

M0.4 Quickstop=ON Temporizar

4

A124.2=0 A124.0=1

3

A124.3=0 A124.0=0

5

E124.1=1

¿P2? 0

0

Pasado el G2 a operaciones AWL, tendremos: OB1: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.0 U M 0.3 SPBN _000 SPBN _003 S A 124.0 R A 124.2 S A 124.1 S A 124.0 S A 124.2 U E 124.3 R A 124.3 R M 0.3 U E 124.2 S M 0.4 R M 0.0 _003: NOP 0 S M 0.1 _000: NOP 0 U M 0.4 S A 124.3 U M 0.1 S A 124.3 U M 0.4 L S5T#6S U M 0.1 SV T 1 L S5T#6S SV T 0 U M 0.4 UN T 1 U M 0.1 R M 0.4 UN T 0 S M 0.5 R M 0.1 S M 0.2 U M 0.5 SPBN _005 U M 0.2 R A 124.3 SPBN _002 R A 124.0 R A 124.3 U E 124.1 R A 124.0 R M 0.5 U E 124.0 S M 0.0 R M 0.2 _005: NOP 0 S M 0.3 _002: NOP 0

36

Variadores de frecuencia

En cuanto al contenido de OB100, podemos poner: L B#16#0 T MB0 CALL SFC21 BVAL :=P#M 0.0 BYTE 1 RET_VAL:=MW100 BLK :=P#M 1.0 BYTE 500 L W#16#0 T AW124 SET S M0.0

• Ejemplo segundo de variador de frecuencia. Se trata de un móvil que puede desplazarse arriba y abajo, movido por un usillo fijo en sus extremos, que a su vez es accionado por un moto reductor que está, al mismo tiempo, controlado por un variador de frecuencia del tipo indicado anteriormente. Las posiciones posibles del móvil son A y B, que podemos detectar gracias a los relés Reed RR0 y RR1 respectivamente. La instalación dispone también de dos (2) pulsadores P1 y P2 con la misión de posicionar el móvil en A, y desplazar el móvil desde A hasta B, respectivamente.

37

Variadores de frecuencia

El perfil de velocidad que se pretende obtener, según el paro Quickstop de Lenze, es el siguiente:

Velocidad

Tiempo

RR1=ON

RR0=ON

Con lo dicho, tenemos ya información suficiente para definir la tabla de contactos de entrada/salida: Entradas E124.0 E124.1 E124.2 E124.3 E124.4

Salidas A124.0 A124.1 A124.2 A124.3

Relé Reed 0 (RR0) Relé Reed 1 (RR1) Error (señal TRIP procedente de V/F) P1 (posicionar móvil en A)

Borne 28 (Start/Stop) Borne E1 (JOG1=20Hz) Borne E2 (Izda/dcha. = CCW/CW) Borne E3 (Quickstop)

P2 (llevar móvil de A a B)

Vamos a resolver este ejemplo, primeramente metiendo todo el programa en OB1, y posteriormente lo haremos por medio de funciones. Empecemos por el G1: 5 Quickstop=OFF Stop

0

10

RR0=ON Quickstop=ON 2 Temporizar

Mover a dcha.

4

RR1=ON Quickstop=ON 5 Temporizar 6s/X5

6s/X2

ESPERAR TRIP

P2 Mover a izda.

1

Quickstop=OFF Stop

3

P1

3

11

2

0 38

TRATAMIENTO DEL ERROR

11 =1 10

Variadores de frecuencia

La secuencia de la derecha es independiente de la izquierda, y tiene como misión entrar en una rutina de tratamiento de error, que aquí no se incluye. Pasaremos ahora al G2: 5 M0.0

M0.1

A124.0=0 A124.1=1 0 A124.2=1 A124.3=0 E124.3=1

M0.3

E124.0=1 A124.3=1 2 T0=6S (SV)

A124.0=1 A124.2=0

4

M0.5

M1.0

E124.1=1 A124.3=1 5 T1=6S (SV)

ESPERAR

10

E124.2=1

E124.4=1

M0.4

M1.1

TRATAMIENTO DEL ERROR

11 =1 10

T1=0

T0=0

3

A124.3=0 A124.0=0

3

A124.0=1

1

M0.2

11

2

0

Que pasado a operaciones AWL nos queda: OB1: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.2 U M 0.0 U M 0.5 L S5T#6S SPBN _000 S A 124.3 SV T 0 R A 124.0 S A 124.1 U M 0.5 U M 0.2 S A 124.2 L S5T#6S UN T 0 R A 124.3 SV T 1 R M 0.2 U E 124.3 S M 0.3 R M 0.0 U M 0.5 S M 0.1 UN T 1 _000: NOP 0 U M 0.3 R M 0.5 SPBN _003 S M 0.0 U M 0.1 R A 124.3 OB100: SPBN _001 R A 124.0 L B#16#0 S A 124.0 U E 124.4 T MB 0 R M 0.3 U E 124.0 CALL "FILL" R M 0.1 S M 0.4 BVAL :=P#M 0.0 BYTE 1 S M 0.2 _003: NOP 0 RET_VAL:=MW100 _001: NOP 0 BLK :=P#M 1.0 BYTE 500 U M 0.4 L W#16#0 SPBN _004 U M 0.2 T AW 124 S A 124.3 S A 124.0 SET R A 124.2 S M 0.0 U E 124.1 S M 1.0 R M 0.4 S M 0.5 _004: NOP 0

39

Variadores de frecuencia

Si lo que deseamos es meter en funciones las tareas de desplazar el móvil en un sentido u otro, entonces empezaremos por diseñar dos (2) funciones FC1 y FC2 tipo E que desplacen a izquierda y derecha respectivamente el móvil. Empecemos por el G1 de FC1: OB1 Inicializar la función en la 1ª pasada y no volver a ejecutar esta etapa.

0

=1 Mover a izda. Temporizar

1

(Móvil SÍ izda.) Y (tiempo NO excedido) (Móvil NO izda.) Y (tiempo SÍ excedido) BitDeError=0 BitRutinaErrores=0

2

BitDeError=1 BitRutinaErrores=1

3

=1

=1 Quickstop=ON Temporizar

4

6S/X4 Quickstop=OFF Stop

5 =1

Poner a CERO temp. 6

Decrementar PalabraDeContar PalabraDeContar=0 BitDeFin=1 de FC1

7 =1

OB1

40

Variadores de frecuencia

Veamos el G2 de FC1:

OB1 M10.1=1 M10.2=0 M10.3=0 M10.4=0 M10.5=0 M10.6=0 M10.7=0

0

=1 M10.1

MW100=2 M150.0=0 M200.0=0 M250.0=0 A124.0=0 A124.1=1 A124.2=1 A124.3=0

A124.0=1 T0=6S (SV)

1

(E124.0=1) Y (T0=1) (E124.0=0) Y (T0=0)

M10.2

M150.0=0 M250.0=0

2

M150.0=1 M250.0=1

M10.3 3 =1

=1 M10.4

A124.3=1 T1=6S (SV)

4 T1=0

M10.5

A124.3=0 A124.0=0

5 =1

M10.6

R T0, R T1 MW100=MW100-1

6

MW100=0

M10.7

M200.0=1

7

=1 OB1

Y pasando este Grafcet a operaciones AWL, tendremos el contenido de FC1:

41

Variadores de frecuencia

FC1:

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 10.3 ON M 0.0 SPBN _103 FP M 10.0 S M 150.0 SPBN _100 S M 250.0 S M 10.1 R M 10.3 R M 10.2 S M 10.4 R M 10.3 _103: NOP 0 R M 10.4 R M 10.5 U M 10.4 R M 10.6 S A 124.3 R M 10.7 L 2 U M 10.4 T MW 100 L S5T#6S R M 150.0 SV T 1 R M 200.0 R M 250.0 U M 10.4 R A 124.0 UN T 1 S A 124.1 R M 10.4 S A 124.2 S M 10.5 R A 124.3 _100: NOP 0 U M 10.5 SPBN _105 U M 10.1 R A 124.3 S A 124.0 R A 124.0 R M 10.5 U M 10.1 S M 10.6 L S5T#6S _105: NOP 0 SV T 0 U M 10.6 U M 10.1 SPBN _106 U E 124.0 R T 0 U T 0 R T 1 R M 10.1 L MW 100 S M 10.2 L 1 -I U M 10.1 T MW 100 UN E 124.0 SPP _106 UN T 0 SET R M 10.1 R M 10.6 S M 10.3 S M 10.7 _106: NOP 0 U M 10.2 SPBN _102 U M 10.7 R M 150.0 SPBN _107 R M 250.0 R M 10.7 R M 10.2 S M 200.0 S M 10.4 R M 10.0 _102: NOP 0 _107: NOP 0

42

Variadores de frecuencia

Puesto que FC2 es totalmente equivalente a FC1, podemos poner directamente el G2 de FC2, que será el siguiente:

OB1 M11.1=1 M11.2=0 M11.3=0 M11.4=0 M11.5=0 M11.6=0 M11.7=0

0

=1 M11.1

MW102=2 M150.1=0 M200.1=0 M250.1=0 A124.0=0 A124.1=1 A124.2=0 A124.3=0

A124.0=1 T2=6S (SV)

1

(E124.1=1) Y (T2=1) (E124.1=0) Y (T2=0)

M11.2

M150.1=0 M250.1=0

2

M150.1=1 M250.1=1

M11.3 3 =1

=1 M11.4

A124.3=1 T3=6S (SV)

4 T3=0

M11.5

A124.3=0 A124.0=0

5 =1

M11.6

R T2, R T3 MW102=MW102-1

6

MW102=0

M11.7

M200.1=1

7 =1

OB1

43

Variadores de frecuencia

Que podemos pasar directamente a AWL: FC2:

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 11.3 ON M 0.0 SPBN _113 FP M 11.0 S M 150.1 SPBN _110 S M 250.1 S M 11.1 R M 11.3 R M 11.2 S M 11.4 R M 11.3 _113: NOP 0 R M 11.4 R M 11.5 U M 11.4 R M 11.6 S A 124.3 R M 11.7 L 2 U M 11.4 T MW 102 L S5T#6S R M 150.1 SV T 3 R M 200.1 R M 250.1 U M 11.4 R A 124.0 UN T 3 S A 124.1 R M 11.4 R A 124.2 S M 11.5 R A 124.3 _110: NOP 0 U M 11.5 SPBN _115 U M 11.1 R A 124.3 S A 124.0 R A 124.0 R M 11.5 U M 11.1 S M 11.6 L S5T#6S _115: NOP 0 SV T 2 U M 11.6 U M 11.1 SPBN _116 U E 124.1 R T 2 U T 2 R T 3 R M 11.1 L MW 102 S M 11.2 L 1 -I U M 11.1 T MW 102 UN E 124.1 SPP _116 UN T 2 SET R M 11.1 R M 11.6 S M 11.3 S M 11.7 _116: NOP 0 U M 11.2 SPBN _112 U M 11.7 R M 150.1 SPBN _117 R M 250.1 R M 11.7 R M 11.2 S M 200.1 S M 11.4 R M 11.0 _112: NOP 0 _117: NOP 0

44

Variadores de frecuencia

En cuanto a OB1, nos queda ahora mucho más sencillo, ya que sólo hemos de llamar a las funciones FC1 o FC2, según queramos que el movimiento sea hacia la izquierda o derecha respectivamente. Veamos los Grafcet de OB1: 5

5 M0.0 STOP

0

P1

A124.0=0 A124.1=1 0 A124.2=1 A124.3=0 E124.3=1

M0.1

Mover a izda.

1

Ya esta a la izda.

2

P2 3

M200.0=1

M0.2

ESPERAR

2

FC1

1

E124.4=1

M0.3 Mover a dcha.

ESPERAR

FC2

3

M200.1=1

Ya esta a la dcha. 0

0

Y la traducción a operaciones AWL del G2 de OB1 será: OB1:

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M0.2 U M0.0 SPBN _000 SPBN _002 R A124.0 U E124.4 R M0.2 S A124.1 S A124.2 S M0.3 _002: NOP 0 R A124.3 U E124.3 R M0.0 U M0.3 SPBN _003 S M0.1 CALL FC2 _000: NOP 0 U M200.1 U M0.1 R M0.3 SPBN _001 S M0.0 CALL FC1 _003: NOP 0 U M200.0 R M0.1 S M0.2 _001: NOP 0

45

Variadores de frecuencia

En cuanto al tratamiento de los errores que se puedan presentar, deberemos diseñar una rutina para su tratamiento que los contemple, teniendo en cuenta que los errores son: • •

Error procedente del variador de frecuencia (TRIP) Errores procedentes de FC1 o FC2

Por ejemplo: G1:

G2:

5

OB1 M1.0 10

10

ESPERAR

ESPERAR E124.2 O M150.0 O M150.1

ERROR M1.1 11

11

Tratamiento del ERROR

Tratamiento del ERROR =1

=1 OB1

OB1

Observe el lector como al llegar al Grafcet de nivel 2 (G2) de la rutina de tratamiento de errores, nos hemos limitado a dar sólo una brevísima pincelada de cómo podría ser esta rutina de tratamiento de errores, pero realmente no hemos desarrollado el método en si mismo. Efectivamente, los métodos y técnicas para el tratamiento de errores en un proceso industrial son un tema realmente complejo (aunque a simple vista pueda no parecerlo), hasta el punto de que su estudio necesitaría un libro completo para su desarrollo y comprensión, razón por la que no insistimos más en este punto y nos limitamos a dejar el tema sólo apuntado. Nos quedaría únicamente OB100, que podría ser así: L B#16#0 T MB0 CALL SFC21 BVAL :=P#M 0.0 BYTE 1 RET_VAL:=MW100 BLK :=P#M 1.0 BYTE 500 L W#16#0 T AW124 SET S M0.0

• Ejemplo tercero de variador de frecuencia. Se trata del mismo mecanismo del ejercicio anterior, sólo que el posicionamiento del vehículo lo vamos a hacer ahora por medio de un encoder simple acoplado al eje del motor. Con todo, seguiremos usando un relé REED para inicializar el sistema, ya que de lo contrario tendríamos que usar un encoder absoluto con interfase SSI en el autómata, y esto complicaría el diseño en exceso. 46

Variadores de frecuencia

En cuanto al perfil de velocidad que se desea, es el siguiente:

Volvamos a pintar la tabla de contactos de entrada/salida, ya que han cambiado algunos de ellos: Entradas E124.0 E124.1 E124.2 E124.3 E124.4

Pulsador POSICIONAR CARRO (PC) Pulsador INICIALIZAR CARRO (IC)

Error (señal TRIP procedente de V/F) Impulsos del ENCODER

Salidas A124.0 A124.1 A124.2 A124.3

Borne 28 (Start/Stop) Borne E1 (JOG1=20Hz) Borne E2 (Izda/dcha. = CCW/CW) Borne E3 (Quickstop)

RR0

Reservaremos espacio para dos (2) registros que llamaremos REG1 y REG2, siendo REG1 un registro de dieciséis (16) Bits que almacena los impulsos que suministra el encoder y REG2 también un registro de dieciséis (16) Bits que almacena el numero de vueltas completas que ha dado el encoder. • •

REG1 = MW120 REG2 = MW122

47

Variadores de frecuencia

Con esto ya podemos pintar el G1 de OB1: 4,10

Impulsos del ENCODER PC BitFlancoPositivo

100 =1

BitFlancoPositivo Quickstop = OFF STOP JOG1=ON

0

REG1= K REG1=0 7 Incrementar REG2

Temporizar

1

REG1 K

=1

0.5S/X1

START Mover a izda.

REG3=REG1- N1 REG4=REG2- N2

10

RR0 3

Incrementar REG1

6

IC

2

START Mover a dcha.

5

REG3= REG4 = 0 Quickstop = ON 11 Temporizar

Quickstop = ON Temporizar

6S/X3 Quickstop = OFF STOP 4 REG1=0 REG2=0 PC

REG3 O REG4 0

6S/X11 0

5

5

Siendo K el número de impulsos que suministra el encoder en una revolución, que en este caso supondremos que son 1000. Siendo N1y N2 el número de incrementos de una revolución y el número de revoluciones completas respectivamente que definen la posición a partir de la que empezaremos a frenar. Para este caso, concretaremos por ejemplo N1= 500 y N2=50.

48

Variadores de frecuencia

Con lo que el G2 será:

4

E124.3 PC

100

M2.1

=1

M0.0

A124.3=0 A124.0=0 A124.1=1

0

E124.1

T0=0

A124.3=1 T1=6S (SV)

3

T1=0

M0.4

MW120= 1000

4

MW120=0

7

MW124=MW120-500 MW126=MW122-50

10

M1.1

MW120 1000

MW122=MW122+1

=1

M1.0

E124.4

E124.3 MW120=MW120+1

6

A124.0=1 A124.2=1

2

M0.3

M2.1

M0.6

T0=0.5S (SV)

1

A124.0=1 A124.2=0

5

M0.7

M0.1

M0.2

M0.5

MW124=MW126 = 0 A124.3=1 11 T2=6S (SV)

MW124 O MW126 0

T2=0

A124.3=0 A124.0=0 MW120=0 MW122=0

0

E124.0 5

49

5

Variadores de frecuencia

Que pasado a operaciones AWL tendremos: OB1: U E 124.3 FP M 2.0 = M 2.1

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.4 U M 0.7 SPBN _004 SPBN _007 R A 124.3 L 0 R A 124.0 T MW 120 U M 0.0 L 0 L MW 122 SPBN _000 T MW 120 L 1 R A 124.3 T MW 122 +I R A 124.0 U E 124.0 T MW 122 S A 124.1 R M 0.4 SET U E 124.1 S M 0.5 R M 0.7 R M 0.0 _004: NOP 0 S M 1.0 S M 0.1 _007: NOP 0 _000: NOP 0 U M 0.5 SPBN _005 U M 1.0 U M 0.1 S A 124.0 SPBN _010 L S5T#500MS R A 124.2 L MW 120 SV T 0 U M 2.1 L 2 R M 0.5 -I U M 0.1 S M 0.6 T MW 124 UN T 0 _005: NOP 0 L MW 122 R M 0.1 L 3 S M 0.2 U M 0.6 -I SPBN _006 T MW 126 U M 0.2 L MW 120 L MW 124 SPBN _002 L 1 L MW 126 S A 124.0 +I OW S A 124.2 T MW 120 SPN NEQ2 U E 124.4 L MW 120 SET R M 0.2 L 5 R M 1.0 S M 0.3 -I S M 1.1 _002: NOP 0 SPN NEQ1 SPA _010 SET NEQ2: SET U M 0.3 R M 0.6 R M 1.0 S A 124.3 S M 0.7 S M 0.5 SPA _006 _010: NOP 0 U M 0.3 NEQ1: SET L S5T#6S R M 0.6 U M 1.1 SV T 1 S M 1.0 S A 124.3 _006: NOP 0 U M 0.3 U M 1.1 UN T 1 L S5T#6S R M 0.3 SV T 2 S M 0.4 U M 1.1 UN T 2 R M 1.1 S M 0.0 Como OB100 podemos emplear el mismo que el del ejercicio anterior.

50

Variadores de frecuencia

• Ejemplo cuarto de variador de frecuencia. Volveremos a emplear el mismo mecanismo que el del ejercicio anterior, sólo que ahora meteremos en funciones las partes del programa que mueven el carro a derecha e izquierda. Como hacemos siempre en la resolución de un problema, empezaremos por pintar la tabla de entradas/salidas digitales al autómata: Entradas E124.0 E124.1 E124.2 E124.3 E124.4

Pulsador POSICIONAR CARRO (PC) Pulsador INICIALIZAR CARRO (IC)

Error (señal TRIP procedente de V/F) Impulsos del ENCODER

Salidas A124.0 A124.1 A124.2 A124.3

Borne 28 (Start/Stop) Borne E1 (JOG1=20Hz) Borne E2 (Izda/dcha. = CCW/CW) Borne E3 (Quickstop)

RR0

Empecemos por diseñar una función FC1 que nos permita mover el carro a la izquierda, y para ello empezaremos pintando el G1 y G2 de esta función. Obsérvese que el tipo de función elegido no se ajusta con exactitud a ninguno de los modelos que hemos definido como estándar en la página 180 del libro. El motivo se debe a que los temporizadores usados en las definiciones de la página 180 servían para averiguar si la orden que se daba al elemento mecánico se cumplía en un tiempo determinado, mientras que aquí los temporizadores se emplean como tales y no controlan si la acción se ha realizado o no en el tiempo previsto. La razón de no controlar si la acción se ha realizado o no, se debe a que no se quiere complicar el ejercicio en exceso, pero esta es una posibilidad que deberíamos tener en cuenta si quisiéramos realmente controlar el posible fallo del mecanismo. G1:

G2:

OB1 Inicializar variables en 1er scan

0

0

START Mover a izda.

A124.0=1 A124.2=1 E124.4

M10.2

Quickstop=ON Temporizar

A124.3=1 T0=6S (SV)

2

6S/X2

T0=0

M10.3

STOP Quickstop = OFF 3 R T0 Decrementar PalabraDeContar PalabraDeContar = 0

3

M200.0=1 M10.0=0

4

=1

=1

OB1

OB1

51

A124.0=0 A124.3=0 R T0 MW100=MW100-1

MW100 = 0

M10.4

BitDeFin=1 BitDeTrabajo=0

4

En el 1er scan hacer: M10.1=0 MW100=2 M10.2=0 M200.0=0 M10.3=0 A124.0=0 M10.4=0 A124.1=1 A124.3=0

1

RR0=ON 2

=1

M10.1

=1 1

OB1

Variadores de frecuencia

Cuyas operaciones AWL serán: FC1:

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M0.0 U M10.2 ON M0.0 UN T0 FP M10.0 R M10.2 SPBN _100 S M10.3 S M10.1 R M10.2 U M10.3 R M10.3 SPBN _103 R M10.4 R A124.0 L 2 R A124.3 T MW100 R T0 R M200.0 L MW100 _100: NOP 0 L 1 -I U M10.1 T MW100 SPBN _101 SPN _103 S A124.0 SET S A124.2 R M10.3 U E124.4 S M10.4 R M10.1 _103: NOP 0 S M10.2 _101: NOP 0 U M10.4 SPBN _104 U M10.2 R M10.4 S A124.3 S M200.0 R M10.0 U M10.2 _104: NOP 0 L S5T#6S SV T0

Veamos ahora G1 de la función FC2: 1

E124.3

PC BitFlancoPositivo

100

Incrementar REG1

2

=1 0

REG1 K

REG1=K

Inicializar variables en 1er scan

REG1=0 REG2=REG2+1

3

=1 =1 1

START Mover a dcha.

4

BitFlancoPositivo

2

Página siguiente

52

REG3=REG1-N1 REG4=REG2-N2

Variadores de frecuencia

Viene de página anterior

REG3 O REG4

REG3 Y REG4 = 0

0

Quickstop=ON Temporizar

5

6S/X3

1 Reset temporizadores Decrementar PalabraDeContar STOP

6

PalabraDeContar=0 BitDeFin=1 BitDeTrabajo=0

7

=1 OB1

Si pasamos ahora a G2, tendremos: E124.3 PC

100 =1 0

M11.2

M20.0

MW120=MW120+1

2

En el 1er scan hacer: M11.1=1 M11.6=0 M11.2=0 M11.7=0 M11.3=0 M200.1=0 M11.4=0 MW102=2 M11.5=0

MW120=1000

M11.3

MW120 1000

MW120=0 MW122=MW122+1

3

=1 =1

M11.1

A124.0=1 A124.2=0

1

M11.4 4

M20.0 Página siguiente

2

53

MW124=MW120-500 MW126=MW122-50

Variadores de frecuencia

Viene de página anterior

MW124 Y MW126 = 0

M11.5

MW124 O MW126

0

A124.3=1 T1=6S (SV)

5

T0=0

1

M11.6

R T1 MW102 = MW102 - 1 A124.0=0

6

MW102=0 M11.7

M200.1=1 M11.0=0

7

=1 OB1

Y pasado a operaciones AWL tendremos: FC2: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 11.1 U M 11.2 U E 124.3 SPBN _111 SPBN _112 FP M 20.1 = M 20.0 S A 124.0 L MW 120 R A 124.2 L 1 O M 0.0 U M 20.0 +I ON M 0.0 T MW 120 FP M 11.0 R M 11.1 L MW 120 SPBN _110 S M 11.2 L 1000 S M 11.1 _111: NOP 0 -I SPM NEQ1 R M 11.2 R M 11.3 SET R M 11.4 R M 11.2 S M 11.3 R M 11.5 SPA _112 R M 11.6 R M 11.7 NEQ1: SET R M 200.1 R M 11.2 L 2 S M 11.4 T MW 102 _112: NOP 0 _110: NOP 0

54

Variadores de frecuencia

FC2 (continuación): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 11.3 U M 11.5 SPBN _113 S A 124.3 L 0 T MW 120 U M 11.5 L MW 122 L S5T#6S L 1 SV T 1 +I T MW 122 U M 11.5 SET UN T 1 R M 11.3 R M 11.5 S M 11.4 S M 11.6 _113: NOP 0 U M 11.6 U M 11.4 SPBN _116 SPBN _114 R T 1 L MW 120 R A 124.0 L 500 L MW 102 -I L 1 T MW 124 -I L MW 122 T MW 102 L 50 SPN _116 -I SET T MW 126 R M 11.6 L MW 124 S M 11.7 L MW 126 _116: NOP 0 OW SPN NEQ2 U M 11.7 SET SPBN _117 R M 11.4 R M 11.7 S M 11.5 S M 200.1 SPA _114 R M 11.0 NEQ2: SET _117: NOP 0 R M 11.4 S M 11.1 _114: NOP 0

55

Variadores de frecuencia

Nos queda ahora diseñar OB1, que puede ser el siguiente: G1:

1 Quickstop=OFF STOP JOG1=ON

0

Esperar

2

I.C. 1

P.C.

Mover a izda. 3

Mover a dcha.

BitDeFin de FC1 BitDeFin de FC2 2

G2:

0

1 M0.0

M0.2

A124.3=0 A124.0=0 A124.1=1

0

E124.1

M0.1

E124.0

M0.3 CALL FC1 (mover a izda.)

1

Esperar

2

3

CALL FC2 (mover a dcha.) M200.1

M200.0 2

0

OB1: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.2 U M 0.0 SPBN _000 SPBN _002 R A 124.3 U E 124.0 R A 124.0 R M 0.2 S A 124.1 S M 0.3 _002: NOP 0 U E 124.1 R M 0.0 S M 0.1 U M 0.3 _000: NOP 0 SPBN _003 CALL FC 2 U M 200.1 U M 0.1 R M 0.3 SPBN _001 CALL FC 1 S M 0.0 U M 200.0 _003: NOP 0 R M 0.1 S M 0.2 _001: NOP 0 56

Variadores de frecuencia

En cuanto a OB100, por ejemplo podemos poner: L B#16#0 T MB0 CALL SFC21 BVAL :=P#M 0.0 BYTE 1 RET_VAL:=MW100 BLK :=P#M 1.0 BYTE 500 L W#16#0 T AW124 SET S M0.0

57

Manipulador, cinta incremental y V/F

Índice

Manipulador, cinta incremental y V/F

• Ejemplo de manejo de un manipulador neumático.

Fig.1 (Aspecto general de la máquina) El conjunto que se muestra en la figura superior, está formado por un elemento vibrador en forma de cuba seguido de otro vibrador lineal, una cinta transportadora de tipo incremental y un manipulador neumático. La misión de cada uno de estos elementos es la siguiente: El vibrador en forma de cuba, almacena una cantidad apreciable de pequeños cilindros en su fondo, que por efecto de la vibración circular a la que están sometidos, van ascendiendo por un camino en forma helicoidal pegado a la pared interior de la cuba. A lo largo de este camino helicoidal se colocan pequeñas trampas y mecanismos que consiguen seleccionar las piezas que interesan y colocarlas en la posición que se desea, en este caso, en posición vertical. Al vibrador circular le sigue otro lineal que tiene como misión hacer de pulmón de almacenamiento de piezas por una parte, y por otra, hacer llegar los pequeños cilindros hasta una posición en la que la pinza del manipulador los pueda coger con facilidad. Normalmente, los vibradores industriales son totalmente autónomos, y por tanto no nos preocuparemos de su funcionamiento. Simplemente daremos por hecho que siempre existirá en el extremo del vibrador lineal una pieza que puede ser cogida por la pinza del manipulador. El modelo de cinta incremental que se muestra en la Fig.1, está formada por pequeñas plataformas porta piezas y la mueve un moto reductor trifásico controlado por un variador de frecuencia. Sobre la cinta existe también un detector de tipo fotoeléctrico DF (no representado en el dibujo) que envía una señal al autómata cada vez que detecta la llegada de una plataforma porta piezas. 59

Manipulador, cinta incremental y V/F

Una vez detectada la placa porta piezas por el detector fotoeléctrico DF, el autómata envía una señal al V/F que realiza una maniobra de frenado y preposiciona la placa porta piezas en su lugar definitivo. Finalmente el autómata (lo veremos después) activa dos (2) pequeños cilindros neumáticos con vástago terminado en una pieza cónica, que se encajan en el porta piezas y permiten, por una parte sujetar firmemente la placa porta piezas, y por otra posicionar con precisión dicha placa debajo del manipulador.

Fig.2 (Detalle del mecanismo de posicionamiento final del porta piezas) El manipulador, o “pick and place” en la terminología anglosajona, vamos a suponer que está formado básicamente por tres (3) cilindros neumáticos que controlan sus tres (3) movimientos básicos de subir/bajar pinza, avanzar/retroceder pinza y abrir/cerrar pinza. Como elementos neumáticos que son, los tres (3) cilindros vendrán provistos de detectores Reed en sus extremos que nos permitirán conocer la posición extrema de los émbolos. Los movimientos que se pretenden conseguir con el manipulador son los siguientes: 8

4

5

7

1

6

3

2

Fig.3 El signo ⊕ representa el punto de partida del manipulador. Desde este punto, el manipulador arranca y ejecuta en cada ciclo las siguientes operaciones: 1.Desciende

5. Baja e inserta el cilindro en la pieza que esta sobre la cinta 6. Abre la pinza

2.Cierra la pinza y coge un cilindro del vibrador 3.Asciende

7. Asciende

4.Retrocede

8. Avanza 60

Manipulador, cinta incremental y V/F

Estos ocho (8) movimientos forman un ciclo completo que debe repetirse indefinidamente. Llamaremos A al cilindro neumático que hace subir/bajar la pinza, B al cilindro que hace avanzar/retroceder la pinza y C al cilindro que hace abrir/cerrar a la pinza. Así, los dos (2) pequeños cilindros neumáticos que sujetan y posicionan el porta piezas, también tienen sus relés Reed que detectan las posiciones extremas de sus émbolos. Las electro válvulas, que controlan todos los cilindros neumáticos, son del tipo 5/2 monoestables. Se cuenta con un botón empezar (BE) que será el que de comienzo al funcionamiento de la máquina. Comenzaremos por pintar la tabla de entradas/salidas: Entradas E124.0 E124.1 E124.2 E124.3 E124.4 E124.5 E124.6 E124.7 E125.0 E125.1 E125.2 E125.3 E125.4

Salidas A124.0 A124.1 A124.2 A124.3 A124.4 A124.5 A124.6 A124.7

Botón empezar (BE) La pinza está arriba La pinza está abajo La pinza está adelantada o salida La pinza está retrasada o metida La pinza está abierta La pinza está cerrada Se ha detectado un porta piezas (DF) Émbolo cil. pequeño dcha. está fuera Émbolo cil. pequeño dcha. está dentro Émbolo cil. pequeño izda.. está fuera Émbolo cil. pequeño izda.. está dentro Error (TRIP) procedente del V/F

Bajar pinza/Subir pinza (cilindro A) Retroceder/Avanzar pinza (cilindro B) Abrir/Cerrar pinza (cilindro C) Borne 28 (Start/Stop) Borne E1 (JOG1=20Hz) Borne E3 (Quickstop) Salir/Entrar cil. pequeño dcha. Salir/Entrar cil. pequeño izda.

NOTA: En esta aplicación, el borne E2 del V/F lo conectaremos a masa (cero volts.) con objeto de que el motor siempre gire a derechas (ver ejercicios de V/F en este mismo libro para mejor comprensión). Es por esta razón que no figura en la tabla anterior. Para manejar el moto reductor de la cinta incremental, emplearemos el variador de frecuencia 8200 SMD de la casa Lenze. Emplearemos funciones tipo C para cada uno de los movimientos elementales, con el siguiente reparto: • • • • • • • • • • •

La función FC1 para hacer salir al cilindro A (bajar pinza) La función FC2 para hacer entrar al cilindro A (subir pinza) La función FC3 para hacer salir al cilindro B (retroceder pinza) La función FC4 para hacer entrar al cilindro B (avanzar pinza) La función FC5 para hacer salir al cilindro C (abrir pinza) La función FC6 para hacer entrar al cilindro C (cerrar pinza) La función FC7 para hacer salir al cilindro pequeño derecha La función FC8 para hacer entrar al cilindro pequeño derecha La función FC9 para hacer salir al cilindro pequeño izquierda La función FC10 para hacer entrar al cilindro pequeño izquierda La función FC11 para que el variador de frecuencia haga avanzar la cinta incremental.

61

Manipulador, cinta incremental y V/F

Obsérvese que el modelo de función que vamos a emplear es el mismo en todos los casos, por lo que nos bastará con representar con detalle el caso de la función FC1, para que los demás casos se den por entendidos. Haremos una excepción con FC11 como se verá más adelante. Así pues, vamos a estudiar con detalle el G1 de la función FC1. Desde OB1

Inicializar la función en la 1ª pasada y no volver a ejecutar esta etapa

0 =1

Ordenar que salga el cilindro

1

¿Ha salido el cilindro? BitDeFin=1

2 =1

Hacia OB1

El G2 de FC1 será el siguiente (particularizado para el cilindro A):

Desde OB1 En la 1ª pasada hacer: 0

Inicializar valores =1

M10.1 Hacer A124.0=1

1

E124.2=1

M10.2 M200.0 = 1

2

=1 Hacia OB1

62

M10.1=1 (BitDeEtapa_1 = 1) M10.2=0 (BitDeEtapa_2 = 0) M200.0=0 (BitDeFin = 0)

Manipulador, cinta incremental y V/F

Según el G2 anterior, el contenido de la función FC1 (salir A = bajar pinza) será: FC1 (salir A = bajar pinza): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 10.1 U M 10.2 ON M 0.0 SPBN _101 SPBN _102 FP M 10.0 S A 124.0 R M 10.2 SPBN _100 U E 124.2 S M 200.0 S M 10.1 R M 10.1 R M 10.0 R M 10.2 S M 10.2 _102: NOP 0 R M 200.0 _101: NOP 0 _100: NOP 0 La función FC2 (entrar A = subir pinza) será totalmente análoga a la FC1, y prácticamente sólo cambiará la segunda operación de la etapa dos (2), donde en lugar de decir “S A124.0” dirá “R A124.0” (aparte de los Bits característicos de la función). Veamos esta función: FC2 (Entrar A = subir pinza): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 11.1 U M 11.2 ON M 0.0 SPBN _101 SPBN _102 FP M 11.0 R A 124.0 R M 11.2 SPBN _100 U E 124.1 S M 200.1 S M 11.1 R M 11.1 R M 11.0 R M 11.2 S M 11.2 _102: NOP 0 R M 200.1 _101: NOP 0 _100: NOP 0

FC3 (Salir B = retroceder pinza): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 12.1 U M 12.2 ON M 0.0 SPBN _101 SPBN _102 FP M 12.0 S A 124.1 R M 12.2 SPBN _100 U E 124.4 S M 200.2 S M 12.1 R M 12.1 R M 12.0 R M 12.2 S M 12.2 _102: NOP 0 R M 200.2 _101: NOP 0 _100: NOP 0

FC4 (Entrar B = avanzar pinza): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 13.1 U M 13.2 ON M 0.0 SPBN _101 SPBN _102 FP M 13.0 R A 124.1 R M 13.2 SPBN _100 U E 124.3 S M 200.3 S M 13.1 R M 13.1 R M 13.0 R M 13.2 S M 13.2 _102: NOP 0 R M 200.3 _101: NOP 0 _100: NOP 0

63

Manipulador, cinta incremental y V/F

FC5 (Salir C = abrir pinza): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 14.1 U M 14.2 ON M 0.0 SPBN _101 SPBN _102 FP M 14.0 S A 124.2 R M 14.2 SPBN _100 U E 124.5 S M 200.4 S M 14.1 R M 14.1 R M 14.0 R M 14.2 S M 14.2 _102: NOP 0 R M 200.4 _101: NOP 0 _100: NOP 0

FC6 (Entrar C = cerrar pinza): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 15.1 U M 15.2 ON M 0.0 SPBN _101 SPBN _102 FP M 15.0 R A 124.2 R M 15.2 SPBN _100 U E 124.6 S M 200.5 S M 15.1 R M 15.1 R M 15.0 R M 15.2 S M 15.2 _102: NOP 0 R M 200.5 _101: NOP 0 _100: NOP 0

FC7 (Salir cilindro peque. dcha.): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 16.1 U M 16.2 ON M 0.0 SPBN _101 SPBN _102 FP M 16.0 S A 124.6 R M 16.2 SPBN _100 U E 125.0 S M 200.6 S M 16.1 R M 16.1 R M 16.0 R M 16.2 S M 16.2 _102: NOP 0 R M 200.6 _101: NOP 0 _100: NOP 0

FC8 (Entrar cilindro peque. dcha.): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 17.1 U M 17.2 ON M 0.0 SPBN _101 SPBN _102 FP M 17.0 R A 124.6 R M 17.2 SPBN _100 U E 125.1 S M 200.7 S M 17.1 R M 17.1 R M 17.0 R M 17.2 S M 17.2 _102: NOP 0 R M 200.7 _101: NOP 0 _100: NOP 0

64

Manipulador, cinta incremental y V/F

FC9 (Salir cilindro peque. izda.): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 20.1 U M 20.2 ON M 0.0 SPBN _101 SPBN _102 FP M 20.0 S A 124.7 R M 20.2 SPBN _100 U E 125.2 S M 201.0 S M 20.1 R M 20.1 R M 20.0 R M 20.2 S M 20.2 _102: NOP 0 R M 201.0 _101: NOP 0 _100: NOP 0

FC10 (Entrar cilindro peque. izda.):(Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 21.1 U M 21.2 ON M 0.0 SPBN _101 SPBN _102 R A 124.7 R M 21.2 FP M 21.0 SPBN _100 U E 125.3 S M 201.1 S M 21.1 R M 21.1 R M 21.0 R M 21.2 S M 21.2 _102: NOP 0 _101: NOP 0 R M 201.1 _100: NOP 0 La función FC11 (avanzar cinta incremental), siendo una función tipo C igual que las anteriores, merece especial atención por cuanto no es idéntico el funcionamiento de esta cinta que la de un cilindro neumático simple. Empezaremos pintando un primer G1 aproximado de FC11: Desde OB1

Se ha detectado un porta piezas

PC

100

BitReceptor

Explicación más adelante

=1 Inicializar la función en la 1ª pasada y no volver a ejecutar esta etapa

0

=1 Avanzar y posicionar portapiezas

1

¿Portapiezas posicionado? BitDeFin=1

2

=1 Hacia OB1

Aquí la orden que se da es: “avanzar cinta incremental y posicionar el siguiente porta piezas”. Esta orden como se ve no es una orden simple como las que hemos visto al trabajar con cilindros neumáticos, sino que es una orden compleja que está formada por otras ordenes menores.

65

Manipulador, cinta incremental y V/F

Veamos esto. La orden “avanzar cinta incremental y posicionar el siguiente porta piezas” consta de las siguientes órdenes menores: •

Ordenar a los pequeños cilindros con vástago de punta cónica, que se retraigan y dejen libre la placa porta piezas.



Enviar las señales adecuadas al V/F para que éste actúe sobre el moto reductor y haga mover la cinta incremental hacia delante.



Quedar a la espera de recibir el primer flanco positivo del detector fotoeléctrico (informando que llega una placa porta piezas) y frenar la cinta según una rampa de deceleración programada en el V/F con objeto de presituar el porta piezas sobre los dos (2) pequeños cilindros neumáticos que están debajo. (NOTA: la detección del flanco positivo la hacemos mediante un programa secundario en formato neutro, acoplado al principio del Grafcet principal. Ver apartado 10.3 del libro).



Ordenar a los pequeños cilindros con vástago de punta cónica, que salgan hacia fuera y sujeten la placa porta piezas y la terminen de sujetar y posicionar con precisión.

Con lo dicho in mente, pasemos ahora a un G1 más detallado de FC11: Desde OB1

Se ha detectado un portapiezas

PC

100

BitReceptor

=1

Inicializar la función en la 1ª pasada y no volver a ejecutar esta etapa

0 =1

Entrar cil. pequeño. dcha. Entrar cil. pequeño. izda.

1

Cilindros pequeños entrados Avanzar cinta incremental

2

Llega un portapiezas Quickstop = ON Temporizar 1 seg.

3

1S/X3 Quickstop = OFF STOP

4

=1 Hacia página siguiente

66

Manipulador, cinta incremental y V/F

De página anterior

Salir cil. pequeño. dcha. Salir cil. pequeño. izda.

5

Cilindros pequeños salidos BitDeFin=1

6

=1 Hacia OB1

Pasaremos ahora al G2 de FC11. Desde OB1

PC

100 =1 0 =1

M22.1

E124.7 M23.0

En la 1ª pasada hacer: M22.1=1 ; M22.5=0 M22.2=0 ; M22.6=0 M22.3=0 ; M201.2=0 M22.4=0 CALL FC8 CALL FC10

1

M200.7*M201.1

M22.2

A124.3=1 A124.4=1; A124.5=0

2 M23.0

M22.3

A124.5=1 T0=1S (SV)

3

T0=0

M22.4

A124.5=0 A124.3=0

4

=1

M22.5

CALL FC7 CALL FC9

5

M200.6 * M201.0

M22.6

M201.2=1

6

=1 Hacia OB1

67

Manipulador, cinta incremental y V/F

Pasamos sin más a escribir las operaciones que forman FC11: FC11: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U E 124.7 U M 22.2 U M 22.5 FP M 22.7 SPBN _222 SPBN _225 = M 23.0 S A 124.3 CALL FC 7 S A 124.4 CALL FC 9 O M 0.0 R A 124.5 U M 200.6 ON M 0.0 U M 23.0 U M 201.0 FP M 22.0 R M 22.2 R M 22.5 SPBN _220 S M 22.3 S M 22.6 S M 22.1 _222: NOP 0 _225: NOP 0 R M 22.2 R M 22.3 U M 22.3 U M 22.6 R M 22.4 S A 124.5 SPBN _226 R M 22.5 L S5T#1S R M 22.6 R M 22.6 SV T 0 R M 22.0 R M 201.2 R M 22.7 _220: NOP 0 U M 22.3 S M 201.2 UN T 0 _226: NOP 0 U M 22.1 R M 22.3 SPBN _221 S M 22.4 CALL FC 8 CALL FC 10 U M 22.4 U M 200.7 SPBN _224 U M 201.1 R A 124.5 R M 22.1 R A 124.3 S M 22.2 R M 22.4 _221: NOP 0 S M 22.5 _224: NOP 0 Hagamos ahora el G1 de OB1:

(Grafcet en la hoja siguiente)

68

Manipulador, cinta incremental y V/F

Posicionar pinza en SALIDA

0

Pinza en SALIDA

12,14

Avanzar cinta incremental

1

Fin avanzar cinta incremental * BE Bajar pinza

2

Fin bajar pinza Cerrar pinza

3

Fin cerrar pinza Subir pinza

4

Fin subir pinza 5

Retroceder pinza. Fin retroceder pinza

Bajar pinza

6

Fin bajarpinza Abrir pinza

7

Fin abrir pinza Subir pinza

10

Fin subir pinza

11

Avanzar cinta incremental Fin avanzar cinta incremental

12

Avanzar Pinza

13

Fin avanzar pinza

Esperar

14

Han terminado etapas 12 y 14 2

69

Esperar

Manipulador, cinta incremental y V/F

Pasemos ahora a G2: CALL FC2 CALL FC4 CALL FC5

M0.0 0

12,14

M200.1* M200.3*M200.4

M0.1

CALL FC11

1

M201.2 * E124.0

M0.2

CALL FC1

2

M200.0

M0.3

CALL FC6

3 M200.5

M0.4

CALL FC2

4

M200.1

M0.5

CALL FC3

5

M200.2

M0.6

CALL FC1

6 M200.0

M0.7

CALL FC5

7 M200.4 M1.0

CALL FC2

10

M200.1 M1.3

M1.1

CALL FC11

11

M201.2

M1.2 12

CALL FC4

13 M200.3

M1.4 Esperar

14

Han terminado etapas 12 y 14 2

70

Esperar

Manipulador, cinta incremental y V/F

Pasemos este G2 de OB1 a operaciones AWL: OB1: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.0 U M 0.4 U M 1.0 SPBN _000 SPBN _004 SPBN _010 CALL FC 2 CALL FC 2 CALL FC 2 CALL FC 4 U M 200.1 U M 200.1 CALL FC 5 R M 0.4 R M 1.0 U M 200.1 S M 0.5 S M 1.1 U M 200.3 _004: NOP 0 S M 1.3 U M 200.4 _010: NOP 0 R M 0.0 U M 0.5 S M 0.1 SPBN _005 U M 1.1 _000: NOP 0 CALL FC 3 SPBN _011 U M 200.2 CALL FC 11 U M 0.1 R M 0.5 U M 201.2 SPBN _001 S M 0.6 R M 1.1 CALL FC 11 _005: NOP 0 S M 1.2 U M 201.2 _011: NOP 0 U E 124.0 U M 0.6 R M 0.1 SPBN _006 U M 1.3 S M 0.2 CALL FC 1 SPBN _013 _001: NOP 0 U M 200.0 CALL FC 4 R M 0.6 U M 200.3 U M 0.2 S M 0.7 R M 1.3 SPBN _002 _006: NOP 0 S M 1.4 CALL FC 1 _013: NOP 0 U M 200.0 U M 0.7 R M 0.2 SPBN _007 U M 1.2 S M 0.3 CALL FC 5 U M 1.4 _002: NOP 0 U M 200.4 R M 1.2 R M 0.7 R M 1.4 U M 0.3 S M 1.0 S M 0.2 SPBN _003 _007: NOP 0 CALL FC 6 U M 200.5 R M 0.3 S M 0.4 _003: NOP 0 Nos queda finalmente OB100, que usaremos el ya visto en otros ejemplos: L B#16#0 T MB0 CALL SFC21 BVAL:=P#M0.0 BYTE 1 RET_VAL:=MW100 BLK:=P#M1.0 BYTE 500 L W#16#0 T AW124 SET S M0.0

71

Motores servo

Motores servo

Índice

Introducción: Se dice que un motor es del tipo servo cuando alguno de sus parámetros importantes de salida, tal como puede ser la velocidad angular, el ángulo girado o el par motor, se controlan automáticamente comparando el parámetro de salida con un valor de referencia constante (consigna) y actuando sobre el motor para conseguir en todo momento que esta diferencia sea cero (o la menor posible).

Valor de consigna

Σ

M

Valor real

EM

Donde “M” es el motor que deseamos controlar, “EM” es el elemento de medición que hemos conectado al motor para conocer el valor real del parámetro de salida, los cuadrados con un triángulo en su interior son amplificadores que amplifican y acondicionan las señales, y el símbolo “Σ” dentro del círculo representa el elemento que compara el valor de consigna que deseamos con el valor real medido y envía la señal adecuada al motor para intentar conseguir que el parámetro de salida y la consigna sean lo más parecidas posible. Como elementos “EM” o elementos de medición, se suelen emplear dínamos taquimétricas, o encoders digitales o analógicos, según los casos. Existen otros métodos distintos a los anteriores, como por ejemplo el método RXI o el método por control del par, pero estos temas se escapan al alcance de este libro y el lector interesado debería consultar otros libros específicos sobre el tema. Volviendo al motor servo, esquematizado en el dibujo anterior, en la práctica este tipo de motores, tal y como lo hemos representado nosotros, podría ya ser manejable desde un autómata, por cuanto a través de una interfase D/A del mismo autómata, podríamos proporcionar el valor de consigna de la velocidad deseada y de esta forma controlaríamos el funcionamiento del motor. En la practica sin embargo, los fabricantes de motores servo, además de proporcionarnos el conjunto motor servo anterior, nos proporcionan una caja (el driver) que hace de intermediario entre el autómata y el motor servo, y que además de incluir los elementos amplificadores y de comparación anterior, incluyen un microprocesador así como unas facilidades de programación que ahora explicaremos. Pongamos un ejemplo para entender mejor este tema.

73

Motores servo

Supongamos que lo que deseamos es que nuestro motor servo comience a girar según el siguiente esquema de velocidad: Velocidad angular (RPM)

Tiempo

Para conseguir este comportamiento, el fabricante del driver nos proporciona unas herramientas software con las que podemos programar el microprocesador que lleva el driver y depositar en su interior lo que podríamos llamar una especie de paquetes o programas menores, de tal forma que por ejemplo, la velocidad en rampa positiva quedaría encomendado al programa # 1 (por ejemplo) y el comportamiento según la velocidad en rampa negativa, al programa # 2 (por ejemplo). Si ahora la caja del driver tiene unos terminales en forma de tornillo (que llamaremos tornillos A y B) y el fabricante nos dice que si aplicamos una tensión de 24 v. al tornillo A el microprocesador ejecutará el programa # 1 y si aplicamos 24 v al tornillo B el microprocesador ejecutará el programa # 2, entonces está claro que si conectamos este driver a nuestro autómata, podremos controlar el movimiento del motor desde nuestro autómata a través del driver y conseguir el comportamiento en velocidad del gráfico anterior. En la realidad, el número de programas que podemos depositar en un driver no es ilimitado pero si es normalmente muy superior a dos (2), y la cantidad de órdenes que podemos depositar en cada programa es también considerable, por lo que en la práctica, podemos literalmente jugar con el comportamiento del motor, haciéndolo avanzar con una determinada velocidad, o haciendo que se pare, o haciendo que gire un ángulo exacto en un sentido cualquiera, etc. Son por tanto dispositivos de un enorme valor práctico a la hora de diseñar determinados mecanismos donde se requieren estos comportamientos en las máquinas y como único “pero” podríamos citar quizás su precio, pues se trata siempre de elementos caros. Vamos a resumir ahora lo que hemos estado diciendo con el siguiente dibujo:

M PLC

DRIVER

EM

En el dibujo anterior, el autómata (PLC) envía ordenes al driver (flechas que apuntan a la derecha), que como hemos dicho se traducen en órdenes que ponen en funcionamiento programas en el interior del driver, éste a su vez puede informar al autómata de determinados eventos, como por ejemplo si se ha producido un error o si la orden ha sido cumplida satisfactoriamente (flecha/s que apunta/n a la izquierda). Hecha la breve introducción anterior, vamos a plantearnos ahora el manejo de un motor servo real. 74

Motores servo

Para ello, tomaremos un conjunto genérico formado por un motor servo y un driver, tal y como quedan representados en el dibujo de la derecha. Como se puede apreciar a simple vista, el driver de la imagen tiene muchos conectores, y en cada conector, muchos “pines”, que evidentemente tienen misiones concretas en el funcionamiento de este driver, pero para el caso que nos ocupa, sin embargo, consideraremos únicamente aquellos conectores y aquellos pines que nos interesen, sin tener en cuenta los demás. Así pues, vamos a representar al autómata y al driver anterior con el siguiente dibujo esquematizado:

ENTRADAS

SALIDAS

AUTOMATA

DRIVER A124.0

X4.ENABLE

A124.1

X4.RESET

A124.2

X3.DIN1

A124.3

X3.DIN2

A124.4

X3.DIN3

A124.5

X3.DIN4

A124.6

X3.DIN5

E124.0

X3.OUT1

E124.1

X3.OUT2

SERVOMOTOR

CABLES DE POTENCIA Y SEÑAL IMAN RELE REED

X3.DIN7

Como se puede apreciar por el esquema anterior, hay una serie de salidas procedentes del autómata que las hemos conectado a otras tantas entradas del driver, y tan sólo dos (2) entradas del autómata a dos (2) salidas del driver, si bien para nuestros propósitos, son suficientes. Hay, como puede verse también en el dibujo anterior, una señal procedente de un detector Reed que entra en el driver por X3.DIN7. La misión de esta señal es la de detectar el imán fijo colocado en la rueda que mueve el motor servo.

IMAN

RELE REED

75

Motores servo

De tal forma que cuando el imán pasa frente al detector Reed, éste envía al driver una señal de 24 v. informando que en ese momento el imán de la rueda está justamente entrando en su campo de acción. Explicaremos todo esto a continuación, pero veamos ahora la siguiente tabla: Entrada al driver X3.DIN#1 X3.DIN#1 X3.DIN#2 X3.DIN#2 X3.DIN#3 X3.DIN#3 X3.DIN#4 X3.DIN#4 X3.DIN#5 X3.DIN#5

Tipo de evento Flanco positivo (↑) Flanco negativo (↓) Flanco positivo (↑) Flanco negativo (↓) Flanco positivo (↑) Flanco negativo (↓) Flanco positivo (↑) Flanco negativo (↓) Flanco positivo (↑) Flanco negativo (↓)

Mini programa asociado 01 02 03 04 05 06 07 08 09 0A

Descripción Driver ON Driver OFF (Ver explicación) Girar lentamente Girar 90o sentido positivo Girar ángulo de OFFSET

La tabla anterior no es más que una relación, por una parte de los mini programas que ya se supone que hemos escrito y depositado en el interior del driver y, como se ve, numerados en formato hexadecimal y, por otra, de los eventos que los ponen en marcha. Así, por ejemplo, el mini programa “01” simplemente se limita a darle tensión al driver. El mini programa “03” es el más complicado de todos, pues empieza por hacer que la rueda gire lentamente en sentido negativo, pero en cuanto se detecta por la entrada X3.DIN7 una tensión alta, conforme el relé Reed ha detectado la presencia del imán que lleva la rueda, el mini programa “03” invierte el sentido de giro de la rueda y hace que ésta gire en sentido positivo, y también lentamente. Continúa así girando la rueda lentamente, hasta que el encoder del motor servo detecta una señal especial grabada en el mismo encoder y que llamaremos señal INDEX. Cuando esto ocurre, el driver envía por X3.OUT1 una señal de 24 v hacia el autómata informando que ha detectado esta señal INDEX. NOTA: El INDEX es una señal grabada en la rueda interior del mismo encoder, y la única referencia externa que tenemos de esta marca, es el voltaje alto que sale por X3.OUT1 cuando esta señal INDEX pasa frente al detector interno del mismo encoder. Ahora bien, dado que el fabricante no da información para conocer físicamente desde el exterior la posición del INDEX (aparte del voltaje alto que sale por X3.OUT1), esto quiere decir que cuando montemos el motor servo en la máquina donde tenga que ir instalado, deberemos hacer tantas pruebas como sean necesarias hasta conocer realmente el ángulo formado por el INDEX y cualquier otra marca que tengamos sobre la rueda que mueve el motor servo. A este ángulo (que desconocemos de entrada) formado por el momento en que se detecta el INDEX y alguna marca de interés que tengamos sobre la rueda, lo llamaremos ángulo de OFFSET. En cuanto a X3.OUT2, veremos su significado algo más adelante. El mini programa “05” hace que la rueda gire en sentido positivo lentamente. El mini programa “07” hace que la rueda gire un ángulo exacto de 90o en un tiempo también exacto de 2 seg., y además con curvas de aceleración y deceleración perfectamente conocidas de antemano. Finalmente, el mini programa “09” hace que la rueda gire un ángulo prefijado de antemano que podemos variar por programación a voluntad y que aquí llamaremos ángulo de OFFSET. 76

Motores servo

Es importante destacar que en este caso particular el contenido de los mini programas son los que aquí se han explicado, lo que no quiere decir que no podamos realizar otras aplicaciones y escribir programas distintos a los anteriores. Llegados a este punto, empezamos ya a sospechar como funciona todo esto. Simplemente no tenemos más que proporcionar al driver los eventos que se indican en la tabla anterior, para que el driver ponga en marcha los mini programas asociados, y como consecuencia de estos, nuestro motor servo irá realizando los movimientos correspondientes a los mini programas que se estén ejecutando.

• Ejemplo primero de motores servo. Vamos a imaginar que la rueda que mueve el motor servo, tiene el siguiente aspecto, y que es así como nos la encontramos inicialmente:

IMAN

INDEX

MARCA GRABADA SOBRE LA RUEDA

RELE REED

Estando el motor servo y su driver sin tensión, deseamos posicionar la rueda con la marca en forma de triángulo apuntando hacia arriba, tal y como indica el dibujo inferior,

IMA N

RELE REED

Disponemos también de tres (3) pulsadores A, B y C con la siguiente funcionalidad: • • • •

El pulsador A debe dar tensión al driver El pulsador B debe quitar tensión al driver El pulsador C debe posicionar el rotor con el triángulo hacia arriba (inicializa el sistema). El pulsador D debe hacer girar la rueda 90o en sentido positivo y en dos (2) seg. (una vez la rueda esté debidamente posicionada con el triángulo hacia arriba).

• Una vez entendido el problema y los medios con los que contamos, empecemos por pintar la tabla de contactos de entrada/salida.

77

Motores servo

E124.0 E124.1 E124.2 E124.3 E124.4 E124.5

Entradas X3.OUT1 X3.OUT2 Pulsador A Pulsador B Pulsador C Pulsador D

A124.0 A124.1 A124.2 A124.3 A124.4 A124.5 A124.6

Salidas X4.ENABLE X4.RESET X3.DIN1 X3.DIN2 X3.DIN3 X3.DIN4 X3.DIN5

Crearemos una función FC10 en la que depositaremos todo el software necesario para que realice todo el trabajo de posicionar la rueda con el triángulo apuntando hacia arriba. Para ello, emplearemos dos (2) funciones tipo E encadenadas, con objeto de detectar (por tiempo) posibles funcionamientos incorrectos del motor servo o del driver. NOTA: Gracias al software adicional que proporciona el fabricante, es posible cargar previamente en el driver el valor del ángulo OFFSET que deseemos. Planteamiento Grafcet G1 de FC10: Desde bloque invocante Inicializar función en la 1ª pasada y no volver a ejecutar esta etapa.

0

=1 Activar mini programa “03” Temporizar

1

(INDEX detectado) Y (tiempo NO excedido) (INDEX no detectado) Y (tiempo SÍ excedido) 2 =1

BitDeError_1=0 Anular llamada a “03”.

BitDeError_1=1 Anular llamada a “03”.

3

=1

Temporizar 1 seg

4

1S/X4 5

Activar mini programa “09” Temporizar

(Rueda posicionada) Y (tiempo NO excedido) (Rueda no posicionada) Y (tiempo SÍ excedido) 6

BitDeError_2=0 Anular llamada a =1 “09”.

BitDeError_2=1 Anular llamada a “09”.

Hacia próxima página 78

7 =1

Motores servo

Viene de página anterior

Poner a cero temporizadores Decrementar PalabraDeContar

10

PalabraDeContar=0 BitDeFin=1

11 =1 Hacia bloque invocante

Concretemos ahora este Grafcet en el G2:

Desde bloque invocante

M10.1=1 M10.2=0 M10.3=0 M10.4=0 M10.5=0 M10.6=0

En la primera pasada, hacer:

0 =1

M10.7=0 M11.0=0 M11.1=0 MW100=2 PalabraDeContar M200.0 BitDeFin

M10.1 A124.3=1 T0=100S (SV)

1

E124.0 * T0 E124.0 * T0

M10.2

M150.0=0 A124.3=0

2

M150.0=1 A124.3=0

M10.3 3

=1

=1 M10.4

T1=1S (SV)

4

T1=0

M10.5

A124.6=1 T2=10S (SV)

5

Pasa a hoja siguiente

79

Motores servo

Viene de hoja anterior

E124.1 * T2 E124.1 * T2

M10.6

M150.1=0 A124.6=0

6

M150.1=1 A124.6=0

M10.7 7

=1

=1

M11.0

R T0, R T1, R T2 MW100=MW100-1

10 MW100=0

M11.1

M200.0=1

11 =1 Hacia bloque invocante

Pasemos ahora a operaciones AWL, este G2: FC10 (inicializa el sistema): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M10.3 O M0.0 U M10.1 SPBN _103 ON M0.0 U E124.0 S M150.0 FP M10.0 U T0 R A124.3 SPBN _100 R M10.1 S M10.1 S M10.2 R M10.3 S M10.4 R M10.2 _103: NOP 0 R M10.3 U M10.1 R M10.4 UN E124.0 R M10.5 UN T0 U M10.4 R M10.6 R M10.1 L S5T#1S SV T1 R M10.7 S M10.3 R M11.0 R M11.1 U M10.2 U M10.4 UN T1 L 2 SPBN _102 R M10.4 T MW100 R M150.0 S M10.5 R M200.0 R A124.3 _100: NOP 0 R M10.2 U M10.5 S M10.4 S A124.6 U M10.1 _102: NOP 0 L S5T#10S S A124.3 L S5T#1M40S SV T2 SV T0

80

Motores servo

FC10 (continuación): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M11.1 U M10.5 U M10.7 SPBN _107 SPBN _111 U E124.1 S M150.1 R M11.1 U T2 R M10.0 R M10.5 R A124.6 S M200.0 S M10.6 R M10.7 S M11.0 _111: NOP 0 _107: NOP 0 U M10.5 UN E124.1 UN T2 U M11.0 SPBN _110 R M10.5 R T0 S M10.7 R T1 U M10.6 R T2 SPBN _106 L MW100 L 1 R M150.1 R A124.6 -I R M10.6 T MW100 S M11.0 SPN _110 SET _106: NOP 0 R M11.0 S M11.1 _110: NOP 0 Una vez creada la función FC10, vayamos ahora por la función FC11, deseamos que cuando se ejecute, haga girar en sentido positivo la rueda del motor servo un ángulo exacto de 90o. Para ello, haremos uso del mini programa “07” que es capaz de realizar precisamente este trabajo. También aquí emplearemos funciones tipo E y comenzaremos por pintar primeramente el Grafcet G1: Desde bloque invocante Inicializar función en la 1ª pasada y no volver a ejecutar esta etapa.

0

=1 Activar mini programa “07” Temporizar

1

(Ha girado 90o) Y (tiempo NO excedido) (No ha girado 90o) Y (tiempo SÍ excedido) 2 =1

BitDeError_3=0 Anular llamada a “07”

BitDeError_3=1 Anular llamada a “07”

Hacia página siguiente

81

3

=1

Motores servo

Viene de página anterior Poner a cero temporizador Decrementar PalabraDeContar

4

PalabraDeContar=0 BitDeFin=1

5

=1 Hacia bloque invocante

Desde G1 podemos pintar ahora G2: Desde bloque invocante M12.1=1 M12.2=0 M12.3=0 M12.4=0 M12.5=0

En la primera

0

pasada, hacer: =1

M12.1

MW102=2 PalabraDeContar M200.1=0 BitDeFin

A124.5=1 T3=3S (SV)

1

E124.1 * T3 E124.1 * T3

M12.2

M150.2=0 A124.5=0

2

M150.2=1 A124.5=0

M12.3 3 =1

=1

M12.4

R T3 MW102=MW102-1

4

MW102=0

M12.5

M200.1=1

5

=1 Hacia bloque invocante

Pasemos a operaciones AWL el Grafcet G2 anterior:

82

Motores servo

FC11 (gira rueda 90º): (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M0.0 U M12.1 U M12.4 ON M0.0 UN E124.1 SPBN _124 FP M12.0 UN T3 R T3 SPBN _100 R M12.1 L S M12.1 S M12.3 MW102 R M12.2 L 1 R M12.3 U M12.2 -I R M12.4 SPBN _122 T R M12.5 R MW102 L 2 M150.2 SPN _124 T R A124.5 SET MW102 R M12.2 R M12.4 R S M12.4 S M12.5 M200.1 _122: NOP 0 _124: NOP 0 _100: NOP 0 U M12.3 U M12.5 U M12.1 SPBN _123 SPBN _125 S A124.5 S R M12.5 L M150.2 R M12.0 S5T#3S R A124.5 S SV T3 R M12.3 M200.1 S M12.4 _125: NOP 0 U M12.1 _123: NOP 0 U E124.1 U T3 R M12.1 S M12.2 Una vez escritas las funciones que controlan el motor servo, vamos a escribir ahora una función que llamaremos, por ejemplo FC100, que en caso de producirse un error realice alguna acción, como por ejemplo parar el autómata (NOTA: La toma de decisiones en caso de error en el proceso, es un tema siempre delicado y complejo que debe estudiarse en cada caso particular. La decisión de parar el autómata en este caso, es sólo un ejemplo, no la tónica general.). Dada la sencillez de la acción que pretendemos realizar en caso de detectarse algún error en el funcionamiento del conjunto motor servo y driver, escribiremos directamente la función FC100 en operaciones AWL: O O O = U SPBN CALL _800: NOP

M150.0 M150.1 M150.2 M80.0 M80.0 _800 SFC46 0

//SFC46 es una función que para directamente el autómata

83

Motores servo

Vamos ahora a depositar en OB1 el programa que controlará el funcionamiento del conjunto. Pintaremos el G1 y G2 de OB1: M0.0 ESPERAR

0

Pulsador A

Activar mini programa “01” Temporizar

1

0,5S/X1

T4=0 2

M200.0 M0.4

ESPERAR

4

Pulsador D

ESPERAR E124.5

M0.5

Llamar a FC11

5

Llamar a FC10

3

BitDeFin de FC10 4

ESPERAR

E124.4

5 M0.3

Llamar a FC10

3

A124.2=1 T4=500MS (SV)

1

M0.2

Pulsador C

5

E124.2

M0.1

ESPERAR

2

ESPERAR

0

Llamar a FC11

5

BitDeFin de FC11

M200.1

4

4

Además de esta secuencia principal de OB1, introduciremos dos (2) secuencias más independientes, de tal forma que una de ellas llame a FC100 de forma permanente con objeto de controlar la posible aparición de algún error, y la otra secuencia tenga en cuenta la posibilidad de que alguien pulse B con la intención de apagar de inmediato el proceso. Así, los G1 y G2 de la segunda secuencia serán: M1.0 Llamar a FC100

00

Llamar a FC100

00

=1

=1 00

00

84

Motores servo

Y los G1 y G2 de la tercera secuencia, serán: M2.0 ESPERAR

000 Pulsador B

E124.3

M2.1

Activar mini programa “02”

1

ESPERAR

000

A124.2=0

1

=1

=1

000

000

Pasemos ahora estos tres (3) últimos Grafcet G2 a operaciones AWL: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) M0.0 U M0.3 U M1.0 _000 SPBN _003 SPBN _010 E124.2 CALL FC10 CALL FC100 M0.0 U M200.0 _010: NOP 0 M0.1 R M0.3 0 S M0.4 U M2.0 _003: NOP 0 SPBN _020 U M0.1 U E124.3 S A124.2 U M0.4 R M2.0 L SPBN _004 S M2.1 S5T#500MS U E124.5 _020: NOP 0 SV T4 R M0.4 S M0.5 U M2.1 U M0.1 _004: NOP 0 SPBN _021 UN T4 R A124.2 R M0.1 U M0.5 R M2.1 S M0.2 SPBN _005 S M2.0 CALL FC11 _021: NOP 0 U M0.2 U M200.1 SPBN _002 R M0.5 U E124.4 S M0.4 R M0.2 _005: NOP 0 S M0.3 _002: NOP 0 OB1:

U SPBN U R S _000: NOP

Finalmente pondremos OB100: L B#16#0 T MB0 CALL SFC21 BVAL:=P#M0.0 BYTE 1 RET_VAL:=MW130 BLK:=P#M1.0 BYTE 500 SET S M0.0 S M1.0 S M2.0 85

Motores servo

Recapitulemos todo lo que hemos hecho hasta aquí: 1. Hemos tenido que programar previamente el driver del motor servo con los mini programas que ya hemos visto. 2. Hemos cableado nuestro autómata con el driver y también el relé Reed lo hemos cableado al driver. 3. Hemos confeccionado una tabla de entradas/salidas. 4. Hemos pintado primero los G1 y G2 de FC10, que es capaz de posicionar la rueda con el triángulo hacia arriba, después hemos escrito el programa. 5. Hemos pintado el G1 y G2 de FC11, que hace girar la rueda 90o, después hemos escrito el programa. 6. Hemos pintado la secuencia principal de OB1, así como otras dos (2) necesarias para tener en cuenta el tratamiento de errores y la posibilidad de que alguien oprima el pulsador B, después lo hemos pasado a operaciones AWL. 7. Y finalmente hemos depositado en OB100 un programa que borra toda la memoria de marcas y que inicia simultáneamente las tres (3) secuencias de OB1.

86

Programación por recetas

Programación por recetas

Índice

Introducción: Quizás el mejor ejemplo que podemos poner sobre programación por recetas, sea el de una tradicional receta para hacer pan. Todos sabemos que el pan se hace con harina, sal, agua, levadura y tiempo de cocción. Ahora bien, según variemos las proporciones de estos elementos básicos, podemos tener desde un aromático y sabrosísimo pan, hasta una especie de masa dura requemada totalmente incomestible. Este concepto culinario de receta, se extiende con facilidad a algunos procesos industriales en los que el proceso industrial siempre es el mismo, y lo que cambia de unos casos a otros son las cantidades de los parámetros, tales como tiempos, velocidades, temperaturas, etc. Veamos un ejemplo que aclare estos conceptos.

• Ejemplo de un proceso que trabaja por recetas. Se trata de programar un autómata S7-314 que tiene que controlar la siguiente máquina: S0

S1

S3

S2

Iman S4

13 4 14 16 1 3

S5

2

7 5

6

10 8

9

11 12

15

S6 S7

Plataforma C#1

C#2

C#3

P#2 P#1

P#3

Tipos de piezas: Como se puede ver en el dibujo, hay un carrito motorizado que lleva incorporado un cilindro neumático en posición vertical, terminado en una pinza también neumática, donde el símbolo ⊗ indica el punto de partida o SALIDA de la pinza. El funcionamiento es el siguiente. El operario coloca manualmente sobre la plataforma una pieza de las mostradas anteriormente, introduce directamente el número de la pieza en EB124 y presiona después sobre un pulsador (BE) no representado en el dibujo. A partir de ese instante, la pinza realiza los movimientos indicados en el dibujo, desde el movimiento “1” (bajar pinza) hasta el movimiento “16”, al final del que el operario retira manualmente la pieza tratada, coloca otra, y tras pulsar BE, el proceso vuelve a repetirse nuevamente. Las cubetas C#1, C#2 y C#3 contienen productos químicos, en los que la máquina va sumergiendo las piezas. El tiempo que debe estar cada pieza sumergida en cada cubeta, viene dada por la siguiente tabla:

87

Programación por recetas

P#1 10 seg. 15 seg. 20 seg.

Tiempo en C#1 Tiempo en C#2 Tiempo en C#3

Tabla 1

P#2 14 seg. 25 seg. 5 seg.

P#3 1 seg. 7 seg. 8 seg.

Los puntos negros numerados con la letra “S” seguida de un número, representan los relés reed que hemos dispuesto en la máquina para informar al autómata, por una parte de la posición del carrito a lo largo de la viga horizontal (S0, S1, S2 y S3) y, por otra parte, de la posición alta o baja de la pinza o si la pinza está abierta o cerrada (S4, S5, S6 y S7). En el interior de carrito, hemos dispuesto un pequeño motor trifásico que responde al siguiente esquema: I

D

M

De tal forma que si aplicamos 24 volts al borne “D”, el motor gira a derechas y el carrito avanza (se desplaza de izquierda a derecha sobre la viga) pero si aplicamos 24 volts al borne “I”, el motor gira a izquierdas y el carrito retrocede (se desplaza de derecha a izquierda sobre la viga). Por último, deberemos tener en cuenta que tanto el cilindro neumático vertical de la pinza como la pinza misma, están gobernados por sendas electro válvulas del tipo 5/2 monoestables. Una vez conocidos estos datos, lo primero que haremos a continuación, será pintar una tabla con las entradas/salidas del autómata.

EB124 E125.0 E125.1 E125.2 E125.3 E125.4 E125.5 E125.6 E125.7 E126.0 E126.1

Entradas Número de receta Botón empezar (BE) Posición S0 Posición S1 Posición S2 Posición S3 Pinza arriba S4 Pinza abajo S5 Pinza abierta S6 Pinza cerrada S7 Botón parar (BP)

A124.0 A124.1 A124.2 A124.3

Salidas Borne “D” (el carrito avanza) Borne “I” (el carrito retrocede) Bajar/subir pinza Cerrar/abrir pinza

Empezaremos descomponiendo los movimientos de la máquina en movimientos simples, que controlaremos desde funciones de la siguiente forma: • • • • •

Función FC1 (baja la pinza) Función FC2 (sube la pinza) Función FC3 (abre la pinza) Función FC4 (cierra la pinza) Función FC5 (avanza carrito hasta próxima cubeta)

88

Programación por recetas

Está claro que después que hayamos diseñado las anteriores funciones, sólo tendremos que llamarlas, por lo que nos van a facilitar mucho la posterior programación del autómata. Para el diseño de estas funciones (excepto FC5), tomaremos como referencia las funciones tipo E, pues deseamos que, en caso de producirse un error en el funcionamiento de la máquina, nos reporte un “BitDeError” que después sea interpretado por un programa que analice los errores producidos. Así pues, empezaremos por el G1 de FC1, según ya vimos en la página 214 del libro. Desde bloque invocante Inicializar función en la 1ª pasada y no volver a ejecutar esta etapa.

0

=1 Salir émbolo Cargar temporizador con T s.

1

(Émbolo SÍ fuera) Y (tiempo NO excedido) (Émbolo NO fuera) Y (tiempo SÍ excedido) BitDeError=0 BitRutinaErrores=0

2

BitDeError=1 BitRutinaErrores=1

3 =1

=1 Poner a cero temporizador Decrementar PalabraDeContar

4

PalabraDeContar=0 BitDeFin=1

5

=1 Hacia bloque invocante

Y como G2 de FC1, podemos tomar el mismo que vimos en la página 215 del libro:

89

Programación por recetas

Desde bloque invocante

0

En la 1ª pasada hacer: =1

M10.1

M10.1=1 BitDeEtapa_1=1 M10.2=0 BitDeEtapa_2=0 M10.3=0 BitDeEtapa_3=0 M10.4=0 BitDeEtapa_4=0 M10.5=0 BitDeEtapa_5=0 MW100=2 PalabraDeContar=2 M150.0=0 BitDeError=0 M200.0=0 BitDeFin=0 M250.0=0 BitRutinaErrores=0

A124.2=1 T0 = 5seg (SV)

1

(E125.6=1) Y (T0=1) (E125.6=0) Y (T0=0)

M10.2

M150.0=0 M250.0=0

2

M150.0=1 M250.0=1

M10.3 3 =1

=1 M10.4

R T0 MW100=MW100 - 1

4

MW100=0

M10.5

M200.0=0

5

=1 Hacia bloque invocante

Con G2 de FC1 a la vista, podemos ya escribir el contenido de FC1, que lógicamente será casi idéntico al que aparece en las páginas 215 y 216 del libro: FC1 (baja pinza): O M 0.0 ON M 0.0 FP M 10.0 SPBN _100 S M 10.1 R M 10.2 R M 10.3 R M 10.4 R M 10.5 L 2 T MW 100 R M 150.0 R M 200.0 _100: NOP 0

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 10.1 U M 10.1 S A 124.2 UN E 125.6 UN T 0 U M 10.1 R M 10.1 L S5T#20S S M 10.3 SI T 0 U M 10.2 U M 10.1 SPBN _102 U E 125.6 R M 150.0 U T 0 R M 250.0 R M 10.1 R M 10.2 S M 10.2 S M 10.4 _102: NOP 0

90

Programación por recetas

FC1 (continuación): U M 10.3 SPBN _103 S M 150.0 S M 250.0 R M 10.3 S M 10.4 _103: NOP 0

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 10.4 U M 10.5 SPBN _104 SPBN _105 R M 10.5 R T 0 L MW 100 S M 200.0 L 1 R M 10.0 -I _105: NOP 0 T MW 100 SPN _104 SET R M 10.4 S M 10.5 _104: NOP 0

La función FC2 será igual que FC1, excepto la segunda línea de la etapa “1” donde dirá “R A124.2” en lugar de “S A124.2”, ya que deseamos que el cilindro se retraiga. Los Bits de control que aparecen en FC1 también los cambiaremos, por aquello de no usar los recursos más de una vez. Así pues, el contenido de FC2 será el siguiente: FC2 (sube pinza): O M 0.0 ON M 0.0 FP M 11.0 SPBN _100 S M 11.1 R M 11.2 R M 11.3 R M 11.4 R M 11.5 L 2 T MW 102 R M 150.1 R M 200.1 _100: NOP 0 U R

M 11.1 A 124.2

U M 11.1 L S5T#20S SI T 1

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 11.1 U M 11.4 U E 125.5 SPBN _104 U T 1 R T 1 R M 11.1 L MW 102 S M 11.2 L 1 -I U M 11.1 T MW 102 UN E 125.5 SPN _104 UN T 1 SET R M 11.1 R M 11.4 S M 11.3 S M 11.5 _104: NOP 0 U M 11.2 SPBN _102 U M 11.5 R M 150.1 SPBN _105 R M 250.0 R M 11.5 R M 11.2 S M 200.1 S M 11.4 R M 11.0 _102: NOP 0 _105: NOP 0 U M 11.3 SPBN _103 S M 150.1 S M 250.0 R M 11.3 S M 11.4 _103: NOP 0

91

Programación por recetas

FC3 (abre pinza): O M 0.0 ON M 0.0 FP M 12.0 SPBN _100 S M 12.1 R M 12.2 R M 12.3 R M 12.4 R M 12.5 L 2 T MW 104 R M 150.2 R M 200.2 _100: NOP 0 U R

M 12.1 A 124.3

U M 12.1 L S5T#20S SI T 2

FC4 (cierra pinza): O M 0.0 ON M 0.0 FP M 13.0 SPBN _100 S M 13.1 R M 13.2 R M 13.3 R M 13.4 R M 13.5 L 2 T MW 106 R M 150.3 R M 200.3 _100: NOP 0

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 12.1 U M 12.4 U E 125.7 SPBN _104 U T 2 R T 2 R M 12.1 L MW 104 S M 12.2 L 1 -I U M 12.1 T MW 104 UN E 125.7 SPN _104 UN T 2 SET R M 12.1 R M 12.4 S M 12.3 S M 12.5 _104: NOP 0 U M 12.2 SPBN _102 U M 12.5 R M 150.2 SPBN _105 R M 250.0 R M 12.5 R M 12.2 S M 200.2 S M 12.4 R M 12.0 _102: NOP 0 _105: NOP 0 U M 12.3 SPBN _103 S M 150.2 S M 250.0 R M 12.3 S M 12.4 _103: NOP 0

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 13.2 U M 13.1 S A 124.3 SPBN _102 R M 150.3 U M 13.1 R M 250.0 L S5T#20S R M 13.2 SI T 3 S M 13.4 _102: NOP 0 U M 13.1 U E 126.0 U M 13.3 U T 3 SPBN _103 S M 150.3 R M 13.1 S M 13.2 S M 250.0 R M 13.3 S M 13.4 U M 13.1 _103: NOP 0 UN E 126.0 UN T 3 R M 13.1 S M 13.3

92

Programación por recetas

FC4 (continuación): izquierda a derecha) U M 13.4 SPBN _104 R T 3 L MW 106 L 1 -I T MW 106 SPN _104 SET R M 13.4 S M 13.5 _104: NOP 0

(Esta tabla se lee de arriba a abajo y de U M 13.5 SPBN _105 R M 13.5 S M 200.3 R M 13.0 _105: NOP 0

La función FC5 (avanzar hasta próxima cubeta), es desde luego diferente a las anteriores, y podemos pensar para esta función un G1 sencillo que tenga el siguiente aspecto: Desde bloque invocante

0

Carrito en S0 1

Ir a dcha. Temp. 2 seg. 2S/X1 Y Carrito en S1

Inicializar función en la 1ª pasada y no volver a ejecutar esta etapa.

Carrito en S1 2

Carrito en S2

Ir a dcha. Temp. 2 seg.

3

2S/X2 Y Carrito en S2

Ir a dcha. Temp. 2 seg.

Carrito en S3 4

2S/X3 Y Carrito en S3

Parar motor Temp. 1 seg.

5

1S/X5 Poner a cero temporizadores Decrementar PalabraDeContar

6

PalabraDeContar=0 BitDeFin=1

7 =1

Hacia bloque invocante

93

Ir a izda. Temp. 2 seg. 2S/X4 Y Carrito en S0

Programación por recetas

Podemos pintar ahora el G2 de FC5:

Desde bloque invocante M14.1=0 M14.2=0 M14.3=0 M14.4=0 M14.5=0 M14.6=0

0

E125.1=1

M14.1 1

M14.2 A124.0=1 2 A124.1=0 T4=2S (SV)

T4=0 Y E125.2=1

E125.2=1 A124.0=1 A124.1=0 T5=2S (SV)

M14.7=0 MW110=2 M200.4=0

M14.3

E125.3=1 A124.0=1 A124.1=0 T6=2S (SV)

3

T5=0 Y E125.3=1

T6=0 Y E125.4=1 A124.0=0 A124.1=0 T8=1S (SV)

M14.5 5

T8=0 M14.6

R

6

T4, T5, T6, T7 y T8 MW110=MW110-1

MW110=0

M14.7

M200.4=1

7 =1

Hacia bloque invocante

94

M14.4 4

E125.4=1 A124.0=0 A124.1=1 T7=2S (SV) T7=0 Y E125.1=1

Programación por recetas

Con lo que el contenido de FC5 será el siguiente: FC5 (avanzar carrito próx. cubeta):(Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 14.2 U M 14.5 ON M 0.0 S A 124.0 R A 124.0 FP M 14.0 R A 124.1 R A 124.1 SPBN _100 L S5T#2S L S5T#1S S M 14.1 SI T 5 SI T 8 R M 14.2 R M 14.3 U M 14.2 U M 14.5 R M 14.4 UN T 5 UN T 8 R M 14.5 U E 125.3 R M 14.5 R M 14.6 R M 14.2 S M 14.6 R M 14.7 S M 14.5 L 2 U M 14.6 T MW 110 U M 14.3 SPBN _101 SET S A 124.0 R T 4 R M 200.4 R A 124.1 R T 5 U E 125.1 L S5T#2S R T 6 S M 14.1 SI T 6 R T 7 U E 125.2 R T 8 S M 14.2 U M 14.3 L MW 110 U E 125.3 UN T 6 L 1 S M 14.3 U E 125.4 -I U E 125.4 R M 14.3 T MW 110 S M 14.4 S M 14.5 SPN _101 _100: NOP 0 SET U M 14.4 R M 14.6 U M 14.1 R A 124.0 S M 14.7 S A 124.0 S A 124.1 _101: NOP 0 R A 124.1 L S5T#2S L S5T#2S SI T 7 U M 14.7 SI T 4 SPBN _102 U M 14.4 R M 14.7 U M 14.1 UN T 7 R M 14.0 UN T 4 U E 125.1 S M 200.4 U E 125.2 R M 14.4 _102: NOP 0 R M 14.1 S M 14.5 S M 14.5 Con este conjunto de funciones, podemos ahora diseñar una sexta función FC6, a la que le podemos encomendar el trabajo de llevar el carrito hacia la posición de SALIDA, independientemente del lugar y estado en el que se encuentre. Esto nos vendrá bien cuando después diseñemos OB1 y queramos inicializar el sistema antes de comenzar el trabajo real. Veremos en la próxima página el G1 de FC6 que hemos diseñado y el lector podrá observar como la solución adoptada no es realmente una solución muy correcta desde un punto de vista profesional, porque estamos ignorando la posibilidad de que el carrito no llegue a su destino (por la razón que sea) y sin embargo el programa no detectaría esta anomalía. En un caso real, desde luego, el programador debe plantearse esta problemática, ya que sí sería muy recomendable que el programa pudiera detectar este mal funcionamiento y reportarlo en forma de un BitDeError que a su vez activase una función de tratamiento de errores. Sin embargo, aquí en este ejercicio, vamos a prescindir de este refinamiento con objeto de no complicarlo en exceso. 95

Programación por recetas

Desde bloque invocante

Desde bloque invocante

Inicializar función en la 1ª pasada y no volver a ejecutar esta etapa.

0

0

=1 Abrir pinza

1

E125.1=1

M15.4

Parar motor Temp. 1seg.

T9=0

M15.5 Poner a cero temporizador Decrementar PalabraDeContar

PalabraDeContar=0

R T9 MW112=MW112-1

5

MW112=0

M15.6

BitDeFin=1

M200.5=1

6

=1

FC6 (carrito a SALIDA): O M 0.0 ON M 0.0 FP M 15.0 SPBN _100 S M 15.1 R M 15.2 R M 15.3 R M 15.4 R M 15.5 R M 15.6 L 2 T MW 112 R M 200.5 R A 124.0 R A 124.1 _100: NOP 0

A124.1=0 T9=1S (SV)

4

1S/X4

6

A124.1=1

3

Pinza en SALIDA

5

M200.1=1

M15.3

Ir a SALIDA

4

CALL FC2

2

Pinza arriba 3

M200.2=1

M15.2

Subir pinza

MW112=2 M200.5=0 A124.0=0 A124.1=0

CALL FC3

1

Pinza abierta 2

=1

M15.1

M15.1=1 M15.2=0 M15.3=0 M15.4=0 M15.5=0 M15.6=0

=1

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 15.1 U M 15.3 SPBN _101 SPBN _103 CALL FC 3 S A 124.1 U M 200.2 U E 125.1 R M 15.1 R M 15.3 S M 15.2 S M 15.4 _101: NOP 0 _103: NOP 0 U M 15.2 SPBN _102 CALL FC 2 U M 200.1 R M 15.2 S M 15.3 _102: NOP 0

96

U R L SV

M 15.4 A 124.1 S5T#1S T 9

U UN R S

M 15.4 T 9 M 15.4 M 15.5

Programación por recetas

FC6 (continuación): U M 15.5 SPBN _104 R T 9 L MW 112 L 1 -I T MW 112 SPN _104 SET R M 15.5 S M 15.6 _104: NOP 0

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 15.6 SPBN _105 R M 15.0 R M 15.6 S M 200.5 _105: NOP 0

Llegados hasta aquí, tenemos dos alternativas, que son: o bien nos ponemos directamente a escribir OB1 con objeto de montar el programa principal e ir llamando a las funciones que hemos creado según nos vayan haciendo falta, o bien creamos un bloque de función FB1 con bloques de datos asociados DB1, DB2 y DB3 que contenga los tiempos de la Tabla 1. De las dos alternativas, escogemos la segunda, porque la introducción de bloques de datos donde tengamos almacenados los tiempos de la Tabla 1, le da a esta solución una flexibilidad que no tiene la primera, y por otra parte, le confiere al programa una mayor modularidad. Empecemos por el G1 de FB1. 3

Desde bloque invocante Inicializar función en la 1ª pasada y no volver a ejecutar esta etapa.

0

Pinza sobre C#1

=1 1

5

Bajar pinza

6

Cerrar pinza

Temporizar con T10 según receta Temporizado

Pinza cerrada 3

Bajar pinza

Pinza abajo

Pinza abajo 2

Ir a C#1

4

7

Subir pinza

Subir pinza

Pinza arriba

Pinza arriba

Hacia página siguiente

4

97

Programación por recetas

De página anterior

10

16

Ir a C#2

17

Pinza sobre C#2

Pinza arriba

Bajar pinza

11

Pinza en SALIDA

Temporizar con T11 según receta

Pinza abajo 22

Subir pinza

Pinza arriba 14

23

Subir pinza

Pinza arriba Poner a cero temporizadores 24 Decrementar PalabraDeContar PalabraDeContar=0

Pinza sobre C#3 Bajar pinza

Pinza abajo Temporizar con T12 según receta

16

Abrir pinza

Pinza abierta

Ir a C#3

15

Bajar pinza

21

Temporizado 13

Ir a SALIDA

20

Pinza abajo 12

Subir pinza

25

Temporizado

BitDeFin=1

=1 Hacia bloque invocante

17

Vamos ahora a por el G2 de FB1: 2

Desde bloque invocante

0

=1

M16.1 1

M16.1=1 M16.2….M18.7=0 MW114=2 M200.6=0

2

3

4

5

M200.3=1 15

3

98

Call FC5

M200.4=1

M16.5

Call FC4

Call FC2

M200.1=1

M16.4

Call FC1

M200.0=1

M16.2

M16.3

Call FC1 M200.0=1

Programación por recetas

De página anterior M16.6 6

M17.6

Temporizar con T10 según receta T10=0

M16.7

20

M200.4=1

M17.1 11

12

13

14

Temporizar con T11 según receta

22

15

Call FC3

M200.2=1

M18.3 23

Call FC2

Call FC2

M200.1=1

M18.4

R T10,T11,T12 MW114=MW114-1

24

Call FC5

M200.4=1

M17.5

M200.0=1

M18.2

M200.1=1

M17.4

Call FC1

21

Call FC1

T11=0

M17.3

Call FC5

M200.4=1

M18.1

M200.0=1

M17.2

M200.1=1

M18.0

Call FC5

10

Call FC2

17

M200.1=1

M17.0

T12=0

M17.7 Call FC2

7

Temporizar con T12 según receta

16

MW114=0

M18.5 25

Call FC1

M200.6=1

=1

M200.0=1 16

Hacia bloque invocante

Crearemos ahora FB1, pero antes de ponernos a escribir las operaciones AWL, deberemos introducir los siguientes parámetros formales: Declaración

Nombre

Tipo

In In In

TiempoEnCubeta_1 TiempoEnCubeta_2 TiempoEnCubeta_3

S5TIME S5TIME S5TIME

Podemos ya traducir este G2 de FB1 en operaciones AWL:

99

Programación por recetas

FB1: (Esta tabla se lee de arriba a abajo y de izquierda a derecha) O M 0.0 U M 16.5 U M 17.2 ON M 0.0 SPBN _165 UN T 11 FP M 16.0 CALL FC 1 R M 17.2 SPBN _100 U M 200.0 S M 17.3 L 1 R M 16.5 T MB 16 S M 16.6 U M 17.3 L 0 _165: NOP 0 SPBN _173 T MB 17 CALL FC 2 T MB 18 U M 16.6 U M 200.1 L 2 L #TiempoEnCubeta_1 R M 17.3 T MW 114 SV T 10 S M 17.4 SET _173: NOP 0 S M 16.1 U M 16.6 R M 200.6 UN T 10 U M 17.4 _100: NOP 0 R M 16.6 SPBN _174 S M 16.7 CALL FC 5 U M 16.1 U M 200.4 SPBN _161 U M 16.7 R M 17.4 CALL FC 1 SPBN _167 S M 17.5 U M 200.0 CALL FC 2 _174: NOP 0 R M 16.1 U M 200.1 S M 16.2 R M 16.7 U M 17.5 _161: NOP 0 S M 17.0 SPBN _175 _167: NOP 0 CALL FC 1 U M 16.2 U M 200.0 SPBN _162 U M 17.0 R M 17.5 CALL FC 4 SPBN _170 S M 17.6 U M 200.3 CALL FC 5 _175: NOP 0 R M 16.2 U M 200.4 S M 16.3 R M 17.0 U M 17.6 _162: NOP 0 S M 17.1 L #TiempoEnCube_170: NOP 0 ta_3 U M 16.3 SV T 12 SPBN _163 U M 17.1 CALL FC 2 SPBN _171 U M 17.6 U M 200.1 CALL FC 1 UN T 12 R M 16.3 U M 200.0 R M 17.6 S M 16.4 R M 17.1 S M 17.7 _163: NOP 0 S M 17.2 _171: NOP 0 U M 17.7 U M 16.4 SPBN _177 SPBN _164 U M 17.2 CALL FC 2 CALL FC 5 L #TiempoEnCubeta_2 U M 200.1 U M 200.4 SV T 11 R M 17.7 R M 16.4 S M 18.0 S M 16.5 _177: NOP 0 _164: NOP 0

100

Programación por recetas

FB1 (continuación): U M 18.0 SPBN _180 CALL FC 5 U M 200.4 R M 18.0 S M 18.1 _180: NOP 0

(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 18.2 U M 18.4 SPBN _184 SPBN _182 CALL FC 3 R T 10 U M 200.2 R T 11 R M 18.2 R T 12 L MW 114 S M 18.3 L 1 _182: NOP 0 -I U M 18.3 T MW 114 SPN _184 SPBN _183 SET CALL FC 2 U M 200.1 R M 18.4 R M 18.3 S M 18.5 S M 18.4 _184: NOP 0 _183: NOP 0 U M 18.5 SPBN _185 R M 18.5 R M 16.0 S M 200.6 _185: NOP 0

U M 18.1 SPBN _181 CALL FC 1 U M 200.0 R M 18.1 S M 18.2 _181: NOP 0

Crearemos ahora tres (3) bloques de datos de instancia DB1, DB2 y DB3 asociados a FB1, con los tiempos de la Tabla 1. Llegamos finalmente a OB1, desde donde montaremos una sencilla lógica para llamar a los programas que hemos creado. Empezaremos por G1 de OB1: 2

Posicionarse en SALIDA

0

Pinza en SALIDA Y Botón Empezar Comprobar nº de receta

1

Receta SÍ valida

Receta NO valida 2

1

Iniciar proceso según receta. Botón parar

0

101

Programación por recetas

Y ahora el G2 de OB1: 1,3

Call FC6

0

M200.5=1 Y E125.0=1 Comprobar nº de receta

1

Receta SÍ valida

Receta NO valida 2

1

Call FB1 con DB dependiente del nº receta E126.1=1

0

Pasemos todo esto a operaciones AWL: OB1:(Esta tabla se lee de arriba a abajo y de izquierda a derecha) U M 0.2 U M 0.0 SPBN _002 SPBN _000 L EB 124 CALL FC 6 L 1 U M 200.5 -I R M 0.0 SPZ R_1 S M 0.1 L EB 124 _000: NOP 0 L 2 U M 0.1 -I SPZ R_2 SPBN _001 SPA R_3 L EB 124 R_1: CALL FB 1 , DB1 L 3 -I TiempoEnCubeta_1:= SPP _001 TiempoEnCubeta_2:= TiempoEnCubeta_3:= L EB 124 SPA M001 L 1 -I R_2: CALL FB 1 , DB2 SPM _001 TiempoEnCubeta_1:= TiempoEnCubeta_2:= SET R M 0.1 TiempoEnCubeta_3:= S M 0.2 SPA M001 R_3: CALL FB 1 , DB3 _001: NOP 0 TiempoEnCubeta_1:= TiempoEnCubeta_2:= TiempoEnCubeta_3:= SPA M001 NOP 0 M001: U E 126.1 R M 0.2 S M 0.0 _002: NOP 0 102

Programación por recetas

Obsérvese como no hemos puesto los parámetros actuales del bloque de función FB1 al hacer la llamada, lo que obliga a STEP 7 a tomar los valor almacenados en DB1, DB2 y DB3 respectivamente, como valores por defecto. Pondremos también una sencilla función FC100 que se limite a parar el autómata en cuanto detecte un error. O O O O =

M M M M M

150.0 150.1 150.2 150.3 80.0

U M 80.0 SPBN _800 CALL "STP" _800: NOP 0

//SFC46 es una función que para directamente el autómata

Pondremos finalmente OB100 como bloque que inicializa el proceso: L B#16#0 T MB0 CALL SFC21 BVAL:= P#M0.0 BYTE 1 RET_VAL:MW100 BLK := P#M 1.0 BYTE 500 SET S M0.0

103

Hardware

Hardware

Índice

(NOTA: Las imágenes que aparecen en este capítulo, así como la descripción de la funcionalidad de los elementos de las imágenes, han sido cedidas por la casa SIEMENS). Dedicaremos este capítulo a mostrar imágenes sobre autómatas SIEMENS de la clase SIMATIC S7-300, con objeto de familiarizar al lector con estas máquinas y de reforzar los conceptos teóricos que se han venido dando, tanto en este libro de ejercicios como en el libro de teoría. Empezaremos mostrando una imagen en la que puede apreciarse una visión en perspectiva de un autómata S7-300 en general.

En esta imagen cabe destacar, por una parte la CPU, que es el módulo que se encuentra más a la izquierda, y después los distintos módulos que, a forma de libros en una estantería, se pueden ir añadiendo a la CPU. También destacaremos en esta imagen, el soporte o carril en forma de “U” plana y vertical sobre el que se van montando los diferentes módulos. Vamos a ver ahora otra imagen donde se pueden apreciar otros detalles relacionados también con este tema

105

Hardware

PS (opcional)

CPU

IM SM: (opcional) DI

SM: DO

SM: AI

SM: FM: CP: AO - Contaje - Punto a Punto - Posicionamiento - PROFIBUS - Ethernet Industrial - Control en lazo cerrado

En esta imagen se aprecian mejor los conceptos que ahora queremos resaltar. Módulos de Señal (SM)

• Módulos de entradas digitales: • Módulos de salidas digitales: • Módulos de entradas analógicas: • Módulos de salidas analógicas:

24V DC, 120/230V AC 24V DC, Relé Tensión, corriente, resistencia, termopares Tensión, corriente

Módulos de Interfase La IM360/IM361 y la IM365 hacen posible configuraciones multifila. (IM) Enlazan el bus a través de una fila a la siguiente. Módulos Dummy (DM)

El módulo dummy DM 370 reserva un slot para un módulo de señal cuyos parámetros aún no han sido asignados. También puede usarse, por ejemplo, para reservar un slot para la instalación de un módulo interfase en el futuro.

Módulos de Función Realizan “funciones especiales": (FM) - Contaje - Posicionamiento - Control en lazo cerrado. Procesadores de Comunicación (CP)

Proporciona las siguientes posibilidades de montaje en red: - Enlaces Punto a Punto - PROFIBUS - Industrial Ethernet.

Accesorios

Conectores de bus y conectores frontales

Veamos más de cerca las imágenes de dos (2) CPUs típicas de la serie S7-300.

106

Hardware

SIEMENS

SIEMENS

CPU314

CPU315-2 DP SF BATF DC5V FRCE RUN STOP

SF BATF DC5V FRCE RUN STOP RUN-P

RUN-P

RUN

RUN

STOP

STOP

M RES

M RES

SIMATIC S7-300

SIMATIC S7-300

Batería

Selector de Modo

Indicadores de Estado (LEDs)

Memory Card Compartimento de la batería Conexión MPI Interfase DP

SF DP BUSF

Batería

MPI

MRES STOP RUN

= = =

RUN-P

=

SF

=

BATF DC5V FRCE

= = =

RUN

=

STOP

=

MPI

DP

Función de reset de memoria (Module Reset) Modo Stop; el programa no se ejecuta. Ejecución del programa, es posible el acceso sólo lectura desde la PG. Ejecución del programa, es posible el acceso lectura/escritura desde la PG. Error de grupo; fallo interno de la CPU o fallo en un módulo con capacidad de diagnóstico. Fallo de batería; Batería vacía o no presente. Indicador de tensión interna de 5 V DC. FORCE; indica que, al menos, una entrada o salida está forzada. Parpadea cuando la CPU está arrancando, luce fija en modo RUN. Muestra una luz fija en modo STOP. Parpadea lentamente durante una petición de reset de memoria. Parpadea rápidamente cuando se está efectuando un reset de memoria. Parpadea lentamente cuando se necesita un reset porque se ha insertado una memory card.

Existe un slot para una memory card. La memory card salva el contenido del programa en caso de caída de alimentación sin necesidad de batería. Existe un receptáculo para una batería de litio bajo la cubierta. La batería proporciona energía de respaldo para salvar los contenidos de la RAM ante una supuesta caída de alimentación. Conexión para un dispositivo de programación u otro dispositivo con interfase MPI. Interfase para la conexión directa de periferia descentralizada a la CPU.

107

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF