Post on 26-Nov-2021
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 de la 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ándar y 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 instrucciones5
• 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 con estas
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 Propuesto
Sistema Convencional
Programador
PLC
Figura 3.1
~ ~
Microcomputadora
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 los microcontroladores 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 un registro 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 baja de 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 34 ADS 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 estructura de
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 a
través del puerto serial y los almacene en una RAM. Por otra parte, si se
desea diseñar un PLC más poderoso, se debe utilizar un microcontrolador
de 16 bits, lo cual implicaría re-escribir las librerías y modificar el
compilador.
Las características del CL-51 lo hacen ideal para que los fabricantes de
máquinas lo utilizen como controlador en los equipos que fabrican. Las
ventajas del CL-51 sobre un controlador de relevadores son: menor
tamaño, 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 el CL-51
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
67
prototipo deseado.
Con el presente desarrollo se aplicó exitosamente la tecnología de los
microcontroladores, la cual permite desarrollar aplicaciones poderosas y
de bajo costo. Otro aspecto importante, es que se obtuvo el conocimiento
de cómo funciona un PLC, y esto representa una sólida base para realizar
diseños posteriores más ambiciosos.
68
Apéndice A
Manual de programación
A.1 Lenguaje de programación
Para programar el PLC se utilizan diagramas de escalera (llamados así por
su apariencia), los cuales están orientados al manejo de variables
booleanas. Un escalón consta de uno o varios elementos conectados de tal
forma que representan una condición, como se muestra en la figura A.1.
Si al substituir el valor de los elementos del escalón se tiene por lo menos
un camino de "unos" desde la línea de la izquierda hasta el último
elemento, entonces el valor resultante del escalón es 1 y si no su valor es
O.
Escalón 1
Escalón 2
Escalón 3 A B E
Figura A.1
A.1.1 Instrucciones lógicas de entrada
Las instrucciones lógicas de entrada CONTACTO NORMALMENTE ABIERTO
y CONTACTO NORMALMENTE CERRADO se utilizan para definir las
condiciones de los escalones.
69
--l f- B: booleana
B
""*- B: booleana
B
Su valor es igual al valor de B
Su valor es igual al valor negado de B
Las instrucciones de TRANSICION, TRANSICION HACIA ARRIBA y
TRANSICION HACIA ABAJO sirven para detectar cambios en el valor de
alguna variable.
-Ur B: booleana Vale 1 cuando B cambia de valor
B y O cuando B conserva su valor
-,fr B: booleana Si B cambia de O a 1 vale 1
B y si no vale O
-,1r B: booleana Si B cambia de 1 a O vale 1
B y si no vale O
A.1.2 Estructura del escalón
El algoritmo de evaluación utilizado requiere que la estructura de los
escalones cumpla con las siguientes reglas.
1 ) Todas las ramas deben tener un extremo conectado a la línea de alimentación de la izquierda.
2) El extremo derecho de cada rama debe ir conectado al primer renglón.
3) No deben existir cruces entre las líneas de conexiones.
Las reglas anteriores permiten manejar estructuras como la que se
muestra en la figura A.2.
70
[:T HH-H---__.
Figura A.2
Algunos escalones que, como los de la figura A.3(a), no cumplen con las
reglas de estructura se pueden adaptar mediante el reacomodo de sus
elementos o la descomposición de alguna de sus ramas como se muestra
en la figura A.3(b).
E
(a)
H
e ~, E D
(b)
Figura A.3
71
A.1.3 Instrucciones lógicas de salida
Las instrucciones lógicas de SALIDA y SALIDA NEGADA sirven para
asignar valores a las variables booleanas.
-Q- B: booleana
B
-0- B: booleana
B
Asigna el valor resultante del escalón a B
Asigna el valor negado del resultante del escalón a B
Las instrucciones de LA TCH y UNLA TCH sirven para hacer asignaciones
retentivas.
-{L)- B: booleana
B
-{ u)- B: booleana
B
Si el resultante del escalón es 1 asigna un 1 a B, si no la deja con su valor anterior
Si el resultante del escalón es 1 asigna un O a B, si no la deja con su valor anterior
Esta versión de RLD permite que se conecten varias salidas en paralelo,
para que con un solo escalón se puedan hacer varias operaciones, como se
muestra en el ejemplo de la sección A.1.8.
A.1.4 Registros
Además de las variables binarias, los diagramas de escalera manejan otro
tipo de variable llamado registro, el cual permite representar a un entero
entre O y 16383.
72
La instrucción MOV se usa para asignar un valor a un registro.
Rl: registro o valor
R2: registro
Si el resultante del escalón es 1 entonces R2= R 1
La instrucción de RST sirve para igualar a cero el valor de un registro.
11--RS-R~-1 Rl: registro
A.1.5 Operaciones aritméticas
Si el resultan te del escalón es 1 entonces Rl= O
Para sumar el valor de dos registros o un registro con una constante se
utiliza la instrucción ADD.
- ADD - R 1: registro Si el resultante del escalón es 1
Rl o valor entonces R3= Rl+R2 R2: registro
R2 R3: registro
R3
SUB sirve para restar el valor de un registro a otro o el valor de un
registro a una constante. Si se desea restar a una constante el valor del
registro, se debe hacer la operación al revés y luego restar el resultado a
cero.
- SUB ~
Rl
R2
R3
RI:
R2: R3:
registro o valor registro registro
73
Si el resultante del escalón es 1 entonces R3= R l-R2
A.1.6 Temporizadores
Los temporizadores se usan para medir o co_ntrolar intervalos de tiempo.
Cuando un temporizador está activo disminuye su valor en 1 cada décima
de segundo y se detiene al llegar al cero. Si el valor del temporizador es O
se utiliza un 1 para evaluar la parte restante del escalón, ignorando los
elementos que están a su izquierda.
1 1 TCN Rl: registro Si el resultante del escalón es
Rl Rl se activa como temporizador. Tiene un valor de 1 si el registro vale o.
1 TCF 1 Rl: registro Si el resultante del escalón es o Rl Rl se activa como temporizador.
Tiene un valor de 1 si el registro vale O.
A.1.7 Contadores
Estas instrucciones se utilizan para contar las ocurrencias de un evento.
Su manejo es similar al de los temporizadores, pero con la diferencia de
que no se detienen cuando llegan al cero.
i CDN 1 Rl: registro Si el resultante del escalón
Rl tiene una transición de O a 1 se disminuye en 1 el valor de RI. Tiene un valor de 1 si el registro vale O.
i CUP 1 Rl: registro Si el resultante del escalón
Rl tiene una transición de O a 1 se aumenta en 1 el valor de RI. Tiene un valor de 1 si el registro vale O.
74
Es importante que no se usen CUP y CON con una misma variable porque
entonces el PLC no podrá detectar las transiciones y llevará una cuenta
incorrecta.
A.1.8 Cómo cargar un temporizador o un contador
Para cargar un temporizador o un contador se utiliza la instrucción MOV
como se muestra en el ejemplo de la figura A.4.
IJI' ,L! A'I
LOAD LOAD
- MOV -600
TIMER
- MOV -100
CDNfADOR
FiguraA.4
A.1.9 Instrucciones de comparación
Estas instrucciones permiten comparar el valor de un registro con otro
registro o con una constante.
~ t=it=j
R l: registro o valor
R2: registro
75
Vale l si Rl=R2
A.1.10 Subrutinas
R 1: registro o valor
R2: registro
R 1: registro o valor
R2: registro
Vale 1 si Rl<R2
Vale 1 si Rl>R2
Las instrucciones de subrutinas permiten estructurar los diagramas de
escalera y dividirlos en partes más pequeñas.
1 CALL 1 SI: subrutina Si el resultante del escalón es 1 salta a la subrutina
Sl
1 SBR 1 SI: subrutina Indica el inicio de la subrutina
Sl
1 REr ~ Regresa al escalón que esta después de aquel en el que se llamó a la subrutina
A.1.11 Secuenciación utilizando subrutinas
En la figura A.5 se muestra una forma de hacer secuenciación llamando a
subrutinas.
76
- IQ H CALL 1-1 1 X 1
FSTADO
- IQ H CALL 1-2 1 y 1
FSTADO
- IQ H CALL 1-3 1 z 1
FSTADO
1 END 1--1
1 SBR 1-1
1 X 1
~ L~ 01
, u~ 02
\ ,L, 03
'RET ~
Figura A.S
A.1.12 MCR
La instrucción MCR sirve para proteger el sistema cuando se presenta una
situación de emergencia.
77
/ 1 MCR ~ Si el valor del escalón es 1, en los
escalones siguientes las salidas de relevador se hacen O, las de relevador negado 1 y las otras instrucciones finales no se ejecutan
Cancela el efecto del MCR
A.1.13 Fin
La instrucción END se utiliza para indicar el fin de la escalera.
Indica el fin de la escalera
A.1.14 Reglas de sintaxis de la escalera
La escalera debe cumplir con las siguientes reglas de sintaxis:
1) Debe de llevar un END. 2) No se pueden manejar subrutinas anidadas. 3) Un bloque de MCR debe empezar y terminar en la misma
subrutina o en el programa principal.
A.2 Instructivo del software de desarrollo
Para capturar los diagramas de escalera se utiliza un programa que corre
en IBM-PS, el cual se llama desde el sistema operativo con el nombre de
CL_5 l. En el renglón superior aparece el menú principal con los diferentes
módulos del programa:
Archivos Editor Simulación Opciones Programación
78
A.2.1 Módulo del editor
Este módulo se utiliza para la captura y edición del diagrama de escalera.
Permite al usuario moverse por la escalera, editar, insertar y borrar
escalones. Así mismo, cuenta con funciones de búsqueda y edición de
bloques para facilitar el trabajo al usuario.
Una numeración es utilizada para identificar a los escalones y poder hacer
referencia a ellos en caso de detectar errores. El manejo de esta
numeración es llevado automáticamente por el editor y el usuario no
debe preocuparse por ella.
Los comandos que se pueden utilizar en escalón son los siguientes:
Flecha arriba Flecha abajo Flecha derecha PGDN PGUP ENI'ER INS
DFI... ESC "KB "KK "KC
"KV
Mueve el cursor al escalón anterior Mueve el cursor al escalón siguiente Entra al modo de edición de escalones Mueve la ventana y el cursor hacia abajo Mueve la ventana y el cursor hacia arriba Entra al modo de edición de escalones Insena un escalón antés de aquel al que apunta el cursor Borra el escalón al que apunta el cursor Regresa al menú principal Marca el inicio del bloque Marca el final del bloque Copia el contenido del bloque antes del escalón al que apunta el cursor Mueve el bloque antés del escalón al que apunta el cursor Borra el bloque Apunta el cursor al primer escalón del diagrama Apunta el cursor al último escalón del diagrama Apunta el cursor al escalón cuyo número se le indique
79
A.2.2 Editor de escalones
Este modo es utilizado por el usuario para colocar los elementos que
componen al escalón e indicar sus conexiones. El usuario se puede mover
por toda la pantalla y utilizando las siguientes teclas puede colocar y
quitar los elementos.
INS
DEL ENTER
Presenta un submenú para colocar un elemento en la posición del cursor Desplaza los elementos a la derecha del cursor una posición para poder insenar un nuevo elemento Borra el elemento en la posición del cursor Concluye la colocación de elementos y pide las conexiones de las ramas en paralelo Sale del editor de escalones abonando las modificaciones que se habían hecho al escalón
Para hacer más eficiente la captura de los diagramas se programaron las
teclas de funciones para que cada una llame a uno de los elementos y así
no tener que usar los menús que aparecen con "E. A continuación se
presenta una tabla con el elemento asignado a cada tecla.
Tabla A.l Asignación de teclas de funciones
Fl - NO Alt Fl - TON Ctrl Fl - CALL F2- NC Alt F2 - TOF Ctrl F2 - RET F3 - TRUP Alt F3 - CUP Ctrl F3 - SBR F4 - TRDN Alt F4 -CDN Ctrl F4 - END F5 - OUT Alt F5 - EQ Ctrl F5 - MCR F7 - NOUT Alt F6 - GT Ctrl F6 - MENO F6 - LATCH Alt F7 - LT F8 - UNLATCH Alt F8 - MOV Ctrl F8 - RST F9 - TRANS Alt F9 - ADD
Alt FIO- SUB
80
Durante la definición de un elemento el editor pide uno por uno los
argumentos que sean necesarios. Cuando se terminan de colocar los
elementos, el editor revisa que haya por lo menos un elemento final y
que se encuentre o encuentren en la última columna. En caso de encontrar
algún error se avisa al usuario para que lo corrija.
Después de haber colocado los elementos, se indican las conexiones de las
ramas en paralelo, una por una, utilizando las flechas de izquierda y
derecha para mover la línea que indica la conexión.
A.2.3 Módulo de simulación
La función de este módulo es verificar la ejecución del programa en la
microcomputadora antes de grabarlo en la EPROM.
Al iniciar la simulación se revisa la sintaxis de la escalera y si se detecta
alguno de los errores de la tabla A.2 el usuario es avisado de la línea en la
que se presentó el problema para que regrese al editor y lo corrija.
Tabla A.2 Errores de Sintaxis
Error 1: Error 2: Error 3: Error 4: Error 5: Error 6:
Se esperaba END Se esperaba RET Llamada a SBR no válida Se esperaba MCEND MCR no válido MCEND no válido
La pantalla de simulación se encuentra dividida en cinco columnas, las
tres de la derecha son para variables binarias y las otras dos para
81
variables del tipo registro. El usuario puede desplazar el cursor por la
pantalla utilizando las flechas y para poner el nombre de alguna variable
debe utilizar <ENTER>. El programa está validado para aceptar solamente
las variables que aparezcan en el diagrama o que se hayan asignado a los
puertos de 1/0.
La información que aparece en la pantalla es el nombre de la variable, su
valor, y en el caso de registros, se indica si se trata de un timer o contador
y su estado. El usuario unicamente puede modificar los valores de las
variables binarias, y para ello, debe colocarse en la posición de la variable
y teclear 1 ó O. Esta operación sólo se debe hacer con las variables de
entrada, ya que es con las únicas que tiene sentido hacerlo.
Para hacer un barrido de la escalera se debe teclear "S. Es importante
destacar que debido a la forma en que se maneja la lectura de los puertos
de 1/0, los valores de entrada no son registrados en el barrido en el que
se realizaron sino hasta el siguiente.
La actualización de los registros de temporizador se realiza cada cuatro
barridos. Aunque esto no corresponda necesariamente con el tiempo real
del barrido, es conveniente para la simulación, ya que así el usuario no
tiene que esperar una gran cantidad de barridos para poder observar que
es lo que pasa con los temporizadores.
82
A.2.4 Módulo de opciones
Este módulo se utiliza para indicar al programa de que tipo son las
tarjetas de 1/0 conectadas a los 8 puertos del PLC, así como las variables
asignadas a cada una de ellas. Tambíen en este módulo se incluyen las
opciones para guardar· y cargar configuraciones, ya que estas, podrían
variar entre un PLC y otro.
El modúlo tiene las siguientes opciones:
Asigna Configura Carga configuración Guarda configuración
Entra al modo de asignación Entra al modo de configuración Carga una configuración del disco Guarda la configuración actual en disco
En el modo de asignación se indica la correspondencia entre las variables
del diagrama de escalera y los puertos físicos del PLC. En la pantalla
aparecen los ocho puertos que maneja el CL-51 y el cursor se puede
mover por ellos utilizando las flechas. Para asignar variables a un puerto
se presiona <ENTER> y aparece un nuevo cursor dentro de ese puerto. El
nuevo cursor se puede desplazar hacia arriba o hacia abajo y para asignar
una variable a un punto de 1/0 determinado del puerto se debe presionar
<ENTER> y luego indicar el nombre de la variable. Con <ESC> se regresa al
cursor que se mueve entre los puertos y para salir al menú principal se
debe presionar otra vez <ES C > , que en este caso no aborta las
modificaciones realizadas.
83
El modo de configuración se utiliza para indicar al programa a que
puertos y de que tipo son las tarjetas de 1/0 conectadas al PLC. Para
identificar cada tarjeta se utiliza un código de tres dígitos, de los cuales el
primero es el número del puerto y los otro dos se seleccionan de acuerdo
a la tabla A.3.
Tabla A.3 Tipos de tarjetas de 1/0
O O Entrada digital 1 O Salida digital O 1 Entrada analógica 1 1 Salida analógica
Al entrar a este modo aparece un cursor que puede ser desplazado por el
usuario utilizando las flechas de arriba y abajo. Para modificar o ingresar
el código de un puerto se usa <ENTER> y para regresar al menú principal
se utiliza <ESC>.
A.2.5 Módulo de programación
Este módulo tiene por objeto generar el archivo de código ejecutable * .OBJ,
el cual se utiliza para programar la EPROM.
Para ejecutar este módulo basta con llamar a la opción programar desde
el menú pricipal.
A.2.6 Módulo de Archivos
Se utiliza para cargar, guardar, crear un nuevo archivo o salir del
programa.
84
Un diagrama de escalera requiere de la generación de varios archivos
para almacenar la codificación de la escalera, las variables en la pantalla
de simulación y las variables asignadas a los puertos de 1/0. Las
terminaciones de los nombres de los archivos son asignados
automáticamente por el programa.
El módulo contiene un submenú con las siguientes opciones:
Carga Guarda
Nuevo Salir
Carga a la memoria un archivo del disco Guarda en el disco el archivo que se tiene en memoria Borra el diagrama contenido en la Sale del programa y regresa operativo
85
memoria al sistema
Apéndice B
Material y equipo utilizado
El equipo utilizado para la realización del presente trabajo de tesis se
puede clasificar en 4 grupos:
8.1 Equipo de cómputo y software:
2 Microcomputadoras IBM PS/2
Turbo Pascal
Ensamblador
Simulador
modelo 30 286
versión 5.0
A51
Avsim51
8.2 Equipo electrónico de medición y programador
Oscilospio
Multímetro digital
Programador universal
1 Probador lógico
1 Fuente de poder
Lámpara de luz ultravioleta
2 Tablillas de prueba
86
Tektronix 2235
DL-100
JE680
B.3 Equipo de fabricación de circuitos impresos
B.4
1 Cámara fotomecánica
1 Fresadora de CNC
Película y químicos de revelado
Photoresist
Cloruro férrrico
Proceso de estañado en frío
Baquelitas
Componentes
.2 Microcontrolador de 8 bits
3 EPROM de 16 Kbytes
5 Latches
Regulador
Cristal
Cristal
1 Capacitor
2 Capacitores de
3 Capacitores de
4 Bases de circuitos impresos
87
Kromatic
Maho-400
Ultratech
8031
27128
74LS373
7805
12 MHz
6.144 MHz
2200 uF
50 pF
100 nF
Apéndice C
Validación del sistema
Para la validación del sistema completo se realizó una prueba con el
sistema neumático que consta de 3 pistones, 3 electroválvulas y 6
interruptores de posición, como se muestra en el diagrama de bloques de
la figura C.l.
Figura C.1
La prueba consistió en hacer que el sistema ejecutara una secuencia
definida de movimientos. Para ello se implementó una tarjeta de 1/0,
cuyas etapas de (a) entrada y (b) salida se muestran en la figura C.2.
+SV
__ ¡ ~PI
Interruptor
e---¡
+18V
+SV
Figura C.2
88
Utilizando el software de desarrollo, se capturó el diagrama de escalera,
se verificó con el simulador y se generó el código. Con el programador y
su software se grabó una EPROM, la cual se instaló en el CPU. Se conectó la
tarjeta de 1/0 entre el sistema neumático y el CPU. La prueba resultó un
éxito
89
Apéndice D
Funcionamiento del 'bus' de 1/0
En el modo de 1/0 multiplexado, el puerto 1 del microcontrolador se
utiliza como un 'bus' de 1/0 y el puerto 3 como selector de tarjetas, como
se muestra en la figura D.l. Con este modo es posible manejar hasta 8
tarjetas, cada una de ellas con 8 señales, permitiendo un máximo de 64
señales de 1/0. Una ventaja importante de este modo de manejo de los
puertos es que el CL-51 se puede configurar para que maneje cualquier
combinación de tarjetas de entrada y de salida.
1/0 Bus u--,-~~-..~~~~..-~~~-..~~~
Figura D.1
D.1 Escritura a una tarjeta
El procedimiento para escribir es el siguiente (figura D.2):
1 ) Se pone el dato en el 'bus' de 1/0 2) Se enciende un bit del selector para que el 'latch' deje
pasar el dato del 'bus' a la salida. 3) Se apaga el bit para que el 'latch' retenga el dato.
90
1/0 bus
CE
CE
Salida
Figura D.2
D.2 Lectura de una tarjeta
Para leer se sigue el siguiente procedimiento (Figura D.3):
1) Se enciende un bit del selector para que el 'latch' retenga el valor que está en la entrada y lo deje pasar al 'bus'.
2) Se hace la lectura del 'bus'. 3) Se apaga el bit para poner la salida del 'latch' en tercer
estado.
Entrada=
CE
CE
Figura D.3
91
Apéndice E
Programador de EPROMs
Durante la mayor parte del desarrollo de esta tesis se utilizó un
programador universal, el cual se puede utilizar para EPROMs, GALs,
microcontroladores, etc. 42 . Sin embargo, ésta no es una alternativa
conveniente desde el punto de vista económico, ya que el costo del
programador universal es más alto que el del propio CL-51. Por lo tanto
se decidió implementar un programador, también de bajo costo, especial
para memorias 27128.
El programador utiliza unicamente tres 'latches', los cuales reciben del
puerto paralelo de la PS un byte y tres seilales de control. En un 'latch' se
coloca el dato, en otro la parte baja de la dirección y en el último la parte
alta y las señales de PGRM y OE, como se muestra en la figura E. l.
Puerto Paralelo
Figura E.1
92
Selector
Además del hardware, también fue necesario hacer un programa en
Pascal. Este programa lee un archivo que contiene al programa en formato
Intel Hex y se encarga de enviar por el puerto paralelo todas las señales
necesarias para programar la EPROM.
93
Apéndice F
E18031
En la tabla F. l se presenta un listado con las características principales de
la familia del 803143.
Tabla F.l Características de la familia MCS-51
El 8051 es el miembro original de la familia MCS® -5 l, y es el núcleo de todos los dispositivos MCS-51. Las características del núcleo 8051 son:
CPU de 8 bits optimizado para las aplicaciones de control. Capacidades extensivas de procesamiento Booleano. 64K de espacio de direcciones de Memoria de Programa. 64K de espacio de direcciones de Memoria de Datos. 4K bytes de memoria de programa dentro del chip. 128 de RAM de Datos dentro del chip. 32 lineas de 1/0 bidireccionables e individualmente accesables. Dos timers/contadores de 16 bits. UART full duplex. Estructura de interrupciones de 6-fuentes/5-vectores con dos niveles de prioridad. Oscilador de reloj dentro del chip.
El diagrama de bloques funcionales, figura F. l, muestra los elementos que
componen al 803144.
En la figura F.2 se muestra la función de cada una de las patas del 8031 45 .
94
EXTERNAL INTERRUPTS
CPU
ose
4K ROM
BUS CONTROL
PO
128 BYTES RAM
P2 PI
ADRESS/DA TA
Figura F.1
P3
SERIAL PORT
TXD RXD
}COUNTE INPUTS
PI.O Vcc Pl.l PO.O ADO Pl.2 PO.! AD! Pl.3 P0.2 AD2 Pl.4 P0.3 AD3 Pl.S P0.4 AD4 Pl.6 P0.5 AD5 Pl.7 P0.6 AD6 RSf P0.7 AD7
RXD P3.0 EA/V.u...._ TXD P3.1 ALE/PROG
INTO P3.2 PSEN iÑTi P3.3 P2.7 A15
TO P3.4 P2.6 Al4 TI P3.5 P2.5 A13
WR P3.6 P2.4 Al2 Rñ P3.7 P2.3 Ali
XTAL2 P2.2 AIO XTALI P2.l A9
Vss P2.0 A8
Pin (DIP)
Figura F.2
En la figura F.3 se muestran los nemónicos del conjunto de instrucciones
de la familia MCS-5146 •
Aritméticas Transterencia Lógicas Booleanas de datos
ADD ANL ANL ADOC MOV ORL ORL SUBB PUSH XRL MOV INC POP CLR CLR rEC XCH CPL SEIB MUL XOID RL CPL DIV RLC JC DA Saltos RR JNC
incondicionales RRC JB Saltos SWAP JNB condicionales JMP
CALL RAM Tablas de JZ RET externa búsqueda JNZ RETI DJNZ NOP M:>VX MOVC CINE
Figura F.3
96
Apéndice G
Fabricación de circuitos impresos
utilizando tecnologías de CAD/CAM
Para el desarrollo de la tesis se requirió de algunas tarjetas electrónicas,
las cuales fueron hechas en las instalaciones y con el equipo de los
laboratorios de la División de Graduados e Investigación (DGI) del
ITESM-CEM.
G.1 Diseño Asistido por Computadora
Para el diseño de los circuitos impresos se utilizó un paquete para PS
llamado Tango. Aunque la versión utilizada no ofrece las facilidades de
colocación de componentes y ruteo automáticos, permite:
- Obtener impresiones en papel del ruteo, las cuales se utilizan para sacar los negativos.
- Generar archivos de redes * .NET, que se utilizan para verificar las conexiones.
- Generar archivos de CNC • .TXT, los cuales se utilizan para perforar las tarjetas.
G.2 Manufactura Asistida por Computadora
A pesar de que el Tango permite generar un archivo de control numérico,
éste tiene un formato diferente al que utiliza la fresadora Maho modelo
MH-400 del Laboratorio de Manufactura Flexible de la DGI. Por ello, como
un proyecto independiente a la tesis, se escribió un programa, que a
97
partir del archivo obtenido con el Tango, genera un nuevo archivo de tipo
texto con el programa de CNC en el formato de la Maho.
Dicho programa lee la coordenada de cada perforación, convierte las
unidades, cambia los ejes y llama a un ciclo de barrenado G-81. Las
conversiones son necesarias porque el Tango trabaja el plano XY y maneja
las distancias en milésimas de pulgada, mientras que en la Maho se
trabaja en el plano XZ y en micras. Además de las instrucciones para el
taladrado, el programa agrega líneas para definir la ventana de la
simulación, cambios de herramienta, velocidad de avance y velocidad de
rotación del husillo principal. A continuación se muestra un fragmento de
un archivo generado por el programa.
N555005 Nl 018 N2 054 N3 098 X-2 Y-5 Z-5 1204 J7 K304 N4 099 XO Y-1.7 ZO 1200 Jl.7 K300 N5 S3150 TOl N6 095 F0.12 N7 GOXOY3ZO NS 081 Yl.5 Z-4.5 M3 N9 079 X54.610 YO Z27.940 NlO 079 Z30.480 Nl 1 079 Z33.020
Las dos ventajas del taladrado de circuitos impresos por control numérico
son: mayor rapidez en el desarrollo de prototipos y mejor calidad de las
tarjetas (tanto dimensional como en el acabado de la superficie).
Se hace mención a este proyecto porque en cierta forma se puede
considerar como un antecedente de la presente tesis, ya que su función
98
también es generar código ejecutable a partir de una codificación.
G.3 Procesos químico y fotográfico
La parte restante del proceso para obtener los prototipos se realizó en el
Laboratorio de Electrónica Avanzada de DGI y consta de los siguientes
pasos.
1) Utilizando un 'plotter' se imprime el diseño en una escala de 1.3: 1 sobre una hoja de papel albanene.
2) Con la cámara fotomecánica se saca un negativo del dibujo reduciéndolo en un 77%.
3) Con el negativo se graban las pistas en una tarjeta previamente perforada y sensibilizada con Photoresist.
4) Para remover el exceso de cobre, la tarjeta se ataca químicamente con cloruro férrico.
5) La tarjeta se somete a un proceso de estallado en frío. 6) Se ensamblan y se sueldan los componentes. 7) Se veririfica que la ta jeta funcione correctamente.
99
Bibliografía
1 Dorf, Richard C. lnternational encyclopedia of robotics, John Wiley,
USA, 1988, p. 105 2 cf. (1), p. 1187 3 NEMA 4 cf. (1) p. 1190 5 Gayman, David J. "An old favorite gets new standards",
Manufacturing Engineering, Vol. 100, No. 1, 1988 .. p. 57 6 Sugiyama, Hiro et al. "A sequential function chart (SFC)
language for batch control", ISA Transactions, Vol. 29, No. 2, 1990, p. 63
7 cf. (10), p. 57 8 Groover, Mikell P. et al. Automation, production systems, and
computer integrated manufaturing, Prentice Hall, Englewood Cliffs, NJ, USA, 1987, p. 666-667
9 Johnson, Cunis D. Process control instrumentation technology, Jo h n
Wiley, Singapore, 1988, p. 327-328 1 O Schildt, Herbert. Turbo C: the complete reference, Berkeley,
CA, USA, 1988, p. 770-778 1 1 Krutz, Ronald L. Interfacing techniques in digital design: with
emphasis on microprocessors, John Wiley, Singapore, 1988, p. 156-158
12 nose 13 Allen-Bradley. Bulletin 1745 User's Manual SLC 100
Programmable Controller, 1981, p. 7-1 14 OMRON Electronics Inc. Sysmac C20klC28K/C40K
programmable controllers, p. 11 1 5 FESTO. Programa de fabricación, p. 70 16? 17? 1 8 Uffenbeck, John. The 8086/8088 family: design, programming,
and interfacing, Prentice-Hall, Englewood Cliffs, NJ, USA, 1987, p. 21-22
1 9 ibid, p. 107 2 O Intel. 8-bit embedded controller handbook, Santa Clara, CA,
USA, 1989, p. 5-2 2 1 Texas instruments. TMS 370 family data manual, USA, 1990,
p. 2-3
100
22 Motorola. Single-chip microcomputer data, Austin, Texas, USA, • 1984, p. 1-11
2 3 National Semiconductor. Semiconductor master seletion guide 1990, Santa Clara, California, USA, 1990, p. 9-8
2 4 Belove, Charles. Handbook o/ modern electronics and electrical engineering, John Wiley, Hauppauge, NY, USA, 1986, p. 2231
2 5 Gilmour, Peter S. "How to select tools for microcontroller software", IEEE Spectrum, Vol. 28, No. 2, p. 37, 1991
2 6 cf. (38), p. 5-6 2 7 cf. (38), p. 5-2 2 8 cf. (10), p. SS 2 9 cf. (24), p. 3-13 3 O OMRON Electronics Inc. Sysmac-C20 programmable controller,
p. 13-15 31 cf. (1), p. 1195 3 2 Zapolin, Richard E. "RISC programmable controllers can bring
programability down to low-end remote si tes", J S A Transactions, Vol. 29, No. 2, 1990, p. 84
3 3 Keskar, P. Y. "Structured approach in PLC programming for water/wastewater applications", ISA Transactions, Vol. 29, No. 2, 1990, p. 53-56
3 4 Kern, Allan G. "Batch automation in a PLC: software design is the key", ISA Transactions, Vol. 29, No. 2, 1990, p.35-42
3 S cf. (51), p. 85 3 6 cf. (38), p. 5-4 3 7 cf. (38), p. 5-11 3 8 cf. (38), p. 5-13 3 9 HiTech Equipment Corporation. 8031 DrylCE user's manual,
San Diego, CA, USA, 1989, Apéndice D. 4 O Swan, Tom. Mastering Turbo Pascal 5.5, Hyden books, third ,
edition, USA, 1990, p. 413 41 Wood, Steve. Using Turbo Pascal 5, McGrawHill, Berkeley, CA,
USA, 1989, p.139 4 2 cf. (61), p. 19-20 43 INTEL 44 INTEL 45 INTEL 46 INTEL
101