proyecto de ingenieria electr´onica: control y monitoreo sobre un plc desde una pc y...

54
Proyecto de Ingenieria Electr´onica: Control y monitoreo sobre un PLC desde una PC y un Touch Panel FernandoMendozaVel´azquez 14 de septiembre de 2003 Aprobado por: ———————————————————– M. en C. Victor Hugo T´ ellez Arrieta Asesor

Upload: lamdung

Post on 28-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Proyecto de Ingenieria Electronica:

Control y monitoreo sobre un PLC desde una PC

y un Touch Panel

Fernando Mendoza Velazquez

14 de septiembre de 2003

Aprobado por:

———————————————————–M. en C. Victor Hugo Tellez Arrieta

Asesor

Indice general

1. Introduccion 2

2. Comunicacion a traves del puerto serie 5

2.1. Comunicacion PC - PLC . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1. Transimision desde la PC . . . . . . . . . . . . . . . . . . 5

2.1.2. Recepcion en el PLC . . . . . . . . . . . . . . . . . . . . . 6

2.2. Comunicacion PLC - PC . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.1. Transmision desde el PLC . . . . . . . . . . . . . . . . . . 10

2.2.2. Recepcion en la PC . . . . . . . . . . . . . . . . . . . . . 11

3. Control y monitoreo sobre el PLC desde la PC 15

3.1. Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1.1. Por interruptores . . . . . . . . . . . . . . . . . . . . . . . 16

3.1.2. Por pulsadores . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2. Monitoreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.3. Problemas con MS Windows . . . . . . . . . . . . . . . . . . . . 21

4. Aplicacion 22

4.1. Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.2. Monitoreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5. Inclusion del Touch Panel 29

5.1. Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.2. Monitoreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

A. Detalles de programacion de PLC’s SIMATIC S7-200 35

2

A.1. Tipos de programacion . . . . . . . . . . . . . . . . . . . . . . . . 35

A.2. Tipos de datos y espacio de memoria del CPU . . . . . . . . . . 36

A.3. Eventos de interrupcion para comunicacion . . . . . . . . . . . . 37

B. Detalles de programacion en LabVIEW 40

B.1. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

B.2. Cadenas y arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . 41

B.3. Modo de accionamiento en botones . . . . . . . . . . . . . . . . . 42

C. Diagramas completos de la aplicacion 44

C.1. Diagrama VI para LabVIEW . . . . . . . . . . . . . . . . . . . . 44

C.2. Codigo KOP para el PLC . . . . . . . . . . . . . . . . . . . . . . 47

3

Resumen

En este proyecto se analizaron diferentes tecnicas para realizar la interconexionentre una PC y un PLC, con el objetivo de tener una herramienta mas sencillade controlar a este ultimo a traves de una interfaz grafica desde el monitor deuna computadora.

Aquı se plantea una propuesta de solucion para resolver un primer problemaque seria que codigo emplear en cada uno de los dos ambientes para estableceruna comunicacion de forma “continua” entre ambos. Un siguiente problema esencontrar la mejor forma posible para enviar las instrucciones de un dispositivoa otro, aquı presentamos algunos de los metodos posibles con ventajas y desven-tajas.

Por ultimo tambien se involucra a un tercer dispositivo que es un Touch Pan-el, accesorio para PLC’s. Con esto presentamos una solucion para establecer uncontrol y monitoreo sobre un PLC desde los tres puntos: Touch Panel, PC y elPLC mismo a traves de sus terminales de entrada.

Los principales problemas que se encontraron fue en la comunicacion PLC -PC, con la que se observo que el desempeno depende de el protocolo empleadopara enviar los datos desde la PC, de el tipo de maquina empleada, es decir,caracterısticas internas como velocidad del procesador, capacidad en memoria,etc., e incluso de si se encuentran al momento corriendo otras aplicaciones en elordenador, esto bajo plataformas MS Windows.

Capıtulo 1

Introduccion

La tecnologıa actual nos permite desarrollar sistemas complejos y robustosde una forma mas sencilla. Sin embargo uno de los retos como disenador desistemas de control electronico es presentar una interfaz sencilla y amigable conel usuario final. Esto nos lleva a pensar en dispositivos de control a base decomputadoras (PC) que nos permitirıa crear ambientes amigables de controly monitoreo para el usuario, ademas de ofrecer servicios mas elaborados comopodra ser el acceso a Internet.

Esta idea presenta un primer problema, si lo que se desea es realizar un

Figura 1.1: PLC SIMATIC S7-200 CPU 226

control sobre dispositivos de alta potencia tales como motores, generadores, etc.que entre otras cosas constituyen una gran fuente de ruidos electromagneticos,nos enfrentamos a como realizar una interfaz entre el dispositivo de control queen este caso serıa una PC y el dispositivo de manejo de potencia, el cual debe serinmune en lo mas posible a este tipo de factores. La solucion mas viable paraproblemas como estos es el uso del PLC (Programmable Logic Control). Estees un dispositivo disenado para el ambiente industrial en donde factores comoruidos electromagneticos, humedad, altas temperaturas, etc. son abundantes,esta hecho para soportarlo todo sin afectar su funcionamiento. Una razon paraesta eleccion es que resulta realmente complicado desarrollar algun dispositivo

1

que sea capaz de soportar tales condiciones, ademas de que algunos modelosde PLC pueden proporcionar servicios utiles como podrıa ser un convertidoranalogico-digital por ejemplo, ademas de comunicacion de tipo RS032 (puertoserie).

El siguiente punto es elegir un lenguaje de programacion para nuestra apli-cacion. Practicamente con cualquier lenguaje de programacion de alto nivelpueden implementarse rutinas de comunicacion a traves del puerto serie, pero silo que buscamos es crear interfaces accesibles y amigables con el usuario necesari-amente tenemos que pensar en algun lenguaje de programacion de tipo visual.En esta busqueda por obtener el lenguaje mas apropiado nos encontramos conLabVIEW de National Instruments, que es un lenguaje de tipo visual disenadopara control e instrumentacion electronica. Una gran ventaja de este paquete esque es multiplataforma, es decir, existen en el mercado versiones de este paradiferentes sistemas operativos como Linux (UNIX ) y Microsoft Windows, estoconstituye una gran ventaja ya que en principio no nos obliga a atenernos a unasola plataforma en la aplicacion final, pero ademas el sistema operativo emplea-do podrıa influir en el desempeno de la misma e incluso hasta reducir costos.Otra ventaja es que LabVIEW soporta aplicaciones de tipo TCP y UDP, con loque se abre la posibilidad de desarrollo de sistemas que se desenvuelvan sobreaplicaciones vıa Internet.

Ahora el paso siguiente sera determinar que codigo implementar tanto en

Figura 1.2: Touch Panel SIMATIC TP070

