logotipo

img_google
Ejemplos de Programación.

 PROYECTO DE AUTOMATA PROGRAMABLE  DE 8 E/S
        BASADO EN EL PROCESADOR PIC 16F84

 Autor: Juan Manuel Rodríguez


Esquemas
Circuitos impresos Fotos del PLC montado Software
Sistema Operativo Instrucciones PLC Links  Home 

 

Ejemplo de programación   Vamos a estudiar paso a paso que sucede internamente con los registros del procesador al
ejecutar instrucciones del PLC. y comentar como funciona la pila de tres niveles tipo LIFO
(Last in first out, ultimo valor en entrar primer valor en salir ) que necesitamos para almacenar
valores de operaciones intermedias.

Las lineas de texto de programa PLC que definen esta rama son:

LD        E0,0
AND     E0,1
LD        E0,2
AND     E0,3
ORLD
AND    E0,4
OUT    S0,0

Esta estructura se divide en cinco operaciones:

1º Resolver la serie de contactos E0,0 y E0,1
2º Resolver la serie de contactos E0,2 y E0,3
3º Resolver el paralelo de las dos series anteriores
4º Resolver la serie del contacto E0,4 con el resultado del paralelo anterior
5º Pasar el resultado de las operaciones anteriores a la salida S0,0

Al arrancar el sistema operativo del PLC se inicial izan todos los registros y después
se ejecutan secuencialmente las instrucciones tipo PLC. Todas las operaciones
aritméticas se realizan sobre el registro acumulador W y quedan almacenadas en el.

 
REGISTRO INICIO PASO_1 _PASO_2_ PASO_3 _PASO_4_ PASO_5 _PASO_6_ _PASO_7_
TEMP 0 0 0 0 0 0 0 0
PILA1 0 0 0 W W 0 0 0
PILA0 0 W W AND1 AND1 W W W
W W E0,0 AND1 E0,2 AND2 OR 1+2 OR 1+2 SALIDA
RESET LD E0,0 AND E0,1 LD E0,2 AND E0,3 ORLD AND E0,4 OUT S0,0
 
Paso 1 : La instrucción LD E0,0 no realiza ninguna operación aritmética, en primer lugar
salva el contenido de W en el registro PILA0 moviendo el contenido de los registros de la
pila una posición hacia arriba, como vemos el contenido del registro TEMP de la pila
se pierde. Después carga en W el valor del contacto E0,0.

Paso 2 :La instrucción AND E0,1 realiza la multiplicación lógica entre el contacto
E0,1 y W. Como en W teníamos el contacto E0.0 el resultado que queda es
W = (E0,0 * E0,1) que a lo largo de este ejemplo lo llamaremos AND1.

Paso 3 : El resultado del la serie resuelta en el paso 2 es necesario guardarlo de alguna
manera y de esto se encarga la instrucción LD E0,2 que sin hacer ninguna operación aritmética
mueve el contenido de la pila una posición arriba guardando el resultado anterior AND1 en el
registro PILA0, el valor del registro TEMP de la pila como vemos se vuelve a perder. Después
de salvar el resultado anterior carga en W el valor de contacto E0,2.

Paso 4 : La instrucción AND E0,3 realiza la multiplicación entre W =( E0,2 ) y el contacto
E0,3 quedando el resultado en el acumulador W=( E0,2 * E0,3 ) a este resultado lo llamaremos AND2.

Paso 5 : En este punto de la ejecución tenemos en el registro PILA0 el resultado de la primera
serie de contactos (E0,0 * E0,1) y en W el resultado de la segunda serie (E0,2 * E0,3).
La siguiente instrucción ORLD realiza la suma lógica entre los registros PILA0 y W quedando
el resultado que llamaremos "OR 1+2" en W=[(E0,0 *E0,1)+(E0,2 * E0,3)] y a su vez mueve
el contenido de la pila una posición hacia abajo, como vemos tenemos guardados en la pila
los valores originales del registro W y de PILA0 perdiendo el contenido original del registro
PILA1 y TEMP.

Paso 6 : AND E0,5 realiza la multiplicación de todas las operaciones anteriores
( OR 1+2 que esta en W ) y el contacto E0,5 quedando este ultimo resultado en
W=[(E0,0 *E0,1)+(E0,2 * E0,3)] * E0,5 este resultado final lo llamaremos "SALIDA".

Paso 7 : La ultima instrucción de la rama OUT S0,0 mueve el contenido de W que en
valor absoluto será "0" ó "1" al bit del registro de salida S0 direccionado por la instrucción OUT,
en este caso el relé de salido cero del autómata. Cuando el procesador ejecute le rutina de
actualización de las salidas, el relé Nº0 será actualizado.
 

Ir al principio

Ejemplo.asm

Descargar ejemplo de programa PLC     EJEMPLO.asm

Ir al principio