PROYECTO
DE AUTOMATA PROGRAMABLE DE 8 E/S
BASADO
EN EL PROCESADOR PIC 16F84
Autor: Juan Manuel Rodríguez
|
|
Circuitos impresos | Fotos del PLC montado | Software |
| Sistema Operativo | Ejemplos | Links | Home |
Repaso general.
Antes de entrar en profundidades
revisaremos las estructuras de programacion de los automatas
comerciales.Las dos formas mas
usuales de editar programas PLC son :
Diagrama de contactos:
Representa las entradas y salidos
usando simbolos electricos estándar: ( contacto normalmente
abierto, contacto normalmente
cerrado, bobinas de rele, etc ). Es una forma de ver los programas
muy grafica especialmente pensada
para electricistas, con una rapida mirada podemos
comprender como respondera la
salida. La representacion de contactos se asemeja al la
estructura de directorios de
un disco duro pero invertida. En primer lugar resolvemos los
contactos en paralelo ( OR )
despues los contactos en serie ( AND ) y por ultimo la salida ( OUT ).
Modo texto:
Este es el modo en que se progama
el PIC-PLC, consta de una serie de lineas de texto,
cada linea describe una instrucción,
el orden es muy importante ya que cambia el resultado
final en la salida. En primer
lugar resolvemos los contactos en paralelo ( OR ) despues
los contactos en serie ( AND
) y por ultimo la salida ( OUT ).
| INSTRUCCION | DIRECCION E/S | COMENTARIO |
| LD | E0,0 | MARCHA |
| OR | E0,1 | RETENIDA MOTOR |
| AND_NOT | E0,2 | PARO |
| AND_NOT | E0,3 | TERMICO |
| OUT | S0,0 | RELE MOTOR ON |
INSTRUCCIONES Y REGISTROS DEL PLC
Convencionalismos:
El simbolo # equivale a un Nº decimal de cero a siete
y se refire a un bit de un
regitro del PLC.
El simbolo % equivale a un Nº decimal de cero a siete y se
refiere al numero de
instruccion o al numero del registro asociado a la instruccion.
En algunos casos el
valor numerico solo puede estar comprendido entre cero y tres.
Parametro: Son los bits del registro indicado antes de la coma ","
que puede modificar.
Bit asociado: Es el bit asociado con la instruccion que modifica
al ser ejecutada
Registro asociado: Es el reguistro que contiene informacion usada
por la instruccion.
Intruccion asociada: Es la instrucion que realiza un reset de los
bits de la instruccion principal.
Registos del PLC.
Todos los datos variables del PLC estan contenidos en la memoria
RAM interna del PIC16F84:
E% : Registro de entradas, almacena el estado de las
entradas del automada
S % : Registro de salidas , contiene el valor del estado de
las salidas del automata
M% : Registro de memorias intermedias, maneja bits de entrada o
salida virtuales,
solo existen internamente en la memoria del automata, se usan
para hacer
operaciones intermedias en el programa PLC y no tienen una correspondencia
fisica con ninguna entrada o salida del automata.Estan disponibles
tres registros
de memorias intermedias de M0 a M2 que suman en total 24 bits.
TIEMPO% : Registro asociado a los temporizadores del automata, contiene
el valor del tiemp de retardo del temporizador
CONTADOR% : Registro asociado a los contadores, almacena el numero
de
eventos a contar.
TIM : Registro que contine los bits de salida de los temporizadores,
| INSTRUCCION | PARAMETRO | BIT ASOCIADO | REGISTRO ASOCIADO | INSTRUCCION ASOCIADA |
| LD | E%,# M%,# S,# TIM,# CNT,# | - | - | - |
| OR | E%,# M%,# S,# TIM,# CNT,# | - | - | - |
| OR_NOT | E%,# M%,# S,# TIM,# CNT,# | - | - | - |
| AND | E%,# M%,# S,# TIM,# CNT,# | - | - | - |
| AND_NOT | E%,# M%,# S,# TIM,# CNT,# | - | - | - |
| ORLD | - | - | - | - |
| ANDLD | - | - | - | - |
| OUT | S%,# | - | - | - |
| SET | M%,# S,# | - | - | RESET |
| RESET | M%,# S,# | - | - | - |
| TIMER% | - | TIM,# | TIEMPO% | - |
| CNT% | - | CNT,# | CONTADOR% | RCNT% |
| RNCT% | - | CNT,# | - | - |
| RS% | M%,# S,# | - | - | - |
| DIF% | - | DIF,# | - | - |
| END | - | - | - | - |
Las instrucciones se escriben en mayusculas, entre ellas y los parametros
ha de
haber al menos un espacio. Los parametos se separan usando comas
" , "
OR
Realiza la operación logica OR
(suma) entre el acumulador (W) y el bit que direcciona,
el resultado se guarda en W.
Operandos permitidos:
E0,0 ..................E0,7
M0,0..................M0,7
M1.0........M1.7 M2,0........M2,7
S0,0..................S0,7
TIM,0.................TIM,6
CNT,0................CNT,3
DIF,0..................DIF,3
Uso de memoria EEPROM: 4 bytes
OR_NOT
Realiza la operación logica OR
(suma) entre el acumulador (W) y el bit que direcciona invertido,
el resultado se guarda en W.
Operandos permitidos:
E0,0 ..................E0,7
M0,0..................M0,7
M1.0........M1.7 M2,0........M2,7
S0,0..................S0,7
TIM,0.................TIM,6
CNT,0................CNT,3
DIF,0..................DIF,3
Uso de memoria EEPROM: 4 bytes
AND
Realiza la operación logica AND
(multiplicación) entre el acumulador (W) y el bit que direcciona,
el resultado se guarda en W.
E0,0 ..................E0,7
M0,0..................M0,7
M1.0........M1.7 M2,0........M2,7
S0,0..................S0,7
TIM,0.................TIM,6
CNT,0................CNT,3
DIF,0..................DIF,3
Uso de memoria EEPROM: 4 bytes
AND_NOT
Realiza la operación logica AND
(multiplicación) entre el acumulador (W) y el bit que
direcciona invertido, el resultado se
guarda en W.
Operandos permitidos:
E0,0 ..................E0,7
M0,0..................M0,7
M1.0........M1.7 M2,0........M2,7
S0,0..................S0,7
TIM,0.................TIM,6
CNT,0................CNT,3
DIF,0..................DIF,3
Uso de memoria EEPROM: 4 bytes
ORLD
Realiza la operación logica OR
(suma) entre el acumulador (W) y el primer registro del la pila,
el resultado se guarda en W y el contenido
de la pila es desplazado un nivel abajo.
Uso de memoria EEPROM: 2 bytes
ANDLD
Realiza la operación logica AND
(multiplicación) entre el acumulador (W) y el primer registro
del la pila, el resultado se guarda en
W yl contenido de la pila es desplazado un nivel abajo
Uso de memoria EEPROM: 2 bytes
OUT
Extrae el valor absoluto del contenido
del acumulador "0" ó "1" y lo mueve al bit del registro
que direccione la instrucción.
Operandos permitidos:
M0,0..................M0,7
M1.0........M1.7 M2,0........M2,7
S0,0..................S0,7
Uso de memoria EEPROM: 5 bytes
SET
Realiza la función SET
( puesta a "1" ) de un biestable RS, el bit que direcciona
es puesto a "1",
Operandos permitidos:
M0,0..................M0,7
M1.0........M1.7 M2,0........M2,7
S0,0..................S0,7
Instrucción asociada : RESET
Uso de memoria EEPROM: 3 bytes
RESET
Realiza la función RESET
( puesta a "0" ) de un biestable RS, el bit que direcciona es puesto
a "0", esta funcion se puede definir
en cualquier punto del programa, pero obligatoriamente
despues de haber definido la función
SET para que en la secuencia de ejecución predomine
siempre el RESET sobre el SET en el caso
de estar activadas las dos funciones a la par.
Operandos permitidos:
M0,0..................M0,7
M1.0........M1.7 M2,0........M2,7
S0,0..................S0,7
Instrucción asociada : RESET
Uso de memoria EEPROM: 3 bytes
TIMER%
Temporizador, la llamada a esta funcion
dispara un temporizador del tipo retardo a la conexión.
Cuando las condiciones previas estan
a "1" y se mantienen despues de pasado el tiempo de
retardo el bit asociado al timer se activa
y solo cae si estan pasan a "0".
El sitema operativo implementa siete
temporizadores de TIMER0 a TIMER6.
El tiempo de retardo es definido
en la cabecara del programa por los registros TIEMPO%
El tiempo de retardo se puede fijar entre
0,1 seg y 25,4 segundos.
Bits de salida asociados: TIM,0..............TIM,6
Uso de memoria EEPROM: 8 bytes
CNT%
Contador de eventos, esta función
detecta el flanco ascendente de las condiciones previas
e incrementa un contador interno, cuando
el contador alcanza el valor definido por el registro
asociado CONTADOR% se activa el bit asociado
CNT,# y el contador queda deshabilitado
mientras no se ejecute la intrucción
asociada RCNT%.
El sitema operativo implementa cuatro
contadores de CNT0 a CNT3.
El tiempo Nº de eventos a contar
es definido en la cabecara del programa por los registros
CONTADOR%, al ser un registro de 8 bit
permite contar 254 eventos.
Bits de salida asociados: CNT,0..............CNT,3
Uso de memoria EEPROM: 14 bytes
RCNT%
Puesta a cero de contador, borra el contenide
del registro contador interno, pone a "0" el
bit de salida asociado CNT,# y
habilita de nuevo el contador
Uso de memoria EEPROM: 5 bytes
RS%
Realiza la funcion de un biestable del
tipo "T". Esta función detecta el flanco ascendente
de las condiciones previas, si estas
pasan de "0" a "1" se invierte el estado del bit que
direcciona la instruccion si este era
"0" pasa a "1" y si era "1" pasa a "0". como ejemplo
es util para encender una bombilla con
un solo pulsador.
Operandos permitidos:
M0,0..................M0,7
M1.0........M1.7 M2,0........M2,7
S0,0..................S0,7
Uso de memoria EEPROM: 14 bytes
DIF%
Finción diferencial, detecta el
flanco ascendente de las condiciones previas
( paso de estado logico "0" a "1") y
activa un bit interno que se mantiene a "1" solamente
durante un ciclo de programa (scan),
esto es el tiempo que el procesador tarda en ejecutar
el programa PLC, del orden de milisegundos.
El sitema operativo implementa cuatro
funciones diferenciales de DIF0 a DIF3.
Los bits de salida asociados se direccionan
como DIF,0.........DIF,3
Uso de memoria EEPROM: 10 bytes
END
Instrucción de fin de programa
PLC.