el PLC como en LabVIEW para establecer una comunicacion continua, que nospermita controlar y monitorear de manera simultanea. Y por ultimo, una vez es-tablecidos los medios para la comunicacion, definir tecnicas para la transmisionde la informacion para cada dispositivo, es decir, definir con que palabras el PLCva a reportarle un suceso a la PC y como debe interpretar esta tal informaciony viceversa, este es un punto critico debido a que pueden existir infinidad demaneras para implementarle, sin embargo se debe encontrar una solucion lo maseficiente posible, cuestion que tampoco es sencilla debido a que el desempeno deesta etapa podrıa depender de factores externos tales como sistema operativoy aplicaciones en ejecucion al momento como se vera mas adelante cuando seaborde este tema..

2

Para todo esto se utilizara un PLC Siemens de la serie SIMATIC S7-200modelo CPU 226 con dos puertos de comunicacion serial que serviran ademasde establecer comunicacion con la PC, para incluir un Touch Panel (SiemensTP070 ) y ası tener un tercer dispositivo involucrado, con el cual tambien secontrolara y monitoreara el sistema.

La programacion del PLC se realiza mediante el programa Step 7 Micro/Win32de Siemens para Microsoft Windows y la programacion del Touch Panel medi-ante el programa TP Designer tambien de Siemens y para la misma plataforma.

3

Capıtulo 2

Comunicacion a traves del

puerto serie

En este capitulo se analizaran propuestas de codigo en ambos sistemas (PLCy LabVIEW), para establecer la comunicacion por puerto serie, tanto trans-mision como recepcion.

2.1. Comunicacion PC - PLC

2.1.1. Transimision desde la PC

El lenguaje de programacion LabVIEW es un lenguaje orientado a objetos detipo grafico. Existen en este ambiente objetos ya predefinidos que realizan tareascomo realizar operaciones matematicas, activar o desactivar bits, leer datos delpuerto serie, escribir en el mismo, enviar informacion a traves de Internet vıaTCP o UDP, entre otras cosas.

Lo que se transmitira por el puerto serie son simplemente numeros, por el

Figura 2.1: Objeto encargado de escribir en puerto serie

momento no nos ocuparemos de establecer cuales seran estos ni su significado,lo unico sera hacerlos llegar a un objeto que se encarga de tomar un numero,descomponerlo en caracteres decimales y formar una cadena con estos, por ejem-plo, si le hacemos llegar el numero 1325 el objeto lo decompondra en 1, 3, 2 y5 y los convertira a su forma ASCII, y por ultimo formara una cadena con el-

4

los, en este caso serıa (31h, 33h, 32h, 35h), este paso prepara a los datos parasu transmision. Posteriormente esta cadena se manda a otro objeto que es elque se encarga de escribirla en el puerto serie. En la figura 2.2 se muestran lasconexiones basicas entre estos dos objetos. Para el objeto de escritura en puertoserie debe establecerse inicialmente el numero de puerto que es 0.

Todo el codigo en LabVIEW se repite continuamente, es decir que no se

Figura 2.2: Conexiones basicas para la escritura en puerto serie

necesita agregar instrucciones adicionales para que las transmisiones se realicende forma continua, esto nos da una pista para disenar el proceso inverso decomunicacion mas adelante. Por el momento presentamos un ejemplo completopara transmitir numeros enteros a traves del puerto serie. En la figura 2.3 semuestra dicho ejemplo. Se observan tres ventanas, la primera muestra la in-terfaz principal que consta de solo un cuadro donde se introduce ya sea desdeteclado o con las flechas laterales un numero. La segunda ventana muestra eldiagrama VI de conexiones, o sea el codigo del programa. Y por ultimo la tercerventana muestra la actividad del objeto de escritura en puerto serie, habra quesenalar que este objeto cuenta con su propio codigo e interfaz, es esta ultimala que se observa en esta tercer ventana; se observa el numero de puerto al queesta transmitiendo, un numero de error en caso de haberlo y en la caja inferiorse muestra la cadena que se esta transmitiendo.

2.1.2. Recepcion en el PLC

La recepcion en el PLC por naturaleza debe manejarse a traves de inter-rupciones. Los PLC Siemens tienen predefinidos eventos de interrupcion pararecepcion de informacion a traves de alguno de sus puertos de comunicacion. ElCPU 226, que como se menciono anteriormente es el que se utilizara durantetodo este proceso, cuenta con dos puertos de comunicacion, en el apendice B sepresentan detalles de estos y otros eventos de interrupcion en estos dispositivos.Considerando que posteriormente vamos a conectar un tercer elemento a nue-stro sistema, el cual debe ir conectado al puerto 0 del PLC vamos a manejar

5

Figura 2.3: Ejemplo de transmision por puerto serie

6

la transmision-recepcion a traves del puerto 1 aunque para otras aplicacionespuede manejarse tambien el puerto 0 solo haciendo algunos cambios que puedenconsultarse en el apendice B.

El primer paso es inicializar el puerto de comunicacion en el llamado modoFreeport, esto lo que hace es que al recibir un byte en el puerto inicializado estebyte es almacenado en la variable de marca especial 2 (SMB2 ) de el espacio dememoria del CPU, esta accion nos permite un acceso directo a tal informaciondesde nuestro codigo KOP.

Ahora debemos determinar como manejar estas interrupciones. El evento

Figura 2.4: Inicializacion del puerto 1 en modo Freeport

de interrupcion 25 ocurre cuando un caracter es recibido en el puerto 1 del CPU226 (u otro CPU que cuente tambien con este puerto). En principio se debeinicializar esta interrupcion y declarar una rutina para la misma. En la figura2.4 se muestra el diagrama para la inicalizacion y declaracion de la interrup-cion, asignando la rutina INT 0 como codigo a ejecutar en caso de ocurrir dichoevento.

Con esto ya tenemos la base para la adquisicion de informacion por el puerto

Figura 2.5: Declaracion e inicializacion de interrupcion para el evento 25

1 del PLC. Ahora veamos un ejemplo. En la figura 2.6 se muestra un ejemplosencillo, este programa toma el caracter recibido en el puerto y lo despliega ensu forma binaria a traves de las salidas de la familia Q0.x del PLC. Cuando esrecibido un caracter se activa la interrupcion y es ejecutado el codigo contenidoen INT 0 en donde se pide ejecutar la subrutina SBR 0. En esta subrutina serealiza una copia del contenido en el byte de marca especial (SMB2 ) en donde

7

se almacena el caracter recibido en el puerto a una variable intermedia VB0.Cuando el programa regresa al bloque principal se realiza la transferencia delvalor de la variable temporal hacia el byte de salida QB0 activando con esto lassalidas del PLC.

Este ejemplo ya puede usarse en combinacion con el ejemplo propuesto en la

Figura 2.6: Ejemplo de recepcion de informacion a traves del puerto 1

seccion anterior para LabVIEW. Solo hay que considerar algo muy importante,el PLC recibe caracteres, esto significa que lo que se almacena en el byte especialde marca SMB2 es el hexadecimal en codigo ASCII correspondiente al numerorecibido, en otras palabras, si desde la interfaz en LabVIEW es transmitido un5 lo que se almacenara en las variables del PLC sera un 35h y en las salidas delPLC se vera algo como 00110101, si se envıa un 3 se almacenara un 33h, conun 0 un 30h, y ası para todos los numeros del 0 al 9.

