Está en la página 1de 14

PROYECTO:

AUTîMATA
PROGRAMABLE
CON PIC

E
n el nœmero anterior de Saber Electr—- proyecto, reproducimos los esquemas cir-
nica comenzamos a publicar un Cur- cuitales y mostramos algunas fotos del
so de Aut—matas Programables, indi- PLC. Pretendemos con esta nota acercarle
cando que ibamos a dar varios circuitos informaci—n disponible en la web y difun-
pr‡cticos con Òcomponentes conocidosÓ. dir los excelentes trabajos de profesiona-
Luego de estudiar diferentes opciones, nos les, como el autor de esta nota.
comunicamos con el autor de este pro-
yecto para solicitarle la posibilidad de
compartir con todos los lectores su dise-
–o. De esta manera comenzamos con la Autor: Juan Manuel Rodr’guez
descripci—n de un Aut—mata de 8 entradas e-mail: juanmarod@inicia.es
y 8 salidas (ampliable) construido a partir
de nuestro ya conocido PIC 16F84. En esta En la Web:
primera parte damos una descripci—n del http//inicia.es/de/juanmarod/portada.htm

HISTORIA DEL PROYECTO. - Debía tener un lenguaje de programas desde un PC con un


programación compatible con el entorno windows
Después de varios años traba- estándard y poder soportar todo - Los componentes del hard-
jando con autómatas comercia- tipo de instrucciones, contadores ware debían ser baratos y fáciles
les de diferentes fabricantes co- y temporizadores. de localizar.
mo OMRON, SIEMENS, - La memoria del PLC ten- - El número de entradas y
EBERLY y BOSCH decidí en dría que ser no volátil para no salidas, en un principio, debía
mi tiempo libre diseñar un autó- perder el programa por un corte ser 8 (8 E/S) ampliable en el fu-
mata hecho a medida. de tensión. turo.
La idea original tendría que - Tenía que contemplar la - Alimentación de 220V ac ó
cumplir las siguientes premisas: posibilidad del volcado de los 12V DC de una batería.
El primer paso fue diseñar el LD Tarjeta_E0,Pulsador_Marcha EEPROM y 64 bits de RAM, el
sistema operativo, el lenguaje de OUT Tarjeta_S0,Marcha_motor código
programación tenía que ser sen- De máquina es un poco me-
cillo y programar directamente Una vez depurado el sistema nos cómodo, pero el hardware
en ensamblador no era una solu- operativo, probé diferentes fór- de programación es muy sencillo
ción. Después de algunas prue- mulas para almacenar los progra- y existe mucha documentación y
bas usando un procesador mas en memoria. El uso de muchos programas gratuitos en
80C535 y trabajando en ensam- EPROM no era viable ya que Internet.
blador, vi la posibilidad de usar habría que borrarla previamente La opción final fue la elección
las funciones que ofrecen los cada vez que se hiciese una mo- del PIC ya que permite integrar
compiladores para incluir etique- dificación. el programador dentro del autó-
tas y macros en el código de má- El uso de RAM estática no mata usando un hardware muy
quina del procesador. volátil no resultó estable ya que sencillo, descargar los programas
La solución fue usar "MA- con los cortes de tensión se co- usando el puerto paralelo de la
CROS" para convertir las ins- rrompían los datos. La opción fi- PC y realizar modificaciones en
trucciones en ensamblador en nal fue buscar un microprocesa- cuestión de segundos, aún a pe-
instrucciones estándar usadas por dor que incluyese memoria EE- sar de su escasa capacidad de
los autómatas comerciales. PROM para el sistema operativo memoria.
De esta manera la lectura por y programa PLC y RAM para Una vez elegido el procesa-
ejemplo de una entrada del autó- los datos temporales. Los proce- dor, sólo quedó buscar el hard-
mata se haría con la instrucción sadores que mejor se adaptan a ware más adecuado para el resto
IN A,B donde "IN" sería el del sistema: Relés de 5V para
código de la instrucción, el las salidas, optoacopladores
campo " A " la dirección de para aislar las entradas, la
la tarjeta de entradas y en fuente de alimentación y los
campo "B" el número de la chips TTL auxiliares.
entrada física de la tarjeta Antes de avanzar en la expli-
"A" que deseamos leer. cación del sistema operativo,
Activar una salida tendrá vamos a dar en esta entrega
la siguiente sintaxis: OUT los esquemas que constituyen
A,B nuestro PLC; así en la figura
Un temporizador: TIM 1 tenemos el diagrama de la
A,B Unidad de Proceso Central
Un contador : CNT A,B estas exigencias son la familia de (CPU) de nuestro autómata, en
Y el resto de las instrucciones ATMEL 89C1024 y los PIC la figura 2 se da la implementa-
como: AND , AND_NOT, OR, 16F84 de MICROCHIP. ción de las entradas, en la figura
OR_NOT, LD, LD_NOT, Las diferencias entre los pro- 3 las salidas y en la figura 4 el
MOV, SET, RESET etc., siguen cesadores son las siguientes: diagramna circuital de la fuente
la misma línea. La familia ATMEL ofrece de alimentación.
La ventaja del uso de las ma- procesadores con 4K de memo- Todo el autómata se constru-
cros es que nos permite llamar a ria EEPROM y 128 bits de yó en dos placas de circuito im-
la instrucción con el nombre que RAM con dos puertos E/S, los preso cuyos diagramas pueden
más nos guste. El uso de códigos de máquina son compa- verse en las figuras 5, 6 y 7. En
etiquetas nos permite hacer tibles con Intel y muy cómodos la figura 5 se muestra la disposi-
aún más claros los progra- para direccionar bits. Sin embar- ción de los componenentes, en la
mas del autómata al poder go requiere un hardware de pro- figura 6 el lado del cobre (inver-
sustituir las direcciones hexade- gramación complicado. so a los componentes) y en la fi-
cimales de las entradas/salidas El microprocesador gura 7 como se verían ambos la-
por un texto más descriptivo : PIC16F84 sólo ofrece 1K de dos si la placa fuese transparente.
Figura 1

