Logo Studenta

CEM337224

¡Este material tiene más páginas!

Vista previa del material en texto

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

Continuar navegando