8

2.2. Comunicacion PLC - PC

2.2.1. Transmision desde el PLC

Para plantear un metodo de transmision de datos desde el puerto 1 del PLCpodrıamos retomar la idea de como lo hace LabVIEW. Como habıamos ob-servado el hecho de que el codigo se repitiera indefinidamente nos entregabatransmisiones continuas sin tener que escribir codigo extra. Los programas en elPLC tambien se repiten indefinidamente, solo que al realizar experimentos detransmision de datos se observo que en este caso es necesario implementar algunartificio que nos permita transmitir sin problemas, esto es, se encontro que debecontrolarse el tiempo entre cada transmision.

La propuesta que se presenta aquı es un generador de pulsos a partir de dostemporizadores programados a 10 ms cada uno dandonos periodos de 20 ms conlo que se obtuvo un buen funcionamiento. Habra que recalcar que en el ambientedel control la mayorıa de las veces el tiempo no es un factor muy importanteconsiderando que muchos de los elementos a controlar e incluso los sentidoshumanos son de respuesta relativamente muy lenta, por ejemplo de nada nosservirıa que la orden para arrancar un motor se de en 1 ms cuando desde quese da la orden hasta que el motor realmente empieza a funcionar podrıan pasarhasta mas de 500 ms.

Ahora, la instruccion XMT del PLC necesita datos como numero de puerto autilizar y direccion del inicio de la tabla donde se encuentran los datos a enviar.En este caso vamos a manejar una tabla de bytes. Esta tabla debe localizarseen la seccion de variables del espacio de memoria del CPU, el primer elementode la tabla debe indicar cuantos datos contiene y, en consecuencia, este numerotambien indicara la cantidad de datos a transmitir. En la figura 2.7 se muestrael codigo de todo lo antes mencionado, en donde se observa que el puerto atransmitir sera el 1 y que la tabla de datos comienza en la direccion VB100.

Para ejemplificar esta operacion proponemos un programa sencillo paraPLC. Este programa enviara por el puerto 1 una cadena con 3 numeros. Si laentrada I0.0 esta desactivada los numeros seran 1, 2 y 3, si la entrada I0.0 estaactivada los numeros seran 4, 5 y 6.

En la figura 2.8 se muestra el codigo KOP para el ejemplo descrito. La primerlınea declara que el numero de bytes de la tabla es de 3, con esto tambien leindicamos al objeto transmisor XML que seran 3 los bytes a enviar, notese queeste valor se esta asignando a la direccion VB100 en el espacio de memoria delCPU, misma direccion que propusimos como inicio de tabla en la figura 2.7,esto no implica que necesariamente debe ser ası, la tabla podrıa estar en otradireccion. En la segunda lınea, que es triple, se realizan transferencias de losvalores 1, 2 y 3 a las direcciones subsecuentes al inicio de la tabla, en este casoVB101, VB102 y VB103 respectivamente, estas transferencias se realizan enel caso cuando I0.0 esta activado, Y finalmente la tercer lınea, tambien triple,realiza las transferencias de 4, 5 y 6 a las mismas direcciones mencionadas an-teriormente, solo que esto en el caso cuando I0.0 esta desactivado.

9

Para probar este programa en la siguiente seccion analizaremos un programade recepcion de datos en la PC. Algo que mencionar en esta parte es que trasvarias pruebas realizadas se encontro que para que este sistema funcione correc-tamente el numero de bytes a transmitir debe ser de mınimo tres, esto puederepresentar un obstaculo para optimizar nuestra transmision, esto cuando solonos sean necesarios unos cuantos bits para toda nuestra informacion.

2.2.2. Recepcion en la PC

La recepcion de datos a traves del puerto serie en LabVIEW es muy distintaa la que se analizo para el PLC. En LabVIEW 5.0 viene un ejemplo para realizaresta implementacion, este se encuentra en el archivo de biblioteca smplserl.h yel ejemplo es LabVIEW - Serial.vi.

Existe un objeto en este lenguaje que se encarga de leer datos desde el puertoserie, para su funcionamiento necesita conocer primero la cantidad de bytes queva a leer, esto lo hace dependiente para nuestra aplicacion de un segundo objetoque se encarga de recibir los bytes de informacion del puerto serie, contarlosy almacenarlos en algun buffer temporal, ası este le pasa la cuenta de bytesal primer objeto y este ultimo leera los bytes del buffer. Otro parametro quenecesitan ambos objetos es el numero de puerto, para el puerto serie COM1,

Figura 2.7: Transmision de datos a traves del puerto 1 del PLC

10

Figura 2.8: Ejemplo de transmision de datos a traves del puerto 1 del PLC

11

bajo el ambiente MS Windows, es el numero 0. En la figura 2.10 se muestra la

Figura 2.9: Objeto de lectura del puerto serie

base del programa de adquisicion de datos del puerto serie. Se observa primeroun ciclo en donde se encuentra el objeto contador de bytes. Lo que hace estapequena subrutina es esperar a que llegue una cierta cantidad de bytes, canti-dad determinada por el usuario desde alguna interfaz, y en el momento en quese cumple dicha cantidad se rompe el ciclo y la cuenta le es proporcionada alobjeto de lectura, ası este ultimo lee el buffer y escribe los bytes en una cadenaintermedia. Ya es cuestion de la aplicacion el como utlizar esta cadena de bytes,por el momento esto es la base de nuestro programa. Por ultimo se agrego unobjeto que convierte una cadena a un arreglo de bytes, esto para separar cadabyte de informacion y manejarlos mas facilmente.

Ahora ejemplifiquemos esto. En la figura 2.11 se muestra el codigo completo

Figura 2.10: Recepcion de datos desde el puerto serie

en LabVIEW para un ejemplo de adquisicion de datos por el puerto serie. Laventana superior muestra la interfaz visual de control y la inferior muestra eldiagrama. Lo que hace este programa es, como se habıa mencionado, esperar aque se reciba una cierta cantidad de bytes, esta cantidad es introducida a travesde la caja de texto de entrada con la etiqueta ”Bytes to read”. Cuando se hacompletado la cuenta se pasa la informacion al siguiente bloque, se lee la cade-na de bytes y se almacena temporalmente en otra cadena, esta es representadapor la caja del centro con la etiqueta ”Serial read”. Por ultimo esta cadena estransformada en un arreglo, y este se muestra tambien en la interfaz, ya conlos datos separados en la parte inferior en el conjunto de cajas con la etiqueta”Arreglo”. Este ejemplo fue utilizado en conjunto con el ejemplo de la seccion

12

anterior, mostrando aquı el caso cuando la entrada del PLC I0.0 esta desactiva-da y se transmite la cadena (1, 2, 3). Con esto se comprueba el funcionamientode ambos programas.

Figura 2.11: Ejemplo de adquisicion de datos a traves del puerto serie

13

Capıtulo 3

Control y monitoreo sobre

el PLC desde la PC

