ABSTRACT
The fundamental part of this work consists in
the development of a program codified in Language C++, that accomplishes
The Logic Sequential Equations Translation to codes in language assembly,
is applied to the control of industrial processes. The booleans equations
resulting of specific problems are fed to the translator and this generates
in automatic form files with extensions "file.asm" that are applied directly
to the assembler, it being produced in this way files with extensions "file.bin",
"file.obj" and "file.hex". The files "file.bin" and "file.obj" are used
for the simulation by computer, With the files "file.hex" are programmed
electronic circuits, such as the PLC does. All the work of this translator
was designed guided to the chip INTEL 8748.
1. INTRODUCCIÓN:
Un PLC es un equipo que se utiliza en sistemas
de control automático, se programa con distintos algorítmos
para regular diversos procesos, funciona en base a operaciones de tipo
lógico, tales como operaciones AND, OR y NOT, cuenta además
con funciones tales como contadores y temporizadores [1].
Un PLC contiene; módulo de entrada, módulo de salida, memoria y CPU, por lo que no es muy diferente de una computadora, se clasifica como un sistema de uso específico.
En el mercado existe una gran variedad de PLC’S
que fabrican diversas compañías, pero sin importar el fabricante,
los PLC’s contienen la misma teoría básica de funcionamiento
siendo su principal diferencia la forma en que se programan, así
como su capacidad de entradas y salidas.
2. DESCRIPCIÓN DEL TRADUCTOR.
El trabajo global consiste de dos programas:
Un programa traductor de ecuaciones que se implementó
utilizando el lenguaje de programación Borland C++ [2], y un programa
para el microcontrolador que se implementa usando el lenguaje assembly
del MCS 8748.
Para realizar la programación se parte del diagrama de flujo que se muestra en la Figura 1, representa el algoritmo que se debe implementar en el microcontrolador.
Posteriormente se codifica esta información con los mnemotécnicos que representan las instrucciones del 8748 [3], una vez que se tiene la forma general del programa en ensamblador, se procede a realizar el traductor de ecuaciones.
En resumen los pasos requeridos para diseñar
los programas son:
Realizar el diagrama de flujo del algoritmo,
Codificar el diagrama de flujo en lenguaje assembly,
Simular en computadora la ejecución del
microcontrolador con algún simulador [4],
Programar al microcontrolador por medio de la
PC,
y pasar al impreso las ecuaciones obtenidas depositándolas
en un MCS.
![]() |
Como el puerto 1 se puede configurar para ser de entrada ó de salida, lo primero que hay que hacer es configurarlo para que sus 8 bits sean de entrada, esto se hace directamente con instrucciones del MCS 8748.
Se hace un mapa de memoria de entradas y salidas, para esto se utilizaron direcciones de la memoria RAM del MCS; para la imágen de las señales en el puerto de entrada se usaron las direcciones 10H - 17H, y para la imágen del puerto de salida las direcciones 20h - 27h.
Para hacer la tabla de imágenes de entradas y salidas se procede de la siguiente manera:
Se lee el puerto deseado, ya sea de entradas o de salidas, y el byte leído se descompone en cada uno de los bits que lo integran, guardando esos bits en las direcciones mencionadas anteriormente, ver la Tabla 1.
Ya que se tienen los bits individuales de cada estado de las salidas y las entradas, se pueden hacer las operaciones lógicas marcadas por las ecuaciones simplemente leyendo la entrada o salida correspondiente en la tabla de imágenes.
Al terminar de hacer las operaciones lógicas de la ecuaciones programadas, se actualiza la tabla de imágenes de las salidas y sigue el paso de mandar las salidas al puerto 2 del microcontrolador, por lo que se tiene que hacer una reconstrucción del byte de salida que representa la imagen de memoria.
Una vez que se realiza la reconstrucción del byte, se procede a mandarlo al puerto de salida P2, la corrida en tiempo real del programa consiste en un ciclo infinito que realiza las siguientes operaciones:
Leer los puertos de entrada y salida,
Separar los bits de cada puerto,
Hacer las operaciones indicadas en las ecuaciones,
Reconstruir el byte de salida,
Mandar la salida al puerto 2,
Repetir los pasos anteriores.
| Imagen | Dirección | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
|
|
Bit | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 |
| Imagen | Direccion | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| Salidas | Bit | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 |
A continuación se presenta
el programa general en ensamblador del Compilador de Ecuaciones Lógicas
Secuenciales con su "encabezado", y su "cola de archivo" que siempre van
en todos los programas, en la parte intermedia se depositan las operaciones
lógicas como resultado del traductor.
| main:
init inicia: leepts: ciclo: |
cpu "8048.tbl"
hof "int8" org 0000h call inicia call lee_pts call ops call sal jmp init mov a,#00h outl p1,a outl p2,a ret in a,p1 mov r0,a mov r1,#10h mov r2,#08h anl a,#01h mov @r1,a mov a,@r0 |
ci
clo2: sal: |
anl a,#01h
mov a,r0 rr a mov r0,a inc r1 djnz r2,ciclo in a,p2 mov r0,a mov r1,#20h mov r2,#08h anl a,#01h mov @r1,a mov a,r0 rr a mov r0,a inc r1 djnz r2,ciclo2 ret mov r0,#20h |
recons:
reco: |
mov r2,a
mov r1,#21h mov r5,#07h mov r3,#01h mov a,r3 mov r4,a mov a,@r1 anl a,#01h rl a djnz r4, reco orl a,r2 mov r2,a inc r3 inc r1 djnz r5, recons mov a,r2 outl p2,a ret |
ops:
;Subrutina que ejecuta las ecuaciones, donde se depositan
todas las operaciones lógicas de las;ecuaciones.
ret
COLA DEL ARCHIVO
BIBLIOGRAFICAS