# Autómata programable

En electrónica un autómata (o controlador lógico programable) es un sistema secuencial, aunque en ocasiones la palabra es utilizada también para referirse a un robot. Puede definirse como un equipo electrónico programable en lenguaje no informático y diseñado para controlar, en tiempo real y en ambiente industrial, procesos secuenciales. Sin embargo, la rápida evolución de los autómatas hace que esta definición no esté cerrada.

## Introducción

En la disciplina perteneciente a la informática, se describen tres tipos de autómatas que reconocen tipos diferentes de lenguajes: los autómatas finitos, los autómatas a pila y las máquinas de Turing.
El autómata es la primera máquina con lenguaje, es decir, un calculador lógico cuyo juego de instrucciones se orienta hacia los sistemas de evolución secuencial.
La aparición de los ordenadores a mediados de los 50's inauguró el campo de la lógica programada para el control de procesos industriales. No obstante, aunque estos ordenadores resolvían los inconvenientes de un Sistema cableado o la llamada lógica cableada, presentaban nuevos problemas:
   * Mala adaptación al entorno industrial.
   * Coste elevado de los equipos.
   * Necesidad de personal informático para la realización de los programas.
   * Necesidad de personal especializado para el mantenimiento.
Estos problemas se solucionarían con la aparición del autómata programable o PLC (Controlador Lógico Programable; en inglés Programable Logic Controler).

### Desarrollo histórico

A mediados de los años 60, General Motors, preocupada por los elevados costos de los sistemas de control a base de relés, de lógica cableada, comenzó a trabajar con Digital en el desarrollo de un sistema de control que evitara los inconvenientes de la lógica programada. El resultado de la colaboración fue un equipo programado, denominado PDP-14, cuyo empleo no tardó en extenderse a otras industrias. En un principio, los autómatas programables solo trabajaban con control discreta ( Si o No ), por lo que los problemas que requerían la manipulación de magnitudes analógicas se dejaron para los tradicionales sistemas de control distribuido.
Resulta curioso anotar que R. E. Moreley, considerado por muchos el padre del autómata programable, trabajando independientemente de las especificaciones de la General Motors desarrolló un equipo que respondía a las necesidades de dicha multinacional.
Hacia la primera mitad de los años 70 los autómatas programables incorporan la tecnología de los microcontroladores, aumentando de este modo sus prestaciones:
   * Realización de operaciones aritméticas.
   * Comunicación con los ordenadores.
   * Incremento de la capacidad de memoria.
   * Mejoras en los lenguajes de programación.
   * Posibilidad de entradas y salidas analógicas.
   * Posibilidad de utilizar redes de comunicaciones.
La década de los años 80 se caracteriza por la incorporación de los microprocesadores, consiguiendo:
   * Alta velocidad de respuesta.
   * Reducción de las dimensiones.
   * Mayor seguridad de funcionamiento.
   * Gran capacidad de almacenamiento de datos.
   * Lenguajes de programación más potentes: contactos, bloques funcionales, GRAFCET (GRAFica de Control de Etapa de Transición).
En la actualidad existen autómatas que permiten automatizar a todos los niveles, desde pequeños sistemas mediante autómatas compactos, hasta sistemas sumamente complejos mediante la utilización de grandes redes de autómatas.

### Aplicaciones

Como ya se ha comentado, las primeras aplicaciones de los autómatas programables se dieron en la industria automotriz para sustituir los complejos equipos basados en relés. Sin embargo, la disminución de tamaño y el menor costo han permitido que los autómatas sean utilizados en todos los sectores de la industria. Solo a modo de ejemplo, se mencionan a continuación algunos de los múltiples campos de aplicación.

#### Automóvil

   * Cadenas de montaje, soldadura, cabinas de pintura, etc.
   * Máquinas herramientas: Tornos, fresadoras, taladradoras, etc.

#### Plantas químicas y petroquímicas

   * Control de procesos (dosificación, mezcla, pesaje, etc).
   * Baños electrolíticos, oleoductos, refinado, tratamiento de aguas residuales, etc.

#### Metalurgia

   * Control de hornos, laminado, fundición, soldadura, forja, grúas, entre otros.

#### Alimentación

   * Envasado, empaquetado, embotellado, almacenaje, llenado de botellas, etc.

#### Papeleras y madereras

   * Control de procesos, serradoras, producción de conglomerados y de laminados, etc.

#### Producción de energía

   * Centrales eléctricas, turbinas, transporte de combustible, energía solar, etc.

#### Tráfico

   * Regulación y control del tráfico, ferrocarriles, líneas de metro, etc .

#### Domótica

   * Iluminación, temperatura ambiente, sistemas antirrobo, comodidad y bienestar en el hogar, etc.