En este capitulo empezaremos a manejar aplicaciones sobre la base ya con-struida, dando por entendido que el monitoreo que ejerce la PC sobre el PLC selleva a cabo con la comunicacion PLC - PC, y que el control que se ejerce igualdesde la PC al PLC se obtiene a partir de la comunicacion PC - PLC. De estaforma vamos a analizar los dos temas por separado.

3.1. Control

El punto clave en esta parte es que transmitir hacia el PLC para dar unacierta orden. Para empezar vamos a referirnos exclusivamente al ambiente delcontrol, donde por lo general las instrucciones se dan con cambios en valoresde variables de un bit, esto por medio de botones, sensores, contactos, etc., ylas salidas se dan de la misma forma por ejemplo prendiendo un motor o unindicador. Algo de tomar en consideracion es que el PLC nos recibira ordenesde 8 bits, por lo que se tiene que encontrar la mejor forma de optimizar talesrecursos. Esto puede cambiar variando la forma de recepcion en el PLC, es decir,recibir palabras o palabras dobles en lugar de bytes o caracteres, pero aquı seanalizara solo el caso de transmision-recepcion de 1 byte.

En principio, debemos analizar de que tipo de elementos de control disponemoscon LabVIEW. En esta herramienta existen basicamente dos formas de ac-cionamiento para los botones, estas son como pulsadores y como interruptoreso switches. La caracterıztica de los primeros es que cambian su valor de 0 a 1solo mientras sean presionados por el raton en la pantalla, en el momento enque se suelta el boton de este el pulsador regresa a su valor en 0. En cambiolos interruptores cambian de posicion con cada click que se realize sobre ellos,por lo que mantienen su valor ya sea 0 o 1 aunque el puntero no este sobre

14

ellos. Existen algunas variantes de funcionamiento que se mencionan junto conla forma de elegir el tipo de accionamiento en los botones en el apendice B.

El tipo de accionamiento es una diferencia clave, ya que ambos tipos de con-troles requieren de un tratamiento distinto en cuanto a transimision de datoshacia el PLC.

3.1.1. Por interruptores

La ventaja de los interruptores es que nos permite poder controlar variascosas a la vez desde nuestra interfaz en la PC, es decir, es posible manejar difer-entes botones simultaneamente sabiendo que estos cambian su valor con solo unclick. Sin embargo la gran desventaja de estos es que la cantidad que podemosponer de estos esta limitada a la cantidad de bits que este dispuesto a leer elPLC en el enlace, en nuestro caso es de solo 8 bits, por lo que a lo mas podremoscolocar 3 interruptores en la pantalla.

Esta limitacion se da debido a que la unica forma para transmitir datos coninterruptores es que cada uno de ellos controle un bit del byte a escribir enel puerto, esto es para que la informacion emitida por cada uno de ellos searespetada independientemente de que algun otro boton sea activado o desacti-vado.

Otro factor limitante es que la informacion que se envıa son numeros deci-males expresados en forma ASCII, esto es que solo tenemos el rango desde 30hhasta 39h para actuar, es decir, desde 00110000 hasta 00111001. esto en prin-cipio nos limita a utilizar solo 3 de los 8 bits.

Con esto tenemos que a lo mas podremos utilizar 3 de los 8 bits disponiblespara la transmision de los datos. Una muestra de como utilizar esto se encuentraen la figura 3.2. Puesto que la informacion manejada por los interruptores esbinaria y la informacion que se escribe en el puerto es basicamente hexadecimalnecesitamos realizar algun tipo de conversion. Una forma es mediante un selec-tor de valores que es un objeto dentro del ambiente LabVIEW que mediante unainstruccion binaria selecciona entre dos numeros a y b. Con esta herramienta

Figura 3.1: Objeto selector de numeros

nuestro trabajo se reduce a realizar solo sumas como se observa en el ejemplopropuesto, tomando al 0 como ausencia de ordenes y utilizando los numeros 1,2, y 4 (0001, 0010 y 0100 respectivamente) como cantidades a manejar porcada boton. Vale la pena reiterar que este metodo se debe principalmente a quemas de un interruptor puede estar activado al mismo tiempo en pantalla y deesta forma se evita que uno afecte a la senal de otro.

15

Un caso a analizar en este punto es que pasarıa si se agregara un cuarto

Figura 3.2: Ejemplo de control con interruptores

boton controlando la cantidad de 8 (1000 ). Puesto que el limite de nuestro ran-go de numeros que podemos manejar es de 39h o 00111001 observamos queeste nuevo boton podrıa funcionar sin problemas junto con el interruptor quemaneja el numero 1 (0001 ). Pero si el boton es activado junto con cualquierade los dos restantes entonces tendrıamos que se sobrepasarıa el limite impuestoy el numero transmitido no serıa el que nosotros esperarıamos, enviando haciala otra parte un dato erroneo.

En cuanto a recepcion de la orden en el PLC esta tecnica nos genera uncodigo sencillo para su interpretacion, ya que lo unico es recibir el caracter yasignarlo a alguna variable intermedia, y gracias a que en este ambiente puedenmanejarse los bits de una variable directamente no necesitamos codigo extra, porejemplo si el caracter recibido se asigna a la variable VB1 entonces ya tenemoslos bits V1.0, V1.1 y V1.2 con la informacion enviada desde los interruptores.

3.1.2. Por pulsadores

Como se habıa mencionado antes la caracterıztica principal del pulsador esque este se activa solo durante la duracion del click que se aplica sobre el, en elmomento en que se suelta el boton del raton el pulsador se desactiva. Esto noslleva a que no pueden haber mas de un pulsadores activados al mismo tiempo enpantalla. Esto nos quita una de las limitantes que tenıamos con los interruptores,y nos trae como consecuencia que, mientras que en el caso anterior nos veıamoslimitados a utilizar dentro del rango de 0 a 9 solamente los valores con soloun 1 en su forma binaria a excepcion del mismo 9 (1, 2 y 4), aquı podemosutilizar todo el intervalo completo, esto porque como no puede haber mas de

16

un pulsadores activados simultaneamente entonces nunca habra interferencia deuno con otro.

Con esto tenemos que en principio podemos colocar hasta 9 pulsadores enpantalla, pero esto se puede extender mas. Si cambiamos el objeto generadorde cadenas de caracteres decimales en el diagrama de transmision de datos porun objeto que tambien genere cadenas pero con caracteres hexadecimales, seincrementa nuestro intervalo de 0 a 15 y por consecuencia se incrementa elnumero de pulsadores maximo en pantalla a 15. En la figura 3.3 se muestra unejemplo con solo 8 pulsadores, el principio de interconexion es el mismo queel que se describio para el caso de los interruptores, aquı tambien se empleanlos selectores de numeros y se utilizan sumas para generar el numero final atransmitir.

Las desventajas de esta tecnica son por una parte, al no mantener su valor el

Figura 3.3: Ejemplo de control con pulsadores

pulsador despues de un click sobre el como si ocurre en el interruptor, si se deseaeste comportamiento se delega la generacion de este al programa en el PLC.

17

