Automata Programable Con PIC

download Automata Programable Con PIC

of 14

Transcript of Automata Programable Con PIC

  • 5/22/2018 Automata Programable Con PIC

    1/14

    PROYECTO:

    AUTMATAPROGRAMABLE

    CON PIC

    En el nmero anterior de Saber Electr-nica comenzamos a publicar un Cur-so de Autmatas Programables, indi-

    cando que ibamos a dar varios circuitosprcticos con componentes conocidos.Luego de estudiar diferentes opciones, nos

    comunicamos con el autor de este pro-yecto para solicitarle la posibilidad decompartir con todos los lectores su dise-o. De esta manera comenzamos con ladescripcin de un Autmata de 8 entradasy 8 salidas (ampliable) construido a partirde nuestro ya conocido PIC 16F84. En estaprimera parte damos una descripcin del

    proyecto, reproducimos los esquemas cir-cuitales y mostramos algunas fotos delPLC. Pretendemos con esta nota acercarleinformacin disponible en la web y difun-dir los excelentes trabajos de profesiona-les, como el autor de esta nota.

    Autor: Juan Manuel Rodrgueze-mail: [email protected]

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

    HISTORIA DELPROYECTO.

    Despus de varios aos traba-jando con autmatas comercia-les de diferentes fabricantes co-mo OMRON, SIEMENS,EBERLY y BOSCH decid enmi tiempo libre disear un aut-mata hecho a medida.

    La idea original tendra quecumplir las siguientes premisas:

    - Deba tener un lenguaje deprogramacin compatible con elestndard y poder soportar todotipo de instrucciones, contadores

    y temporizadores.- La memoria del PLC ten-

    dra que ser no voltil para noperder el programa por un cortede tensin.

    - Tena que contemplar laposibilidad del volcado de los

    programas desde un PC con unentorno windows

    - Los componentes del hard-ware deban ser baratos y fcilesde localizar.

    - El nmero de entradas ysalidas, en un principio, debaser 8 (8 E/S) ampliable en el fu-turo.

    - Alimentacin de 220V ac 12V DC de una batera.

  • 5/22/2018 Automata Programable Con PIC

    2/14

    El primer paso fue disear elsistema operativo, el lenguaje deprogramacin tena que ser sen-cillo y programar directamenteen ensamblador no era una solu-cin. Despus de algunas prue-bas usando un procesador80C535 y trabajando en ensam-blador, vi la posibilidad de usarlas funciones que ofrecen loscompiladores para incluir etique-tas y macros en el cdigo de m-quina del procesador.

    La solucin fue usar "MA-CROS" para convertir las ins-trucciones en ensamblador eninstrucciones estndar usadas porlos autmatas comerciales.

    De esta manera la lectura porejemplo de una entrada del aut-mata se hara con la instruccinIN A,B donde "IN" sera elcdigo de la instruccin, elcampo " A " la direccin dela tarjeta de entradas y encampo "B" el nmero de laentrada fsica de la tarjeta

    "A" que deseamos leer.Activar una salida tendr

    la siguiente sintaxis: OUTA,B

    Un temporizador: TIMA,B

    Un contador : CNT A,BY el resto de las instrucciones

    como: AND , AND_NOT, OR,OR_NOT, LD, LD_NOT,

    MOV, SET, RESET etc., siguenla misma lnea.

    La ventaja del uso de las ma-cros es que nos permite llamar ala instruccin con el nombre quems nos guste. El uso deetiquetas nos permite haceran ms claros los progra-mas del autmata al podersustituir las direcciones hexade-

    cimales de las entradas/salidaspor un texto ms descriptivo :

    LD Tarjeta_E0,Pulsador_MarchaOUT Tarjeta_S0,Marcha_motor

    Una vez depurado el sistemaoperativo, prob diferentes fr-mulas para almacenar los progra-mas en memoria. El uso deEPROM no era viable ya quehabra que borrarla previamentecada vez que se hiciese una mo-dificacin.

    El uso de RAM esttica novoltil no result estable ya quecon los cortes de tensin se co-rrompan los datos. La opcin fi-nal fue buscar un microprocesa-dor que incluyese memoria EE-PROM para el sistema operativoy programa PLC y RAM paralos datos temporales. Los proce-sadores que mejor se adaptan a

    estas exigencias son la familia deATMEL 89C1024 y los PIC16F84 de MICROCHIP.

    Las diferencias entre los pro-

    cesadores son las siguientes:La familia ATMEL ofrece

    procesadores con 4K de memo-ria EEPROM y 128 bits deRAM con dos puertos E/S, loscdigos de mquina son compa-tibles con Intel y muy cmodospara direccionar bits. Sin embar-go requiere un hardware de pro-gramacin complicado.

    El microprocesadorPIC16F84 slo ofrece 1K de

    EEPROM y 64 bits de RAM, elcdigo

    De mquina es un poco me-nos cmodo, pero el hardwarede programacin es muy sencilloy existe mucha documentacin ymuchos programas gratuitos enInternet.

    La opcin final fue la eleccindel PIC ya que permite integrarel programador dentro del aut-mata usando un hardware muysencillo, descargar los programasusando el puerto paralelo de laPC y realizar modificaciones encuestin de segundos, an a pe-sar de su escasa capacidad dememoria.

    Una vez elegido el procesa-dor, slo qued buscar el hard-ware ms adecuado para el resto

    del sistema: Rels de 5V paralas salidas, optoacopladorespara aislar las entradas, lafuente de alimentacin y loschips TTL auxiliares.Antes de avanzar en la expli-

    cacin del sistema operativo,vamos a dar en esta entregalos esquemas que constituyennuestro PLC; as en la figura1 tenemos el diagrama de laUnidad de Proceso Central

    (CPU) de nuestro autmata, enla figura 2 se da la implementa-cin de las entradas, en la figura3 las salidas y en la figura 4 el

    diagramna circuital de la fuentede alimentacin.

    Todo el autmata se constru-y en dos placas de circuito im-preso cuyos diagramas puedenverse en las figuras 5, 6 y 7. Enla figura 5 se muestra la disposi-cin de los componenentes, en lafigura 6 el lado del cobre (inver-so a los componentes) y en la fi-

    gura 7 como se veran ambos la-dos si la placa fuese transparente.

  • 5/22/2018 Automata Programable Con PIC

    3/14

    Figura 1

    Figura 2

  • 5/22/2018 Automata Programable Con PIC

    4/14

    Figura 3

    Figura 4

  • 5/22/2018 Automata Programable Con PIC

    5/14

    Ambas placas de circuito im-preso son de doble cara y dadoque el primer prototipo fue rea-lizado a mano, dibujando las pis-ta una a una, algunas de ellas es-

    tn cableadas usando hilo de co-bre.

    Como se aprecia en las fotosde la figura 8, las dos placas delautmata son montadas una so-

    bre otra usando separadores.Todo el cableado externo se unecon conectores enchufables.

    En la tarjeta inferior estn in-tegradas la fuente de alimenta-

    Fig. 5

  • 5/22/2018 Automata Programable Con PIC

    6/14

    cin, la CPU y el puerto de co-municaciones. La fuente de ali-mentacin genera tres tensiones:+5V con una capacidad de co-rriente de 1A para la lgica digi-tal, 14V con una capacidad de100mA para el circuito de pro-

    gramacin del procesador y+24V con una capacidad de 0,5Apara las entradas optoacopladas.

    En la placa superior se en-cuentra el driver que activa losrels de salida (que precisa 1contacto normalmente abierto y

    libre de potencial) y los optoaco-pladores que aslan elctricamen-te las entradas analgicas de lacircuiteria digital.

    El estado de las entradas sevisualizan con diodos led verdesy las salidas con diodos led rojos.

    Figura 6

  • 5/22/2018 Automata Programable Con PIC

    7/14

    Las tarjetas estn conectadasa travs de un cable plano de 26pines, el puerto de comunicacio-nes es de 9 pines y se han imple-

    mentado en el panel frontal tres

    leds de diagnstico, un pulsadorde RESET y un interruptor dedos posiciones, con funciones asaber:

    El led verde indica que el

    PLC est en modo RUN eje-cutando el programa contenidoen memoria y parpadea con unasecuencia de 0,5 segundos, es-

    tando bajo el control del sistema

    Figura 7

  • 5/22/2018 Automata Programable Con PIC

    8/14

    operativo. Si el PLC se cuelga ola memoria EEPROM est bo-rrada, este led deja de parpadearas como cuando el interruptorest en modo STOP/PRO-GRAM.

    El led rojo nos informa queel procesador est en estado deRESET, se activa unos segundosal aplicar tensin al autmata,cuando presionamos el pulsadorde RESET que se encuentrajunto al led verde y cuando pasa-mos el interruptor de dos posi-ciones del modo RUN al modode programacin STOP/PRO-GRAM para volcar programas ala memoria del PIC.

    El led amarillo sirve dediagnstico en los procesos decomunicacin con la PC; se acti-va al leer, borrar, verificar y gra-bar la memoria EEPROM delprocesador PIC16F84.

    PROGRAMAS CON

    AMBIENTEWINDOWS

    El software elegido para laprogramacin del autmata seejecuta bajo windows 95/98, esde libre distribucin para uso nocomercial y est disponible en lared. Se utiliz un viejo conoci-do de los lectores de Saber Elec-trnica; el potente entorno de

    programacin MPLAB de MI-CROCHIP, fabricante del mi-croprocesador PIC, usado paraeditar y compilar los programasPLC y generar el fichero.hexque volcaremos en el PIC.

    A parte de editar y compilareste software (programa), elMPLAB incluye muchas otrasopciones como la simulacin pa-

    so a paso de programas en en-samblador con la que depure en

    su momento el sistema operativodel autmata. Este programa sepuede descargar desde:

    http://www.microchip.com/

    Su tamao es de unos 9MB.Para la grabacin de la me-

    moria EEPROM del PIC y des-pus de mucho buscar por la redeleg el programa WPicProg16diseado por Nigel Goodwin alque debemos agradecer su aporteas como a Don Mckenzie queofrece mucha informacin sobreprogramadores PIC en su pginaaustraliana y a travs de la cuallocalice el programa. El software

    de programacin del procesadorPIC16F84 se puede descargar de

    la pgina personal de NigelGoodwin. El hardware del PLCest optimizado para la versin1.21 de 16 bits ejecutable bajoWindows 95/98 y se puede bajarde:

    http://www.lpilsley.freeserve.co.uk/software.htm

    En la prxima edicin habla-remos del Sistema Operativo deeste PLC y qu funciones puederealizar. Si Ud. no desea esperarhasta el mes prximo, puedeconsultar la pgina personal delautor en:

    http//inicia.es/de/juanmarod/portada.htm

    Figura 8

  • 5/22/2018 Automata Programable Con PIC

    9/14

    SISTEMA OPERATIVO OS

    El sistema operativo del aut-mata que he proyectado y cuyoslineamientos expusimos en la edi-cin anterior en realidad es muysencillo, tan slo incluye las ins-

    trucciones que inicializan los re-gistros del procesador, el puertoA, el puerto B, el temporizadorTMR0, los vectores de interrup-cin, la rutina que gestiona las en-tradas/salidas y la rutina de ges-tin de pilas; el resto son macrosque se utilizan como instruccionesdel PLC.

    Una de las muchas ventajas delas MACROS del ensamblador, es

    que slo se compilan e incluyendentro del cdigo del programa sison usadas en el programa PLC, sino usamos los contadores, porejemplo, stos aunque formen par-te del sistema operativo no sernincluidos en la compilacin del

    programa del autmata, reducien-do as, el uso de la memoria.Esto posibilita el diseo de un

    sistema operativo muy compacto,dado que la capacidad de memoriaEEPROM del procesadorPIC16F84 est limitada a 1024bytes. El sistema operativo debeocupar el menor espacio posible.El sistema operativo utiliza un15% de la memoria del procesa-

    dor, concretamente 155 bytes que-dando disponible el resto para lasinstrucciones del programa PLC(un total de 869 bytes libres). Paracomprender el principio de opera-cin del sistema operativo, vea losdiagramas de flujo de la figura 1.

    El sistema operativo est dis-ponible en la web en formato tex-to con la extensin .asm para sereditado con el programa MPLABde Microchip, sin embargo, en laprxima edicin comenzaremos apublicar el listado del programaen estas pginas. He procurado in-cluir todos los comentarios posi-bles para facilitar su comprensin,de todas formas es imprescindible

    Arme un P L C y crguele el sistema operativo con xito

    Sistema Operativo de un PLCde 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: [email protected] la Web: http//inicia.es/de/juanmarod/portada.htm

  • 5/22/2018 Automata Programable Con PIC

    10/14

    conocer los cdigosensambladores delmicrocontroladorPIC16F84.A la hora de realizarun programa PLCcon el softwareMPLAB se utilizandos ficheros, unocon el S.O. (sistemaoperativo) y otrocon las instruccionesPLC. En este ltimose debe realizar unallamada al ficheroque contiene el S.O.de forma que secompilen juntos.Si Ud. desea experi-

    mentar con este au-tmata, debe bajarde la web los archi-vos mostrados en latabla 1, ya que en laprxima edicin tra-bajaremos con ellos.El programaMPLAB de Micro-chip es un software

    muy completo y fcil de usar cuyaexplicacin fue dada en SaberElectrnica N 139. La forma ms

    cmoda de trabajar consiste encrear un PROYECTO para cadaprograma PLC que creemos.

    Es til usar una plantilla dondetengamos ya creadas las variablesiniciales del programa PLC.

    Ejecutamos el programaMPLAB y desde el men FILEabrimos el fichero plantilla "ba-se.asm", desde el mismo men lo

    guardamos "Save as.." con elnombre que ms describa las fun-ciones del programa (PLC porejemplo). Picamos (hacemos unclick) en el men "Proyect"ycreamos un nuevo proyecto "Newproyect" (figura 2), tecleamos elmismo nombre con el que llama-mos al fichero del programa PLCanterior y nos aparece una ventanacon el nombre del fichero.hex

    que ser el que posteriormentegrabaremos en el PIC (en nuestrocaso es: plc.hex, figura 3).

    En la misma ventana "ProjectFiles" picamos sobre el ficheroque aparece y a continuacin so-bre el icono "Node propierties".Se despliega otra ventana con di-ferentes parmetros (figura 4),pulsamos OK y volvemos al men

    Figura 1

    Tabla 1Descargar el sistema operativo OS_PLC8.asmDescargar plantilla de programa PLC PLANTILLA.asmDescargar ejemplo de programa PLC EJEMPLO.asm

    Figura 2

    Figura 3

    Figura 4

  • 5/22/2018 Automata Programable Con PIC

    11/14

    anterior. En este punto se activa elicono "Add node" (figura 5), lo pi-camos y aadimos al proyecto elfichero.asm del programa PLC.

    De esta manera yatenemos creado elproyecto con los dosficheros necesarios,picamos OK y secierran todas las ven-tanas.

    Podemos a continua-cin escribir el pro-grama PLC y com-pilarlo junto con elS.O. con los conosmostrados en la figu-ra 6.Tenga en cuenta queUd. puede bajar el

    programa ya escrito (que denomi-namos plc1.asm) de la web, no ha-ce falta que lo escribamos paraluego compilarlo.

    Para compilar el programa yas tener el archivo plc1.hex, pica-mos en FILE, luego OPEN (figu-ra 7) y buscamos el archivo pl-c1.asm (no-sotros lobajamos dela web y sa-

    bemosdnde lohemos alo-jado) talcomo su-giere la fi-gura 8.Aparecerel listadodel progra-ma (figura

    9) y lo ensamblamos picando enPROYECTy luego BUILD ALL(figura 10).

    Para ver el nmero de bytes dememoria EEPROM que ocupa elprograma compilado, desde elmen "Window" opcin "Pro-

    gram Memory" abrimos una ven-tana donde veremos las direccio-nes EEPRON usadas y as podercalcular el espacio que an nosqueda libre.

    Una vez compilado el progra-ma y libre de errores podemos pa-sar a grabarlo en el PLC, para elloconectamos el cable de comunica-ciones entre el puerto paralelo denuestro P.C. y el autmata, ejecu-tamos el programaWPicProg16ypasamos el interruptor del PLCde la posicin RUN a STOP-/PROGRAM, se apaga el led ver-de intermitente y se activa el ledrojo. La primera vez que ejecute-

    Figura 6

    Fig. 5

    Figura 7

    Figura 8 Figura 10

    Fig. 9

  • 5/22/2018 Automata Programable Con PIC

    12/14

    mos este programa, comprobare-mos los ajustes del puerto parale-lo, (figura 11) picamos en el icono"Options >>> Hardware" dondeveremos los bits del puerto usadospara cada seal de programacin.

    Desde el men "Options" ele-gimos "Find Port", con esto elprograma entra en comunicacincon el autmata y detecta la direc-cin Hexa del puerto al que estconectado (esquina inferior iz-quierda). Desde el men "File"abrimos el fichero.hex (en nuestrocaso: plc1.hex, figura 12) que que-dar visualizado en la ventana Buf-fer, seleccionamos el tipo de pro-cesador en nuestro caso elPIC16F84 (figura 13) y borramosel contenido de la memoria del

    PIC con el icono"Erase". Ajustamos

    las casillas "Fuses" y"Oscillator" activan-do WDT (wathdog), PUT y HS.Picando sobre elicono Write PICvolcamos el fiche-ro.hex a la memoriaEEPROM del PIC,activndose en elproceso el led amari-

    llo del frontal delautmata. Si no ocurre ningnerror, en el recuadro inferior dere-cho aparece el tiempo total de vol-cado (unos 4 segundos).

    En cualquier momento pode-mos comparar el contenido de la

    memoria del PIC con el fichero-.hex picando sobre el icono Ve-rify.

    Slo resta pasar el interruptorde STOP/PROGRAM a RUN (seapaga el led rojo y se activa el ver-de en forma intermitente) y com-probamos que el programa cum-ple las especificaciones activandolas entradas en la secuencia co-rrecta.

    Cuando creamos un programaPLC, es posible que cometamosalgn error de sintaxis. Estos erro-res aparecern reflejados al compi-lar el programa en una ventana

    Figura 11Fig. 12

    Fig. 13

    Fig. 14

  • 5/22/2018 Automata Programable Con PIC

    13/14

    que mostrara las lneas indicadasen la figura 14.

    En primer lugar nos informa sies un error grave o un aviso (War-ning) seguido de un cdigo que sepuede consultar desde la ayuda delMPLAB.

    En segundo lugar nos dice enqu fichero se ha encontrado elerror, la lnea de programa en quese encuentra y la informacin delo que el compilador no reconoceo no encuentra.

    Haciendo doble clik con elmouse sobre el texto de error nosdirigimos directamente a la lneadel programa que contiene dichoerror.

    Como vemos en el ejemplo su-perior, se nos informa que contie-nen errores tanto el fichero delsistema operativo (OS_PLC:ASM)como el fichero del programa plc(PLC1.ASM). Esto no es del todoreal y puede crear al principio bas-tante confusin.

    Como ya hemos visto, el siste-ma operativo est compuesto de

    "MACROS" y el programa PLCse compone de llamadas a estasmacros, por lo tanto, si comete-mos un error de sintaxis en unallamada a una macro del S.O. des-de el programa PLC al enlazar ycompilar juntos los dos ficheros, elcompilador intentar pasar los pa-rmetros de la llamada a la macro(instruccin PLC) usada en el fi-chero PLC a la macro que en rea-

    lidad se encuentra en el ficherodel S.O. producindose el error enla MACRO del fichero del S.O.cuando en realidad el error se en-cuentra en los parmetros del fi-chero del programa PLC.

    Veamos en realidad donde sehan cometido los errores de sinta-xis, para lo cual debemos dirigir-nos a la figura 14.

    Warning[202] D:\MPLAB\PI-C\EJEMPLOS\OS_PLC8.ASM435 : Argument out of range.

    Least significant bits used.Warning[202] D:\MPLAB\PI-

    C\EJEMPLOS\OS_PLC8.ASM437 : Argument out of range.

    Least significant bits used.

    El mensaje es que tenemos ar-gumentos fuera de rango en las l-neas 435 y 437. Haciendo dobleclic en cualquiera de estas lneassaltamos a la macro del S.O dondese producen.

    432 OUT MACRO DATA1,DATA2

    433 MOVWF S

    434 BTFSS S,0

    435 BCF DATA1,DATA2

    436 BTFSC S,0

    437 BSF DATA1,DATA2

    438 ENDM

    Lo que podemos deducir esque el error se encuentra en algu-na lnea del fichero PLC dondeaparezca la instruccin OUT. Re-

    visando este fichero encontramosla lnea 93 donde se intenta direc-cionar el bit N 8 del registro desalidas S0. Dado que los registrosdel plc son de 8 bits el rango dedireccionamiento slo puede en-contrarse ente cero y siete.

    93 OUT S0,8

    Corregimos este inconveniente

    seleccionando el bit adecuado, conlo cual el error desaparecer alvolver a compilar el programa.Como vemos los errores se encon-traban en realidad en el ficheroPLC.

    Los mensajes de error marca-dos como Error[113] en el men-saje de la figura 14 nos mandan ala lnea 427 del fichero OS_PL-

    C:ASM

    424 RESET MACRO DATA1,DATA2

    425 MOVWF S

    426 BTFSC S,0

    427 BCF DATA1,DATA2

    428 ENDM

    El error se encuentra dentrodel la macro RESET del sistemaoperativo, pero no informa en quelnea del fichero PLC se encuen-tra este error por lo que tendre-mos que revisar el fichero y com-probar la sintaxis de todas las lla-madas a la instruccin RESET.

    Es muy til en estos casos usarlas funciones de bsqueda queofrece MPLAB, activando la ven-tana que contenga el fichero delprograma PLC y pulsando F3 seabre la ventana de bsqueda don-de escribiremos la palabra a buscary as revisar todas las concurren-cias que aparezcan.

    104 RESET S0.4

    En la lnea 104 del ficheroPLC tenemos una llamada a lainstruccin RESET con un errorde sintaxis en los parmetros, enesta lnea realizamos un reset de lasalida N4 de la tarjeta de salidasS0 pero en lugar de una coma ","hemos tecleado un punto "." paraseparar los parmetros, este pro-blema ha generado dos errores enla lnea 427 del S.O que desapare-

    cern al sustituir el punto por lacoma y compilar de nuevo el pro-yecto.

    Error[128] D:\MPLAB\PI-C\EJEMPLOS\PLC1.ASM 104 :Missing argument(s)

    Este error s nos dice en qu l-nea del fichero PLC se encuentra,concretamente en la 104 y al hacer

  • 5/22/2018 Automata Programable Con PIC

    14/14

    doble clic en l nos manda al fi-chero PC donde confirmamos elerror de sintaxis del punto y la co-ma explicado anteriormente. Elerror se produce al faltarle un ar-gumento a la instruccin RESETya que S0.4 es considerado un slo

    argumento.

    Warning[207] D:\MPLAB\PI-C\EJEMPLOS\PLC1.ASM 79 :

    Found label after column 1.(AMD)

    Error[122] D:\MPLAB\PI-C\EJEMPLOS\PLC1.ASM 79 :

    Illegal opcode (E0)Estos errores s nos mandan di-

    rectamente al fichero de programaPLC.

    Picando sobre cualquiera deellos saltamos a la lnea 79 del fi-chero PLC donde vemos rpida-

    mente que nos hemos confundidoal escribir la instruccin AND co-mo AMD:

    79 AMD E0,0

    Lo dado hasta aqu pretendeser una gua para la comprensin

    del sistema operativo del autmataque estamos describiendo, si-guiendo paso a paso las instruccio-nes, no tendr iconvenientes parahacer funcionar el autmata.

    En la prxima edicin veremoscules son las instrucciones del PLC

    y daremos algunos ejemplos de pro-gramacin. Tenga en cuenta que elpresente proyecto es tomado de lapgina del autor desde Internet yque para obtener la versin comple-ta debe dirigirse a la direccin dadaal comienzo de la nota. J