PROGRAMACION
Existen varios métodos de lenguaje aplicados a la programación de PLC.
Diagramas lógicos
Listado de Instrucciones
Lógica en escalera
Lenguaje de alto nivel
Sin embargo todos se basan en el Algebra de Booleana desarrollada en 1849
por George Boole y que se utiliza para desarrollar las sentencias lógicas, dado
que estas generan ordenes de verdadero (1) o falso (0) de la lógica
combinacional del Algebra de Boole. Sin embargo las operaciones lógicas
básicas permiten la realización de un buen número de funciones de
aplicaciones industriales, existen otras situaciones que no pueden resolverse
tan directamente con las operaciones lógicas y es aquí don se hace necesario
los lenguajes de programación, propio de cada equipo y fabricante, siendo
posible la traducción de un tipo de programa a otro.
CONCEPTOS DE ALGEBRA DE BOOLE
Las definiciones y propiedades del algebra de boole es un tema que puede
desarrollarse en extenso en cursos especialmente dedicados al tema, sin
embargo presentaremos sus desarrollos principales que permiten su aplicación
a la programación de los PLC
a) Valores permitidos en Algebra de Boole : 0 , 1 la interpretación física de
estos dos valores corresponde a situaciones abierto, cerrado; encendido ,
apagado; conduce, noconduce; etc.
b) Las variables lógicas: A, B, X, Y,,,,,,,,,,etc. pueden tomar solo estos dos
valores.
c) Las operaciones permitidas: AND, ( · ); Producto booleano X =A·B
OR, ( + ); Suma booleana X=A+B
NOT, ( ); Complemento booleano. X = A
d) Una función lógica o booleana corresponde a un conjunto de variables
booleanas relacionadas por operaciones booleanas
Y = e·(a·b + c·d)
e) Las operaciones lógicas o booleana cumple con postulados y leyes
Propiedad asociativa de la suma y el producto booleano.
a+(b+c) = (a+b)+c a · ( b· c ) = ( a · b ) · c
Propiedad conmutativa de la suma y del producto booleano.
a+b = b+a a·b = b·a
Propiedad distributiva del Producto respecto de la suma.
a· (b+c) = (a·b)+ (a·c)
Propiedad distributiva de la suma respecto del Producto.
a+ (b·c) = (a+b)· (a+c)
Ley de absorción.
a+a·b = a a·(a+b) = a
Regla de Morgan
(a + b + c + d + ....... ) = a · b · c · d · .........
(a · b · c · d ........) = a + b + c + d + .......
f) Las operaciones lógicas se pueden representar en las Tablas de verdad
a + b = c a · b = c a = a
0 0 0 0 0 0 0 1
0 1 1 0 1 0 1 0
1 0 1 1 0 0
1 1 1 1 1 1
g) El álgebra de Boole se puede representar simbólicamente mediante
compuertas lógica, dispositivos semiconductores que realizan una operación
lógica. Así encontramos compuertas AND (Y), OR (O), NOT ( inversor)
a a
c c
b b a a
h) Un Circuito combinacional, de compuertas se puede realizar
interconectando compuertas lógicas.
a
e = (a+b) * (c+d)
b
c
d
En atención de que un alto porcentaje de aplicaciones industriales son de
operaciones lógicas (partidas, paradas, alarmas, conteos, temporizaciones,
comparaciones) corresponde utilizar alguna forma de programación que
considere el algebra de Boole como base para la estructuración del lenguaje.
de programación.
Supongamos se tiene una pileta de la cual se extrae agua con el accionamiento
de una bomba, se utiliza un interruptor manual (HS-1) para el arranque y
parada de una bomba. La pileta tiene un interruptor de nivel. La bomba no
puede ser accionada, no funciona, si no hay nivel suficiente en la pileta. Sin
embargo, en una situación de emergencia es deseable poder operar usando la
reserva de agua que hay bajo el interruptor LSL para eso se dispone de un
interruptor auxiliar HS-2 que habilita esta operación.
Elemento físico Variable Si vale 0 Si vale 1
Interruptor nivel a Nivel bajo el interruptor. Nivel por encima del
LSL Interruptor abierto interruptor.
Interruptor cerrado
Interruptor HS-1 b Parar la bomba abriendo Arrancar la bomba cerrar el
el interruptor interruptor.
Interruptor HS-2 c Operación normal, Operar la bomba cuando el
emergencia interruptor cerrado interruptor indica que no hay
agua.
Interruptor cerrado
bomba d No funcionando Funciona
Tabla de verdad de la función lógica 0 operación normal (SW abierto)
c 1 opera bomba cuando SW
a b a+c b d=(a+c)b indica no hay agua (SW cerrado)
0 0 0 0 0 0 no funciona
d
0 1 1 0 0 1 funciona
1 0 1 0 0
1 1 1 0 0
0 0 0 1 0
0 1 1 1 1
1 0 1 1 1
1 1 1 1 1
0 bajo nivel (SW abierto)
a
1 sobre nivel (SW cerrado)
0 parar bomba (SW abierto)
b
1 arranca bomba (SW cerrado)
OPERACIONES PARA LA REALIZACION DE APLICACIONES INDUSTRIALES.
Para la realización de aplicaciones industriales se requieren operaciones que van
mas alla de las correspondientes a las suministradas por el algebra de Boole, Así el
total de operaciones posibles de realizar las podemos agrupar en:
Operaciones Básicas
Temporizadores y contadores
Operaciones aritméticas
Comparadores
Transferencia de datos
Control de Flujo de programas.
Operaciones Básicas, corresponden alas operaciones lógicas y sus derivadas: AND;
OR; NOT ó sus derivadas NAND, NOR; OREX, etc.
Temporizadores y Contadores, Permiten activar y desactivar dispositivos luego de
cumplirse una determinada condición de tiempo o de cuenta de eventos. Los
Temporizadores y Contadores son funcionalmente similares. Pueden combinar
variables booleanas con variables No booleanas. Las entradas del Temporizador son
variable booleanas el tiempo prefijado es no booleana.
El temporizador básico se activa frente a un contacto de entrada que se cierra,
temporizará durante un tiempo definido y cerrará contacto de salida al terminar el
período.
A B
Temporizador
t
Otros temporizadores se implementan a partir del temporizador básico, así
encontramos los siguientes tipos, entre otros:
Temporizador de Inicio demorado
En este temporizador el cambio de 0 a 1 en la entrada marca el inicio del período de
temporización, t, al término de él la salida cambia de 0 a 1 y permanece en ese estado
hasta que la entrada retorna a 0
A
t
B
Temporizador de Término demorado
En este temporizador el cambio de 0 a 1 en la entrada da inicio a un cambio de 0 a 1
en la salida, cuando la entrada cambia de 1 a 0 da inicio al período de temporización,
t, al término del cual habilita a la salida para cambiar de 1 a 0
t
A
Temporizador activado por pulso
En este temporizador el cambio de 0 a 1 de la entrada da inicio a un cambio 0 a 1 de
la salida, simultáneamente se inicia la temporización, t, la entrada puede cambiar de
1a 0, sin embargo la salida solo cambiará de 1 a 0 cuando haya terminado el tiempo
de temporización asignado.
Operaciones Aritméticas con frecuencia se deben realizar operaciones aritméticas
entre las señales puestas en las entradas del PLC. Dependiendo del la potencialidad
del equipo se encuentran operaciones de Suma, Resta, multiplicación y división, en los
equipos pequeños. Mientras que en los equipo mayores se encuentran operaciones de
Logaritmos, Raíces cuadradas, funciones trigonométricas, es evidentes que estas
operaciones van a tener operandos y resultados no booleanos.
Los Comparadores realizan la operación entre dos variables y corresponden
principalmente a: Igual a (=); mayor que (>) y menor que (<). El resultado de la
operación es booleano
La Transferencia de datos utilizadas principalmente para transferir datos dentro de la
Memoria del PLC.
El Control de Flujo del Programa Actúa sobre la forma como se está ejecutando el
programa existen instrucciones tales como:
- Marcas de comienzo y final de programa
- Saltos condicionales e incondicionales
- Llamados a subrutinas.
- etc.
PRESENTACION DE PROGRAMAS USADO EN APLICACIONES INDUSTRIALES
Para describir la forma que tienen los programas escritos en diversos lenguajes se
presenta el siguiente ejemplo.
Se dispone de una pileta desde donde se extrae agua mediante el arranque y parada
de una bomba.
HS Interruptor Manual
I Enclavamiento
LLL Indicador luminoso de bajo nivel
LLLL Indicador luminoso de muy bajo nivel
LSL Interruptor por baja señal
LSLL Interruptor por muy bajo nivel
LT Transmisor de nivel
La bomba arranca desde un pulsador HS-1 y se detendrá desde otro pulsador HS-2
Hay señalización de bajo nivel LLL (nivel de pileta bajo el nivel de seguridad), se
obtiene de un transmisor de nivel LT cuya señal se utiliza para una indicación de nivel,
fuera del PLC.
Para protección de la bomba esta se apagará si el nivel de la pileta está por debajo del
interruptor de nivel LSLL que indica muy bajo nivel, simultáneamente se encadena una
indicación luminosa de muy bajo nivel LLLL. Es necesario apagar automáticamente
porque la bomba no puede operar sin líquido.
Para HS-2 se usa un interruptor NC, cerrado cuando no se pulsa, para HS-1 se
utiliza un interruptor NA, abierto cuando no se pulsa
El interruptor LSLL será tipo NA contacto abierto cuando el interruptor no esté
energizados por el nivel de agua. Cerrado cuando el nivel está por encima del límite
especificado.
La bomba estará energizada cuando la salida Y1 este energizada o en estado 1 y
apagada en caso contrario.
DIAGRAMAS LOGICOS
La programación usando diagramas lógicos es una derivación del lenguaje de
compuertas, la nomenclatura usada ha sido normalizada (DIN 40.700/40.719, ISA
S5.2)
Elemento físico Variable Si vale 0 Si vale 1
Transmisor de Nivel LT Variable analógica (0-1m)
Interruptor de nivel LSLL Abierto: Cerrado
Contacto NA Nivel por debajo Nivel Sobre Interruptor
interruptor LSLL LSLL
Indicador de bajo nivel LLL Apagado Encendido.
Nivel sobre el fijado Nivel bajo el fijado para
para alarma (100 mm.) alarma (100 mm.)
Indicador de muy bajo LLLL Apagado. Encendido.
nivel Nivel sobre el Nivel bajo el interruptor
interruptor LSLL LSLL
Pulsador de arranque HS-1 Abierto. Cerrado.
Sin presionar. Presionado.
Pulsador de parada HS-2 Abierto. Cerrado.
Presionado. Sin presionar.
Bomba Y1 Apagado. Encendido
La norma ISA S5.2 "Diagramas Lógicos Binarios para Operaciones de Procesos",
contiene recomendaciones para la implementación de secuencias, y enclavamientos
utilizados para arranques, paradas, alarmas, etc. Su simbología es independiente del
sistema usado para su implementación (Mecánico, eléctrico, digital, hidráulico, etc.)
La simbología utilizada se realiza de acuerdo con la norma ISA S5.1 "Instrumentation
Symbols and Identification"
FUNCION SIMBOLO DEFINICION
Y (AND) A La salida lógica D existe (1) si y solo si las
entradas lógicas A, B, y C existen (1)
B A D
C
A
O (OR) La salida lógica D existe (1) si y solo una o
B OR D mas de las entradas lógicas A, B, o C existen
C (1)
NO (NOT) A B
La salida lógica B existe (1) si y solo si la
entrada lógica A no existe. (0)
TEMPORIZADOR La existencia continua de la entrada lógica A
DE INICIO A
DI
B
durante un tiempo t causa que la salida
DEMORADO t lógica B exista luego del tiempo t.
B deja de existir cuando A deja de existir.
TEMPORIZADOR La existencia de la entrada lógica A causa la
DE TERMINO A
DT
B
existencia de la salida lógica B.
DEMORADO t B deja de existir después de un tiempo
continua t de que A ha dejado de existir.
TEMPORIZADOR La existencia de la entrada lógica A,
ACTIVADO POR independientemente de su estado posterior,
PO
PULSO A
t
B hace que la salida lógica B exista
inmediatamente. B existe por el tiempo t y
luego desaparece.
MEMORIA La salida lógica C existe tan pronto exista la
FLIP -FLOP entrada lógica A. C existe
A S C
independientemente del estado de A, has
R
B
que exista B. Una vez que existe B, C cesa,
independientemente del estado posterior de
B. hasta que A exista.
La solución del problema presentado usando diagramas lógicos se muestra en la
figura siguiente.
LISTADO DE INSTRUCCIONES
El lenguaje de programación que utiliza listado de instrucciones deriva del Algebra de
Boole más otras instrucciones que permiten representar temporizaciones, contadores,
movimientos de datos en memoria, etc.
Cada instrucción consta de un MNEMONICO (abreviatura que representa una función)
y puede tener uno o más argumentos (variables que sirven como entradas a la
función.
AND dir, END, >= dir
Como elemento para almacenar el resultado utiliza un registro auxiliar que se carga
por medio de un instrucción especial o con la recientemente ejecutada. El registro
auxiliar puede almacenar valores booleanos y no booleanos.
Instrucción con un argumento utiliza (NOT) el auxiliar como argumento.
Las instrucciones de dos argumentos (AND; OR) utiliza el primer argumento para este
registro, aunque depende del fabricante. La representación de los mnemónicos
(abreviaturas) puede variar según el fabricante (sigla o si es en mayúscula o
minúscula)
Algunas de las mas habituales se presentan en el listado siguiente:
STR dir Carga el contenido de dir en el registro auxiliar
AND dir Realiza una operación And enter el contenido de dir y reg auxiliar
El resultado se guarda en el registro auxiliar.
OR dir Realiza una operación OR entre el contenido de dir y reg auxiliar
El resultado se guarda en el registro auxiliar
OUT dir Copia el contenido de registro auxiliar en dir
NOT Invierte el registro auxiliar, los 0 pasan a 1 y los 1 pasan a 0aux
> = dir Efectúa la operación "mayor igual" entre dir y registro auxiliar.
El resultado se guarda en el registro auxiliar.
< = dir Efectúa la operación "menor igual" entre dir y registro auxiliar.
El resultado se guarda en el registro auxiliar.
END Fin de programa.
El programa que corresponde al ejemplo planteado inicialmente y usando las
instrucciones definidas en el listado anterior resulta ser el siguiente.
STR LT LT variable no booleano convertida a rango numérico de 0 y
1024 almacena el valor convertido en registro auxiliar.
< = 100 Compara registro auxiliar con 100 será 0 si nivel está sobre y
será 1 si nivel es inferior a 100, resultado se almacena en
registro auxiliar
OUT LLL Copia valor registro auxiliar el dirección LLL si es 0 contacto de
salida permanece abierto, luz apagada. Si es 1 contacto de
salida se cierra, luz se enciende
STR HS-1 Valor de HS- 1 se guarda en reg. aux. (0 no pulsado; 1 pulsado)
OR Y1 realiza operación lógica OR entre registro auxiliar y el valor Y1 el
resultado se guarda en registro auxiliar. Si uno de ellos es 1 se
guarda un 1 si ambos son ceros se guarda un cero.
AND HS-2 Realiza operación lógica AND entre registro auxiliar y el valor
HS-2 el resultado se guarda en registro auxiliar. Si uno de ellos
es 0 se guarda un 0 si ambos son 1 se guarda un 1.
AND LSLL
OUT Y1 Almacena un 1 en el registro Y1, cuando la CPU lee este registro
envía el valor a la tarjeta de salida el contacto de salida se
cerrará y la bomba comenzará a funcionar.
STR LSLL Carga el valor LSLL en el registro auxiliar.
NOT Se invierte el contenido del registro auxiliar.
OUT LLLL
END Final de programa, se reinicia el programa desde su comienzo.
De acuerdo con el programa la salida Y1 se activará cuando se cumpla
simultáneamente las siguientes tres condiciones.
HS-2 = 1 (interruptor HS-2 no pulsado)
LSLL = 0, Cerrado (nivel por encima del límite fijado)
HS-1 = 1 (interuptor HS-1 pulsado) o Y1 es igual a 1 (Registro Y1 está activado).
Condición para que Y1 siga activado una vez que HS-1 se suelte
LOGICA EN ESCALERA
La programación usando lógica escalera o diagramas escaleras se basa en la lógica
de contacto utilizada por electricista para conectar los relays, la cual mediante
símbolos gráficos se realizan operaciones lógicas además de temporizaciones,
contadores y activaciones de elementos externos además de otras operaciones
necesarias para el desarrollo de una aplicación.
Los elementos básicos de programación son contactos NA o NC y bobinas (NA,
normalmente abiertos o NC, normalmente cerrados) el estado normal de un contacto
corresponde a la posición del contacto sin energizar
La simbología básica de un lenguaje se muestra en la siguiente tabla
Contacto NA
Contacto NC
( )
Bobina
TON Temporizador de
Inicio demorado
TOF Temporizador de
Termino demorado
RTO Temporizador, con retención.
Actuado por pulso
CTU Contador creciente
CMD Comparador
Para la implementación de un programa en diagrama escales se supone que un línea
de programa está conectada a un par de líneas de alimentación a,b
a b
B1 = X1 AND X3 )
X1 X3 B1
a b
----------- )---
B2 = X1 OR X2 X1 B2
X2
La bobina del elemento actuador es el último elemento que se ubica en la línea y
representa al elemento de acción final
El diagrama de contactos se presenta en su estado desernegizado y planta de proceso
vacía.
a b
CMP
1
LT<100
LLL
HS-1
2 BOMBA
LSLL
BOMBA
3 BOMBA
LSLL
4 LLLL
AUX
LENGUAJES DE ALTO NIVEL
Los lenguajes de alto nivel además de utilizarse en modelos inteligentes, son útil para
escribir subrutinas en PLC que utiliza otros lenguajes como la lógica escalera.
En algunos lenguajes en lógica escalera se insertan instrucciones denominadas BOX
que al activarse ejecutan subrutinas escritas en lenguajes similares a C, Pascal, Basic.
Sus aplicaciones se orientan a aplicaciones que requieren una capacidad intensiva de
cálculo. Son apropiados para programas de alta complejidad no es usual en
programación de relativa simplicidad, como la de nuestro ejemplo, sin embargo de
hacerla se muestra en el siguiente listado.
10 REM "Declaración de variables"
20 DECLARE HS-1, HS-2, LSLL, LLLL
BOMBA = BOOLEAN
30 DECLARE LT = WORD
40 REM Lectura de variables de campo
50 DIN HS-1, HS-2, LSLL
60 AIN LT
70 REM Programa
80 LLL = CMP < (LT, 100)
90 BOMBA = AND (HS-2, AND (LSLL, OR (HS-1, BOMBA)))
100 LLLL = NOT (LSLL)
110 REM Escritura de variables de campo
120 BOMBA, LLL, LLLL
130 END
PROGRAMACION ESTRUCTURADA
Los lenguajes de alto nivel, en particular los de programación estructurada son útiles
en aplicaciones de alta complejidad, tiene por objeto facilitar la comprensión y el
diseño de los programas desarrollados
"Una programación estructurada es un conjunto de elementos solidarios entre sí, que
integran una totalidad, de la cual son miembros y no partes, constituyendo un todo y
no una suma. Los miembros se caracterizan por su independencia, su articulación en
la forma total y su solidaridad."
Consiste en la descomposición de un trabajo en varias tareas independientes,
autocontenidas y fáciles de comprender. Cada una se diseña por separada en algún
lenguaje descrito. Un programa maestro define como se corren las tareas y controla el
conjunto.
Cada fabricante define una versión propia de sus lenguajes estructurados