Por otra parte la recepcion en el PLC requiere de un codigo mas complejo, estoporque a cada boton se le debe considerar como un caso especial y el PLC debeidentificar el caracter que arrivo al puerto y ejecutar una subrutina especificapara el. Por ejemplo en el caso que proponemos de 8 botones deberan crearse 8subrutinas distintas, una para cada uno de los posibles caracteres recibidos (del31h al 38h), en el caso del 30h podria no especificarse nada ya que se le consideracomo ausencia de ordenes, o bien asignarsele alguna rutina de reestablecimiento.

Por ultimo habra que considerar que en caso de utilizar el modo hexadecimalpara aumentar el numero de pulsadores en pantalla, para aquellos botones quemanejen un numero mas grande que 9h, es decir Ah, Bh, Ch, Dh y Eh, setransmitira por el puerto el valor hexadecimal ASCII correspondiente a la letraen cuestion, 41h, 42h, 43h, 44h y 45h respectivamente.

3.2. Monitoreo

Se habıa mencionado anteriormente que tras varias pruebas realizadas seencontro que la comunicacion de PLC hacia PC tenia un buen funcionamientocuando se transmitıa una cadena de no menos de tres bytes. Tambien se men-ciono que esto era algo desafortunado ya que como la mayoria de las variablesen el control son de tipo booleanas para aplicaciones no muy grandes podrıamostener transmisiones poco eficientes, por ejemplo podrıa darse el caso de tenerque enviar una orden de un bit con todo un byte completo. Sin embargo lacodificacion en el receptor se simplifica en este tipo de casos, al no tener quedescomponer el byte recibido en sus bits componentes para recibir los diferentesdatos. Un ejemplo de recepcion de esta forma se muestra en la figura 3.4.

En el ejemplo propuesto se observa que la cadena es recibida y en seguida sele practica una conversion a arreglo de numeros, despues cada factor del arregloes extraıdo y se verifica si su valor es mayor a 0, con esto vemos que para trans-mitir un 1 podrıa simplemente hacerse transmitiendo un numero mayor a 0, yfinalmente el resultado se envıa a lo que podrıa ser mas co’digo o como en estecaso a unos simples indicadores binarios. Este tipo de transmision-recepcion po-drıa utilizarse para aplicaciones que requieran menos de 8 bits de informacion,en el ejemplo se transmiten solo 3 bits.

Ahora imaginemos una aplicacion que requiera monitorear por lo menos 24variables booleanas del CPU del PLC, que pueden ser entradas o salidas delmismo, variables intermedias e incluso podrıa ser informacion de un convertidorA/D. Entonces ya podemos optimizar nuestras transmisiones, ahora si requerire-mos de descomponer la informacıon contenida dentro de un byte y manejarlapor separada como bits. En la figura 3.5 proponemos un modelo de recepcionpara este tipo de casos, el ejemplo esta hecho para recibir, mas que 3 bytes, 24bits de informacion. La primer parte del tratamiento que se le da a la cadena debytes es el mismo que en el caso anterior, aquı tambien se convierte la cadenaa un arreglo de numeros. Sin embargo despues de este paso a cada miembrodel arreglo se le aplica otra conversion, el numero se pasa por un objeto que lo

18

convierte en un arreglo de bits y se almacena en un arreglo que podrıa ser inter-medio o final, este podrıa estar formado por indicadores en la parte de interfazcomo se sugiere en los dos miembros inferiores en la figura, o podrıa a su veztomarse cada miembro del arreglo de bits y manejarse con algun otro proposito,en este caso en el miembro de la parte superior se toman 4 de los bits del byteen cuestion y para efectos de ejemplificacion se envıan solo a otros indicadores.

Figura 3.4: Ejemplo de recepcion para pocos datos

Figura 3.5: Ejemplo de recepcion para cantidades medias y grandes de datos

19

3.3. Problemas con MS Windows

Durante las pruebas se detecto un defecto en el funcionamiento de la apli-cacion, este generado por el mismo sistema operativo, MS Windows en este caso,el cual se presenta como ruido en la informacion recibida desde el PLC cuandoexisten mas aplicaciones ajenas corriendo al mismo tiempo que nuestro enlace,como podrıan ser reproductores de audio MP3, editores de texto, navegadoresde internet, etc.. Tambien se encontro que este problema se acentua cuandomenor es la capacidad tanto en memoria RAM como en velocidad del CPU dela PC.

Estos problemas ocurrieron en versiones de MS Windows 98, ME e inclusoXP, este ultimo sobre una maquina Pentium IV a 2 GHz y 128 MB en RAM.La solucion mas sencilla al problema es cerrar todo tipo de aplicaciones extrasmientras corremos nuestro programa.

Se presume que por las caracterızticas del sistema operativo Linux este tipode problemas podrıan no presentarse, desafortunadamente no se pudo conseguirel paquete de LabVIEW para tal plataforma, por lo que no fue posible haceresa prueba.

20

Capıtulo 4

Aplicacion

Ahora vistas todas las bases centremonos en una aplicacion especifica. Laidea sera simple, controlar la salida Q1.0 del CPU 226, el control debera re-alizarse mediante pulsadores, tanto fısicos conectados directamente a las en-tradas I0.0 e I0.1, ademas de dos pulsadores virtuales puestos en una interfazgrafica fabricada con LabVIEW. Esta interfaz debe incluir un dibujo del CPU226 de tal forma que se observe con alguna clase de indicadores las entradasy/o salidas activadas en todo momento.

Nuevamente dividiremos este diseno en dos partes, control y monitoreo.

4.1. Control

Empecemos por fabricar la interfaz grafica. Incluir un grafico dentro de unainterfaz generada por LabVIEW se realiza con la herramienta Cortar/Pegar.Por otra parte, en el apendice B se menciona como seleccionar el modo de ac-cionamiento de los botones como pulsadores o con algun otro funcionamiento.Una propuesta de pantalla serıa la que se observa en la figura 4.1.

Ahora se debe construir el codigo para la transmision. En este caso son solo2 datos (2 bits) los que se desea transmitir para la aplicacion, la senal de activary la de desactivar, por la baja cantidad de datos podrıa emplearse cualquiera delas dos formas de transmision PC - PLC estudiadas anteriormente (para inter-ruptores y para pulsadores), pero en este caso se pide emplear la tecnica parapulsadores.

En la figura 4.2 se muestra el diagrama para la transmision. El boton paradesactivar, marcado en la interfaz con el caracter “O”, transmitira el numeroASCII de 1 (31h) al ser presionado en pantalla; el pulsador para activar, mar-cado en la interfaz con el caracter “I ”, transmitira el numero ASCII de 2 (32h)tambien mientras sea presionado. Cuando ambos botones esten sueltos se trans-mitira el caracter 0 (30h).

21

La recepcion de datos en el CPU 226 se manejara como se habia menciona-do antes, tomando tres casos distintos: el de 30h, 31h y 32h. Esto se determinaen la rutina de la interrupcion, para que cuando llegue un caracter al puer-to inmediatamente sea identificado y se ejecute la subrutina correspondiente.

