Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El PLC en la
Tecnología de la Automatización
1.1 Introducción El primer Control Lógico Programable (Programable Logic Control o PLC) fue
desarrollado por un grupo de ingenieros en la General Motors en 1968, cuando la
empresa estaba buscando una alternativa para reemplazar los complejos sistemas
de control por relés.
El nuevo sistema de control tenía que cumplir con los siguientes requerimientos:
• Programación sencilla
• Cambios de programa sin intervención en el sistema (sin tener que rehacer el
cableado interno)
• Más pequeño, más económico y más fiable que los correspondientes sistemas de
control por relés
• Sencillo y con bajo coste de mantenimiento
Desde entonces han pasado tres décadas, durante las cuales los enormes
progresos hechos en el desarrollo de la micro electrónica han favorecido la
proliferación de los controles lógicos programables. Por ejemplo, a pesar de que en
sus comienzos la optimización del programa y con ello la necesidad de reducir la
ocupación de memoria representaba una tarea importante para el programador, en
la actualidad esto apenas tiene importancia.
1.2 Areas de Todas las máquinas o sistemas automáticos tienen un control. Dependiendo del
aplicación de un PLC tipo de tecnología utilizada, los controles pueden dividirse en neumáticos,
hidráulicos, eléctricos y electrónicos. Con frecuencia se utiliza una combinación de
las diferentes tecnologías. Además, debe distinguirse entre controles con programa
cableado (es decir, conexionado físico de componentes electromecánicos (relés,
etc) o componentes electrónicos (circuitos integrados)) y controles lógicos
programables. Los primeros se utilizan principalmente en casos en los que la
reprogramación por el usuario está fuera de toda duda y el alcance de la tarea
justifica el desarrollo de un sistema de control especial. Las aplicaciones típicas de
tales controles pueden hallarse en los electrodomésticos, video cámaras,
vehículos, etc.
Sin embargo, si la tarea de control no justifica el desarrollo de un control especial, o
si el usuario debe tener la posibilidad de hacer cambios sencillos, o de modificar
tiempos o valores de contadores, entonces el uso de un control universal, en el que
el programa se escribe en una memoria electrónica, es la opción preferida. El PLC
representa un control universal. Puede utilizarse para diferentes aplicaciones y,
dado que el programa se halla escrito en su memoria electrónica, el usuario puede
modificar, ampliar y optimizar con cierta sencillez sus procesos de control.
Figura B 1.1
Ejemplo de una
aplicación de PLC
Sin embargo las tareas del PLC se ampliaron rápidamente: las funciones de
temporización y recuento, operaciones de cálculo matemático, conversión de
señales analógicas,etc., representan funciones que pueden ejecutarse en casi
todos los PLCs actuales.
Las demandas que se requieren de los PLCs siguen creciendo al mismo ritmo que
su amplia utilización y desarrollo en la tecnología de automatización. Por ejemplo:
la visualización, es decir, la representación de los estados de las máquinas o la
supervisión de la ejecución del programa por medio de una pantalla o monitor.
También el control directo, es decir, la facilidad de intervenir en los procesos de
control o, alternativamente, impedir tal intervención a las personas no autorizadas.
También se ha visto la necesidad de interconectar y armonizar sistemas
individuales controlados por PLC, por medio de redes o buses de campo. Aquí, un
ordenador master permite la generación de órdenes de mayor nivel para el
procesamiento de programas en los diversos sistemas PLC interconectados.
La conexión entre de varios PLCs, así como la de un PLC con el ordenador máster
se realiza por medio de interfaces de comunicación especiales. Para ello, la
mayoría de los más recientes PLCs son compatibles con sistemas de bus abiertos
estandarizados, tales como Profibus según DIN 19 245. Gracias al enorme
aumento de la potencia y capacidad de los PLCs avanzados, estos pueden incluso
asumir directamente la función de un ordenador máster.
Hacia finales de los setenta, las entradas y salidas binarias fueron finalmente
ampliadas con la adición de entradas y salidas analógicas, ya que hay muchas
aplicaciones técnicas que emiten y requieren señales analógicas (medición de
fuerzas, velocidades, sistemas de posicionado servoneumáticos, etc.). Al mismo
tiempo, la adquisición y emisión de señales analógicas permite la comparación de
valores reales con los de consigna y, como consecuencia, la realización de
funciones de regulación automática; una tarea que va más allá del ámbito que
sugiere el nombre de control lógico programable.
Los PLCs que existen actualmente en el mercado han sido adaptados a los
requerimientos de los clientes hasta tal punto que ya es posible adquirir un PLC
exactamente adaptado para casi cada aplicación. Así, hay disponibles actualmente
desde PLCs en miniatura con unas decenas de entradas/salidas hasta grandes
PLCs con miles de entradas/salidas.
Figura B 1.2
Ejemplo de un PLC AEG
Modicom A120
El término 'control lógico programable' se define en IEC 1131, parte 1, como 1.3 Definición básica
sigue: de un PLC
Figura B 1.3
Sistema de componentes de
un PLC
La función de un módulo de entrada es la de convertir señales de entrada en
señales que puedan ser procesadas por el PLC y pasarlas a la unidad de control
central. La tarea inversa es realizada por el módulo de salida. Este convierte las
señales del PLC en señales adecuadas para los actuadores.
Figura B1.4
PlC Compacto
(Mitsubishi FX0)
Modular PLC
(Siemens S-3000)
PLC Modular
(Festo FPC 405)
Existe una amplia gama de variantes, particularmente en el caso de las PLCs más
recientes. Esto incluye tanto las características compactas como las modulares y
características importantes tales como el ahorro de espacio, flexibilidad y
posibilidad de ampliación.
1.4 El nuevo estándar A finales de los setenta, se plantearon en Europa algunos estándares válidos para
para PLC, 1 programación de PLCs, enfocados principalmente al estado de la tecnología en
IEC131 aquel momento. Tenían en cuenta sistemas de PLC no interconectados, que
realizaban operaciones lógicas con señales binarias. DIN 19 239, por ejemplo,
especifica un lenguaje de programación que posee las correspondientes
instrucciones para estas aplicaciones.
Fundamentos
2.1 El sistema de La característica del sistema de numeración decimal, comúnmente utilizado, es la
Numeración disposición lineal de los dígitos y su emplazamiento significativo. El número 4344,
Decimal por ejemplo, puede representarse como sigue:
2.2 El sistema de Fue Leibnitz quien aplicó por primera vez las estructuras del sistema de
Numeración numeración decimal al cálculo con dos dígitos. Allá por el año 1679, esto creó las
Binario premisas esenciales para el desarrollo de los actuales ordenadores, ya que la
tensión eléctrica o la corriente eléctrica sólo permite un cálculo utilizando dos
valores: es decir "circula corriente" o "no circula corriente". Estos dos valores se
representan en forma de dígitos "1" y "0".
Si en un número estuviéramos limitados a exactamente 2 dígitos por posición, el
sistema de numeración quedaría configurado como sigue:
Ejemplo
Ejemplo
2.3 El código BCD Para las personas acostumbradas a tratar con el sistema decimal, los número
binarios son difíciles de leer. Por esta razón, se introdujo una representación
numérica de más fácil lectura, es decir, una notación decimal codificada de un
número binario: el denominado BCD (binary coded decimal). Con este código BCD,
cada dígito del sistema de numeración decimal representa a su correspondiente
número binario.
Tabla B2.1
Representación
Decimal de un
Numero en código BCD Por lo tanto, se necesitan 4 dígitos en la notación binaria para representar el
sistema decimal. A pesar de que es una notación binaria de 4 dígitos pueden
representarse los valores de 0 a 15, los valores correspondientes al 10, 11, 12, 13,
14 y 15 no se usan en BCD.
2.3 El sistema de La utilización de números binarios es difícil y la utilización del código BCD ocupa
numeración bastante espacio de memoria. Por esta razón se desarrollaron los sistemas octal y
hexadecimal hexadecimal. En el caso del sistema octal se utilizan grupos de tres dígitos. Esto
permite contar de 0 hasta 7, es decir, contar con "ochos".
Alternativamente, en el sistema de numeración hexadecimal se combinan 4 bits.
Estos 4 bits permiten la representación de los números 0 al 15, es decir, contar en
"dieciseis". Para representar estos números se utilizan los dígitos 0 al 9, seguidos
de las letras A, B, C, D, E y F, en donde A = 10, B = 11, C = 12, D = 13, E = 14 y F
= 15. La posición significativa de cada dígito se evalúa con las potencias de 16.
Por lo tanto el número 87BC16 dado como ejemplo se lee como sigue:
Hasta ahora hemos tratado solamente con números enteros y positivos, sin tener 2.5 Números binarios en
cuenta los números negativos. Para poder trabajar con estos números, se decidió con signo
que el bit más significativo en el extremo izquierdo de un número binario se
utilizaría para representar el signo: así "0" corresponde al "+" y "1" al "-".
Cuando se utiliza el bit más significativo para el signo, se dispone de un bit menos
para la representación de un número con signo. Para la representación de un
número binario de 16 dígitos, se obtiene el siguiente margen de valores:
Tabla B2.2
Rango de valores
Para números binarios
Aunque ahora ya es posible representar con 0 y 1 números enteros positivos con 2.6 Números reales
signo, aún hay la necesidad de poder representar los decimales o números reales.
2.7 Generación de Como ya parece haber quedado claro en la sección anterior, todos los
señales digitales ordenadores, y por lo tanto todos los PLCs, funcionan utilizando señales digitales o
y binarias binarias. Por binario, entendemos una señal que sólo reconoce dos valores
definidos.
Figura B2.1
Señal binaria
Estos valores se les llama "0" o "1", aunque también se utilizan los términos "bajo"
y "alto". Las señales pueden realizarse muy fácilmente con componentes de
contactos. Un contacto activado corresponde a una señal de lógica 1 y uno sin
activar a una de lógica 0. Cuando se trabaja con elementos sin contacto, esto
puede forzar unos ciertos márgenes de tolerancia. Por esta razón, hay que definir
ciertos márgenes de tensión para definirlos como lógica 0 ó lógica 1.
Fig. B2.2
Márgenes de tensión
IEC 1131-2 define un margen de valores de -3 V a 5 V como señal de lógica 0, y de
11 V a 30 V como señal de lógica 1. Esto es de obligado cumplimiento para PLCs
cuya tecnología deba seguir la norma IEC 1131-2. En la práctica existen tensiones
muy parecidas para lógica 0 y lógica 1: Ampliamente usadas son: -30V a +5V para
lógica 0 y +13V a +30V para lógica 1.
A diferencia de las señales binarias, las señales digitales pueden asumir cualquier
valor. Se les conoce también como etapas de valor. Así, una señal digital se define
por cualquier cantidad de etapas de valor. El cambio entre estas etapas no es
secuencial. La siguiente ilustración muestra tres posibles métodos de convertir una
señal analógica en una señal digital.
Figura B2.3
Conversión de una
Señal análoga a digital
Las señales digitales pueden formarse a partir de señales analógicas. Este método
se utiliza, por ejemplo, para el procesamiento analógico a través de un PLC.
Consecuentemente, una señal de entrada analógica en el margen de 0 a 10V se
reduce a una serie de etapas de valores. Dependiendo de la calidad del PLC y de
la resolución, la señal digital será capaz de operar en etapas de valores de 0,1V,
0,01V ó 0,001V. Naturalmente, en este caso se seleccionaría el margen más
pequeño para poder reproducir la señal analógica con la mayor precisión posible.
Un ejemplo simple de una señal analógica es la presión, que se mide y se visualiza
en un manómetro. La señal de presión puede asumir cualquier valor intermedio
entre sus valores mínimo y máximo. A diferencia de la señal digital, cambia
continuamente. En el caso del procesamiento de valores analógicos a través de un
PLC, como se ha descrito, las señales analógicas de tensión se evalúan y se
convierten.
Por otra parte, las señales digitales pueden formarse reuniendo un cierto número
de señales binarias. De esta forma, de nuevo como se ha descrito en el párrafo
anterior, con ocho señales binarias es posible generar una señal digital con 256
valores.
Ejemplo
Operadores Booleanos
3.1 Funciones lógicas Como se ha descrito en el capítulo anterior, cualquier ordenador e igualmente
básicas cualquier PLC, funcionan utilizando el sistema de numeración de base 2. Esto se
aplica también a los sistemas octal (23) y hexadecimal (24). Por ello, las variables
individuales pueden asumir sólo dos valores, "0" o "1". Se utilizan unas
matemáticas especiales para poder enlazar las relaciones entre variables -la
denominada álgebra de Boole. Los enlaces entre variables también pueden
representarse claramente por medio de contactos eléctricos.
Figura B3.1
esquema del circuito
El pulsador S1 actúa como una señal de entrada, el piloto constituye la salida. El
estado actual puede ser registrado en una tabla de la verdad:
a^0 = 0
a^1 = a
_
a^a = 0
a^a = a
Tabla de la verdad
b∨ 0=b
b∨ 1=1
_
b∨ b=1
b∨ b=b
3.2 Otras operaciones En la sección B3.1 se ha descrito la realización eléctrica de las operaciones NOT-
lógicas /AND-/OR. Naturalmente, cada una de estas funciones pueden también realizarse
con componentes neumáticos y electrónicos. El álgebra de Boole reconoce
también las siguientes operaciones lógicas. La siguiente tabla proporciona un
resumen de ellas.
Las piezas con la siguiente distribución de agujeros son para el tipo de cocina
'Estándar'. Estas piezas deben extraerse de la cinta transportadora por medio del
cilindro de doble efecto 1.0.
Fig. 3.9: Distribución de los agujeros en las piezas
Tabla de verdad
Para obtener la ecuación lógica a partir de esta tabla existen dos opciones, que
conducen a dos expresiones diferentes. Naturalmente ambas expresiones
producen el mismo resultado, ya que se describen las mismas circunstancias.
3.4 Simplificación Ambas ecuaciones para el ejemplo dado son bastante amplias, si bien más larga
de funciones aún es la que se ha dado como forma estándar conjuntiva. Esto define el criterio
lógicas para utilizar la forma estándar disyuntiva o conjuntiva: la decisión se hace a favor
de la forma más corta de la ecuación. En este caso la forma estándar disyuntiva.
Esta expresión puede simplificarse con la ayuda de las propiedades del álgebra de
Boole, de las cuales las más importantes se muestran a continuación:
Propiedad conmutativa
Propiedad asociativa
Propiedad distributiva
Ley de De Morgan
El hardware a las partes físicas del dispositivo, es decir, los circuitos impresos, los
circuitos integrados, el cableado, la batería, el chasís, etc.
Finalmente, existe el software, que es el programa escrito por el usuario del PLC.
Los programas de usuario se instalan generalmente en la memoria RAM, una
memoria de acceso aleatorio, en donde pueden ser fácilmente modificados.
La tarea de la unidad aritmética y lógica -la ALU (arithmetic logic unit)- es ejecutar
las operaciones lógicas y aritméticas con los datos transmitidos.
Una orden o instrucción (command) tiene una parte de ejecución y una parte de
dirección. La parte de ejecución indica que operación debe realizarse. La parte de
dirección define la dirección de los operandos (señales de entrada, flags, etc.) con
los que hay que realizar la operación indicada.
El contador de programa es un registro, que contiene la dirección de la siguiente
orden a procesar. La sección siguiente tratará este apartado con más detalle.
La unidad de control regula y controla toda la secuencia de operaciones
requeridas para la ejecución de una orden.
Así que el programa ha sido ejecutado una vez, salta automáticamente al principio
y se va repitiendo el proceso continuamente.
Antes de que se procese la primera línea del programa, es decir, al inicio del ciclo,
el estado de las entradas es almacenado en la tabla de imagen de entradas. La
imagen del proceso es una zona de memoria aparte a la que se accede durante un
ciclo. Así el estado lógico de una entrada permanece constante durante un ciclo,
incluso aunque en este intervalo haya cambiado físicamente.
• RAM
• EPROM
• EEPROM
RAM
La memoria RAM (random access memory/memoria de acceso aleatorio) es una
memoria muy rápida y económica. Dado que la memoria principal de los
ordenadores (y también de los PLCs) consiste en memorias RAM, se producen en
grandes cantidades, lo que le permite disponer de tales memorias a costes
relativamente bajos.
EEPROM
La EEPROM (electrically erasable programmable ROM / ROM programable y
borrable eléctricamente), EEROM (electrically erasable ROM / ROM alterable
eléctricamente) o las flash-EPROM han sido utilizadas desde hace algún tiempo.
La EEPROM es especial, es ampliamente utilizada como memoria de aplicación en
PLCs. La EEPROM es una memoria borrable eléctricamente, que puede
reescribirse.
4.5 Módulo de entradas El módulo de entradas de un PLC es el módulo al cual están conectados los
sensores del proceso. Las señales de los sensores deben pasar a la unidad
central. Las funciones importantes de un módulo de entradas (para la aplicación)
es como sigue:
Dependiendo del fabricante del PLC, se asegura una detección fiable de la señal
por medio de un detector de umbral adicional o los correspondientes de diodos y
optoacopladores. Los datos precisos en relación con las señales a detectar se
especifican en DIN 19240.
El filtrado de la señal emitida por el sensor es crítica en automatización industrial.
En la industria, las líneas eléctricas están generalmente muy cargadas debido a
tensiones de interferencia inductivas, que producen muchas interferencias en las
señales. Las líneas de las señales pueden protegerse con apantallamientos,
canaletas metálicas o, alternativamente, el módulo de entrada del PLC realiza un
filtrado por medio de un retardo de la señal de entrada.
Cuando se conectan sensores a las entradas del PLC, debe distinguirse entre
conexiones de conmutación positiva y de conmutación negativa. En otras palabras,
hay que distinguir entre entradas que representan un consumo de corriente o una
fuente de corriente. En Alemania, por ejemplo, cumpliendo con VDI 2880, se
utilizan principalmente las conexiones de conmutación positiva, ya que ello permite
la utilización de un tierra de protección. Conmutación positiva significa que la
entrada del PLC representa un drenaje de corriente. El sensor suministra la tensión
de funcionamiento o tensión de control a la entrada en forma de señal-1.
4.6 Módulo de salida Los módulos de salida llevan las señales de la unidad central a los elementos
finales de control, que son activados según la tarea. Principalmente, la función de
una salida -vista desde la aplicación del PLC incluye lo siguiente:
Si se utilizan relés para las salidas, entonces el relé puede asumir prácticamente
todas las funciones de un módulo de salida: El contacto del relé y la bobina del relé
están eléctricamente aislados uno de otra; el relé representa un excelente
amplificador de potencia y está especialmente protegido de sobrecargas, con lo
que solamente debe preverse una protección ante cortocircuito con un fusible. Sin
embargo, en la práctica se conectan optoacopladores en serie con el relé, ya que
ello facilita el accionamiento del relé y pueden utilizarse relés más sencillos.
Las salidas por relé, tienen la ventaja de que pueden utilizarse para diferentes
tensiones de salida. En contraste, las salidas electrónicas tienen velocidades de
conmutación considerablemente más elevadas y una vida útil más larga que la de
los relés. En muchos casos, la potencia de relés muy pequeños utilizados en los
PLCs, corresponde a la de las etapas de potencia de las salidas electrónicas.
4.7Dispositivo Cada PLC tiene una herramienta de diagnosis y programación para soportar la
programador / aplicación del PLC
Ordenador personal
• Programación
• Verificación
• Puesta punto
• Localización de averías
• Documentación del programa
• Almacenamiento del programa
• Introducción de programas
Creación y modificación de programas en uno de los lenguajes de programación
del un PLC
• Verificación de la sintaxis
Comprobación de la sintaxis del programa y los datos, minimizando así la
introducción de programas defectuosos.
• Traductor
Traducción del programa introducido en un programa que puede ser leído y
procesado por el PLC, es decir, la generación del código máquina del
correspondiente PC.
• Funciones de verificación
Ayuda al usuario durante la escritura y en la eliminación de fallos y verificación a
través de:
- una verificación del estado de las entradas, salidas temporizadores,
contadores, etc.
- verificación de secuencias de programa por medio de operaciones de paso a
paso, órdenes de STOP, etc.
- simulación por medio de activación manual de entradas/salidas,
establecimiento de valores, etc.
Programación de un PLC
5.1 Búsqueda de una Los programas de control representan un componente importante en un sistema de
solución sistemática automatización.
Fig. B5.1:
Modelo de fases para la generación de software de PLC
El modelo de fases puede aplicaras a programas de control de complejidad
diversa; para tareas de control complejas, es absolutamente esencial la utilización
de tales modelos.
IEC 1131-3 es un estándar para la programación, no sólo de un PLC individual, 5.2 Recursos de
sino también para sistemas de automatización complejos. Los programas de control estructuración
para grandes aplicaciones deben ser claramente estructurados para ser inteligibles, IEC 1131-3
fáciles de mantener y si es posible también portátiles, es decir, transferibles a otros
sistema de PLC.
Figura B5.2:
EC 1131-3
Recursos de estructuración del programa
Los recursos de estructuración - programa, bloque de funciones y función -
contienen la verdadera lógica de Control (reglas> del programa de control. Estos
se conocen también como unidades de organización del programa. Estos recursos
de estructuración están disponibles para cualquier lenguaje de programación. Se
utilizan para la modularización de programas de control y del programa de usuario -
esto concierne principalmente a programas y bloques de función - o también
suministrados por el fabricante - en lo que se refiere a programas y bloques de
función.
Lo que tiene interés para sistemas en red es la comunicación más allá de una
configuración. Para ello, están a disposición del usuario bloques de funciones de
comunicación estandarizados. Estos se definen en IEC 1131-5 y se utilizan en lEC
1131-3. Otra posibilidad es la definición de rutas de acceso (recurso de lenguaje
RUTA_ACCESO) para variables específicas. Estas también pueden ser leídas o
escritas desde otras posiciones.
5.3 Lenguajes de IEC 1131-3 define cinco lenguajes de programación. Aunque la funcionalidad y
5.4 programación estructura de estos lenguajes es muy diferente, son tratados como una sola familia
de lenguajes por IEC 1131-3, con elementos de estructura solapados (declaración
de variables, partes de organización tales como funciones y bloques de función,
etc.) y elementos de configuración.
Los elementos del diagrama de funciones secuencial son las etapas, las
transiciones y las derivaciones alternativas y en paralelo.
IEC 1131-3 designa los tipos de datos mostrados en la fig. B6.2 en relación con las
entradas, salidas y flags.
Los tamaños de 1 bit, tal como describe el tipo de datos BOOL (booleana)
solamente pueden asumir los valores O ó 1. Consecuentemente, el margen de
valores para un dato del tipo BOOL consiste en dos valores "0" y "1".
A diferencia de esto, hay que destacar que en el caso de los tipos de datos de
secuencia de bits, que consisten en más de un bit, no hay un rango de valores
relacionado inmediatamente. Todos los tipos de datos de secuencias de bits, tales
como p. ej. BYTE y WORD son meramen
te una combinación de varios bits. Cada uno de estos bits tiene el valor O ó 1, pero
su combinación no tiene su propio valor.
Como sea que los controles siempre tienen un número relativamente grande de
entradas, salidas y flags disponibles, estos deben ser especialmente identificados a
efectos de diferenciación. Para ello se utiliza la numeración indicada por IEC 1131-
3, como en el siguiente ejemplo:
Ejemplo
Ejemplo I3.8.5
• La entrada especificada 13.8.5 puede por lo tanto representar:
Direccionamiento simbólico
Un identificador simbólico siempre consiste en una letra mayúscula o minúscula,
dígitos y un guión de subrayado. Un identificador debe empezar siempre con una
letra o un guión de subrayado. El guión de subrayado puede utilizarse para hacer
más leíble un identificador. Sin embargo, es un carácter significativo. Por ello, los
dos identificadores Marcha_motor y Marchamotor son diferentes. No se permiten
varios guiones de subrayado. Si el control permite letras mayúsculas y minúsculas,
su utilización indistinta no debe tener significación alguna. Los dos identificadores
MARCHAMOTOR y Marchamotor se interpretan idénticamente y designan el
mismo objeto.
Además, los identificadores simbólicos no deben ser idénticos que las palabras
clave. Como regla, las palabras clave son palabras reservadas para tareas
específicas.
Representación de datos
En un programa de control, debe ser posible especificar valores de tiempo, de
recuento, etc.
• Valores de recuento
• Valores de tiempo
• Cadenas
Tabla B6.1: Representación numérica de datos numéricos
Una cadena consiste en ninguno o varios caracteres, que empiezan y terminan con
una coma volada.
Ejemplo
IEC 1131-3 define un gran número de tipos de datos para diferentes tareas. Uno de
estos tipos de datos, BOOL, ya ha sido mencionado. Una variable del tipo BOOL
asume el valor 0 ó bien el valor 1.
Otros dos importantes tipos de datos, denominados INT e UINT definen números
enteros. Las variables del tipo de datos INT (integer/entero) permiten valores
numéricos de -32 768 hasta +32 767. El margen de valores del tipo de dato INT
cubre tanto valores negativos como positivos. Las variables del tipo UNIT
(unsigned integer/entero sin signo) sólo permiten valores positivos. El margen de
valores para las UINT va desde O a 65 535. SINT (short integer/entero corto) y
DINT (double integer/entero doble) son tipos de datos adicionales que definen
números enteros. Sin embargo, estos tienen un margen de valores inferior o
superior que el tipo de datos INT. El tipo de datos REAL contiene números en
coma flotante. Estos son números que pueden contener lugares tras la coma, tales
como el 3,24 ó -1,5. El tipo de datos TIME se utiliza para especificar el tiempo, y
puede contener una duración de tiempo como por ejemplo: 2 minutos y 30
segundos.
Aparte de estos tipos de datos predefinidos elementales, el usuario tiene la
posibilidad de definir sus propios tipos de datos. Esto es útil en casos en donde la
definición del problema va más allá del ámbito de la pura tecnología de control.
Un dato del tipo Color solamente puede asumir uno de los valores ROJO, VERDE,
AMARILLO o NEGRO.
Un dato del tipo Margen_referencia sólo puede asumir valores entre 80 y 110,
incluyen los límites inferior y superior 80 ó 110.
Un dato del tipo Posicion, representa una lista con 10 entradas. Cada entrada tiene
el valor de un número REAL. Con este índice pueden indexarse las entradas
individuales.
Un elemento del tipo de datos Coordenadas contiene dos números REAL, a los
que puede accederse a través de sus nombres X e Y.
No todos los controles necesitan reconocer todos estos tipos de datos. Cada
fabricante dispone un juego de tipos de datos, que pueden utili
zarse en el correspondiente control.
Declaración de variables
Con el uso de datos, debe definirse claramente el derecho de acceso a estos
datos. Con este fin, IEC 1131-3 utiliza una declaración de variables.
• Configuración
• Recurso
• Programas
• Bloques de función
• Funciones
Todas las declaraciones de variables (fig. B6.5) siempre empiezan con una palabra
clave, que designa la posición de la variable en la unidad de organización del
control, y termina con la palabra clave END_VAR.
Las variables de entrada son declaradas con las palabras clave VAR_INPUT y
END_VAR.
Todos los resultados de una unidad de organización deben ser transferidos más
allá de la unidad de organización a través de variables de claradas de esta forma.
Dentro de las unidades de organización, estas pueden ser leídas y escritas.
Externamente, sólo se permite el acceso de lectura.
En los casos en que se permitan variables conteniendo valores de entrada y salida,
estos deben crearse con las palabras clave VAR_IN_OUT y END_VAR.
Las variables especificadas aquí son locales para una unidad de organización y
solamente pueden ser utilizadas en ella. Son desconocidas para otras unidades
organizacionales y por lo tanto inaccesibles.
Una aplicación típica son las posiciones de memoria para resultados intermedios,
que no son de interés en otras zonas del programa. En el caso de estas variables,
hay que observar que también pueden existir varias veces en diferentes unidades
de organización. De esta forma, es posible, por ejemplo, que varios bloques de
función declaren la variable local Z. Estas variables locales son completamente
independientes y difieren unas de otras.
Una variable también puede ser declarada globalmente, en cuyo caso puede ser
accedida universalmente. La necesaria declaración se realiza de una forma similar,
utilizando las palabras clave VAR_GLOBAL y VAR_EXTERNAL.
Fig. B6.10: Declaración de una variable global
Así es como se declaran todos los datos globales para un programa de control. Los
datos globales son accesibles universalmente. Esta decla
ración s
lo puede hallarse en unidades de organización, configuración y recurso.
Esta estricta unidad de declaración para todas las variables define únicamente qué
variables son reconocidas por una unidad de organización y como pueden ser
usadas. Un bloque de función puede, por ejemplo, leer pero no cambiar sus
variables de salida.
Se utiliza la palabra clave AT para asignar variables a las entradas y salidas del
control.
Las declaraciones hechas de esta forma son el mejor medio para definir el
significado de todas las entradas y salidas del control. Si se produce un cambio en
el sistema y su conexión al controlador, sólo deberán ser cambiadas estas
declaraciones. Cualquier utilización p. ej. del Pulsador paro, o de la Temperatura
en un programa existente, no se ve afectada por el cambio.
Sin embargo, según IEC 1131-3 siempre es posible utilizar variables direccionadas
directamente sin tener que asignarías a un identificador simbólico. La declaración
en este caso es como sigue:
VAR
AT %14.2 :BOOL;
AT %MW1 :WORD;
END_VAR
Inicialización
A menudo es esencial que a una variable se le asigne un valor inicial. Este valor
puede cambiar varias veces durante el procesamiento del programa, incluso
aunque haya estado definida al principio.
Los estados iniciales como estos también son importantes para otros datos. Tales
valores iniciales se especifican conjuntamente con la de
claración de las variables. Una variable global de este tipo denominada p. ej.
Docena se declara para que al principio del programa asuma el valor 12.
VAR_GLOBAL
Docena :INT := 12;
END_VAR
• Programas
• Bloques de función
• Funciones
Funciones
Las funciones son módulos de software que, cuando se les invoca, proporcionan
exactamente un resultado (elemento de datos). Esta es la razón por la que en un
lenguaje textual, la invocación de una función puede ser utilizada como un
operando en una expresión.
Las entradas o salidas booleanas de una función pueden ser negadas, es decir,
invertidas especificando un círculo directamente fuera del rectángulo (fig. B6.16).
La función suma ADD ilustrada en la fig. B6.1 6 procesa valores enteros INT, por lo
cual, las variables direccionadas directamente tales como %QW4 etc. están
declaradas como variables de tipo de dato INT. De la misma forma, la función ADD
podría aplicarse a valores del tipo SINT o REAL.
Las funciones como estas, que funcionan para entrar parámetros de tipos de datos
diferentes, se denominan en IEC 1131-3 como funcio
nes sobrecargadas, independientes del tipo. La Fig. B6.17 ilustra las características
de una función sobrecargada utilizando el ejemplo de una función ADD.
Funciones estándar
Las funciones estándar más importantes para la realización de tareas básicas de
tecnología de control se relacionan a continuación.
Dado que una gran variedad de funciones estándar pueden funcionar utilizando
parámetros de entrada de diferentes tipos de datos, los tipos de datos se han
combinado en grupos. A cada grupo se le ha dado un tipo de datos genérico. Los
tipos de datos genéricos más importantes se muestran en la tabla B6.8.
Bloques de función
Los bloques de función son módulos de software que proporcionan uno o varios
parámetros resultantes.
Esto puede demostrarse utilizando el ejemplo del bloque de función estándar para
operaciones de recuento. El valor actual del contador permanece de una operación
de recuento a la siguiente y puede así ser interrogada en cualquier momento. Este
tipo de comportamiento no puede realizarse a través del recurso lenguaje, como se
describe arriba.
Fig. B6.19: Representación gráfica de una copia de un bloque de función
La Fig. B6.20 muestra el uso (invocación) del bloque de función estándar para un
contador.
Fig. B6.20: Uso (invocación) del bloque de función CTU (contador incremental)
La copia utilizada del bloque de función CTU lleva el identificador Count_Pack. A
cada flanco positivo de la entrada %l1.3 el valor actual del contador se incrementa
en 1 unidad. Cuando se alcanza el valor preestablecido de 10, la salida Q del
Count_pack, y con ello la salida %Q2.5 asume una señal 1; en los demás casos se
asume una señal 0.
También es posible crear varias copias de uno y del mismo bloque de función
dentro de un programa de control, como se muestra en la fig. B6.21.
Aquí no se ha tenido en cuenta el acceso de datos ampliado, tal como las variables
globales.
Programas
Un programa consiste en cualquier cantidad de elementos de lenguaje y
construcciones, necesarios para conseguir el comportamiento deseado de la
máquina o proceso a través del PLC.
Por ello, los programas están construidos principalmente por funciones, bloques de
función y los elementos del diagrama de funciones secuencial.
Por ello, las características de los programas son en gran parte idénti
cos a los de los bloques de función. Lo único que nos interesa en esta etapa son
las diferencias:
La luz de una escalera está encendida durante tres minutos, si se acciona uno de
los dos interruptores; el de la puerta o el del apartamento.
Capítulo 7
La Fig. B7.1 ilustra dos simples ejemplos del diagrama de bloques de función. En
la Fig. B7.la, la variable Manual_desc y el resultado de una comparación 'mayor
que' están enlazados en OR. El resultado es asignado a la variable
puerta_cerrada. La Fig. B7.lb representa el uso de un bloque de función. El retardo
de la señal T_arranque se pone en marcha con la entrada %l1.3 con el tiempo
preestablecido de 7 segundos. El estado del retardo de la señal T_arranque.Q, se
asigna a la salida %QP.4.
La dirección del flujo de señales es una red de izquierda a derecha. Si una unidad 7.2 Evaluación de redes
de organización del programa consta de varias redes, estas son procesadas en
secuencia de arriba a abajo.
Si hay que ejecutar un salto a una red, la red correspondiente debe prefijarse con
un nombre simbólico, el flag del salto, terminando con dos puntos El flag de salto
debe identificarse según las reglas para los nombres simbólicos.
7.2 Estructuras en bucle Cuando se programa en el lenguaje FBD, hay que observar que dentro de las
redes no se permiten estructuras de bucle. Las estructuras de este tipo sólo deben
realizarse a través del uso adicional de una ruta de realimentación. La Fig. B7.3b
ilustra un ejemplo de esto.
Diagrama de contactos
8.1 Elementos del El lenguaje de diagrama de contactos (o diagrama en escalera), al igual que del
diagrama de diagrama de bloques de función representa un lenguaje de programación gráfico.
contactos Los elementos disponibles en un diagrama de contactos son los contactos y las
bobinas en diferentes formas. Estas están dispuestas en renglones (rungs) entre
las dos líneas verticales de mando a derecha e izquierda.
Con una bobina normal, el resultado (resultado de la operación lógica entre los
contactos) es copiado a la variable específica; en el caso de una bobina negada,
se transfiere el inverso (negación) del resultado.
Las funciones básicas AND y OR pueden ser realizadas por medio de una
configuración correspondiente de contactos en el renglón actual.
8.2 Funciones y Aparte de los elementos de contacto y bobina, LD proporciona el uso ilimitado de
bloques de función funciones y bloques de función siempre que esta función esté soportada por el
control utilizado.
De forma similar al lenguaje de programación gráfico FBD, el flujo de potencia, y 8.3 Evaluación
como tal el procesamiento de una unidad de organización del programa, es de de los renglones
izquierda a derecha y de arriba a abajo. De forma similar la secuencia de actuales
procesamiento también puede cambiar en LD utilizando elemento para el control
de la ejecución.
Lista de instrucciones
9.1 Lista de La lista de instrucciones es un lenguaje de programación textual, tipo ensamblador
instrucciones (assembler). Sus instrucciones son más cercanas a las órdenes procesadas en un
PLC.
Los bloques de función pueden ser invocados según diferentes mecanismos (fig.
B9.4).
La variable T_arranque de la Fig. B9.4a, declarada en todas partes como una señal
de retardo, representa por ello un bloque del tipo seal de retardo. Siendo un
argumento actual, este se asigna al valor de la entrada %l1.3 para la entrada de
activación IN y una duración de tiempo de t#7s para la entrada PT. Como
resultado, el bloque de función T_arranque se invoca siguiendo la actualización de
parámetros.
Como se muestra en la fig. B9.4b, los valores del parámetro actuales se cargan a
través de operaciones elementales IL y se asignan a las entradas del bloque de
función Solamente después de esto es invoca
do el bloque de función T_arranque y procesado a través de una instrucción CAL.
La ventaja de este método reside en el hecho que el tiempo de actualización de los
argumentos y la invocación real del módulo de función pueden hacerse por
separado.
Capítulo 10
Texto estructurado
10.1 Expresiones El lenguaje Texto Estructurado (ST = Structured Text) es un lenguaje de alto nivel
tipo Pascal, que incorpora los conceptos fundamentales de un lenguaje moderno
de alto nivel, en particular los principios más importantes para la estructuración de
datos e instrucciones. La estructuración de datos representa un constituyente
común de los cinco lenguajes de programación; la estructuración de instrucciones,
sin embargo, es tan sólo una característica importante del ST.
SIN(X)
4*COS(Y)
A<=B
A+B+C
A, B, y C son variables del tipo de dato INT; A sume el valor 1, B el valor 2 y C el Ejemplo
valor 3. La evaluación de la expresión A+B*C proporciona el valor 7. Si se desea
una secuencia diferente que la especificada por la prioridad, ello es posible
utilizando los paréntesis. Utilizando los valores numéricos descritos antes, la
expresión (A+B)*C proporciona el valor 9.
La instrucción RETURN sirve para permitir una salida anticipada de una función o
bloque de función. Lo que sigue es un ejemplo de la utilización de la instrucción
RETURN:
IF X< 0 THEN
Valor := -1;
Error := 1;
RETURN;
END_IF
Y := LOG(X);
Instrucción IF
La forma general de una instrucción IF es:
Una derivación simple puede conseguirse por medio de una construcción IF-THEN-
ELSE
Error := 0;
IF Pieza_Ok THEN Numero := Numero + 1;
ELSE Error:=- 1,
END_IF
Instrucción CASE
Si debe hacerse una selección entre varios grupos de instrucciones posibles,
puede utilizarse la instrucción CASE.
CASE Selector OF
Valor1: instruccion(es)1;
Valor2: instruccion(es)2;
...
ValorN: instruccion(es)n;
[ELSE
instruccion(es); 1]
END_CASE:
La instrucción CASE consiste en un selector, que suministra una variable del tipo
INT durante su ejecución y una lista de grupos de instrucciones. A cada grupo se le
asigna un valor (etiqueta). Los valores están separados por comas si un grupo de
instrucciones depende de varios valores. Los valores también pueden representar
variables del tipo INT.
Con la evaluación de la instrucción CASE, primero se determina el valor del
selector, seguido por la ejecución del primer grupo de instrucciones a los cuales se
aplica el valor del selector calculado. Sin el valor del selector no está contenido en
ninguno de los grupos de instrucciones, se ejecutan las instrucciones que siguen a
la palabra clave ELSE. Si no hay ELSE, no se ejecuta ninguna instrucción.
Bucle FOR
La representación estándar para el bucle FOR es:
Bucle REPEAT
A diferencia del bucle FOR, en el bucle REPEAT el número de iteraciones no está
previamente definido por medio de un valor final especificado. En su lugar, se
utiliza una condición, denominada la condición de terminación.
REPEAT
instruccion(es);
UNTIL Expresión Booleana
END_REPEAT;
Bucle WHILE
El bucle WHILE representa una segunda opción para la formulación de iteraciones
especificando una condición de terminación. La representación estándar de un
bucle WHILE es:
Es importante que las condiciones del bucle se cumplan realmente para que el
procesamiento del bucle pueda terminarse.
La tarea de sumar los números 1 al 5 también puede realizarse utilizando un bucle
WHILE (tabla B1O.2). A diferencia del bucle REPEAT, el bucle WHILE se ejecuta
repetidamente hasta que la condición de terminación es cierta. En realidad esto
significa que el bucle se ejecutan mientas 1 sea menor que 5. Si es igual o mayor
que 5, el bucle deja de procesarse.
S := 0;
FOR l := 1 TO 2 DO
FOR J := 1 TO 3 DO
IF error THEN EXIT;
END_IF
S := S + J;
END_FOR;
(* Si se ejecuta la instrucción EXIT se realiza un salto a este punto*')
S := S + 1;
END_FOR;