#### Fabricación de Neumáticos

   * Control de calderas, sistemas de refrigeración, prensas que vulcanizan los neumáticos.
   * Control de las máquinas para el armado de las cubiertas, extrusoras de goma.
   * Control de las máquinas para mezclar goma.

## El autómata programable
### Estructura general

Un autómata programable se puede considerar como un sistema basado en un microprocesador, siendo sus partes fundamentales la Unidad Central de Proceso (CPU), la Memoria y el Sistema de Entradas y Salidas (E/S).
La CPU realiza el control interno y externo del autómata y la interpretación de las instrucciones del programa. A partir de las instrucciones almacenadas en la memoria y de los datos que recibe de las entradas, genera las señales de las salidas. La memoria se divide en dos bloques, la memoria de solo lectura o ROM (Read Only Memory) y la memoria de lectura y escritura o RAM (Random Access Memory).
En la memoria ROM se almacenan programas para el correcto funcionamiento del sistema, como el programa de comprobación de la puesta en marcha y el programa de exploración de la memoria RAM.
La memoria RAM a su vez puede dividirse en dos áreas:
   * Memoria de datos, en la que se almacena la información de los estados de las entradas y salidas y de variables internas.
   * Memoria de usuario, en la que se almacena el programa con el que trabajará el autómata.
El sistema de Entradas y Salidas recoge la información del proceso controlado (Entradas) y envía las acciones de control del mismo (salidas). Los dispositivos de entrada pueden ser pulsadores, interruptores, finales de carrera, termostatos, presostatos, detectores de nivel, detectores de proximidad, contactos auxiliares, etc.
Por su parte, los dispositivos de salida son también muy variados: Pilotos indicadores, relés, contactores, arrancadores de motores, válvulas, etc. En el siguiente punto se trata con más detalle este sistema para el funcionamiento correcto del PLC.

### Sistema de entradas y salidas