Figura 4.1: Interfaz grafica de control con LabVIEW

Figura 4.2: Transmision de datos de la aplicacion

22

La figura 4.4 muestra el codigo KOP para la interrupcion (INT 0 ), se observaque para el caso del caracter 30h se asigna la subrutina SBR 0, para el 31h lasubrutina SBR 1 y para el 32h la SBR 2. Es preciso recordar que el caracterrecibido por el puerto del PLC es alojado en el byte de marca especial SMB2.

La tarea ahora es definir las actividades en cada subrutina. Al ser basica-

Figura 4.3: Codigo para la interrupcion INT 0

mente informacion binaria la que estamos transmitiendo el manejo en la recep-cion debe ser de la misma forma. Tomaremos una variable intermedia VB10,que ayudara a efectuar los cambios ordenados en la transmision. En la figura4.4 se muestran las actividades de cada subrutina, estas son:

SBR 0 : Al recibirse el caracter 30h se ejecuta esta subrutina en la que,debido a que tal caracter es simbolo de no ordenes, se reestablece el val-or de la variable temporal VB10 despues de haber sufrido cambios concualquiera de los otros dos casos, en otras palabras, pone a 0 todos susbits.

SBR 1 : Al recibirse el caracter 31h, esta subrutina activa el bit V10.1 quepertenece a la variable intermedia que estamos manejando.

SBR 2 : Al recibirse el caracter 32h, esta subrutina pone a 1 el bit V10.2de la variable intermedia.

El control sobre la salida Q1.0 se realizara por el metodo ya clasico dearranque-paro sencillo utilizado desde la epoca del control electromecanico. Para

23

esto emplearemos cuatro senales de control, dos de los botones de la interfazgrafica que ya fueron transformadas a las variables V10.1 y V10.2 anterior-mente, y los dos restantes se obtendran, como se habıa mencionado, de lasentradas fısicas I0.0 e I0.1 del PLC.

(a)

(b)

(c)

Figura 4.4: Codigos de subrutinas: (a) caso 30h, (b) caso 31h, (c) caso 32h

El control sobre la salida Q1.0 se muestra en la figura 4.5. Cuando alguno delas variables binarias I0.1 o V10.2 es activada, es decir, cuando el boton virtualde la interfaz “I ” o el boton fısico conectado en la entrada I0.1 son presiona-dos, se activa la variable Q0.1, cerrandose tambien el contacto marcado con lamisma etiqueta provocando que aunque se suelte el boton la salida se mantengaactivada, esto en el ambiente del control se conoce como autoenergizacion. Porotro lado, al presionarse cualquiera de los otros dos botones, es decir, el botonvirtual “O” o el conectado en la entrada I0.0, se interrumpira el circuito virtualy la salida sera desactivada.

24

Figura 4.5: Control sobre Q1.0

4.2. Monitoreo

Lo que nos interesa monitorear desde la PC son las dos entradas del PLCI0.0 e I0.1, y la salida Q1.0. Aunque solo son tres bits de informacion nos vemosforzados a utilizar 3 bytes por la razon que se explico anteriormente. Como sesabe, se necesita llenar una lista ubicada en la parte de variables del espaciode memoria del CPU 226 que habiamos propuesto que empezara en VB100.Recordemos que la primer casilla de la lista contiene el numero de datos quela conforman, en este caso seran 3, en la parte superior de la figura 2.8 semostro como aplicar este valor a la posicion VB100.

Ahora, introducir los demas datos a la tabla se puede realizar con una simpletransferencia de bytes, como se muestra en la figura 4.6. Se utiliza cada variablebinaria directamente para transferir un 1 a cada posicion en la lista, esto paracuando sean activadas; y se utilizan sus inversos para transferir continuamente0 a la lista en caso de que esten desactivadas.

Por otra parte, en nuestra interfaz grafica deben agregarse los indicadorescorrespondientes a cada una de las variables monitoreadas. Una idea seria comola que se observa en la figura 4.7, sobre la imagen del CPU 226 se montanlas lamparas en los lugares donde fısicamente se encuentran las variables, en lafigura estas lamparas se muestran activadas para su facil identificacion.

El diagrama para la recepcion se muestra finalmente en la figura 4.8. Serecibe la lista transmitida en forma de cadena con tres elementos, se transformala cadena en arreglo y posteriormente se separa y procesa cada miembro delarreglo. Se verifica si el valor correspondiente es mayor a 0, si esto es cierto seactiva el indicador correspondiente, en caso contrario se desactiva.

25

Figura 4.6: Transferencia de datos a la lista de transmision

26

Figura 4.7: Interfaz grafica con indicadores activados

Figura 4.8: Recepcion y proceso de la informacion en la PC

27

Capıtulo 5

Inclusion del Touch Panel

Ahora el ultimo paso, incluir un Touch Panel desde el que tambien se puedacontrolar y monitorear el PLC. Esta aplicacion se ha tomado aparte de lo demasya que como se vera a continuacion su implantacion no es determinante para laprimera parte de la aplicacion, es decir, su programacion y comunicacion con elPLC es totalmente ajena a la comunicacion entre PLC y PC, mientras que estaultima se realiza mediante el puerto 1 del CPU 226, el Touch Panel se comu-nicara con el mismo mediante el puerto 0. Aquı no se explicaran detalles sobrela programacion del Touch Panel, al que nos referiremos de aquı en adelantecomo TP, y solo se mencionaran los pasos esenciales para construir la interfazde control y de monitoreo.

5.1. Control

El SIMATIC TP070 cuenta con elementos de control muy parecidos a al-gunos ofrecidos por LabVIEW. Aquı tambien contamos con los dos mismostipos de accionamiento para los botones virtuales: interruptores y pulsadores,sin embargo su funcionamiento es algo distinto, como tambien sucede con dis-positivos como el TD200, cuando un pulsador activa a su variable correspondi-ente esta conserva su valor aun despues de soltado el boton. Como este no esel funcionamiento que esperarıamos se tendra que implementar algo mas parareestablecer la variable.

Asignemos a la variable VB0 como la encargada de recibir las instruccionesdel TP, es decir, por medio de los bits V0.x se llevaran las ordenes de control. Lainterfaz grafica en el TP va a ser parecida a la que se manejo en LabVIEW, porlo que se debe incluir la misma imagen del CPU 226 y dos botones dispuestosde la misma forma, como se observa en la figura 5.1.

Por default los botones tienen funcionamiento como pulsadores, por lo quesolo se debe determinar la funcion y la variable que se va a afectar. La funcion

28

en ambos botones debe ser “Activar bit”, y las variables que se manejaran seranV0.0 para el boton “O” y V0.1 para el boton “I ”.

Como bien lo dice el nombre de la funcion “Activar bit”, y como ya sehabia tratado anteriormente, se debera implementar algo para desactivar tal

Figura 5.1: Interfaz grafica de control en el TP

Figura 5.2: Configuracion del boton O

29

