Está en la página 1de 14

PROYECTO:

AUTMATA
PROGRAMABLE
CON PIC

E
n el nmero anterior de Saber Electr- proyecto, reproducimos los esquemas cir-
nica comenzamos a publicar un Cur- cuitales y mostramos algunas fotos del
so de Autmatas Programables, indi- PLC. Pretendemos con esta nota acercarle
cando que ibamos a dar varios circuitos informacin disponible en la web y difun-
prcticos 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 Rodrguez
descripcin de un Autmata 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 descripcin del http//inicia.es/de/juanmarod/portada.htm

HISTORIA DEL PROYECTO. - Deba tener un lenguaje de programas desde un PC con un


programacin compatible con el entorno windows
Despus de varios aos traba- estndard y poder soportar todo - Los componentes del hard-
jando con autmatas comercia- tipo de instrucciones, contadores ware deban ser baratos y fciles
les de diferentes fabricantes co- y temporizadores. de localizar.
mo OMRON, SIEMENS, - La memoria del PLC ten- - El nmero de entradas y
EBERLY y BOSCH decid en dra que ser no voltil para no salidas, en un principio, deba
mi tiempo libre disear un aut- perder el programa por un corte ser 8 (8 E/S) ampliable en el fu-
mata hecho a medida. de tensin. turo.
La idea original tendra que - Tena que contemplar la - Alimentacin de 220V ac
cumplir las siguientes premisas: posibilidad del volcado de los 12V DC de una batera.
El primer paso fue disear el LD Tarjeta_E0,Pulsador_Marcha EEPROM y 64 bits de RAM, el
sistema operativo, el lenguaje de OUT Tarjeta_S0,Marcha_motor cdigo
programacin tena que ser sen- De mquina es un poco me-
cillo y programar directamente Una vez depurado el sistema nos cmodo, pero el hardware
en ensamblador no era una solu- operativo, prob diferentes fr- de programacin es muy sencillo
cin. Despus de algunas prue- mulas para almacenar los progra- y existe mucha documentacin 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 habra que borrarla previamente La opcin final fue la eleccin
las funciones que ofrecen los cada vez que se hiciese una mo- del PIC ya que permite integrar
compiladores para incluir etique- dificacin. el programador dentro del aut-
tas y macros en el cdigo de m- El uso de RAM esttica no mata usando un hardware muy
quina del procesador. voltil no result estable ya que sencillo, descargar los programas
La solucin fue usar "MA- con los cortes de tensin se co- usando el puerto paralelo de la
CROS" para convertir las ins- rrompan los datos. La opcin fi- PC y realizar modificaciones en
trucciones en ensamblador en nal fue buscar un microprocesa- cuestin de segundos, an a pe-
instrucciones estndar usadas por dor que incluyese memoria EE- sar de su escasa capacidad de
los autmatas 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, slo qued buscar el hard-
mata se hara con la instruccin sadores que mejor se adaptan a ware ms adecuado para el resto
IN A,B donde "IN" sera el del sistema: Rels de 5V para
cdigo de la instruccin, el las salidas, optoacopladores
campo " A " la direccin de para aislar las entradas, la
la tarjeta de entradas y en fuente de alimentacin y los
campo "B" el nmero de la chips TTL auxiliares.
entrada fsica de la tarjeta Antes de avanzar en la expli-
"A" que deseamos leer. cacin 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 autmata, 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. cin 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 lnea. La familia ATMEL ofrece de alimentacin.
La ventaja del uso de las ma- procesadores con 4K de memo- Todo el autmata se constru-
cros es que nos permite llamar a ria EEPROM y 128 bits de y en dos placas de circuito im-
la instruccin con el nombre que RAM con dos puertos E/S, los preso cuyos diagramas pueden
ms nos guste. El uso de cdigos de mquina son compa- verse en las figuras 5, 6 y 7. En
etiquetas nos permite hacer tibles con Intel y muy cmodos la figura 5 se muestra la disposi-
an ms claros los progra- para direccionar bits. Sin embar- cin de los componenentes, en la
mas del autmata al poder go requiere un hardware de pro- figura 6 el lado del cobre (inver-
sustituir las direcciones hexade- gramacin complicado. so a los componentes) y en la fi-
cimales de las entradas/salidas El microprocesador gura 7 como se veran ambos la-
por un texto ms descriptivo : PIC16F84 slo ofrece 1K de dos si la placa fuese transparente.
Figura 1

