PLC CON PIC 16F84
Después de varios años trabajando con autómatas comerciales de diferentes fabricantes como OMRON, SIEMENS, EBERLY y BOSCH. Decidí en mi tiempo libre diseñar un autómata hecho a medida. La idea original tendría que cumplir las siguientes premisas:
- Lenguaje de programación compatible con el estándar y soportar todo tipo de instrucciones, contadores y temporizadores.
- La memoria del PLC tendría que ser no volátil para no perder el programa por un corte de tensión.
- La posibilidad del volcado de los programas desde un P.C a poder ser en un
entorno Windows
- Los componentes del hardware han de ser baratos y fáciles de localizar.
- El numero de entradas y salidas, en un principio 8 E/S ampliable en el futuro.
- Alimentación a 220 V AC o 12V DC de una batería.
El primer paso fue diseñar el sistema operativo, el lenguaje de programación tenia que ser sencillo y programar directamente en ensamblador no era una solución. Después de algunas
pruebas usando un procesador 80C535 y trabajando en ensamblador, vi la posibilidad de
usar las funciones que ofrecen los compiladores para incluir etiquetas y macros en el código
maquina del procesador.
La solución fue usar “MACROS” para convertir las instrucciones en ensamblador en instrucciones estándar usadas por los autómatas comerciales.
De esta manera la lectura por ejemplo de una entrada del autómata se haría con la instrucción IN A,B donde ” IN ” seria el código de la instrucción, el campo ” A ”
la dirección de la tarjeta de entradas y en campo ” B ” el numero de la entrada física
de la tarjeta ” A ” que deseamos leer. Activar una salida tendrá la siguiente sintaxis: OUT A,B
Un temporizador : TIM A,B
Un contador : CNT A,B
Y el resto de las instrucciones como: AND , AND_NOT, OR, OR_NOT, LD, LD_NOT,
MOV, SET, RESET etc., siguen la misma línea.
La ventaja del uso de las macros es que nos permite llamar a la instrucción con el nombre que mas nos guste. El uso de etiquetas nos permite hacer aun mas claros los programas del autómata al poder sustituir las direcciones hexadecimales de las entradas/salidas por un texto mas descriptivo :
LD Tarjeta_E0,Pulsador_Marcha
OUT Tarjeta_S0,Marcha_motor
Una vez depurado el sistema operativo, probé diferentes formulas para almacenar los programas en memoria. El uso de EPROM no era viable ya que habría que borrarla previamente cada vez que se hiciese una modificación.
El uso de RAM estática no volátil no resulto estable ya que con los cortes de tensión se
corrompían los datos. La opción final fue buscar un microprocesador que incluyese
memoria EEPROM para el sistema operativo y programa PLC y RAM para los datos temporales. Los procesadores que mejor se ajustan a estos requerimientos son:
ATMEL 89C4024 y los PIC 16F84 de MICROCHIP .
Las diferencias entre los procesadores son las siguientes:
La familia ATMEL ofrece procesadores con 4K de memoria EEPROM y 128 bits de RAM con dos puertos E/S, los códigos maquina son compatibles con intel y muy cómodos para direccionar bits. Sin embargo requiere un hardware de programación complicado.
El microprocesador PIC16F84 solo ofrece 1K de EEPROM y 64 bits de RAM, el código maquina es un poco menos cómodo, pero el hardware de programación es muy sencillo y
existe mucha documentación y muchos programas gratuitos en Internet.
La opción final fue el PIC ya que permite integrar el programador dentro del autómata usando un hardware muy sencillo, descargar los programas usando el puerto paralelo del PC y realizar modificaciones en cuestión de segundos, aun a pesar de su escasa capacidad de memoria.
Una vez elegido el procesador, solo quedo buscar el hardware mas adecuados para el resto del sistema: Relés de 5V para las salidas, optoacopladores para aislar las entradas, la fuente de alimentación y los chips TTL auxiliares.
NUCLEO
PROGRAMADOR
Como se aprecia en las fotos, el autómata consta de tres placas de circuito impreso
montadas una sobre otra usando separadores.
Todo el cableado externo utiliza conectores.
En la tarjeta inferior están integrados la fuente de alimentación, la CPU y el puerto
de programación. La fuente de alimentación conmutada regula la tensiones +5V 1Amp para la lógica digital, para un tensión de entrada comprendida entre 12 y 30 V dc
La placa central es la de entradas optoacopladas y led´s de diagnostico. En la superior se encuentra el driver que activa los relés de salida ( 1 contacto normalmente abierto y libre de potencial )
El estado de las entradas se visualizan con diodos led verdes y las salidas con diodos led rojos. Las tarjetas están conectadas a través de un cable plano de 26 pin,
el puerto de comunicaciones es de 9 pin y están implementados en el frontal tres led
de diagnostico y un interruptor de dos posiciones:
El led verde indica que el PLC esta en modo RUN ejecutando el programa contenido en memoria y parpadea con una cadencia de 0,5 segundos, estando bajo el control del sistema operativo. Si el PLC se cuelga o la memoria EEPROM esta borrada este led deja de parpadear así como cuando el interruptor esta en modo STOP/PROGRAM..
El led rojo nos informa que el procesador esta en estado de RESET, se activa unos segundos al aplicar tensión al autómata y cuando pasamos el interruptor de dos posiciones
del modo RUN al modo de programación STOP/PROGRAM para volcar programas a la memoria del PIC. El led amarillo sirve de diagnostico en los procesos de comunicación
con el P.C. se activa al leer, borrar, verificar y grabar la memoria EEPROM del
procesador PIC16F84.
Fuente: http://inicia.es/de/juanmarod/portada.htm
Tuitear 14.921 Veces leído 4 comentarios |
27 enero 2012 en Electronica | tags: Circuitos electrónicos, Electronica |
¿Cuanto le invertiste para hacer tu PLC?
Yo tengo el pdf del mismo autor y como estoy batallando para hacer esto, Gracias por tu post puedo terminar mi trabajo es mas facil ahora
Puedes hacer una estimación del coste o valorar implementar al 16f84 el siguiente modulo “que esta de moda” y se utiliza para Arduino un link a ebay que te puede dar una idea.
Me gusta el circuito ya que soy muy neofito en la materia oepo me atrae