Figura 2
Figura 3

Figura 4
Ambas placas de circuito im- tán cableadas usando hilo de co- bre otra usando separadores.
preso son de “doble cara” y dado bre. Todo el cableado externo se une
que el primer prototipo fue rea- Como se aprecia en las fotos con conectores enchufables.
lizado a mano, dibujando las pis- de la figura 8, las dos placas del En la tarjeta inferior están in-
ta una a una, algunas de ellas es- autómata son montadas una so- tegradas la fuente de alimenta-

Fig. 5
ción, la CPU y el puerto de co- gramación del procesador y libre de potencial) y los optoaco-
municaciones. La fuente de ali- +24V con una capacidad de 0,5A pladores que aíslan eléctricamen-
mentación genera tres tensiones: para las entradas optoacopladas. te las entradas analógicas de la
+5V con una capacidad de co- En la placa superior se en- circuiteria digital.
rriente de 1A para la lógica digi- cuentra el driver que activa los El estado de las entradas se
tal, 14V con una capacidad de relés de salida (que precisa 1 visualizan con diodos led verdes
100mA para el circuito de pro- contacto normalmente abierto y y las salidas con diodos led rojos.

Figura 6
Figura 7

Las tarjetas están conectadas leds de diagnóstico, un pulsador PLC está en modo “RUN” eje-
a través de un cable plano de 26 de RESET y un interruptor de cutando el programa contenido
pines, el puerto de comunicacio- dos posiciones, con funciones a en memoria y parpadea con una
nes es de 9 pines y se han imple- saber: secuencia de 0,5 segundos, es-
mentado en el panel frontal tres • El led verde indica que el tando bajo el control del sistema
operativo. Si el PLC se cuelga o Figura 8
la memoria EEPROM está bo-
rrada, este led deja de parpadear
así como cuando el interruptor
está en modo STOP/PRO-
GRAM.
• El led rojo nos informa que
el procesador está en estado de
RESET, se activa unos segundos
al aplicar tensión al autómata,
cuando presionamos el pulsador
de RESET que se encuentra
junto al led verde y cuando pasa-
mos el interruptor de dos posi-
ciones del modo RUN al modo
de programación STOP/PRO-
GRAM para volcar programas a
la memoria del PIC.
• El led amarillo sirve de
diagnóstico en los procesos de
comunicación con la PC; se acti-
va al leer, borrar, verificar y gra-
bar la memoria EEPROM del
procesador PIC16F84.

PROGRAMAS CON
AMBIENTE WINDOWS

El software elegido para la su momento el sistema operativo la página personal de Nigel


programación del autómata se del autómata. Este programa se Goodwin. El hardware del PLC
ejecuta bajo windows 95/98, es puede descargar desde: está optimizado para la versión
de libre distribución para uso no 1.21 de 16 bits ejecutable bajo
comercial y está disponible en la http://www.microchip.com/ Windows 95/98 y se puede bajar
red. Se utilizó un “viejo conoci- de:
do de los lectores de Saber Elec- Su tamaño es de unos 9MB.
trónica”; el potente entorno de Para la grabación de la me- http://www.lpilsley.freeserve.co.uk/software.htm
programación MPLAB de MI- moria EEPROM del PIC y des-
CROCHIP, fabricante del mi- pués de mucho buscar por la red En la próxima edición habla-
croprocesador PIC, usado para elegí el programa WPicProg16 remos del Sistema Operativo de
editar y compilar los programas diseñado por Nigel Goodwin al este PLC y qué funciones puede
PLC y generar el fichero.hex que debemos agradecer su aporte realizar. Si Ud. no desea esperar
que volcaremos en el PIC. así como a Don Mckenzie que hasta el mes próximo, puede
A parte de editar y compilar ofrece mucha información sobre consultar la página personal del
este software (programa), el programadores PIC en su página autor en:
MPLAB incluye muchas otras australiana y a través de la cual
opciones como la simulación pa- localice el programa. El software http//inicia.es/de/juanmarod/portada.htm
so a paso de programas en en- de programación del procesador
samblador con la que depure en PIC16F84 se puede descargar de
Arme un PLC y cárguele el sistema operativo con éxito

Sistema Operativo de un PLC


de 8 entradas y 8 salidas
Con PIC 16F84
En la edición anterior comenzamos a explicar el proyecto de un
Autómata Programable de 8 entradas y 8 salidas, cuyo funcio-
namiento está basado en la inclusión de un microcontrolador
16F84. Este proyecto, publicado en Internet, es un excelente
ejemplo de aplicación de los PICs de Microchip y posee un sis-
tema operativo fácil de comprender. En la edición anterior brin-
damos los circuitos eléctricos y los diagramas de circuito impre-
so. En esta edición hablaremos del sistema operativo. Tenga en
cuenta que si Ud. desea toda la información de este proyecto,
puede dirigirse a la página que el autor tiene en Internet, a la
cual puede acceder desde un link que tenemos en la web: w w w-
.webelectronica.com.ar

Autor: Juan Manuel Rodr’guez - e-mail: juanmarod@inicia.es


En la Web: http//inicia.es/de/juanmarod/portada.htm

SISTEMA OPERATIVO OS que sólo se compilan e incluyen dor, concretamente 155 bytes que-
dentro del código del programa si dando disponible el resto para las
El sistema operativo del autó- son usadas en el programa PLC, si instrucciones del programa PLC
mata que he proyectado y cuyos no usamos los contadores, por (un total de 869 bytes libres). Para
lineamientos expusimos en la edi- ejemplo, éstos aunque formen par- comprender el principio de opera-
ción anterior en realidad es muy te del sistema operativo no serán ción del sistema operativo, vea los
sencillo, tan sólo incluye las ins- incluidos en la compilación del diagramas de flujo de la figura 1.
trucciones que inicializan los re- programa del autómata, reducien- El sistema operativo está dis-
gistros del procesador, el puerto do así, el uso de la memoria. ponible en la web en formato tex-
A, el puerto B, el temporizador Esto posibilita el diseño de un to con la extensión “.asm” para ser
TMR0, los vectores de interrup- sistema operativo muy compacto, editado con el programa MPLAB
ción, la rutina que gestiona las en- dado que la capacidad de memoria de Microchip, sin embargo, en la
tradas/salidas y la rutina de ges- EEPROM del procesador próxima edición comenzaremos a
tión de pilas; el resto son macros PIC16F84 está limitada a 1024 publicar el listado del programa
que se utilizan como instrucciones bytes. El sistema operativo debe en estas páginas. He procurado in-
del PLC. ocupar el menor espacio posible. cluir todos los comentarios posi-
Una de las muchas ventajas de El sistema operativo utiliza un bles para facilitar su comprensión,
las MACROS del ensamblador, es 15% de la memoria del procesa- de todas formas es imprescindible
Figura 1

Tabla 1 muy completo y fácil de usar cuya


Descargar el sistema operativo OS_PLC8.asm explicación fue dada en Saber
Descargar plantilla de programa PLC PLANTILLA.asm Electrónica Nº 139. La forma más
Descargar ejemplo de programa PLC EJEMPLO.asm cómoda de trabajar consiste en
crear un PROYECTO para cada
conocer los códigos programa PLC que creemos.
ensambladores del Es útil usar una plantilla donde
microcontrolador tengamos ya creadas las variables
PIC16F84. iniciales del programa PLC.
A la hora de realizar Ejecutamos el programa
un programa PLC MPLAB y desde el menú FILE
con el software abrimos el fichero plantilla "ba-
Figura 2 MPLAB se utilizan se.asm", desde el mismo menú lo
dos ficheros, uno guardamos "Save as.." con el
con el S.O. (sistema nombre que más describa las fun-
operativo) y otro ciones del programa (PLC por
con las instrucciones ejemplo). Picamos (hacemos un
PLC. En este último click) en el menú "Proyect" y
se debe realizar una creamos un nuevo proyecto "New
llamada al fichero proyect" (figura 2), tecleamos el
que contiene el S.O. mismo nombre con el que llama-
de forma que se mos al fichero del programa PLC
Figura 3 compilen juntos. anterior y nos aparece una ventana
Si Ud. desea experi- con el nombre del “fichero.hex”
mentar con este au- que será el que posteriormente
tómata, debe bajar grabaremos en el PIC (en nuestro
de la web los archi- caso es: plc.hex, figura 3).
vos mostrados en la En la misma ventana "Project
tabla 1, ya que en la Files" picamos sobre el fichero
próxima edición tra- que aparece y a continuación so-
bajaremos con ellos. bre el icono "Node propierties".
El programa Se despliega otra ventana con di-
MPLAB de Micro- ferentes parámetros (figura 4),
chip es un software pulsamos OK y volvemos al menú
Figura 4
De esta manera ya 9) y lo ensamblamos picando en
Fig. 5
tenemos creado el PROYECT y luego BUILD ALL
proyecto con los dos (figura 10).
ficheros necesarios, Para ver el número de bytes de
picamos OK y se memoria EEPROM que ocupa el
cierran todas las ven- programa compilado, desde el
tanas. menú "Window" opción "Pro-
Podemos a continua- gram Memory" abrimos una ven-
ción escribir el pro- tana donde veremos las direccio-
grama PLC y com- nes EEPRON usadas y así poder
pilarlo junto con el calcular el espacio que aún nos
S.O. con los íconos queda libre.
mostrados en la figu- Una vez compilado el progra-
ra 6. ma y libre de errores podemos pa-
Tenga en cuenta que sar a grabarlo en el PLC, para ello
Ud. puede “bajar” el conectamos el cable de comunica-
programa ya escrito (que denomi- ciones entre el puerto paralelo de
namos plc1.asm) de la web, no ha- nuestro P.C. y el autómata, ejecu-
ce falta que lo escribamos para tamos el programa WPicProg16 y
luego compilarlo. pasamos el interruptor del PLC
Figura 6 Para compilar el programa y de la posición RUN a STOP-
así tener el archivo plc1.hex, pica- /PROGRAM, se apaga el led ver-
anterior. En este punto se activa el mos en FILE, luego OPEN (figu- de intermitente y se activa el led
icono "Add node" (figura 5), lo pi- ra 7) y buscamos el archivo pl- rojo. La primera vez que ejecute-
camos y añadimos al proyecto el c1.asm (no-
“fichero.asm” del programa PLC. sotros lo
bajamos de
la web y sa-
bemos
dónde lo
hemos alo-
jado) tal
como su-
giere la fi-
gura 8.
Aparecerá Fig. 9
el listado
del progra-
Figura 7
ma (figura

Figura 8 Figura 10
Fig. 12
Figura 11

PIC con el icono En cualquier momento pode-


"Erase". Ajustamos mos comparar el contenido de la
las casillas "Fuses" y memoria del PIC con el “fichero-
"Oscillator" activan- .hex” picando sobre el icono Ve-
do WDT (wath rify.
dog), PUT y HS. Sólo resta pasar el interruptor
Picando sobre el de STOP/PROGRAM a RUN (se
icono Write PIC apaga el led rojo y se activa el ver-
volcamos el “fiche- de en forma intermitente) y com-
ro.hex” a la memoria probamos que el programa cum-
EEPROM del PIC, ple las especificaciones activando
activándose en el las entradas en la secuencia co-
Fig. 13 proceso el led amari- rrecta.
llo del frontal del Cuando creamos un programa
mos este programa, comprobare- autómata. Si no ocurre ningún PLC, es posible que cometamos
mos los ajustes del puerto parale- error, en el recuadro inferior dere- algún error de sintaxis. Estos erro-
lo, (figura 11) picamos en el icono cho aparece el tiempo total de vol- res aparecerán reflejados al compi-
"Options >>> Hardware" donde cado (unos 4 segundos). lar el programa en una ventana
veremos los bits del puerto usados
para cada señal de programación.
Desde el menú "Options" ele-
gimos "Find Port", con esto el
programa entra en comunicación Fig. 14
con el autómata y detecta la direc-
ción Hexa del puerto al que está
conectado (esquina inferior iz-
quierda). Desde el menú "File"
abrimos el fichero.hex (en nuestro
caso: plc1.hex, figura 12) que que-
dará visualizado en la ventana Buf-
fer, seleccionamos el tipo de pro-
cesador en nuestro caso el
PIC16F84 (figura 13) y borramos
el contenido de la memoria del
que mostrara las líneas indicadas Warning[202] D:\MPLAB\PI- C:ASM
en la figura 14. C\EJEMPLOS\OS_PLC8.ASM
En primer lugar nos informa si 435 : Argument out of range. 424 RESET MACRO DATA1,DATA2
es un error grave o un aviso (War- Least significant bits used. 425 MOVWF S
ning) seguido de un código que se Warning[202] D:\MPLAB\PI- 426 BTFSC S,0
puede consultar desde la ayuda del C\EJEMPLOS\OS_PLC8.ASM 427 BCF DATA1,DATA2
MPLAB. 437 : Argument out of range. 428 ENDM
En segundo lugar nos dice en Least significant bits used.
qué fichero se ha encontrado el El error se encuentra dentro
error, la línea de programa en que El mensaje es que tenemos ar- del la macro RESET del sistema
se encuentra y la información de gumentos fuera de rango en las lí- operativo, pero no informa en que
lo que el compilador no reconoce neas 435 y 437. Haciendo doble línea del fichero PLC se encuen-
o no encuentra. clic en cualquiera de estas líneas tra este error por lo que tendre-
Haciendo doble clik con el saltamos a la macro del S.O donde mos que revisar el fichero y com-
mouse sobre el texto de error nos se producen. probar la sintaxis de todas las lla-
dirigimos directamente a la línea madas a la instrucción RESET.
del programa que contiene dicho 432 OUT MACRO DATA1,DATA2 Es muy útil en estos casos usar
error. 433 MOVWF S las funciones de búsqueda que
Como vemos en el ejemplo su- 434 BTFSS S,0 ofrece MPLAB, activando la ven-
perior, se nos informa que contie- 435 BCF DATA1,DATA2 tana que contenga el fichero del
nen errores tanto el fichero del 436 BTFSC S,0 programa PLC y pulsando F3 se
sistema operativo (OS_PLC:ASM) 437 BSF DATA1,DATA2 abre la ventana de búsqueda don-
como el fichero del programa plc 438 ENDM de escribiremos la palabra a buscar
(PLC1.ASM). Esto no es del todo y así revisar todas las concurren-
real y puede crear al principio bas- Lo que podemos deducir es cias que aparezcan.
tante confusión. que el error se encuentra en algu-
Como ya hemos visto, el siste- na línea del fichero PLC donde 104 RESET S0.4
ma operativo está compuesto de aparezca la instrucción OUT. Re-
"MACROS" y el programa PLC visando este fichero encontramos En la línea 104 del fichero
se compone de llamadas a estas la línea 93 donde se intenta direc- PLC tenemos una llamada a la
macros, por lo tanto, si comete- cionar el bit Nº 8 del registro de instrucción RESET con un error
mos un error de sintaxis en una salidas S0. Dado que los registros de sintaxis en los parámetros, en
llamada a una macro del S.O. des- del plc son de 8 bits el rango de esta línea realizamos un reset de la
de el programa PLC al enlazar y direccionamiento sólo puede en- salida Nº4 de la tarjeta de salidas
compilar juntos los dos ficheros, el contrarse ente cero y siete. S0 pero en lugar de una coma ","
compilador intentará pasar los pa- hemos tecleado un punto "." para
rámetros de la llamada a la macro 93 OUT S0,8 separar los parámetros, este pro-
(instrucción PLC) usada en el fi- blema ha generado dos errores en
chero PLC a la macro que en rea- Corregimos este inconveniente la línea 427 del S.O que desapare-
lidad se encuentra en el fichero seleccionando el bit adecuado, con cerán al sustituir el punto por la
del S.O. produciéndose el error en lo cual el error desaparecerá al coma y compilar de nuevo el pro-
la MACRO del fichero del S.O. volver a compilar el programa. yecto.
cuando en realidad el error se en- Como vemos los errores se encon-
cuentra en los parámetros del fi- traban en realidad en el fichero Error[128] D:\MPLAB\PI-
chero del programa PLC. PLC. C\EJEMPLOS\PLC1.ASM 104 :
Veamos en realidad donde se Los mensajes de error marca- Missing argument(s)
han cometido los errores de sinta- dos como “Error[113]” en el men- Este error sí nos dice en qué lí-
xis, para lo cual debemos dirigir- saje de la figura 14 nos mandan a nea del fichero PLC se encuentra,
nos a la figura 14. la línea 427 del fichero OS_PL- concretamente en la 104 y al hacer
doble clic en él nos manda al fi- Illegal opcode (E0) del sistema operativo del autómata
chero PC donde confirmamos el Estos errores sí nos mandan di- que estamos describiendo, si-
error de sintaxis del punto y la co- rectamente al fichero de programa guiendo paso a paso las instruccio-
ma explicado anteriormente. El PLC. nes, no tendrá iconvenientes para
error se produce al faltarle un ar- Picando sobre cualquiera de hacer funcionar el autómata.
gumento a la instrucción RESET ellos saltamos a la línea 79 del fi- En la próxima edición veremos
ya que S0.4 es considerado un sólo chero PLC donde vemos rápida- cuáles son las instrucciones del PLC
argumento. mente que nos hemos confundido y daremos algunos ejemplos de pro-
al escribir la instrucción AND co- gramación. Tenga en cuenta que el
Warning[207] D:\MPLAB\PI- mo AMD: presente proyecto es tomado de la
C\EJEMPLOS\PLC1.ASM 79 : página del autor desde Internet y
Found label after column 1. 79 AMD E0,0 que para obtener la versión comple-
(AMD) ta debe dirigirse a la dirección dada
Error[122] D:\MPLAB\PI- Lo dado hasta aquí pretende al comienzo de la nota. J
C\EJEMPLOS\PLC1.ASM 79 : ser una guía para la comprensión

También podría gustarte