Figura 2
Figura 3

Figura 4
Ambas placas de circuito im- tn 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 estn in-
ta una a una, algunas de ellas es- autmata son montadas una so- tegradas la fuente de alimenta-

Fig. 5
cin, la CPU y el puerto de co- gramacin del procesador y libre de potencial) y los optoaco-
municaciones. La fuente de ali- +24V con una capacidad de 0,5A pladores que aslan elctricamen-
mentacin genera tres tensiones: para las entradas optoacopladas. te las entradas analgicas de la
+5V con una capacidad de co- En la placa superior se en- circuiteria digital.
rriente de 1A para la lgica digi- cuentra el driver que activa los El estado de las entradas se
tal, 14V con una capacidad de rels 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 estn conectadas leds de diagnstico, un pulsador PLC est en modo RUN eje-
a travs 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 tensin al autmata,
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 programacin STOP/PRO-
GRAM para volcar programas a
la memoria del PIC.
El led amarillo sirve de
diagnstico en los procesos de
comunicacin 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 pgina personal de Nigel


programacin del autmata se del autmata. Este programa se Goodwin. El hardware del PLC
ejecuta bajo windows 95/98, es puede descargar desde: est optimizado para la versin
de libre distribucin 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 tamao es de unos 9MB.
trnica; el potente entorno de Para la grabacin de la me- http://www.lpilsley.freeserve.co.uk/software.htm
programacin MPLAB de MI- moria EEPROM del PIC y des-
CROCHIP, fabricante del mi- pus de mucho buscar por la red En la prxima edicin habla-
croprocesador PIC, usado para eleg el programa WPicProg16 remos del Sistema Operativo de
editar y compilar los programas diseado 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 prximo, puede
A parte de editar y compilar ofrece mucha informacin sobre consultar la pgina personal del
este software (programa), el programadores PIC en su pgina autor en:
MPLAB incluye muchas otras australiana y a travs de la cual
opciones como la simulacin pa- localice el programa. El software http//inicia.es/de/juanmarod/portada.htm
so a paso de programas en en- de programacin del procesador
samblador con la que depure en PIC16F84 se puede descargar de
Arme un PLC y crguele el sistema operativo con xito

Sistema Operativo de un PLC


de 8 entradas y 8 salidas
Con PIC 16F84
En la edicin anterior comenzamos a explicar el proyecto de un
Autmata Programable de 8 entradas y 8 salidas, cuyo funcio-
namiento est basado en la inclusin de un microcontrolador
16F84. Este proyecto, publicado en Internet, es un excelente
ejemplo de aplicacin de los PICs de Microchip y posee un sis-
tema operativo fcil de comprender. En la edicin anterior brin-
damos los circuitos elctricos y los diagramas de circuito impre-
so. En esta edicin hablaremos del sistema operativo. Tenga en
cuenta que si Ud. desea toda la informacin de este proyecto,
puede dirigirse a la pgina 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 Rodrguez - e-mail: juanmarod@inicia.es


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

SISTEMA OPERATIVO OS que slo se compilan e incluyen dor, concretamente 155 bytes que-
dentro del cdigo 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-
cin anterior en realidad es muy te del sistema operativo no sern cin del sistema operativo, vea los
sencillo, tan slo incluye las ins- incluidos en la compilacin del diagramas de flujo de la figura 1.
trucciones que inicializan los re- programa del autmata, 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 diseo de un to con la extensin .asm para ser
TMR0, los vectores de interrup- sistema operativo muy compacto, editado con el programa MPLAB
cin, 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 prxima edicin comenzaremos a
tin 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 pginas. 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 comprensin,
las MACROS del ensamblador, es 15% de la memoria del procesa- de todas formas es imprescindible
Figura 1