En general, las entradas y salidas (E/S) de un autómata pueden ser discretas, analógicas, numéricas o especiales.
Las E/S discretas se caracterizan por presentar dos estados diferenciados: presencia o ausencia de tensión, relé abierto o cerrado, etc. Su estado se puede visualizar mediante indicadores tipo LED que se iluminan cuando hay señal en la entrada o cuando se activa la salida. Los niveles de tensión de las entradas más comunes son 5 V cc, 24 V cc/ca, 48 V cc/ca y 220 V ca.
Los dispositivos de salida más frecuentes son relés, transistores y triacs.
Las E/S analógicas tienen como función la conversión de una magnitud analógica (tensión o corriente) equivalente a una magnitud física (temperatura, presión, grado de acidez, etc.) en una expresión binaria de 11, 12 o más bits, dependiendo de la precisión deseada. Esto se realiza mediante conversores analógico-digitales (ADC's).
Las E/S numéricas permiten la adquisición o generación de información a nivel numérico, en códigos BCD, Gray u otros (véase código binario). La información numérica puede ser entrada mediante dispositivos electrónicos digitales apropiados. Por su parte, las salidas numéricas suministran información para ser utilizada en dispositivos visualizadores (de 7 segmentos) u otros equipos digitales.
Por último, las E/S especiales se utilizan en procesos en los que con las anteriores E/S vistas son poco efectivas, bien porque es necesario un gran número de elementos adicionales, bien porque el programa necesita de muchas instrucciones. Entre las más importantes están:
   * Entradas para termopar y termorresistencia: Para el control de temperaturas.
   * Salidas de trenes de impulso: Para el control de motores paso a paso (PAP).
   * Entradas y salidas de regulación P+I+D (Proporcional + Integral + Derivativo): Para procesos de regulación de alta precisión.
   * Salidas ASCII: Para la comunicación con periféricos inteligentes (equipo de programación, impresora, PC, etc.).

### Ciclo de funcionamiento

Cuando se pone en marcha el PLC se realizan una serie de comprobaciones:
   * Funcionamiento de las memorias.
   * Comunicaciones internas y externas.
   * Elementos de E/S.
   * Tensiones correctas de la fuente de alimentación.
Una vez efectuadas estas comprobaciones y si las mismas resultan ser correctas, la CPU... inicia la exploración del programa y reinicializa. Esto último si el autómata se encuentra en modo RUN (marcha), ya que de estar en modo STOP (paro) aguardaría, sin explorar el programa, hasta la puesta en RUN.
Al producirse el paso al modo STOP o si se interrumpe la tensión de alimentación durante un tiempo lo suficientemente largo, la CPU realiza las siguientes acciones:
   * Detiene la exploración del programa.
   * Pone a cero, es decir, desactiva todas las salidas.
Mientras se está ejecutando el programa, la CPU realiza en sucesivos intervalos de tiempo distintas funciones de diagnóstico (watch-dog en inglés). Cualquier anomalía que se detecte se reflejará en los indicadores de diagnóstico del procesador y dependiendo de su importancia se generará un código de error o se parará totalmente el sistema.
El tiempo total del ciclo de ejecución viene determinado por los tiempos empleados en las distintas operaciones. El tiempo de exploración del programa es variable en función de la cantidad y tipo de las instrucciones así como de la ejecución de subrutinas. El tiempo de exploración es uno de los parámetros que caracteriza a un PLC y generalmente se suele expresar en milisegundos por cada mil instrucciones. Para reducir los tiempos de ejecución, algunas CPU's constan de dos o más procesadores que operan simultáneamente y están dedicados a funciones específicas. También se puede descargar de tareas a la CPU incorporando módulos inteligentes dedicados a tareas específicas.

### Equipos de programación

La misión principal de los equipos de programación, es la de servir de interfaz entre el operador y el autómata para introducir en la memoria de usuario el programa con las instrucciones que definen las secuencias de control.
Dependiendo del tipo de autómata, el equipo de programación produce unos códigos de instrucción directamente ejecutables por el procesador o bien un código intermedio, que es interpretado por un programa residente en el procesador (firmware).
Las tareas principales de un equipo de programación son:
   * Introducción de las instrucciones del programa.
   * Edición y modificación del programa.
   * Detección de errores.
   * Archivo de programas (cintas, discos).
Básicamente existen tres tipos de equipos de programación:
   * Consola con teclado y pantalla de tubo de rayos catódicos (CRT) o de cristal líquido (LCD).
   * Programador manual, semejante a una calculadora de bolsillo, más económico que la anterior.
   * Ordenador personal con el software apropiado.
La conexión de la consola u ordenador al autómata programable se realiza mediante una conexión en serie (generalmente la RS-232C o la RS-422).

### Equipos periféricos

Además de los equipos de programación, existen numerosos dispositivos que sin formar parte directa del autómata, pueden conectarse al mismo para realizar distintas funciones. Normalmente se conectan a las salidas ASCII o a los canales de comunicación del autómata.
Seguidamente se describen algunos de los equipos periféricos más comunes:
   * Módulos de ampliación de entradas y salidas: Necesarios para aquellos procesos en los que la estructura de E/S del autómata sea insuficiente.
   * Módulos de tratamiento de datos: Son pequeños ordenadores que manejan distintos datos (contaje, tiempo, estado de E/S, etc.), para la elaboración de informes, gráficos, etc.
   * Impresoras.
   * Visualizadores alfanuméricos.
   * Lectores de código de barras.
La forma de comunicarse el autómata con sus periféricos puede ser unidireccional, cuando se establece en un solo sentido, o bien bidireccional, cuando se establece en los dos sentidos. Los enlaces para ambos tipos de comunicación suelen ser por lo general del tipo serie, siendo los más empleados los anteriormente mencionados RS-232C y RS-422, ambos de acuerdo con las normas de la EIA (Electronic Industries Association).
El RS-232C es el método de transmisión de datos más difundido, pero tiene la limitación de la distancia máxima de transmisión a 15 metros y la velocidad máxima de transmisión de 19.200 baudios (1 baudio = 1 bit/segundo). El RS-422 resuelve en parte las limitaciones del RS-232C. La distancia de transmisión puede superar un kilómetro y la velocidad puede llegar a 10 Mbaudios.

## Programación del autómata

Para controlar un determinado proceso, el autómata realiza sus tareas de acuerdo con una serie de sentencias o instrucciones establecidas en un programa. Dichas instrucciones deberán haber sido escritas con anterioridad por el usuario en un lenguaje comprensible para la CPU. En general, las instrucciones pueden ser de funciones lógicas, de tiempo, de cuenta, aritméticas, de espera, de salto, de comparación, de comunicación y auxiliares.
Dependiendo del fabricante, los lenguajes de programación son muy diversos, sin embargo, suelen tener alguna relación más o menos directa con los lenguajes Ladder o GRAFCET.
Los programas para autómata pueden realizarse de forma lineal o de forma estructurada. En la programación lineal el programa consta de una serie de instrucciones que se van ejecutando una tras de otra de modo cíclico. Este modo de programación se suele emplear en programas no demasiado complejos o en autómatas que no posean el modo estructurado. Cuando los programas son muy complejos, la programación estructurada es más aconsejable ya que puede dividirse el proceso general en subprogramas con diferentes subprocesos tecnológicos. Otras de las ventajas de este modo de programación es que da un carácter más panorámico al programa, lo que conlleva una más fácil identificación de errores así como una mayor facilidad de comprensión por otros programadores.
Programar un autómata no es realmente algo imposible, pero sí se necesita paciencia. Como ejemplo tenemos un enlace en la sección de enlaces externos que conduce a una página que nos lleva a donde se encuentra un archivo hecho en java con código fuente para que se pueda analizar y comprender de una manera más sencilla cómo funciona un autómata finito determinista (AFD).