bit despues de soltado el boton. Una propuesta es reestablecer el byte VB0,la idea natural seria hacerlo inmediatamente despues de liberado el pulsadorpero desafortunadamente no tenemos forma de saber cuando ocurre eso, por loque otra solucion seria reestablecer tal valor en intervalos de tiempo de maneracontinua, para esto podrıamos ocupar el generador de pulsos utilizado para latransmision de datos por el puerto 1, este tiempo es tan corto para el sentidohumano que el operador sentirıa que los botones virtuales funcionan como unverdadero pulsador. Este manejo se muestra en la figura 5.3.

Ya que se establecieron las dos variables de control desde el TP ahora solo

Figura 5.3: Reestablecimiento de los botones del TP

resta agregarlas a nuestro control sobre la salida Q1.0 y con esto se acompletarıatodo el esquema de control de la aplicacion.

Figura 5.4: Control final sobre Q1.0

5.2. Monitoreo

La programacion en el TP se basa en un esquema de pantallas, por lo quepara labores de monitoreo se tendra que utilizar cambios de pantallas. Desafor-

30

tunadamente la respuesta del TP a cambios de pantalla ordenados desde dis-positivos externos como lo es el mismo PLC puede llegar a ser muy lenta, noası cuando los cambios son ordenados desde alguna funcion desde el mismo TP.Esto nos lleva a solo considerar el monitoreo sobre la salida Q1.0, debido a quela activacion de las entradas I0.0 e I0.1 pueden ser muy rapidas y no ser al-canzadas a registrarse por el TP, ademas de que se necesitarıan una cantidadconsiderablemente mayor de pantallas para las diferentes combinaciones posi-bles, las cuales podrıan ser inutiles en su mayorıa.

Utilizando la pantalla que se mostro anteriormente como pantalla inicial,se crea una segunda pantalla con una modificacion en la imagen del CPU 226simulando la salida Q1.0 como activada.

Lo siguiente es configurar las pantallas tomando en cuenta los valores que

Figura 5.5: Pantallas del TP

Figura 5.6: Configuracion de la pantallas del TP

aparecen en el campo “Numero” , estos numeros identificaran a las pantallaspara cuando se pretenda hacer un cambio de las mismas en el TP. Para esto sedebe declarar una variable que ordenara los cambios, esta se propone que sea

31

V0.7. Esta variable binaria necesita de una segunda variable de tipo entero paraseleccionar la pantalla correspondiente, esta ultima se propone que sea VB50.

Al activarse el bit V0.7 se ordena al TP a cambiar a la pantalla indicada porVB50. Con esto tenemos que necesitamos algo que este repitiendo esta orden dealguna forma, lo mas logico es pensar que por intervalos de tiempo predefinidos.Esto tambien nos lleva a que el TP debe estar verificando de forma continuael valor de tales variables por lo que esto debe especificarse al configurar lasvariables V0.7 y VB50, como se observa en la figura 5.7 que muestra la tabla devariables empleadas por el TP, su tipo, su ubicacion en el espacio de memoriay la forma en la que el TP les dara lectura.

Tras varias pruebas realizadas se observo que en este caso no podemos em-

Figura 5.7: Tabla de variables del TP

plear el generador de pulsos de la parte de transmision de datos para activary desactivar continuamente el bit de orden de cambio de pantalla V0.7, por loque se tiene que implementar otro generador, el cual debe ser mas lento. Esteesquema completo se muestra en la figura 5.8 donde se construye un generadorcon intervalos de 200 ms, con este valor se obtuvo el mejor funcionamiento.

Por ultimo debe escribirse el sistema para escoger la pantalla indicada. ComoQ1.0 es nuestra variable a monitorear, sera con esta misma con la que elegiremosla pantalla, esto puede realizarse con un par de simples transferencias de byteshacia la direccion propuesta para tal fin, VB50. En la figura 5.9 se observa eldiagrama para esto ultimo, cuando la salida Q1.0 esta desactivada se transfiereel valor 1 a la direccion VB50 y con esto se elige la pantalla 1. Cuando Q1.0 esactivada se transfiere el valor 2 y se manda la orden de desplegar la pantalla 2.

Como se menciono al principio de esta seccion, el cambio de pantalla puedeser algo lento, segun las pruebas efectuadas, entre 0.5 y 2 segundos, con laconfiguracion propuesta anteriormente.

32

Figura 5.8: Orden de cambio de pantalla

Figura 5.9: Seleccion de pantalla

33

Apendice A

Detalles de programacion

de PLC’s SIMATIC S7-200

A.1. Tipos de programacion

El paquete STEP 7-MicroWIN 32 V3.1.1.6 de SIEMENS para programacionde PLC’s SIMATIC S7-200, ofrece tres distintos ambientes para generar codigopara el CPU: KOP, AWL y FUP.

KOP (Esquema de contactos). Este ambiente esta basado en la for-ma en que se disenaban los controles de tipo elctromecanico, por mediode relays, contactores, switches mecanicos, etc. La idea principal de esteeditor es simular paso de corriente a traves de contactos hacia bobinas,temporizadores, etc. Este es el modelo que se maneja en este proyecto.

Figura A.1: Ejemplo de KOP

AWL (Lista de instrucciones). Este es la forma mas antigua de pro-gramacion de PLC’s, ya que antes no se contaba con interfaces graficas atraves de PC’s para programar como lo es en el ambiente anteriormem-nte descrito. La estructura de este se asemeja a lo que es un lenguajeensamblador, ya que maneja tambien una pila y cuenta con un conjunto

34

de instrucciones que interactuan de manera muy similar a lo antes men-cionado.

Figura A.2: Ejemplo de AWL

FUP (Diagrama de funciones). Este se basa principalmente en unambiente de diseno logico, es decir, el codigo se implementa como se harıacon compuertas logicas. Se manejan bloques que representan una funcionlogica, o de algun otro tipo como temporizadores o registros de corrimientopor ejemplo, con sus correspondientes entradas y salidas.

Figura A.3: Ejemplo de FUP

A.2. Tipos de datos y espacio de memoria del

CPU

Los tipos de datos que soportan los CPU SIMATIC son:

BOOL. De 1 bit.

BYTE. De 8 bits.

INT. Entero, 16 bits.

DINT. Entero largo, 32 bits

REAL. Flotante, 32 bits

WORD. Palabra, 16 bits.

35

DWORD. Palabra doble, 32 bits.

En cuanto al espacio de memoria, esta es dividida en varias secciones. Las masimportantes para nosotros son:

Entradas binarias (I) . Esta parte corresponde a los datos recibidos porlas entradas Ix.x del PLC.

Salidas binarias (Q) . Es en donde se almacenan los valores de las salidasQx.x del PLC.

Variables (V) . Este es el espacio de direcciones de memoria RAM paramanejar variables.

Marca (M) . Estos son espacios reservados por el CPU para eventos comoel teclado del panel TD200.

