Beruflich Dokumente
Kultur Dokumente
Programacion de PLC
Apuntes de la cátedra
Control Automático – 2009-
U.T.N. F.R.G.P.
Ing. Ricardo Crivicich
2
1-AUTOMATISMOS 4
Lógica Cableada y Lógica Programada 5
Conclusiones 6
2.- SENSORES TRANSDUCTORES Y ACTUADORES 8
Transductores 8
Actuadores 11
3.- PLC 13
Estructura del PLC 13
Configuración de Hardware del PLC 13
Microprocesador 13
Memoria 16
Unidades de E/S 16
Características importantes de las Entradas y Salidas del PLC 17
Salidas Digitales 19
Manejo de valores analógicos en el PLC 20
Manejo Interno de las variables analógicas 21
Escalamiento de valores analógicos 23
Filtrado de valores analógicos 25
Interfaces 26
Configuración externa del PLC 26
4.-PROGRAMACIÓN DEL PLC 28
Estructrura de datos en el PLC 28
Representación de la información binaria 29
Constantes, Variables y Direccionamiento en los PLC’s 31
Constantes 31
Variables 32
Operandos 32
Direccionamiento 32
Formato de acceso a las zonas de operandos 34
Direccionamiento de entradas y salidas 35
Direccionamiento Fijo 36
Direccionamiento Variable 37
Direccionamiento Simbólico 38
Elaboracion propiamente dicha del programa 38
Operaciones Básicas 40
Operaciones combinacionales 41
Ejemplos de lógica combinacional 42
Combinación AND 42
Combinación OR 43
AND antes de OR 43
OR antes de AND 44
Operaciones de tiempo 44
Temporizador con retardo a la conexión 44
Temporizador con retardo a la desconexión 45
Temporizador por impulsos 45
Temporizador con retardo a la conexión memorizado 46
Temporizador de impulso memorizado 46
Exactitud del valor de un temporizador 46
Operaciones de contaje 47
Contador ascendente 47
Contador ascendente/descendente 47
Contador descendente 47
Dos ejemplos básicos 48
Ejemplos de programación 48
Marcas y Flancos 54
Temporizadores y Contadores 61
Contadores 65
5.-PROGRAMACIÓN DEL S7-200 67
Arbol de operaciones 67
Area de programación 68
Barra de navegación 69
Area de información 69
Elaboración de programas en MicroWIN 69
Aclaraciones pertinentes 69
Ajustar la comunicación 69
Establecer el hardware a utilizar 71
Ajustes de la CPU 72
Puertos de comunicación 73
Elementos configurables 73
Areas remanentes 73
Contraseña 74
Configurar salidas 74
Filtrar entradas 74
Elaboración del programa 75
Ingreso del programa en la PC 75
Reglas básicas para el diseño de los segmentos 76
Ingreso de operaciones en los segmentos 77
Cargar el programa en el PLC 79
Programación simbólica 83
Seguimiento y depuración de programas 85
Observación del programa 85
Estado de ejecución 86
Estado de fin de ciclo 86
Observar y/o forzar una variable cualquiera 87
Utilidades para el seguimiento y depuración de programas 89
Plano de ocupación 89
1-AUTOMATISMOS
¿Qué es un automatismo?
Para responder a esta pregunta es necesario pensar que los procesos físicos y/o
químicos involucrados en la producción de materias primas y/o productos
terminados no difieren si mi proceso productivo está automatizado o no (para tornear
una pieza se requiere de una herramienta de corte y un torno, pero este podrá ser
manual o CNC), en consecuencia podemos definir como automatismo a: “todo
dispositivo físico y/o lógico que realiza las funciones de mando y control de
una máquina o proceso”.
En un esquema simplificado:
Actuadores
Visualización
(HMI, lámparas,
display, SCADA etc.)
- Lógica cableada
► Relés auxiliares
► Temporizadores
► Controladores simples
► Plaquetas electrónicas “ad-hoc”
● Falta de flexibilidad, es decir el automatismo una vez construido es apto para una
sola tarea y cualquier modificación posterior es dificultosa ya que se requiere en
general reconexiones y/o agregados de componentes.
● Puesta en marcha complicada, pues cualquier omisión en el diseño obliga al
agregado de componentes, lo que trae aparejado tiempos de puesta en marcha
mayores y el resultado final es muchas veces desprolijo desde el punto de vista del
conexionado.
● Mayor tamaño de los armarios o tableros que contienen los equipos de
automatización.
- Lógica programada
1.2.- CONCLUSIONES
►Menor Mantenimiento
Los sistemas programables basan su funcionamiento en un “programa” adecuado
que representa el algoritmo o lógica de control, este algoritmo de control se
construye sobre la base de elementos virtuales (rutinas de programa, lógicas
booleanas, etc.), en los cuales no intervienen elementos físicos tales como relés
auxiliares, llaves, etc., por lo que el posible deterioro consecuencia del uso es
prácticamente inexistente, esto hace que las tareas de mantenimiento se reduzcan
sensiblemente respecto de sistemas convencionales.
EN DEFINITIVA………..
►Reducción de costos
Nota:
TRANSDUCTORES
INTRODUCCION
En todo proceso de automatización es necesario captar las magnitudes de planta,
para poder así saber el estado del proceso que estamos controlando. Para ello
empleamos los sensores o transductores, términos que se suelen emplear como
sinónimos aunque el transductor engloba algo más amplio.
Se puede definir un transductor como un dispositivo que convierte el valor de una
magnitud física en una señal eléctrica codificada, ya sea en forma analógica o
digital. No todos los transductores tienen por qué dar una salida en forma de señal
eléctrica (ej. un termómetro), pero para aplicaciones industriales como las que nos
ocupan suele ser lo más frecuente.
2.1 - ESTRUCTURA
Si nos limitamos a los transductores que se emplean para conectar a sistemas de
automatización como los que nos ocupan ( PLC, PC con placas de adquisición, etc.
), a través de las interfaces adecuadas, podemos distinguir las siguientes partes
que los componen:
► Elemento sensor o captador. Convierte las variaciones de una magnitud
física en variaciones de una magnitud eléctrica (señal).
► Tratamiento de la señal. Si existe, realiza la función de modificar la señal
obtenida para obtener una señal adecuada (filtrado, amplificación, etc).
► Etapa de salida. Comprende los circuitos necesarios para poder adaptar la
señal al nivel requerido para la carga exterior.
2.2 - CLASIFICACION
ACTUADORES
INTRODUCCIÓN
► Térmica ( calentamiento)
► Todo-nada: aquellos que únicamente poseen dos estados, los cuales están
separados por un valor umbral de la señal aplicada.
► Motorizados
► Por solenoides
► Piezoeléctricos
► Neumáticos
► Eléctricos
► Hidráulicos
- Válvulas de control
- Válvulas proporcionales
- Servo-válvulas
- Contactores
- Cilindros lineales y de rotación ( hidráulicos o neumáticos)
- Variadores de velocidad
3.- PLC
INTRODUCCION
Memoria
RAM/ROM
Microprocesador
Reloj Fuente de alimentacion
BUS
Acopladores
E/S serial
de E/S
Sensores RS232
Actuadores RS485
Imagen de proceso
de las entradas LECTURA ENTRADAS
Imagen de proceso
de las salidas ESCRITURA SALIDAS
Funciones de
comunicacion
WATCHDOG
3.2.3.- Memoria
- Digitales.
- Analógicas.
Como es obvio para poder especificar las características necesarias de las E/S
del PLC se debe determinar claramente cuales serán los elementos que se
conectarán a las mismas, para de esa forma definir rangos de tensiones, tipo
de E/S, etc.
Entradas digitales
+V
I 0.2
LOGICA DE CONTROL
I 0.3
I 0.4
I 0.5
I 0.6
I 0.7
I 0.1
+
I 0.2
LOGICA DE CONTROL
I 0.3
I 0.4
I 0.5
I 0.6
I 0.7
COM
Salidas Digitales
Desde el punto de vista constructivo las salidas digitales pueden ser de 2 tipos:
Se utiliza un relé separado para cada salida, es decir para cada salida estarán
disponibles los dos bornes del contacto del relé respectivo, esto permite
trabajar con tensiones distintas para cada una de ellas (C.A., C.C. o ambas en
cualquier nivel de tensión ), así como garantizar el máximo nivel de separación
entre salidas ( no hay bornes comunes ). La velocidad de respuesta suele ser ≥
10 ms, por otra parte este sistema es el menos sensible a variaciones de
tensión o transitorios en las salidas.
La corriente admisible por salida puede ser tan alta como 8 ó 10 A.
Manejo de valores analógicos en el PLC
Entradas analógicas
Al contrario de una señal binaria o digital, la cual puede aceptar solo dos
valores ‘Con Tensión +24V‘ (nivel lógico 1) y ‘Sin Tensión 0V‘ (nivel lógico 0),
las señales analógicas pueden aceptar tantos valores como se deseen, dentro
de ciertos rangos. Un ejemplo típico de un transductor analógico es un
potenciómetro. Dependiendo de la posición del mando, se proporciona un valor
diferente de resistencia hasta un valor máximo.
365
10V: 1000 R/min = 0,01 V/R/min
1000 R/min
365 R/min x 0,01 V/R/min = 3,65
10V
0V +10V
Ahora bien, ¿que pasa si la resolución del conversor es inferior a 16 bits?, pues
bien, si un módulo analógico tiene una resolución inferior a 16 bits, los valores
analógicos se registran en el módulo comenzando por la izquierda (justificación
a la izquierda). Los dígitos insignificantes no ocupados se rellenan con “0”, esto
significa que si por ejemplo la resolución del conversor es de 13 bits, en la
palabra donde se almacene el valor analógico los bits 0 y 1 siempre estarán en
“0”.
Las celdas sombreadas indican los bits que permanecerán siempre en “0”.
Para mayor detalle se transcribe a continuación una tabla con los valores de
incremento en función de la resolución del conversor.
Y1
Y0
X0 X X1
Y = (Y1-Y0) * (X-X0)/(X1-X0) + Y0
Y1 = 6
Y0 = 2
X1 = 32000
X0 = 6400
Por supuesto si se trata de una salida los valores estarían invertidos ya que
tengo que hacer un “desescalamiento”, entonces:
Y1 = 32000
Y0 = 6400
X1 = 6
X0 = 2
Veamos:
Las entradas o salidas analógicas almacenan los valores leídos como números
enteros y si para el escalamiento yo mantengo el criterio de utilizar dicho
formato numérico me encontraré con que la resolución cae drásticamente en la
mayoría de los casos.
Retomando el ejemplo anterior si mi entrada tiene un conversor de 12 bits tiene
una resolución de 1/4096, es decir puede “dividir” el rango de entrada en 4096
partes, si realizo el escalamiento al rango 2 a 6 Kg/cm2 y conservo el criterio de
utilizar números enteros, mi rango de valores enteros queda restringido a solo 5
valores posibles (2,3,4,5 y 6), es decir mi resolución pasa a ser de 1/5 con lo
cual no solo “desperdicio” la capacidad de resolución de mi módulo de entrada
sino que también puedo no contar con la discriminación suficiente en los
valores de la variable como para tomar decisiones adecuadas en mi programa.
Por supuesto cuando voy al otro extremo de la cadena, es decir las salidas
analógicas, el proceso deberá ser inverso, ya que debo convertir el valor en
número real en uno de número entero para poder “escribirlo” en la salida.
En este caso lo que se emplea son dos sistemas que apuntan a lo mismo por
dos caminos diferentes: mantener el valor de salida del filtro aunque la señal
de entrada experimente oscilaciones en su valor.
Si bien todos los PLC dispondrán en mayor o menor medida de los elementos
antedichos, existirán dos formas básicas de estructurar físicamente los mismos,
lo que da como consecuencia posibilidades distintas en los equipos utilizados,
podemos distinguir entonces:
PLC modulares
Introducción
BIT
BYTE
WORD (palabra).
DOBLE WORD.
-Sistema hexadecimal
0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1
7 4 A 5
- Código BCD
1 0 0 1 0 1 0 1
8 4 2 1 8 4 2 1
8+1=9 4+1=5
Muchos PLC’s utilizan una longitud de 1 palabra (16 bits) para almacenar los
números BCD, por lo que el rango de valores estaría comprendido entre 0000 y
9999. Si bien muchos PLC’s tienen funciones que permiten efectuar cálculos
directamente en BCD, es muchas veces preferible convertirlos internamente en
enteros para ejecutar las operaciones matemáticas ( todos los PLC’s tienen
funciones adecuadas de conversión al efecto)
4.2.1.- Constantes
■ Constantes numéricas
■ Constantes de tiempo
Constantes numéricas
Constantes alfanuméricas
Constantes de tiempo
Duración
Fecha y Hora
TIME_OF_DAY#
DATE#
4.2.2.- Variables
A diferencia de las constantes recién vistas, cuyo valor es obviamente fijo, las
variables se utilizan dentro de la estructura del programa para representar
aquellos datos que sufren variaciones a lo largo del tiempo en el proceso
controlado, como por ejemplo el estado de entradas, salidas y marcas.
Operandos
Además de las áreas mencionadas que son comunes a todos los PLC’s
algunos fabricantes reservan áreas de memoria para los denominados datos o
variables, las que algunas veces comparten un espacio común con la memoria
de programa (memoria D o V).
4.2.3.- Direccionamiento
4...
1000H
Memoria de usuario
...
(RAM) 24 K instrucciones
EC00H Timers T 59 . . .
...
FFFFH 64
EF7FH 127
EF80H 0
Imagen de Proceso de Salidas
EFFFH 127
I 0.3
C, T (contadores, temporizadores)
● Direccionamiento Fijo
● Direccionamiento Variable
Direccionamiento Fijo
Slot Número 0 1 2 3 4 5 6 7
Direcc.
Canal 64.0 to 72.0 to 80.0 to 88.0 to 96.0 to 104.0 to 112.0 to 120.0 to
n.0 to n.7 64.7 72.7 80.7 88.7 96.7 104.7 112.7 120.7
E (IN)
y Canal
65.0 to 73.0 to 81.0 to 89.0 to 97.0 to 105.0 to 113.0 to 121.0 to
n+1.0 to
65.7 73.7 81.7 89.7 97.7 105.7 113.7 121.7
A(OUT) n+1.7
Slot Nro. 0 1 2 3 4 5 6 7
Canal
Nro.
Entrada 1 IW 88
Entrada 2 IW 90
Entrada 3 IW 92
Entrada 4 IW 94
Direccionamiento Variable
- Direccionamiento Simbólico
Para que el PLC ejecute las tareas previstas, es decir las instrucciones que
debe seguir para poder comandar la instalación, se debe escribir el programa
de usuario en un lenguaje que el PLC sea capaz de comprender y siguiendo
reglas prefijadas.
Dado que el microprocesador del PLC trabaja con instrucciones en lenguaje de
máquina, las cuales resultan muy difíciles de manejar, se desarrollaron los
“lenguajes de programación”, los que definen unas reglas de escritura y juegos
de instrucciones entendibles para el programador que luego se compilan a
lenguaje máquina antes de cargarse en el PLC.
En el caso de la norma IEC 61131-3 se reconocen cinco lenguajes de
programación, que responden a preferencias y/o niveles de complejidad de las
instrucciones.
Operación Operando
A I 32.0
D := B*B - 4*A*C ;
IF D < 0.0 THEN NROOTS := 0 ;
ELSIF D = 0.0 THEN
NROOTS := 1 ;
X1 := - B/(2.0*A) ;
ELSE
NROOTS := 2 ;
X1 := (- B + SQRT(D))/(2.0*A) ;
X2 := (- B - SQRT(D))/(2.0*A) ;
END_IF ;
Ahora bien:
¿Como se representan estos elementos y como los evalúa el programa en el
PLC?
Combinación AND
Combinación OR
AND antes de OR
OR antes de AND
● Contador ascendente
● Contador ascendente/descendente
La operación Contador ascendente/descendente (CTUD) cuenta adelante o
atrás desde el valor actual (CV) al producirse un flanco positivo en la entrada
de contaje adelante (CU) o de contaje atrás (CD), respectivamente.
La salida ascendente (QU) se activa cuando el valor actual (CV) es igual al
valor prefijado. La salida descendente (QD) se activa cuando el valor actual
(CV) es igual a cero. El contador carga el valor actual en el valor prefijado (PV)
cuando se habilita la entrada de carga (LD). De forma similar, el contador se
inicializa y carga el valor actual con 0 cuando se habilita la desactivación (R). El
contador se detiene cuando alcanza el valor prefijado, o bien 0.
Por simplicidad se han omitido algunos elementos tal como las protecciones
necesarias (térmicos, fusibles, etc.)
donde tendré dos pulsadores de arranque (uno para cada sentido de giro), un
pulsador de parada general y dos contactores.
● No existen reglas fijas o escritas sobre como debo colocar los contactos en
mi programa (NA o NC), sino que lo que se debe determinar es que resultado
final quiero que se lleve a cabo en función del estado de las señales
involucradas, es decir cual debe ser el resultado final en función del resultado
lógico (el RLO mencionado mas arriba) de los contactos, o dicho en palabras
mas sencillas: que quiero que pase en función de que las señales presentes
estén en 1 o 0.
Marcas
Flancos
Los flancos son contactos especiales que se utilizan para evaluar el cambio de
estado de una señal, es decir determinan si el RLO que los precede cambió de
0 a 1 (Flanco positivo) o cambió de 1 a 0 (Flanco negativo). Estos contactos
habilitan el paso de la corriente momentáneamente: El contacto Detectar flanco
positivo permite que la corriente circule durante un ciclo cada vez que se
produce un cambio de “0” a “1” (de “off” a “on”) en el RLO. El contacto Detectar
flanco negativo permite que la corriente circule durante un ciclo cada vez que
se produce un cambio de “1” a “0” (de “on” a “off”) en el RLO.
Nota:
Si pasamos al siguiente ciclo con la entrada I0.0 aun activa la situación será:
Veamos el programa:
Contadores
3) Los contadores son activados por flancos, es decir para que el valor
contado se incremente se debe registrar un cambio de 0 a 1 en la
entrada del contador.
● Arbol de operaciones
Aquí aparecen las diferentes operaciones admitidas por el S7-200, de las listas
desplegables elegiré aquella operación que necesite programar en mi solución
de automatización.
Este árbol cambiará ligeramente según en que lenguaje esté programando, ya
que por ejemplo si estoy en AWL (IL), por ser un lenguaje de texto, solo tendré
en la lista las instrucciones en dicho formato; en cambio si trabajo en KOP
(LADDER) aparecerán los contactos y cuadros correspondientes a las
instrucciones respectivas.
● Area de programación
● Area de información
● Barra de navegación
Aclaraciones pertinentes
Si los ajustes han sido correctos haciendo doble click sobre el cuadro ubicado a
la derecha que precisamente indica Haga doble clic para actualizar deberían
aparecer la o las CPU’s conectadas indicando su/s dirección/es en la red, el
tipo de CPU y la versión de Firmware correspondiente.
Elementos configurables
En caso de que los datos remanentes se pierdan por falla en la pila, o bien por
que se ha descargado el condensador de respaldo la memoria RAM se borra
completamente y se pone a 1 el bit SM0.2 para indicar dicha circunstancia.
5.1.3.3.- Contraseña
Congelar estados: Esta tabla sirve para ajustar las salidas a un estado
conocido al producirse un cambio de RUN a STOP. Haciendo clic en la casilla
de verificación correspondiente a cada salida que se desea activar (poner a 1)
esta pasará a dicho estado cuando se pase de RUN a STOP.
● Zona de programación: esta zona por ser la mas importante desde el punto
de vista del objetivo del programa merece un mayor detalle en su análisis, lo
que haremos a continuación.
todos aquellos puntos que requieran ingresar algún valor por parte del usuario
y que todavía no hayan sido escritos. Por ejemplo:
Total errores: 3
Total errores: 0
Este cuadro me permitirá, como se ve, seleccionar si deseo cargar todos los
elementos del programa o solo algunos. Como regla es necesario en la primera
carga dejar seleccionados todos los elementos, ya que de esta manera se
enviará al PLC no solo el programa sino los posibles cambios que se hayan
hecho en la configuración del mismo (el Bloque de Sistema) y los datos
almacenados en el Bloque de datos que sean necesarios para la ejecución del
programa de usuario.
Una vez ejecutada esta carga inicial y si es necesario cargar modificaciones en
alguno de los bloques se podrán desmarcar las opciones no editadas de
manera de acelerar la transferencia a la CPU.
Supongamos que deseamos ver la ejecución del programa mientras este está
corriendo en el PLC con objeto de verificar que las señales desde campo se
están recibiendo correctamente, o bien deseamos verificar que la lógica
elaborada ejecuta las acciones previstas; para ello abrimos el bloque donde
estas señales se encuentran, nos movemos hasta el segmento que queremos
observar y estando conectados al PLC vamos al menú TestIniciar estado del
programa o bien picamos en el ícono
Aquí lo que veremos será como se van cumpliendo las instrucciones que
tenemos escritas, es decir aquellos contactos que estén cerrados (es decir que
su RLO sea 1) estarán remarcados en azul y los que no se verán con el color
de fondo, obviamente si la bobina de salida está “energizada” también estará
en azul, adicionalmente podré observar al lado del operando el estado de la
señal en el contacto respectivo, es decir puedo visualizar si la entrada, salida,
marca,etc. está en 0 o en 1.
En el caso de los temporizadores si este está corriendo se observará el valor
actual del mismo, de manera similar los contadores mostrarán su valor actual
de cuenta y en caso de que esta cambie dicho cambio se observará.
Para poder observar y forzar estos valores, tenemos unos botones en la barra
de herramientas.
Hay un botón que representa unos anteojos solamente. Con este botón lo que
podemos hacer es una visualización instantánea, es decir observamos los
valores que tienen las variables en ese instante y se quedan fijos en la pantalla.
Si se producen cambios en las variables no los vemos reflejados en la pantalla.
Tenemos otro botón que representa unos anteojos con una tabla detrás. Con
esto podemos hacer una observación continua, es decir si se produce algún
cambio en las variables, se refleja en la pantalla.
La función Escribir todo representada por el botón con el lápiz sirve para
escribir uno o más valores en el programa, con objeto de simular una condición
o un juego de condiciones. Entonces se podrá ejecutar el programa y utilizar la
tabla de estado (y, si se lo desea, la función Estado del programa) para
observar qué sucede. A medida que se ejecuta el programa, puede ocurrir que
los valores modificados con la función "Escribir todo" se sobrescriban con otros.
La función forzar dispone de dos botones asociados que son los de Desforzar y
Desforzar todo que permiten retornar total o parcialmente a la condición inicial
(antes del forzado), los que se describen a continuación.
¿Pero que pasa si para una variable particular, como por ejemplo una entrada
o salida determinada, queremos saber en que bloques y de que forma han sido
llamadas?
O bien queremos determinar cuales de las entradas, salidas, marcas, etc. están
siendo utilizadas en mi programa. Pues bien para este objeto el software
cuenta con un elemento denominado Referencias cruzadas.
Plano de ocupación