Tabla 1 muy completo y fcil de usar cuya


Descargar el sistema operativo OS_PLC8.asm explicacin fue dada en Saber
Descargar plantilla de programa PLC PLANTILLA.asm Electrnica N 139. La forma ms
Descargar ejemplo de programa PLC EJEMPLO.asm cmoda de trabajar consiste en
crear un PROYECTO para cada
conocer los cdigos 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 ms 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
tmata, 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
prxima edicin tra- que aparece y a continuacin so-
bajaremos con ellos. bre el icono "Node propierties".
El programa Se despliega otra ventana con di-
MPLAB de Micro- ferentes parmetros (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 nmero de bytes de
picamos OK y se memoria EEPROM que ocupa el
cierran todas las ven- programa compilado, desde el
tanas. men "Window" opcin "Pro-
Podemos a continua- gram Memory" abrimos una ven-
cin 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 an 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 autmata, 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 posicin 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 aadimos al proyecto el c1.asm (no-
fichero.asm del programa PLC. sotros lo
bajamos de
la web y sa-
bemos
dnde 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. Slo 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
activndose 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- autmata. Si no ocurre ningn PLC, es posible que cometamos
mos los ajustes del puerto parale- error, en el recuadro inferior dere- algn error de sintaxis. Estos erro-
lo, (figura 11) picamos en el icono cho aparece el tiempo total de vol- res aparecern reflejados al compi-
"Options >>> Hardware" donde cado (unos 4 segundos). lar el programa en una ventana
veremos los bits del puerto usados
para cada seal de programacin.
Desde el men "Options" ele-
gimos "Find Port", con esto el
programa entra en comunicacin Fig. 14
con el autmata y detecta la direc-
cin 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 lneas 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 cdigo 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 lnea de programa en que El mensaje es que tenemos ar- del la macro RESET del sistema
se encuentra y la informacin 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 lnea del fichero PLC se encuen-
o no encuentra. clic en cualquiera de estas lneas 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 lnea madas a la instruccin 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 bsqueda 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 bsqueda 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 confusin. que el error se encuentra en algu-
Como ya hemos visto, el siste- na lnea del fichero PLC donde 104 RESET S0.4
ma operativo est compuesto de aparezca la instruccin OUT. Re-
"MACROS" y el programa PLC visando este fichero encontramos En la lnea 104 del fichero
se compone de llamadas a estas la lnea 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 instruccin RESET con un error
mos un error de sintaxis en una salidas S0. Dado que los registros de sintaxis en los parmetros, en
llamada a una macro del S.O. des- del plc son de 8 bits el rango de esta lnea realizamos un reset de la
de el programa PLC al enlazar y direccionamiento slo puede en- salida N4 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
rmetros de la llamada a la macro 93 OUT S0,8 separar los parmetros, este pro-
(instruccin PLC) usada en el fi- blema ha generado dos errores en
chero PLC a la macro que en rea- Corregimos este inconveniente la lnea 427 del S.O que desapare-
lidad se encuentra en el fichero seleccionando el bit adecuado, con cern al sustituir el punto por la
del S.O. producindose 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 parmetros 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 lnea 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 autmata
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 autmata.
gumento a la instruccin RESET ellos saltamos a la lnea 79 del fi- En la prxima edicin veremos
ya que S0.4 es considerado un slo chero PLC donde vemos rpida- cules son las instrucciones del PLC
argumento. mente que nos hemos confundido y daremos algunos ejemplos de pro-
al escribir la instruccin AND co- gramacin. Tenga en cuenta que el
Warning[207] D:\MPLAB\PI- mo AMD: presente proyecto es tomado de la
C\EJEMPLOS\PLC1.ASM 79 : pgina del autor desde Internet y
Found label after column 1. 79 AMD E0,0 que para obtener la versin comple-
(AMD) ta debe dirigirse a la direccin dada
Error[122] D:\MPLAB\PI- Lo dado hasta aqu pretende al comienzo de la nota. J
C\EJEMPLOS\PLC1.ASM 79 : ser una gua para la comprensin

También podría gustarte