Marca especial (SM) . Tambien son espacios reservados, pero algunos deestos son de solo lectura, para eventos tales como la recepcion de datospor los puertos o el almacenamiento de la lectura del convertidor A/D.Un caso especial es el bit SM0.0 que se utiliza como bit “comodın” enlos casos en que se quiere activar algo sin una orden especifica. Tambienalgunos de estos bits funcionan como banderas de cero, desbordamientoy numero negativo (SM1.0, SM1.1 y SM1.2 respectivamente) por citaralgunos ejemplos.

En la figura A.4 se muestra una tabla con todos las secciones en que se divideel espacio de memoria de los CPU SIMATIC.

A.3. Eventos de interrupcion para comunicacion

A lo largo de este proyecto se utilizo el evento de interrupcion 25 para larecepcion de datos por el puerto 1. Sin embargo esto puede realizarse tambiena traves del puerto 0 que es el que tienen practicamente todos los PLC’s dela familia SIMATIC S7-200, para esto el evento de interrupcion cambia a 8mientras que los datos se almacenan en el mismo lugar, SMB2. Otro cambio esque el puerto 0 debe incializarse en modo Freeport y el byte que correspondepara tal configuracion es el SMB30, mientras que para el puerto 1 es el SMB130

En la figura A.5 se muestra una tabla que contiene los diferentes eventos deinterrupcion asociados al manejo de los puertos de los CPU.

36

Figura A.4: Espacio de memoria del CPU de los SIMATIC S7-200

37

Figura A.5: Eventos de interrupcion para puertos de los SIMATIC S7-200

38

Apendice B

Detalles de programacion

en LabVIEW

El paquete LabVIEW de National instruments es un lenguaje de progra-macion grafico orientado a objetos. Su aplicacion es principalmente para sis-temas de instrumentacion. Como cualquier otro lenguaje tambien cuenta conelementos tales como variables, arreglos, cadenas, ciclos, etc., cada uno de es-tos es representado por un objeto grafico en pantalla. Cada programa generadoen LabVIEW tiene basicamente dos pantallas, una de interfaz con el usuario yotra que muestra el diagrama de conexiones entre objetos, en otras palabras, elcodigo del programa.

Una de las caracterısticas que hacen especial a este lenguaje es que es nece-sario construir primero la interfaz con el usuario, cuando menos poner en lapantalla los elementos de control, y despues generar el codigo. Esto es porquetodos los elementos de almacenamiento, tales como variables, arreglos o cadenasse generan desde esta interfaz, aunque despues pueden ser puestos ocultos encaso de tratarse de elementos intermedios.

B.1. Tipos de datos

Como se ha mencionado una variable tambien se ve como un objeto, y paradeclararse se debe incluir dentro de la interfaz de control, ya sea como una cajade introduccion o despliegue de numeros, galvanometros, barras, etc.; todo estose encuentra en el menu Numeric de la paleta de controles.

Para definir el tipo de dato que manejara una variable se presiona el botonderecho del raton sobre el objeto en cuestion y en el menu se selecciona Repre-sentation.

Los tipos de datos mas importantes manejados por LabVIEW se describen

39

en la figura B.1.Aparte de los tipos de datos que se manejan en la figura existe otro al que

se le considera aparte, tan importante como los otros que es el booleano, estetipo de variables se representan dentro de LabVIEW como interruptores, pul-sadores, lamparas, LED’s, etc., esto se encuentra en el menu Boolean de la paletade controles.

Entero sin signo de 8 bits (Byte)

Entero sin signo de 16 bits (Word)

Entero sin signo de 32 bits (Double Word)

Entero corto con signo de 8 bits (Short Int)

Entero con signo de 16 bits (Int)

Entero largo con signo de 32 bits (Double Int)

Flotante de precision simple de 8 bits (Single Precision)

Flotante de precision doble de 16 bits (Double Precision)

Flotante de precision extendida de 32 bits (Extended Precision)

Figura B.1: Tipos de datos en LabVIEW

B.2. Cadenas y arreglos

Dentro de las opciones que ofrece LabVIEW para construir estructuras dedatos se encuentran las cadenas, arreglos, clusters y listas.

Las cadenas se representan por cajas de texto y existe la opcion para incluir-las como entrada, salida o simplemente de paso intermedio. Las cadenas siempremanejan numeros enteros que pueden representar ya sea cantidades enteras onumeros en codigo ASCII correspondientes a caracteres.

Los arreglos por otra parte pueden manejar cualquier tipo de dato de los men-

40

cionados en la seccion anterior, ademas de que pueden ser creados con multiplesdimensiones. Para definir el tipo de dato que manejara el arreglo se debe crearprimero una simple variable con las caracterısticas deseadas, posteriormente enel menu Array & Cluster de la paleta de controles se selecciona un arreglo enblanco, para posteriormente arrastrar la variable que se creo hacia el interior delarreglo y ası este queda construido. Puede esto tambien realizarse con botoneso indicadores para obtener arreglos de bits.

(a)

(b)

(c)

(d)

(e)

Figura B.2: Ejemplos de arreglos de (a) bytes, (b) enteros, (c) flotantes, (d)botones y (e) LED’s

B.3. Modo de accionamiento en botones

En LabVIEW existen 6 diferentes formas de accionamiento para los botones.Para seleccionar esta propiedad se presiona el boton derecho del raton sobre elelemento en pantalla y se selecciona en el menu emergente Mechanical Action.

En la figura B.3 se detallan cada uno de estas formas de accionamiento.

41

Switch when pressed. El boton cambia su estado en el momento en queel boton izquierdo del raton es presionado con el puntero sobre el.

Switch when realized. El boton cambia su estado cuando el botondel raton es liberado.

Switch until realized. El boton cambia de estado mientras el boton delraton esta presionado, cuando este es liberado regresa a su posicion 0.

Latch when pressed. El boton se activa en el momento en que espresionado el boton izquierdo del raton, y se desactiva justo en el momentodespues que el programa ha realizado una lectura sobre su valor sin importarque el boton en pantalla siga presionado.

Latch when realized. El boton se activa en el momento en que elboton del raton es liberado, y se desactiva justo despues de que el programa arealizado una lectura de su valor.

Latch until realized. El boton se activa cuando el boton del ratones presionado, y se desactiva cuando este ultimo es liberado y se realiza unalectura sobre el valor de la variable.

Figura B.3: Tipos de accionamiento para los botones

42

Apendice C

Diagramas completos de la

aplicacion

C.1. Diagrama VI para LabVIEW

Figura C.1: Control y envıo de informacion por puerto serie

43

Figura C.2: Recepcion y manejo de informacion por puerto serie

44

Figura C.3: Recepcion y manejo de informacion por puerto serie (cont.)

45

C.2. Codigo KOP para el PLC

Figura C.4: Modulo principal

46

Figura C.5: Modulo principal (cont.)

47

Figura C.6: Modulo principal (cont.)

48

Figura C.7: Modulo principal (cont.)

49

Figura C.8: Modulo de interrupcion INT 0)

Figura C.9: Modulo de subrutina 0 SBR 0)

Figura C.10: Modulo de subrutina 1 SBR 1)

Figura C.11: Modulo de subrutina 2 SBR 2)

50