Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO TECNOLOGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS ESTADO DE MEXICO DIVISION DE GRADUADOS E INVESTIGACION CONTROLADOR LOGICO PROGRAMABLE POR COMPUTADORA T E S I S Que para optar al Grado de Maestro en Ciencias del programa de Maestría en Sistemas de Manufactura con especlalldad en Automatización y Control Presenta el lng. ARTURO CUAHUTLE PEREZ Asesorado por el M. en C. Christian Slgnoret Jurado: Presidente Dr. Pedro Grasa Secretario Dr. Cuauhtémoc Carbajal Sinodales M. en C. Christian Signoret M en C. Abel Cerón MEXICO, SEPTIEMBRE DE 1991. Resumen El objetivo de la presente tesis es diseñar e implementar un PLC que sea comparable a los modelos comerciales pequeños y que compita con ventaja en cuanto al costo. Este PLC estará orientado a la automatización de máquinas y procesos sencillos que requieran de reprogramación poco frecuente. Para lograr la reducción de costos se eliminó la unidad de programación, por lo cual se emplea software de desarrollo para generar los programas que son introducidos al CPU mediante una EPROM. Así mismo, el hardware se basó en el microcontrolador 8031, que contiene dentro del mismo encapsulado RAM, puertos, oscilador y temporizadores, con el fin de minimizar la cantidad de componentes y obtener un circuito económico, compacto y confiable. El software de soporte .sirve para editar, simular y compilar los diagramas de escalera. El editor gráfico permite la captura y modificación de los escalones, los cuales son codificados en una estructura compacta. La simulación, que se utiliza para depurar los diagramas de control, esta basada en el mismo algoritmo que utiliza el 8031 para evaluar los escalones. El compilador genera el archivo de código, el cual se graba en una EPROM con un programador, para ser instalada posteriormente en el CPU del PLC. Las características de este PLC lo hacen ideal para que los fabricantes de máquinas lo utilizen como controlador en los equipos que fabrican. Sus ventajas sobre un controlador de relevadores son: menor tamafto, menor consumo de potencia, mayor durabilidad y, principalmente, un precio más bajo (pues el costo del CPU es igual al de unos cuantos relevadores). Por otra parte, la ventaja de utilizar este PLC en vez de desarrollar una tarjeta específica es que se evitan los costos de ingeniería, el periodo de desarrollo y el riesgo de obtener o no el prototipo deseado. Por los resultados obtenidos se consideras que el objetivo planteado fue plenamente cumplido. Indice Tabla de abreviaturas 1 Introducción 2 Capítulo 1: Controladores Lógicos Programables 4 1.1 Introducción 4 1.2 Automatización 4 1.3 Tipos de control de procesos 5 1.4 Controlador Lógico Programable 6 1.4.1 Antecedentes 6 1.4.2 Definición 7 1.4.3 Arquitectura 7 1.4.4 Software de desarrollo 8 1.5 Lenguajes de programación de PLCs 8 1.5.1 Diagrama de escalera de relevadores 9 1.5.2 Diagrama de flujo secuencial 1 O 1.5.3 Texto estructurado 1 1 1.5.4 Lista de instrucciones 11 1.6 Conclusiones 1 2 Capítulo 2: Codificación y evaluación de diagramas de escalera 1 3 2.1 Introducción 1 3 2.2 Funcionamiento de un PLC. 1 3 2.3 Métodos de evaluación 1 4 2.3.1 Método #1 1 4 2.3.2 Método #2 1 S 2.3.3 Método #3 1 S 2.3.4 Método #4 1 7 2.4 Programa simulador de un PLC 1 7 2.4.1 Características del programa 1 7 2.4.2 Codificación de elementos 1 8 2.4.3 Estructura de datos 2 O 2.4.4 Implementación del algoritmo de evaluación 2 O 2.S Conclusiones 2 2 Capítulo 3: Sistema propuesto y selección del microcontrolador 2 3 3.1 Introducción 2 3 3.2 Sistema propuesto 2 3 3.3 Características del PLC 2 5 3.4 Requerimientos del microcontrolador 3.5 Comparación de microcontroladores 3.6 factores para seleccionar un microcontrolador 3.7 Microcontrolador seleccionado 3.8 Conclusiones Capítulo 4: Implementación del conjunto de instrucciones 4.1 Introducción 4.2 Grupos de instrucciones 4.3 Conjunto de instrucciones del CL-51 4.4 Implementación de las instrucciones 4.4.1 Instrucciones lógicas 4.4.2 Temporizadores y contadores 4.4.3 Aritméticas y de comparación 4.4.4 Control de flujo 4.4.5 Control de salidas 4.4 Cómo ejecutar las instrucciones no incluidas 4.5.1 Multiplicación y división 4.5.2 Secuenciadores 4.5.3 ZCL 4.6 Conclusiones Capítulo 5: Prototipo diseñado 5.1 Introducción 5.2 Implementación del CL-51 utilizando el 8031 5.2.1 Distribución de la EPROM 5.2.2 Distribución de la RAM 5.2.3 Configuración para EPROM externa 5.2.4 Multiplexión de puertos 5.3 Inconvenientes del intérprete 5.4 Reemplazo del intérprete por un compilador 5.5 Generador de programa en ensamblador 5.6 Generador de código 5.7 Implementación del prototipo 5.8 Conclusiones Capítulo 6.1 6.2 6.3 6.4 6: Software de desarrollo Introducción Características generales y módulos del programa Esttuctura y tipos de datos Editor 6.5 Edición de escalones 6.6 Opciones ii 26 27 28 29 30 3 1 3 1 32 36 36 36 38 40 40 4 1 4 1 4 1 42 42 43 44 44 44 45 45 46 47 48 49 50 52 52 54 54 54 55 56 58 59 6.7 Archivos 6.8 Simulación 6.9 Programación 6. 10 Conclusiones Resultados R.1 Descripción del sistema R.2 Evaluación de las partes R.3 Evaluación global Conclusiones Apéndice A: Manual de programación A.1 Lenguaje de programación del PLC51 A.1.1 Instrucciones lógicas de entrada A.1.2 Estructura del escalón A.1.3 Instrucciones lógicas de salida A.1.4 Registros A.1.5 Operaciones aritméticas A.1.6 Temporizadores A.1.7 Contadores A.1.8 Como cargar un temporizador o un contador A.1.9 Instrucciones de comparación A. l. 10 Subrutinas A.1.11 Secuenciación utilizando subrutinas A.1.12 MCR A.1.13 Fin A.1.14 Reglas de sintaxis de la escalera A.2 Instructivo del software de desarrollo A.2.1 Módulo del editor A.2.2 Editor de escalones A.2.3 Módulo de simulación A.2.4 Módulo de opciones A.2.5 Módulo de programación A.2.6 Módulo de archivos Apéndice B: Material y equipo utilizado B.l Equipo de computo y software B.2 Equipo electrónico de medición y programador B .3 Equipo de fabricación de tarjetas B.4 Componentes Apéndice C: Validación del prototipo Apéndice D: Funcionamiento del 'bus' de 1/0 D.l Escritura a un puerto iv 59 60 6 l 62 63 63 65 66 67 69 69 69 70 72 72 73 74 74 75 75 76 76 • 77 78 78 78 79 80 8 1 83 84 84 86 86 86 87 87 88 90 90 D.2 Lectura a un puerto Apéndice E: Programador de EPROMS Apéndice F: El 8031 Apéndice G: Fabricación de circuitos impresos utilizando tecnologías de CAD/CAM G.1 Diseño Asistido por Computadora G.2 Manufactura Asistida por Computadora G.3 Procesos químico y fotográfico Bibliografía Bibliografía Adicional V 91 92 94 97 97 97 99 100 103 A/D: CAD: CAM: CNC: CPU: IXS: D/A: EEPROM EPROM: IEC: 1/0: MCR: PID: PI.e: RAM: RlD: SR::: za..: Tabla de abreviaturas Analog to Digital Computer Aided Design Computer Aided Manufacturing Computer Numerical Control Central Processing Unit Distributed Control System Digital to Analog Electrically Erasable Programable Read Only Memory Erasable Programable Read Only Memory lnternational Electrical Commitee Input/Output Master Control Reset Proportional Integral Derivative Programmable Logic Controller Random Access Memory Relay Ladder Diagram Sequential Flow Chart Zone Control Last-state Introducción Cuando un sistema de producción es automatizado en forma inteligente se obtienen una serie de beneficios, siendo los más importantes el aumento en la precisión con que se realizan las tareas y el incremento en la tasa de producción, los cuales contribuyen a incrementar la productividad. El control lógico, que es una de las tecnologías de automatización, tradicionalmente se había realizado mediante páneles de relevadores, sin embargo, con el impresionante avance dela electrónica surgió un poderoso substituto, el Controlador Lógico Programable (PLC), el cual presenta ventajas importantes sobre sus predecesores: mayor confiabilidad, facilidad para modificar los programas de control, menor tamafio y menor consumo de energía. Este desarrollo surgió apartir de un proyecto que se presentó para el curso de "Automatización y Control de Procesos". Dicho proyecto fue sugerido por el M. en C. Christian Signoret y consistía en simular un PLC utilizando una microcomputadora. Con la realización del proyecto se obtuvieron valiosos conocimientos acerca del funcionamiento de los PLCs y se depertó el interés por desarrollar hardware especializado, capaz de realizar el procesamiento en forma eficiente. El objetivo de la presente tesis es diseñar e implementar un PLC que sea comparable a los modelos comerciales pequeños y que compita con ventaja en cuanto al costo. Este PLC estará orientado a la automatización de máquinas y procesos sencillos que requieran de reprogramación poco 2 .. frecuente . La razón por la que se pretende diseñar un nuevo PLC a pesar de que en el mercado ya existe una gran variedad de marcas y modelos, es porque se desea ofrecer a la micro y pequeña industria mexicana un controlador, con un precio accesible, que puedan incorporar a sus procesos o máquinas y en esta forma colaborar a que incrementen su productividad y su competitividad. En este trabajo se describen los diferentes pasos que se siguieron para diseñar e implementar el PLC. En el Capítulo 1 se presenta una breve introducción a los PLCs y sus lenguajes de programación. En el Capítulo 2 se de8cribe la forma en que funcionan los PLCs y se presentan métodos para codificar y evaluar diagramas de escalera. En el Capítulo 3 se describe el sistema propuesto, se establecen las especificaciones de diseño para el hardware y se selecciona el microcontrolador más apropiado. En el Capítulo 4 se establece un conjunto de instrucciones y se explica como se implementó cada una de las instrucciones. En 1:1 Capítulo 5 se explica como se desarrolló y se validó el prototipo con la ayuda de programas de prueba. En el Capítulo 6 se explican los aspectos importantes del software de desarrollo que se utiliza para editar, simular y compilar los diagramas de escalera. A manera de anexos se presenta información complementaria acerca de la implementación, validación y utilización del sistema. 3 Capítulo I Controladores Lógicos Programables 1.1 Introducción En este capítulo, que está dirigido a aquellos lectores no familiarizados con los Controladores Lógicos Programables (PLCs), se presentan algunos conceptos básicos sobre los que se basa el presente trabajo de tesis. En primer lugar se define qué es el control lógico y cómo entra dentro del contexto de automatización. Posteriormente se explica qué es un PLC, cómo surgió y cuáles son las partes que lo componen. Finalmente, se examinan los diferentes tipos de lenguajes de programación de PLCs. 1.2 Automatización La automatización puede ser definida como el control de máquinas y procesos mediante la utilización de sistemas mecánicos, neumáticos, hidraúlicos, eléctricos y electrónicos con el fin de reducir la intervención humana. Como consecuencia se han definido nuevos conceptos como el de la mecatrónica, en el que se encuentra el balance entre la electrónica y la mecánica. Al instalar un sistema de producción automatizada en forma inteligente se obtieneri los siguientes beneficios 1 : 4 / 1. Mayor productividad y costos más bajos. Reduce la mano de obra y usualmente incrementa la tasa de producción. Ambos factores tienden a incrementar la productividad y reducir los costos de producción. 2. Mayor seguridad. Al retirar a los operadores de la panicipación activa en los trabajos potencialmente peligrosos. 3. Mayor uniformidad y calidad del producto. Las tareas son realizadas con mayor precisión y consitencia que cuando se hacen manualmente, lo cual usualmente significa mayor uniformidad y calidad del producto . ..-,-- 4. Reducción del trabajo en proceso. Tiende a reducir la cantidad de producto no terminado que se tiene en la fábrica. 5. Mejor imagen corporativa. Por que se tiene ventaja tecnológica sobre la competencia. 1.3 Tipos de control de procesos Dentro del conjunto de tecnologías de automatización, una de las más importantes es el control de procesos industriales, del cual existen dos tipos: el control lógico y el control dinámico. El control dinámico se encarga de mantener ciertas variables continuas como la temperatura o la presión alrededor de un punto de operación, ante las variaciones que tienden a sufrir por perturbaciones. El control lógico dirige al sistema a través de una secuencia específica de eventos o estados. Las variables que intervienen sólo pueden tener uno de dos valores posibles: encendido-apagado, alto-bajo, etc. 5 A pesar de que hay una distinción clara entre ambos tipos de control, existen procesos industriales en los que un sistema continuo es parte de un sistema de estados discretos y que por lo tanto requieren de ambos tipos de control. 1.4 Controlador Lógico Programable 1.4.1 Antecedentes Hasta hace relativamente poco tiempo el control de procesos de estados discretos era efectuado mediante páneles de relevadores. Estos dispositivos electromecánicos presentaban varios inconvenientes, como su gran tamaño, el desgaste de los contactos por el uso, baja velocidad de respuesta, un alto consumo de potencia y la poca flexibilidad para modificar el "programa" cableado. "Estos primeros mecanismos de control representaban un problema para la industria automotriz puesto que los cambios anuales de modelos frecuentemente requerían de modificaciones costosas. A finales de los 60's, la división Hidramatic de General Motors concibió un dispositivo de control programable que pudiera ser modificado facilmente por cambios de software en vez de por modificaciones de hardware" 2. Así, gracias al vertiginoso desarrollo de la electrónica y especialmente con la llegada de los circuitos integrados, surgió el Controlador Lógico Programable (PLC) o autómata programable como reemplazo de los controladores de relevadores. 6 1.4.2 Definición La NEMA (National Electrical Manufacturers' Association) define al Controlador Lógico Programable como un "dispositivo electrónico digital que utiliza una memoria programable para almacenar instrucciones y para implementar funciones específicas tales como funciones lógicas, secuenciales, de temporización, de conteo y aritméticas para controlar máquinas y procesos"3" 1.4.3 Arquitectura Un PLC está constituido por dos componentes principales: la Unidad Central de Procesamiento (CPU) y la Unidad de Entradas y Salidas (1/0), las cuales dependiendo del tamafl.o del controlador pueden ser montadas en un mismo chasis o separadas. La unidad de CPU, la cual almacena y ejecuta los programas de control, está constituida por un procesador, una memoria y un puerto de interface. La unidad de 1/0, que es la conecta al CPU con el proceso controlado, debe ser flexible, modular y expandible, por lo que típicamente consiste de bloques modulares que pueden ser seleccionados y configurados para ajustarse a las necesidades de una aplicación determinada. Además de las unidades de CPU e 1/0, los PLCs a veces requieren de un dispositivo separado, tal como una computadora o una terminal especial de programación, figura 1.1, la cual se puede conectar facilmente al CPU. 7 Unidad de programación Figura 1.1 1.4.4 Software de desarrollo Unidad de 1/0 CPU Algunos fabricantes de PLCs ofrecen herramientas de software para desarrollar los algoritmos de control que luego son "bajados" y ejecutados por el controlador. El software de desarrollo corre en computadoras personales estándary está provisto de las siguientes Desarrollo del programa y edición Almacenamiento de programas Compilación o traducción al lenguaje empleado por el PLC Monitoreo y control de la ejecución del programa. 1.5 Lenguajes de programación de PLCs Exiten cuatro grupos de lenguajes de programación para PLCs: diagramas de escalera de relevadores (RLD), diagramas de flujo secuencial (SFC), texto estructurado y conjunto de instrucciones 5 • En la tabla l. l se muestra una comparación de los cuatro lenguajes y más adelante se presenta una breve descripción de las características más importantes de cada uno. 8 Tabla 1.1 Comparación de los lenguajes de PLCs Texto Lista de Lenguaje &LO. m: C51[1U.l ÍDSUI.I!:!: Control Lógico B B R B Control secuencial R B B R Control continuo M M B M Velocidad R B R B Facilidad de pro- R B B M gramar y depurar Bueno Regular Malo 1.5.1 Diagrama de escalera de relevadores El lenguaje de diagrama de escalera de relevadores (RLD), figura 1.2, es una representación gráfica de los algoritmos de control. L a escalera representa el diagrama esquemático de un circuito eléctrico con el que se implementa el control en un tablero de relevadores. Los símbolos representan elementos como bobinas y contactos, y otras instrucciones que dan versatilidad al controlador. Es el lenguaje más eficiente para ejecutar operaciones de control lógico, pero la obtención de las expresiones booleanas de un sistema secuencial es un proceso manual que se complica al incrementarse el número de variables. Uno de los inconvenientes del diagrama de escalera es que no es eficiente para manejar controles analógicos de variables continuas. 9 Escalón l Rama ,----- Contactor Normalmente Abierto Bobina Contactor D ' Normalmente '-· ___ ......;;;;;.__Cerrado Figura 1.2 1.5.2 Diagrama de flujo secuencial El diagrama de flujo secuencial (SFC) también conocido como Grafcet, figura 1.3, es un lenguaje gráfico de secuenciación en el que se captura el algoritmo de control como un diagrama de flujo. Esta constituido por elementos básicos tales como pasos, transiciones y lazos. Cada paso contiene acciones, cada función de transición contiene condiciones para avanzar al siguiente paso y los lazos son utilizados para indicar la posibilidad de una transición entre los pasos que conecta6.e:: principal ventaja del SFC es que describe el flujo del control en una forma bastante clara y la programación de sistemas 1 ¡ · \¡ secuenciales es directa. Otras ventajas son que reduce el tiempo del ciclo y ayuda a ubicar rapidamente las áreas problemáticas al depurar los programas. 10 Operación --•u Inicialización o paso presiona el botón de arranque materiales cargados Lazo---t .. .-1 Reacción Periodo completo Descarga Figura 1.3 1.5.3 Texto estructurado El texto estructurado es un lenguaje de alto nivel que tiene un fuerte parecido a la familia ALGOL/PASCAL. Incluye instrucciones de control como IF .. THEN .. ELSE, CASE, FOR, WHILE, REPEAT, etc.,. Ofrece la solución más general a los problemas de control, puesto que puede manejar estrategias de control continuas, discretas o cualquier combinación de ellas. Sin embargo, no es tan eficiente como el RLD para ejecutar operaciones de secuenciación estrictamente digitales. 1.5.4 Lista de instrucciones La lista de instrucciones es un lenguaje énsamblador que utiliza un número limitado de operadores nemónicos: STR, AND, OR, NOT, OUT, TMR, CTR, etc8 . Es el mejor lenguaje para optimizar los tiempos de ciclo dentro del controlador, pero a cambio de ello, es difícil de 11 programar y depurar. 1.6 Conclusiones Para la programación e los PLCs existen cuatro tipos de lenguajes: RLD, SFC, texto estructurado y lista de instrucciones. Cada uno de ellos tiene ventajas y desventajas, las cuales los hacen mas adecuados para una u otra aplicación. Es importante mencionar que de las dos representaciones gráficas, el RLD es más utilizado en Estados Unidos, Mexico y el resto de América, mientra que el SFC tiene una mayor difusión en Europa y Japón. 12 2.1 Introducción Capítulo II Codificación y evaluación de diagramas de escalera La parte más importante del proyecto de simular un PLC con una microcomputadora, consistió en obtener un método mediante el cual la computadora pudiera evaluar una representación gráfica, como lo es el diagrama de escalera. En este capítulo se explican los métodos de codificación y evaluación de RLD que se desarrollaron y se presentan algunos aspectos importantes acerca de la implementación del programa. 2.2 Funcionamiento de un PLC El procesador del PLC, secuencialmente debe "muestrear cada entrada, evaluar el programa del diagrama de escalera, proveer las salidas" 9 y reiniciar el proceso. Dicho ciclo, conocido como barrido, se ilustra en el diagrama de flujo de la figura 2.1. 13 Leer señales de entrada Procesamiento Escribir señales de salida Figura 2.1 2.3 Métodos de evaluación Para obtener un método de evaluación de diagramas de escalera eficiente se consideraron las alternativas que se explican a continuación: 2.3.1 Método #1 El primer método propuesto consiste en generar la ecuación booleana correspondiente a cada escalón, como en la figura 2.2, para evaluarlas posteriormente. Sin embargo, la implementación de este método resulta complicada, por la dificultad de generar ecuaciones para cualquier combinación de conexiones serie y paralelo, y por otra parte, si las ecuaciones son generadas como texto es necesario hacer un intérprete para evaluarlas 10. 14 H H H l-----0--l Y=ABC A B e y Figura 2.2 2.3.2 Método #2 El segundo método consiste en utilizar un acumulador y realizar secuencialmente operaciones básicas, "." y "+", para evaluar a cada uno de los elementos, como se muestra en el ejemplo de la figura 2.3. La ventaja de este método respecto al anterior es la facilidad de implementación. Sin embargo, su desventaja es que limita la esctructura de los escalones debido a las siguientes restricciones: 1) las ramas en paralelo forzosamente deben estar conectadas por un extremo a la línea de alimentación de la izquierda y por el otro al primer renglón, y 2) sólo se puede conectar un elemento en cada rama paralela. Escalón e 2.3.3 Método #3 Expresión Y=(AB+C)D Figura 2.3 Algoritmo F=A F=FB F=F+C F=FD Y=F El tercer método funciona igual que el anterior, pero para poder manejar ramas con más de un elemento utiliza un arreglo en el que almacena el valor acumulado de los elementos conectados en serie en cada una de las ramas en paralelo. La desventaja de este método es que el número de 15 ramas está limitado por el tamaño del arreglo. 2.3.4 Método #4 Este método se basa en el uso de dos acumuladores y funciona de la siguiente manera: Con el acumulador S se evaluan los elementos del primer renglón que se encuentran conectados en serie. Cuando se detecta una conexión que indique una rama en paralelo, el contenido de S se pasa al acumulador P y entonces se utiliza S para evaluar el segundo renglón. En caso de que haya más ramas conectadas a ese punto, para cada una de ellas, se hace P= P+S y luego se usa S para evaluar la nueva rama. Una vez que se ha concluido con las ramas de ese nodo se hace S= S·P y se evalua el siguiente elemento del primer renglón. El proceso continua hasta que se evaluan todos los elementos del renglón. Con este método es posible evaluar escalones de estructura relativamente compleja, que cumplan con las reglas de la tabla 2.1, como el escalón de la figura 2.4. Como consecuencia de estas restricciones, se tiene la ventaja de que las líneas de conexiones no se pueden cruzar y esto hace que el escalón sea más intelegible. En la sección A.1.2 del Apéndice A se explica como se pueden arreglar algunos escalones que no cumplan conestas reglas para que puedan ser evaluados. 16 Tabla 2.1 Reglas de estructura para los escalones 1 ) El escalón puede tener un número infinito de ramas. 2) Cada rama puede tener un número infinito de elementos. 3) Todas las ramas deben tener un extremo conectado a la línea de alimentación de la izquierda. 4) El extremo derecho de cada rama debe ir conectado al primer renglón. 5) No deben existir cruces entre las líneas de conexiones. [:J HH-- H---__. Figura 2.4 2.4 Programa simulador de un PLC A continuación se presentan algunos aspectos importantes del programa para simular el PLC, en el cual descansa el desarrollo del presente trabajo de tesis. 2.4.1 Características del programa El programa para simular el PLC fue escrito en Pascal y corre en una IBM PS 30. Para la edición de los diagramas de escalera se utiliza el modo gráfico y en el menú principal del programa se presentan las siguientes cinco opciones: 17 Editar Simular eXecutar Archivos Salir Permite la captura gráfica de los diagramas de escalera En la simulación es posible modificar el valor de las entradas desde el teclado y ver en la pantalla como se afectan las demás variables en cada barrido Ejecuta el diagrama de escalera, enviando y recibiendo señales por el puerto paralelo Carga y escribe archivos en el disco Sale al sistema operativo El conjunto de instrucciones implementado es muy reducido y aunque solamente incluye las funciones lógicas básicas de la figura 2.5 permite realizar el control secuencial de procesos sencillos. -H- Normalmente abierto --#-- Normalmente cerrado -o Re levador -{L}- Latch (Prender) -{u}- Unlatch (Apagar) Figura 2.S Como interfase con el exterior se utilizó el puerto paralelo de la computadora, el cual permite, sin necesidad de hardware adicional, el manejo de 5 señales TTL de entrada y 8 de salida11 • 2.4.2 Codificación de los elementos A la unidad básica que compone un escalón se le da el nombre de elemento. · Cada elemento consta de tres partes: el número de identificación de la variable, la instrucción y el tipo de conexión. Con el fin 18 de aprovechar en forma eficiente la memoria, se utilizan 2 bytes para representar a un elemento. Esta distribución, mostrada en la figura 2.6, permite manejar 512 variables, 32 instrucciones y 4 tipos de conexiones. Byte 1 MSB LSB Byte 2 MSB LSB 1 1 1 1 1 1 11 1 1 1 11 1 11 1 ' ... 't~ 1 ----111------~----Identificación ------+------------Instrucción ------------Conexión Figura 2.6 Con objeto de codificar los elementos, se asignó un número a cada tipo de instrucción y a cada tipo de conexión, y se establecieron las fórmulas de codificación, como se muestra en la tabla 2.2. Es importante mencionar que al manejarse tres tipos de variables (entradas, salidas y locales) fue necesario definir para una misma instrucción tres o dos códigos diferentes, cada uno para un tipo de variable diferente. Tabla 2.2 Codificación de los elementos Instrucción Conexión O= NA entrada I= NA salida 2= NA local 3= NC entrada 4= NC salida 5= NC local 6= R salida 7= R local 8= L salida 9= L local 10= U salida 11= U local IF Elemento que inicia una rama 1= Elemento conectado en serie al anterior 2= Elemento que cierra las ramas abienas Byte 1 = elemento•8 + conex:ión•2 + número div 256 Byte 2 = número mod 256 19 2.4.3 Estructura de datos Para agrupar los elementos en escalones y los escalones en la escalera se utiliza la estructura mostrada en la figura 2.9. Esta estructura consta de dos arreglos. En el primer arreglo, se almacenan todos los elementos de la escalera, los escalones pueden estar colocados arbitrariamente, pero los elementos de cada escalón deben estar acomodados de acuerdo al orden que sigue el método de evaluación. El segundo arreglo se utiliza para indicar la posición del primer arreglo en la que inicia cada escalón. Esta estructura simplifica la edición, ya que para insertar, agregar y borrar escalones basta con modificar las celdas del primer arreglo. Sin embargo, una vez que se concluye la edición de la escalera el programa acomoda los escalones en forma consecutiva y la estructura se reduce a un solo arreglo. Escalones 1 1 1 21 3 ! 4 ! ~ ..__I ---+-¡ ----.+ Elementos Figura 2.7 2.4.4 Implementación del algoritmo de evaluación En la figura 2.8 se muestra el diagrama de flujo del algoritmo de evaluación, el cual esta implementado conforme al método #4 de la sección '2!.:.J1.4r· TECAimportante mencionar que para implementar este algoritm9 ,-,s~'.(d~~on tomar /, ,- ""~ •-. •.or.~ .. V,_# 1~~· ~f) ( ' .• ":,.o' (.. A i.f 1 U S ~ \ :.: ' TA D ü ~\ ~ °"'I e• ,•Y, -1 \ ·: . ¡ '. . . ' ,, ,.,, ., '?!~ ...... _. ·4· .<~ .. h \; ....___ __ .'./" en cuenta dos factores que no se habían 20 considerado al proponer el método. En primer lugar se notó que antes de asignar el valor resultante de un escalón a una variable, se debe hacer una última evaluación por si se tienen ramas en paralelo abiertas, por lo cual para los elementos finales primero se realiza la evaluación de la conexión utilizando un valor de 1 y después, en función del valor del acumulador S, se asigna el valor correspondiente a la variable asociada al elemento final. Inicializar registros S y P Leer el siguiente elemento Evaluar la conexión Actualizar registros S y P No ¿Es elemento 1---.....;;."'-< final? Si Asignar valor a la variable No ¿Fin de la ,___.....;;."'-< escalera? Si Figura 2.8 Por otra parte, para evitar que las variables cambien su valor a la mitad 21 del barrido y se afecte la evaluación de la escalera se decidió manejar dos bancos de variables, uno con el valor actual y el otro con el del siguiente barrido. Por lo tanto, al evaluar los escalones las asignaciones se hacen al valor siguiente y al iniciar el nuevo barrido se hace una actualización copiando los valores del banco siguiente al actual. 2.5 Conclusiones En este capítulo se presentó la metodología con la que se abordó el problema de simular un PLC con una microcomputadora. Se considera que los métodos obtenidos para representar y evaluar los diagramas de escalera son eficientes, ya que el método de codificación utilizado minimiza el espacio de memoria necesario para representar la escalera, mientras que el método de evaluación ejecuta un número reducido de operaciones para evaluar a cada elemento y permite manejar escalones con estructuras relativamente complejas. A pesar de que el PLC simulado cuenta con un número de puntos de 1/0 reducido y un conjunto de instrucciones muy limitado, este proyecto fue sumamente importante, ya que constituyó una sólida base para el desarrollo de este trabajo. 22 3.1 Introducción Capítulo 111 Sistema propuesto y selección del microcontrolador Con la experiencia del desarrollo inicial, quedó demostrado que una microcomputadora puede hacer las funciones de un PLC sencillo, pero por los costos, ésta no representa una solución práctica aplicable en la industria. Por lo tanto, se decidió disefíar un sistema de bajo costo capaz de realizar eficientemente el procesamiento del PLC. En este capítulo se describe detalladamente el sistema propuesto, se establecen las características del PLC a disefíar, se definen los requerimientos del hardware y se selecciona el componente más adecuado para esta aplicación. 3.2 Sistema propuesto En el sistema propuesto se utiliza una microcomputadora y software de desarrollo para editar el programa del PLC, a partir del cual se genera la codificación. Posteriormente esta codificación junto con un intérprete son grabados en una EPROM que es insertada en la tarjeta del CPU del PLC. En la figura 3.1 se muestran un PLC pequeño con su unidad de programación y el sistema propuesto. 23 000000 ºººººººººº PLC Sistema PropuestoSistema Convencional Programador PLC Figura 3.1 ~ ~ Micro- computadora Interface, de, I /0 Para lograr la reducción en costos, se trató de ocupar la cantidad mínima de componentes y por ello en el sistema propuesto se excluye la unidad de programación, usada comunmente en los PLCs comerciales. De esta forma se eliminan el teclado y la pantalla junto con su circuitería asociada y al mismo tiempo se evita la necesidad de que el PLC cuente con su propio editor, lo cual requeriría de más hardware. La desventaja principal del sistema es que ofrece poca flexibilidad, ya que para modificar el progama es necesario remover, borrar y reprogramar la 24 EPROM, aunque el proceso se puede hacer más eficiente si se dispone de varias memorias. A pesar de este inconveniente, el uso de la EPROM se justifica por la reducción en el costo del sistema. 3.3 Características del PLC Los PLCs se clasifican en tres grupos 12 : pequeiíos, con menos de 128 de puntos de 1/0; medianos, con 128 o más, pero menos de 1024; y grandes, con 1024 o más. A pesar de que en este apartado no se definen específicamente las características más importantes del PLC a diseiíar, se establece que estas deben de estar dentro los rangos de los PLCs de la tabla 3.1 13,14, 15,16, los cuales pertecen al grupo de los pequeños. Tabla 3.1 PLCs comerciales pequeil.os Modelo SLC-100 C20K FPC 202 Fabricante A-B OMRON FESTO Salidas 6 8 16 Entradas 10 12 16 1/0 Expandible 64 84 96 Relevadores internos 18 1 136 S6 Contadores/tempo. 32 48 16 Ve!. de barrido .. 15ms IOuS/inst • No. de instrucciones 16 49 • Base de tiempo 0.1 s O. Is 0.1 s Memoria•• 885words 1194words 8 Kbytes Lenguaje RID RID - • Información no disponible •• Las unidades no se pudieron normalizar ... Se puede programar por acción, 'stepper' ó nemocódigo 25 F-20M Mitsubishi 8 12 40 64 16 45uS • O. Is 320words RLD/list 3.4 Requerimientos del microcontrolador Además de eliminar la unidad de programación se decidió basar el hardware en un microcontrolador para reducir al mínimo la cantidad de componentes. "Un microcontrolador es en realidad una computadora en un solo encapsulado" 17 , la cual contiene dentro del mismo circuito integrado: CPU, ROM, RAM, puertos de 1/0 y en ocasiones algunos otros dispositivos. La principal ventaja de utilizar microcontroladores es que al reducirse el número de componentes es posible disefiar circuitos más económicos, compactos y confiables. A continuación se presentan los requerimientos que debe cumplir un microcontrolador para poder ser usado en un PLC con las especificaciones de la sección anterior 18 . 1) Número de bits. Por el tipo de procesamiento que realiza el PLC uno de 8 es adecuado, ya que los de 16 y 32 tienen capacidades que dificilmente se aprovecharían. 2) EPROM. Debe tener la capacidad suficiente para almacenar la codificación y al intérprete. El tamaño de la codificación de la escalera depende del número de elementos, mientras que el del intérprete es fijo. Se estima que de 4 Kbytes se podría ocupar 1 para el intérprete y 3 para un diagrama de tamaño regular. 3) RAM. En esta memoria se almacenan el 'stack' y un banco de registros necesarios para la ejecución del programa, así como las variables 26 booleanas y registros del PLC. Se considera que con 1/8 de Kbyte se puede tener un número adecuado de variables. 4) Puertos de 1/0. El número de líneas de 1/0 del microcontrolador representa el número de variables binarias de entrada y salida del PLC. El mínimo aceptable es 16. 5) Frecuencia de reloj máxima. Aunque influye en la velocidad del barrido no es lo único que la determina, ya que también depende de la eficiencia de los algoritmos del intérprete. Entre más alta sea esta frecuencia, es mejor. 3.S Comparación de microcontroladores En la tabla 3.2 se muestra una comparación de las principales características de algunos microcontroladores de algunos de los fabricantes más importantes: Intel 19 , Texas Instruments20 , Motorola21 y N ational22• Tabla 3.1 Microcontroladores Microcontrolador 8751 TMS370C810 68705U5 COP880C Fabricante lntel TI Motorola National EPROM interna (Kbytes) 4 4 3.6 4 RAM interna (bytes) 128 128 112 128 Líneas de 1/0 32 22 32 36 Temporizadores 2 27 De estos microcontroladores algunos cuentan con características muy interesantes, las cuales podrían incrementar ampliamente el potencial del PLC: 1) Procesamiento booleano. Son instrucciones que permiten manejar directamente a los bits como un tipo de dato. Esto sería muy útil por el tipo de procesamiento que realiza el PLC. 2) Convertidor A/D. Este permite al PLC recibir información de variables continuas, con lo cual se podrían implementar algoritmos de control dinámico. 3) Comunicación serial. Permite al PLC intercambiar información con otros PLCs o una microcomputadora en un Sistema de Control Distribuido (DCS). 4) Bit de seguridad. Impide que los programas puedan ser leidos para proteger los programas desarrollados. 5) EEPROM. Permite almacenar datos en caso de interrupciones en el suministro eléctrico. 3.6 Factores para seleccionar un microcontrolador "Para la aplicación en un producto, un número de factores deben ser considerados al escoger un microprocesador. Entre éstos los más 28 importantes son: l. Mérito Técnico, 2. Costo, 3. Disponibilidad y 4. Herramientas de soporte"23 . l ) Mérito técnico. Se refiere a las características mencionadas en la sección 3.4: número de bits, capacidades de memoria, número de puertos de 1/0, etc. 2) Costo. Por el objetivo que se fijó de que el PLC fuera de bajo costo, este factor es clave, pero no se dede sacrificar el desempeño del PLC por tratar de usar un microcontrolador muy barato. 3) Disponibilidad. Es un aspecto en el que se debe tener especial cuidado, por lo que el microcontrolador seleccionado se debe de poder conseguir con relativa facilidad en el mercado. 4) Herramientas de desarrollo. Son programas que ayudan a los ingenieros al escribir el código para el microcontrolador, a depurarlo y a verificar que funciona como se desea24 . Es recomendable tenerlas disponibles porque hacen más eficiente el proceso de desarrollo. 3.7 Microcontrolador seleccionado Entre todos los microcontroladores evaluados se seleccionó el 8751 de Intel porque reunía todas las características del mérito técnico, sus herramientas de desarrollo se podían conseguir con facilidad y, principalmente, porque su conjunto de instrucciones "provee un extenso 29 soporte para variables de un bit como un tipo de dato separado, permitiendo la manipulación directa para sistemas lógicos y de control\5, lo cual lo hace ideal para la aplicación del PLC Sin embargo, el inconveniente de este microcontrolador es que su precio es relativamente alto y por ello se prefirió utilizar el 8031 26 , que es la versión sin EPROM interna del 8751 y tiene un costo 10 veces menor. Aunque con este integrado se requiere de dos componentes externos adicionales, el costo total es aproximadamente 5 veces menor que el del 8751. Otra ventaja de utilizar el 8031 es que la memoria externa puede ser mayor que los 4 Kbytes del 8751, pero la desventaja que se tiene es el incremento en el tamaño del circuito. 3.8 Conclusiones El sistema propuesto representa una alternativa de bajo costo para realizar el procesamiento del PLC utilizando los algoritmos presentados en el capítulo anterior. Para lograr la reducción de costos se eliminó la unidad de programación, por lo cual se emplea software de desarrollo para generar los programas que son introducidos al CPU mediante una EPROM. Así mismo, el hardware se basó en un microcontrolador, que contiene dentro del mismo encapsulado RAM, puertos, oscilador y temporizadores, con el fin de minimizar la cantidad de componentes. 30 Entre losmicrocontroladores considerados, se seleccionó el 8031 de INTEL, porque cumple con todos los requerimientos para esta aplicación, ofrece un buen balance en cuanto a costo y desempeño y porque incluye funciones de procesamineto booleano, en las cuales se basa el PLC. Al sistema presentado se le dió el nombre de CL-51. Las letras significan Controlador Lógico y el 51 se debe al nombre de la familia MCS-51, a la cual pertenece el 8031 . ._ 31 4.1 Introducción Capítulo IV Implementación del conjunto de instrucciones ~l conjunto de instrucciones de un PLC es sumamente importante, ya que éste determina su desempeíio y por ello debe permitir que se explote al máximo el potencial del hardware y al mismo tiempo debe ser de fácil manejo para el usuario. En este capítulo se clasifican y describen las intrucciones más comunes de los PLC~ se define el conjunto de instrucciones del CL-51, se explica la forma en que se implementó y se indica como realizar algunas operaciones no incluidas en el conjunto básico. 4.2 Grupos de instrucciones Puesto que no fue posible conseguir el estándar para los lenguajes de programación de PLCs del International Electrical Comitee (IEC), SC65A(Secretariat)67 part3 27 , fue necesario recurrir a diversas fuentes para establecer el conjunto de instrucciones del CL-51: el manual del SLC-100 de Allen-Bradley28 , el catálogo del C20K de OMROM29 , la Enciclopedia de la Robótica30 y algunos artículos sobre casos de 32 automatización31 ,32,33 . Para poder proponer un conjunto poderoso ,{las instrucciones encontradas se clasificaron en cinco grupos, los cuales se presentan a continuación junto con la descripción de cada una de las instrucciones.) 1) Instrucciones lógicas. Representan los contactos y bobinas de los relevadores. Normalmente abierto Normalmente cerrado Relevador Relevador negado 'Latch' 'Unlatch' Transición Transición hacia arriba Transición hacia abajo Usa el valor de una variable binaria para evaluar el escalón. Usa el valor negado de una variable binaria para evaluar el escalón. Asigna el valor resultante del escalón a una variable binaria. Asigna el valor negado resultante del escalón a una variable binaria. Si el valor del escalón es 1 da el valor de 1 a la variable binaria, si no la deja como estaba. Si el valor del escalón es 1 da el valor de O a la variable binaria, si no la deja como estaba. Cuando la variable binaria cambia de estado usa un 1 para evaluar el escalón, y cuando conserva su estado usa un O. Cuando la variable binaria cambia de O a 1 usa un para evaluar el escalón, en otro caso usa un O. Cuando la variable binaria cambia de 1 a O usa un 1 para evaluar el escalón, en otro caso usa un O. 33 2) Temporizadores y contadores. Permiten controlar la duración de un evento o contar el número de veces que ocurre. Temporizador-encendido Si el valor del escalón es 1 disminuye el valor del registro en 1 cada décima de segundo. Toma un valor de 1 para la evaluación si el registro es igual a O. Temporizador-apagado Contador hacia arriba Contador hacia abajo Mover 'Re set' Si el valor del escalón es O disminuye el valor del registro en 1 cada décima de segundo. Toma un valor de para la evaluación si el registro es igual a O. Aumenta en 1 el valor del registro cuando el valor del escalón tiene una transición de O a 1. Toma un valor de 1 para la evaluación si el registro es igual a O. Disminuye en el valor del registro cuando hay transición de O a 1. Toma un valor de 1 para la evaluación si el registro es igual a O. Si el valor del escalón es 1 se asigna el valor indicado a un registro. Si el valor del escalón es 1 se iguala a cero el valor del registro. 3) Aritméticas y de comparación. Estas instrucciones permiten realizar el tratamiento de valores númericos. Suma Resta Multiplicación Si el escalón es 1 suma dos registros y asigna la swna a un tercero. Si el escalón es 1 resta un registro de otro y asigna la diferencia a un tercero. Si el escalón es 1 multiplica dos registros y el resultado lo reparte en otros dos, en uno la parte alta y en otro la baja. 34 División Igual a Menor que Mayor que Si el escalón es 1 divide un registro entre otro y asigna el cociente a un registro y el residuo a otro. Usa un valor de 1 para evaluar el escalón si los registro son iguales. Usa un valor de I para evaluar el escalón si el primer registro es menor que el segundo. Usa un valor de 1 para evaluar el escalón si el primer registro es mayor que el segundo. 4) Control de Flujo. Controlan las instrucciones que deben ser ejecutadas por el programa durante el barrido. Llamada a subrutina Inicio de subrutina Retorno de la subrutina Fin de la escalera Salta a una subrutina Indica el inicio de una subrutina. Regresa de una subrutina. Indica el final del diagrama principal. 5) Control de salidas. Estas funciones permiten definir bloques dentro de los cuales el valor de las salidas no es necesariamente el valor resultante del escalón. MCR (Master Control Resct) Fin del MCR za.. (Zone Control Last-state) Fin del ZCL Cuando el valor del escalón es l, en los escalones siguientes a este las salidas de relevador se hacen O, las de relevador negado 1 y las otras no se ejecutan. Cancela el efecto del MCR. Cuando el valor del escalón es 1 las salidas siguientes conservan su último valor. Cancela el efecto del ZCL. 35 4.3 Conjunto de instrucciones del CL-51 Tomando como base el porcentaje de uso relativo de las instrucciones, figura 4.1 34 , se propuso el conjunto de instrucciones que se muestra en la figura 4.2. En él se eliminan algunas de las instrucciones descritas en la sección anterior por ser de uso poco frecuente, demasiado lentas o reemplazables por otras instrucciones. En el Apéndice A se presenta la explicación detallada de como funciona cada instrucción. 8 % Contadores/ Temporizadores/ Movimientos 1 % Otras Figura 4.1 4.4 Implementación de las instrucciones 4.4.1 Instrucciones Lógicas Para implementar las instrucciones lógicas, lo que se hizo fue traducir los procedimientos del programa del Capítulo 2 a rutinas en lenguaje 36 ensamblador. Con el fin de hacer más poderoso el conjunto del CL-51, además de las instrucciones de la versión previa se agregaron el relevador negado y las transiciones. Para implementar el "relevador negado" el escalón se evalua normalmente y se niega el valor resultante antes de asignarlo a la variable binaria. Para las transiciones se desarrollaron subrutinas en lenguaje ensamblador que realizan las siguientes operaciones (Donde Xn representa el estado actual de la variable y Xn-l el estado anterior): Transición Transición hacia arriba Transición hacia abajo XX +XX n n-1 n n-1 4.4.2 Temporizadores y contadores Al tipo de dato utilizado para representar números enteros, se le dió el nombre de registro. Como se muestra en la figura 4.3, 14 bits del registro se utilizan para almacenar el valor y los 2 bits restantes se ocupan como banderas. Una bandera sirve para indicar si el registro es un temporizador o un contador y la otra es una bandera auxiliar cuyo uso se explicará posteriormente. 38 byte alto byte bajo 1 1 1 1 1 1 1 1 1 11 1 1 1 1 v,10< d<I regb«o J J Bandera Temporizador/contador Figura 4.3 La instrucción "mover" sirve para asignar un valor a un registro, ya sea que este se vaya a usar como temporizador, contador o registro. Cuando se copia el valor de un registro a otro se aplican mascarillas para respetar el contenido de las banderas y cuando se hace una asignación inmedita el valor se multiplica por 4 para dejar libre el espacio de las banderas. La instrucción "reset" iguala a cero el contenido del registro, pero no afecta a las banderas. Cuando unregistro se utiliza como temporizador, su bandera auxiliar sirve para indicar si esta activo. Cada décima de segundo uno de los temporizadores internos del 8031 envia una interrupción durante la cual se decrementa en l el valor de los temporizadores activos. La cuenta se lleva en forma descendente y se detiene al llegar al cero. En los contadores la bandera auxiliar se utiliza para almacenar el estado anterior del escalón que los contiene. Al ejecutarse el barrido se compara el valor del escalón con su valor anterior y si se detecta que ha habido una transición hacia arriba, entonces se decrementa o incrementa el valor del contador. Para ofrecer más libertad al usuario el valor de los contadores, a diferencia de los temporizadores, no se detiene al llegar a cero. 39 4.4.3 Aritméticas y de comparación Para efectuar las operaciones de "suma" y "resta" se aplican mascarillas para evitar que las banderas de los operandos entren en la operación y para no afectar las banderas del registro en el que se almacena el resultado. Al hacer las operaciones con un registro y una constante, esta última se multiplica por 4 y se coloca en un registro auxiliar. Las instrucciones de comparación se basan en la instrucción CINE del 8031. Para ejecutar la función "igual a" primero se aplican mascarillas a la parte baja de los registros y luego se hace la comparación, en caso de que sean iguales se procede a comparar las partes altas. La instrucción de "mayor que" funciona en forma similar a la anterior y para la de "menor que" sólo se cambian de posición los registros y se llama a la subrutina "mayor que". 4.4.4 Control de flujo La instrucción "inicio de subrutina", no hace nada al ejecutarse el programa, sólo sirve para que el programa pueda identificar la dirección en donde comienza la subrutina. La instrucción "llamar" a una subrutina realiza un CALL a la dirección en la que empieza la subrutina. El "retorno" de una subrutina se realiza simplemente con la instrucción RET. La instrucción "fin de escalera" salta a la parte en donde está la rutina que actualiza los bancos de variables y los puertos de 1/0 para comenzar el nuevo barrido. 40 4.4.5 Control de salidas Para implementar el MCR se utiliza una bandera llamada MCR. Esta bandera se usa como valor de los elementos finales, y por la forma en que funciona el algoritmo de evaluación, si el MCR es 1 el escalón se evaluará normalmente y si es O el valor resultante del escalón también será cero. Aunque se tenía la posibilidad de hacer que el MCR funcionara sólo con las instrucciones lógicas y no sobre las demás, se prefirió que afectara a todas para evitar confusiones al usuario de cuales se afectan y cuales no. La instrucción "fin de MCR" reestablece el valor inicial de la bandera MCR a l. 4.5 Cómo ejecutar las instrucciones no incluidas A continuación se explica por que no se implementaron algunas instrucciones y cómo se pueden utilizar las instrucciones del conjunto básico del CL-51 para realizarlas. 4.5.1 Multiplicación y división A pesar de que las operaciones de multiplicación y división están dentro del conjunto de instrucciones del 8031, estas fueron excluidas ya que el microcontrolador sólo las ejecuta sobre registros de 8 bits. Cuando se utilizan datos de más de un byte para sumar o restar se hace un encadenamiento, pero para la multiplicación esto es complicado y para la división no es posible. Otra alternativa para hacer estas operaciones era 41 utilizar corrimientos, pero se decidió omitirlas dado que requerían de muchas operaciones y harían notoriamente más larga la duración del barrido. Sin embargo, en aplicaciones en las que no importe el tiempo que se lleve, es posible implementarlas mediante sumas y restas sucesivas. 4.5.2 Secuenciación Para la implementación de los secuenciadores se presentaban algunos inconvenientes, como el manejo demasiado rígido de las salidas y la necesidad de un editor especial para su captura, por lo cual no se incluyeron en el conjunto del CL-51. Sin embargo, es posible realizar la secuenciación en una forma bastante flexible utilizando subrutinas. Se pueden utilizar un grupo de escalones con diferentes combinaciones lógicas o con comparaciones y cada uno de ellos habilita a una subrutina diferente. En el Apéndice A se presenta un ejemplo de cómo utilizar esta metodología de programación. 4.S.3 ZCL El método propuesto para implementar la instrucción del ZCL consistía en saltar todos los escalones del bloque si al evaluar el escalón del ZCL este resultaba igual a 1. De esta forma los escalones del bloque quedarían con su mismo valor y además la duración del barrido se haría más corta. Aunque el método anterior era muy eficiente, se observó que era posible hacer la misma función si el bloque se declaraba como una subrutina a la cual se llamaría o no dependiendo del valor de un cierto escalón. La razón principal por la que se decidió omitir la instrucción ZCL fue para evitar el 42 riesgo de que bloques MCR y- ZCL quedaran anidados, lo cual podría ocasionar salidas no deseadas o impredecibles. 4.6 Conclusiones Durante el estudio que se realizó para establecer el conjunto de instrucciones del CL-51 se observó que no había uniformidad en los conjuntos y que estos variaban de un PLC a otro. Por lo tanto se buscó si había un estándar y se encontró que el lnternational Electrical Comitee estaba trabajando en uno, pero no fue posible conseguirlo, tal vez por ser muy reciente. Por las razones anteriores fue necesario definir un conjunto de instrucciones propio para el CL-51 tomando como base los demás conjuntos. Con base en el porcentaje de uso de las instrucciones y por la facilidad con la que se puede implementar el control se considera que el conjunto establecido es muy poderoso. Así mismo, se considera que la mayoría de las rutinas de cada instrucción son eficientes por su tiempo de ejecución. 43 5.1 Introducción Capítulo V Implementación del prototipo y programas de prueba Como paso previo al desarrollo del software se implementó un prototipo, para lo cual se escribieron algunos programas de prueba con el fin de validar las rutinas y comprobar el funcionamiento del hardware. En este capítulo se cubren la distribución de los recursos del 8031, la elaboración de programas auxiliares de prueba y la implementación física del prototipo. 5.2 Implementación del CL-51 con el 8031 Basándose en las características del 8031 (ver Apéndice F) se estableció la forma en la que se utlizarían los recursos de este microcontrolador para obtener una distribución óptima para implementar el CL-51. 5.2.1 Distribución de la EPROM La parte baja de la memoria de programa se asignó para el intérprete y de la parte restante se ocupa el espacio necesario para almacenar la codificación del diagrama, como se muestra en la figura 5.1. 44 Intérprete Codificación del diagrama Espacio vaclo Figura S.1 5.2.2 Distribución de la RAM El microcontrolador cuenta con una RAM interna muy limitada, 128 bytes, por lo que la distribución se realizó cuidadosamente (figura 5.2). Los primeros 32 bytes se destinaron para un banco de registros y el 'stack'. De los 96 bytes restantes se dejaron 48 bytes para 192 variables binarias y los otros 48 bytes para 24 registros. RO-R7 OOh • 07h Stack 08h -1Fh Variables 20h-4Fh Binarias Registros 50h - 7Fh Figura S.2 5.2.3 Configuración para EPROM externa La configuración utilizada para conectar el 8031 y la EPROM, que se muestra en. la figura 5.335 , se tomó del manual de Intel "8 bit embedded microcontrollers". Es importante notar que en esta configuación 16 lineas 45 de 1/0 se utilizan para funciones de 'bus' en los accesos a la memoria externa: el puerto P2 se utiliza para la parte alta de la dirección y el puerto PO para los datos y la parte bajade la dirección. Por lo tanto, sólo quedan 16 lineas de 1/0 disponibles para la aplicación del usuario. ® EPROM MCS-51 PI PO INSTR. EA ALE ]-· P3 P2 PSEN OE Figura5.3 5.2.4 Multiplexión de puertos • Una alternativa para las aplicaciones que requieran de más de 16 puntos de 1/0, consiste en utilizar los puertos en forma multiplexada, esto es, utilizar el puerto Pl como 'bus' de 1/0 y el puerto P3 para seleccionar las tarjetas de 1/0. Así, al tener capacidad de conectar 8 tarjetas a un 'bus' de 8 señales se pueden manejar hasta 64 puntos de 1/0. Al mismo tiempo, se tiene flexibilidad en lo que respecta a la cantidad de salidas y entradas ya que se puede conectar cualquier combinación de ellas en múltiplos de 8 e incluso se deja abierta la posibilidad para incluir convertidores A/D y DJA. (En el Apéndice D se amplía la información sobre este tema. • Se usa el termino multiplexión por que no se encontró una palabra en español que representara su signifjca~~- (Nota del Autor) 46 5.3 Inconvenientes del intérprete Para implementar el intérprete, la codificación de la escalera se tendría que leer utilizando la instrucción MOVC A,@A+DPTR36 y en función de cada elemento se tendría que llamar a una subrutina con la instrucción JMP @A+DPTR3,. El inconveniente que se hubiera presentado al implementar el intérprete sería que tanto para saltos indexados como para lectura a tablas de consulta se necesita el registro DPTR, "data pointer". Por lo tanto, cada vez que se tuviera que evaluar un elemento se tendría que cargar el valor del apuntador de la codificación, actualizarlo, leer el elemento, guardarlo y saltar a la subrutina correspondiente al cimento. Al repetirse las operaciones anteriores para cada uno de los elementos de la escalera la velocidad del barrido se haría considerablemente más baja. Un detalle importante que se descubrió posteriormente, fue que las funciones de manejo de bits del 8031 se podían utilizar en los modos inmediato y directo pero no en modo indirecto, lo cual representa un gran inconveniente ya que el intérprete requiere del acceso a los bits en modo indirecto porque el número del bit a accesar varía para cada uno de los elementos del diagrama de escalera. Por lo tanto las funciones de manejo de bits que habían sido una de las características más importantes para seleccionar este microcontrolador no podrían ser utilizadas eficientemente por el intérprete. • Se utiliza eJ término indeur aunque no se encontró una palabra en espa.ftol que representara su significado 47 5.4 Reemplazo del intérprete por un compilador El acceso indirecto a un bit se puede llevar a cabo utilizando una serie de instrucciones para traer al byte que lo contiene, aplicar una mascarilla para separalo de los demás bits y verificar entonces si esta encendido o apagado. Sin embargo, este procedimiento requiere de varias instrucciones y el tiempo de procesamiento serla más largo que aquel que se tendría si se accesara en una sola instrucción al bit. Dado que el PLC se basa fuertemente en las capacidades de procesamiento booleano del microcontrolador, para poder aprovecharlas se tuvo que hacer un cambio radical a la concepción original del proyecto. Dicho cambio consistió en remplazar el interprete y la codificación de la escalera por un código ejecutable equivalente. En otras palabras, lo que se tenía que hacer era compilar el diagrama de escalera generando las instrucciones correspondientes a cada elemento del diagrama de escalera. La principal ventaja que se obtiene con el compilador es un incremento en la velocidad de barrido, ya que para cada elemento del diagrama de escalera sólo se ejecutan las instrucciones estrictamente necesarias para evaluarlo. La desventaja es el incremento en el tamaño del programa, ya que muchas de las subrutinas del intérprete se siguen necesitando como funciones de librería para ser llamadas por el compilador y el código generado para cada elemento requiere mucho más que los dos bytes que se usaban para codificarlo. Sin embargo, el incremento en requerimientos de memoria de programa no afecta significtivamente ya que la EPROM externa puede ser hasta de 16 Kbytes. 48 5.5 Generador de programa en ensamblador Para generar el programa en ensamblador correspondiente a un diagrama de escalera, se escribieron las subrutinas de librería, en ensamblador, y un programa en Pascal, el cual a partir de un archivo con la codificación de la escalera, generaba un archivo de texto con los fragmentos de programa en ensamblador correspondientes a cada uno de los elementos del diagrama. Finalmente, utilizando un compilador se obtenía el programa en lenguaje de máquina. En la figura 5.4 se ilustra este proceso. Para probar este programa se escribió en un archivo la codificación manual de un diagrama de escalera y se comprobó que la ejecución en el simulador del código obtenido correspondía totalmente con el diagrama de escalera programado. Diagrama de escalera A B Programa t J Programa en MOV C,1 ensamblador ANL CJ2 MOV3,C Compilador J e Programa en lenguaje de máquina :0601AFOOA201B0029203B9 Figura 5.4 49 5.6 Generador de código Posteriormente, se modificó el programa de la sección anterior para que generara directamente el archivo en lenguaje de máquina, como se muestra en la figura 5.5. Para ello, se modificó el procedimiento que escribía los fragmentos en ensamblador para que en vez de los nemónicos escribera el código con el formato Intel Hex38 • Diagrama de escalera Programa en lenguaje de máquina A B e Programa 2 ... :0601AFOOA201B0029203B9 Figura 5.5 Para generar directamente el código era necesario que el programa en pascal de alguna forma conociera las direcciones de las librerías para poder llamarlas. Para ello se escribió un programa auxiliar el cual lee el archivo LST (que es generado al compilar las librerías) y utiliza esa información para escribir otro archivo de texto con el formato de Pascal. Es este archivo las direcciones de las subrutinas se declararan como constantes tipo 'string', para que puedan ser utilizadas por el programa generador de código por medio del directivo { $INCLUDE} 39. 50 S. 7 Implementación del prototipo Una vez que se verificó el funcionamiento del circuito de la figura 5.6 en una tablilla de prueba, se disefió el circuito impreso para la unidad de procesamiento. Los puertos de 1/0, que se dejaron como módulos enchufables para ofrecer mayor flexibilidad, pueden contener relevadores, transistores, triacs o diversos tipos de entradas dependiendo de la aplicación en cuestion. La tarjeta del CPU se hizo de una sola cara porque el costo es más bajo que el de una tarjeta de dos caras. Para hacer esta tarjeta se incorporaron tecnologías de CAD/CAM. (En el Apéndice G se amplía la información sobre este tema). El prototipo sirvió para conocer la velocidad del barrido, que hasta este punto no se había calculado o estimado. El diagrama programado tenía 25 elementos y el período medido con el osciloscopio fue aproximadamente de 1.2 ms. Esta velocidad era aceptable y se podía duplicar utilizando en vez del cristal de 6.144 MHz uno de 12 MHz, que es la frecuencia de reloj máxima a la que puede trabajar el 8031. 5.8 Conclusiones Durante esta etapa de implementación del prototipo, se descubrió que las instrucciones de procesamiento booleano no se puede utilizar en modo indirecto. Esto obligó a que se realizará un cambio importante en la concepción original de la tesis, para poder aprovechar las capacidades de procesamiento booleano, por las cuales se había seleccionado el 8031, el 51 AO 10 AO DO 11 ADO PI.O PO.O 39 ADO Al 9 Al DI 12 AD! PI.! PO.! 38 AD! A2 8 A2 02 13 AD2 Pl.2 P0.2 37 AD2 A3 1 A3 03 IS AD3 Pl.3 P0.3 36 AD3 A4 6 A4 04 16 AD4 Pl.4 P0.4 3S AD4 AS s AS DS 17 ADS Pl.S PO.S 34ADS A6 3 A6 06 18 AD6 Pl.6 P0.6 33 AD6 A7 25 A7 07 19 AD7 Pl.7 P0.7 32 AD7 A8 24 A8 A9 21 A9 P3.0 P2.0 21 A8 AIO 23 AJO P3.1 P2.1 22 A9 Ali 2 Al! P3.2 P2.2 23 AlO A12 26 A12 P3.3 P2.3 24 Ali A13 27 A13 P3.4 P2.4 25 A12 P3.S P2.5 26 A13 /PSEN 20 CE P3.6 P2.6 27 A14 /PSEN 22 DE P3.7 P2.7 28 A15 VCC 1 VPP 27128 19 XI PSEN 29 /PSEN 18 X2 ALE 30 ALE 9 RES ET EA 31 GND ¡47pF 8031 ¡47pF 7805 :::¡r= l voc IOuF ADO 2 DI Ql 19 AO AD! 3 02 Q2 18 Al AD2 4 03 Q3 17 A2 AD3 s 04 Q4 16 A3 AD4 6 DS Q5 15 A4 ADS 1 06 Q6 14 AS AD6 8 07 Q7 13 A6 AD7 9 08 Q8 12 A7 ALE 11 e 8.2K GND 1 oc 74LS373 Figura 5.6 intérprete tuvo que ser substituido por un compilador. El compilador tiene la desventaja de que el código generado ocupa más espacio de memoria, pero a cambio de ello la velocidad de barrido se incrementa notoriamente. Las pruebas realizadas con el hardware prototipo, resultaron satisfactorias por su funcionamiento y la velocidad de barrido. 53 Capítulo VI Software de desarrollo 6.1 Introducción El software de desarrollo es una parte muy importante del CL-51, ya que al no contar con una unidad de programación, éste es la interface con el usuario. El programa permite al usuario editar el diagrama de escalera, depurarlo mediante la simulación y finalmente generar el código. En este capítulo sólo se describen los aspectos importantes de la implementación del software de desarrollo y en el Apéndice A se explica detalladamente como utilizarlo. 6.2 Características generales y módulos del programa El software de desarrollo se escribió en Pascal para una IBM PS modelo 30 286. El programa maneja un ambiente de menús similar al del Turbo Pascal de Borland40 y trabaja con el manejador de gráficas VGA, alta resolución y con 16 colores, sin embargo, mediante modificaciones sencillas es posible adaptarlo para el manejador CGA, alta resolución y 2 colores. 54 En su menú principal se presentan las siguientes opciones: Archivos Para cargar y escribir archivos en el disco o salir al sistema operativo Editar Permite la captura gráfica de los diagramas de escalera Simular En la simulación es posible modificar el valor de las entradas desde el teclado y ver en la pantalla como se afectan las demás variables en cada barrido Opciones Se utiliza para configurar los puertos de 1/0 y asignar las variables Programación Genera el archivo en lenguaje de máquina 6.3 Estructura y tipos de datos Para representar el diagrama de escalera se utiliza la estructura mostrada en la figura 6.1, la cual facilita el proceso de edición y permite un manejo eficiente del espacio de memoria Figura 6.1 55 Para representar un elemento se usa un registro, que contiene un byte para la instrucción codificada, tres 'strings' de 8 caracteres para los argumentos de la instrucción y un apuntador para ligarlo al siguiente elemento. El tipo de dato usado como encabezado de un escalón es un registro con un apuntador para señalar a los elementos, dos apuntadores para unirse con los demás escalones y dos enteros para almacenar el número del escalón y la cantidad de renglones que contiene. 6.4 Editor El editor incluye funciones para desplazarse a lo largo de la escalera, insertar, borrar y modificar escalones, así como funciones manejo de bloques y saltos de escalón, que son similares a las del editor del Turbo Pascal41 y hacen más eficiente el proceso de captura. Las funciones de edición para insertar y borrar escalones solamente modifican los apuntadores entre escalones, sin necesidad de afectar los apuntadores que están entre los elementos. En la figura 6.2 se muestra (a) cómo se borra y (b) cómo se inserta un escalón; las líneas punteadas indican la posición inicial de los apuntadores modificados. 56 (a) (b) Figura 6.2 Las funciones de bloques permiten al usuario manejar a un conjunto de escalones como un solo bloque, el cual se puede borrar, copiar, mover e incluso puede ser guardado o cargado del disco. El bloque esta delimitado mediante un par de apuntadores, y para borrarlo o moverlo, se realizan operaciones similares a aquellas que se ejecutan para borrar o insertar un solo escalón. Para copiar un bloque, primero se duplica la parte de la estructura que corresponde al bloque y luego se inserta en la posición indicada. Las funciones para cargar y guardar bloques se basan en los procedimientos para guardar y cargar la escalera, los cuales se tratatarán en la sección 6.7. Los saltos permiten al usuario desplazarse rápidamente a lo largo de la escalera. Las funciones para ir al primer o al último escalón simplemente igualan el cursor a alguno de los apuntadores predefinidos que señalan a esos dos escalones. Mientras que la función para saltar a un escalón determinado apunta el cursor hacia el primero y recorre la escalera, escalón por escalón, hasta que encuentra aquel que le fue indicado. 57 6.5 Edición de escalones En el programa del Capítulo 2 se utilizó un método de captura de escalones secuencial, pero éste era demasiado rígido, requería que los elementos se introdujeran en un orden especial y no permitía hacer modificaciones. Por lo tanto, se desarrolló un nuevo método, el cual facilita al usuario el proceso de captura y le ofrece más libertad. El nuevo método consta de dos etapas: 1 ) Colocación de elementos. Durante esta etapa el usuario se puede desplazar libremente por toda la pantalla para colocar o modificar los elementos en cualquier posición. Los elementos se guardan en un arreglo matricial. 2) Inidicación de conexiones. En esta etapa el usuario indica solamente las conexiones verticales de cada rama hacia el primer renglón, ya que el método asume que todos los elementos de un mismo renglón están conectados en serie. Las posiciones de regreso se guardan en un arreglo auxiliar. Este método, al igual que el secuencial, obliga a que la estructura de los escalones sea comprensible para el método de evaluación #4, ya que al finalizar la primera etapa se verifica que no haya elementos en posiciones ilegales y durante la segunda etapa solamente se habilitan las conexiones que cumplan con las reglas de conexiones del Capítulo 2. Debido a que se utilizan estructuras diferentes para capturar el escalón y para representar a la escalera, se utilizan procedimientos que convierten de un tipo de estructura al otro. El procedimiento que convierte el arreglo matricial en una estructura de apuntadores acomoda a los elementos de 58 acuerdo al orden de evaluación seguido por el método #4. Al efectuar esta conversión se realiza una codificación para indicar el tipo de conexión de cada elemento (inicio de rama, serie, paralelo o inicio de escalón). El procedimiento inverso, convertir de apuntadores a matriz, utiliza la información codificada para determinar la posición en que se deben colocar los elementos en la matriz. 6.6 Opciones El módulo de opciones sirve para introducir información acerca de las tarjetas conectadas a los puertos de 1/0 y sus señales asociadas. Las funciones de asignación y configuración se limitan a capturar y almacenar la información, la cual será utilizada posteriormente por el compilador. A pesar de que no se implementaron las subrutinas de 1/0 analógicas, el programa permite definirlas para dejar abierta la posibilidad de implementarlas en un futuro. 6. 7 Archivos El módulo de archivos contiene funciones para guardar y cargar archivos, editar un nuevo diagrama de escalera y salir del programa. El procedimiento para guardar el diagrama de escalera elimina los apuntadores y almacena unicamente la información de los elementos, junto con la asignación de los puertos de 1/0 y la posición de las variables en la pantalla de simulación, para lo cual utiliza tres archivos diferentes: 59 * .RLD, * .ASG y * .SIM. Al cargar un archivo se regenera la estructurade apuntadores, se recupera la asignación de los puertos de 1/0 y la posición de las variables en la pantalla de simulación. 6.8 Simulación El módulo de simulación permite al usuario probar y depurar, en una forma eficiente y segura, sus diagramas de escalera sin tener que programar una EPROM y conectar el PLC al sistema real. En la pantalla de simulación se pueden observar los nombres de las variables que indique el usuario, junto con su valor y en el caso de los registros también se indica si es contador o temporizador y el estado de la bandera auxiliar. Es conveniente mencionar que la simulación se hace barrido por barrido y que los cambios en las variables de entrada no son considerados inmediatamente, sino hasta un barrido después de que se produjeron. La razón por la que se tiene este retardo es para apegar la simulación a la ejecución real del PLC, que funciona de la misma manera. Este retardo se introduce para poder detectar las transiciones en las variables de entrada y no es significativo, ya que generalmente el periodo del barrido es muy corto. Para la simulación de los temporizadores, la simulación no se apega al tiempo real de 0.1 segundos para actualizar sus valores, sino que éstos se actualizan cada cuatro barridos. Lo anterior se debe, por una parte, a que es extremadamente complicado hacer una estimación exacta del tiempo en el que se ejecuta cada instrucción, y por la otra, a que se requeriría 60 simular un número muy elevado de barridos para observar como responden los temporizadores si el periodo del barrido es muy pequeiio. Para poder hacer la simulación se crea una nueva estructura en la cual se substituyen los nombres simbólicos de las variables por números de identificación, los cuales corresponden a las localidades de memoria a las que fueron asignadas. Así mismo, se asigna un número de identificación a cada una de las subrutinas. Antes de iniciar, lo que es propiamente la simulación, el programa verifica que el diagrama cumpla con ciertas reglas de sintaxis, las cuales tienen por objeto prevenir que durante el barrido el procesador se vaya a quedar ciclado entre subrutinas o que se presenten estados de control MCR indefinidos. 6.9 Programación El módulo de programación, que genera el archivo con el programa en lenguaje de máquina para el 8031, esta basado en el programa de prueba explicado en el Capítulo 5. Las tareas que ejecuta este módulo son tres: generar los fragmentos de código para cada elemento del diagrama de ese alera, generar las rutinas de actualización de puertos de 1/0 e incluir en el archivo las funciones de librería. Para la compilación del diagrama se utiliza la estructura generada por el simulador, en la cual los nombre de las variables y subrutinas han sido substituidos por números de identificación. Se hace una primera pasada 61 llevando el conteo de los bytes que se generarán por cada elemento de la escalera para poder determinar la dirección en la que comienza cada una de las subrutinas. Después, se hace una segunda pasada, en la cual se genera el archivo con el código correspondiente a cada instrucción del diagrama. Posteriormente, utilizando la información que se introdujó con el módulo de opciones, se generan las rutinas de actualización de 1/0 para que el microcontrolador seleccione una por una las tarjetas y realice las operaciones de lectura o escritura correspondientes. Y por último, se copian al nuevo archivo las librerías, las cuales han sido previamente compiladas. 6.10 Conclusiones El software de desarrollo es la interface del CL-51 con el usuario. Mediante este programa el usuario puede editar, simular y compilar los diagramas de escalera. El software es amigable y no requiere que el usuario tenga conocimientos de lenguajes de programación, más que del RLD. El programa presenta ventajas importantes sobre su predecesor, principalmente en lo que respecta al editor, ya que este permite capturar y modificar los diagramas en una forma más eficiente. Cada uno de los módulos fue revisado detalladamente pero la parte en la que se puso más atención fue en el compilador, porque es la que es la más crítica. 62 Resultados R.1 Descripción del sistema El sistema del CL-51 está integrado por cuatro partes principales: Software de desarrollo Para capturar, simular y compilar el diagrama de escalera Programador de EPROMs Se utiliza para grabar el programa del controlador en la memoria Tarjeta de CPU En la que se instala la EPROM para que realice el procesamiento Interfaces de 1/0 Que se conectan al CPU con el sistema real En la figura R. l se muestra un esquema del sistema. Programador de EPROMs ..... Microcomputadora ' EPROM programada CPU Interface de 1/0 Figura R.1 En la tabla R. l se prsentan las características principales del CL-51 junto con las de otros PLCs pequeños disponibles en el mercado. 63 Tabla R.l Comparación del CL-51 con otros modelos comerciales Modelo CL-51 SLC-100 C20K FPC 202 F-20M Fabricante A-B OMRON FFSTO Mitsubishi Salidas 8 6 8 16 8 Entradas 8 10 12 16 12 1/0 Expandi ble 64 64 84 96 40 Relevadores internos 192 181 136 56 64 Contadores/temporizadores 24 32 48 16 16 Velocidad de barrido** 25us/inst 15ms lOus/inst * 45us/inst No. de instrucciones 32 16 49 * * Base de tiempo O.Is 0.1 s 0.1 s O.ls 0.ls Memoria** 15.8Kb 885words 1194words 8 Kb 320words Lenguaje RLD RlD RlD *** RLD/lista * Información no disponible ** Las unidades no se pudieron normalizar *** Se puede programar por acción, 'stepper' o nemocódigo R.2 Evaluación de las partes En este apartado se evalúan individualmente las partes del sistema que se consideran claves: 1) Algoritmos de codificación y evaluación de la escalera. A pesar de que los algoritmos obtenidos imponen ciertas restricciones en cuanto a la estructura de los escalones se considera que son eficientes. El método de codificación minimiza el espacio de memoria necesario para representar la escalera, mientras que el de evaluación ejecuta un número reducido de operaciones para evaluar a cada elemento. 2) Software de desarrollo. El programa cumple con sus funciones, es amigable y es eficiente, pero existen algunos detalles que se podrían pulir, como el desplegado de menús. 3) Compilador. Funciona bien y se considera que el código que genera es eficiente, ya que para cada elemento de la escalera se ejecuta un número reducido de instrucciones y por ello es que se tiene una buena velocidad de barrido. 4) Tarjeta de CPU. Funciona bien y se considera que con el CL-51 se obtiene el máximo provecho del hardware, ya que se optimizan los recursos del 8031. 65 R.2 Evaluación global Además de la validación de cada una de las partes del sistema, se realizó una prueba en manera conjunta de todo el sistema (Ver el Apéndice C) y por los resultados obtenidos se puede decir que el PLC funcionó bien. Lo único que resta, es diseñar un chasis que tenga las características para resistir al rudo ambiente industrial y someterlo a pruebas de resistencia térmica, humedad, vibración, durabilidad, etc. 66 Conclusiones El costo del material utilizado para el CPU es de aproximadamente $100,000 pesos ($33.33 U.S.D.) y el del programador $50,000 pesos ($16.66 U.S.D.). En la tabla R.l se puede observar que el CL-51 es competitivo con otros PLCs pequeños. Con base en lo anterior y en los resultados exitosos obtenidos en las pruebas, se puede afirmar que se cumplió plenamente con el objetivo de esta tesis. La principal limitación del sistema es que es relativamente rígido, ya que para introducir cualquier modificación al diagrama de escalera, se debe remover la EPROM, reprogramarla e insertarla de nuevo. Para eliminar este inconveniente se pueden hacer algunas modificaciones tanto al 'hardware' como al 'software' para que el PLC reciba los programas
Compartir