Vous êtes sur la page 1sur 6

Comunicacin por puerto serie a travs de DeviceNet: ArmorPoint RS-232 ASCII

En la entrada anterior program la comunicacin serie de un lector de cdigos de barras con un PLC CompactLogix a travs de su puerto serie integrado. Ahora la aplicacin ha cambiado y debo hacer la comunicacin utilizando una tarjeta ArmorPoint RS-232 ASCII a travs de DeviceNet. Los ArmorPoint de Rockwell son mdulos de periferia distribuida disponibles para buses de campo DeviceNet, ControlNet, EtherNet/IP o Profibus DP. A la cabecera DeviceNet que tengo disponible, referencia 1738-ADN18, le voy a acoplar una tarjeta de comunicaciones 1738-232ASCM12, que es una versin ms robusta de una tarjeta 1734-232ASC, compartiendo la misma electrnica, por ello la documentacin de referencia ser la de esta ltima tarjeta: POINT I/O ASCII Modules 1734-232ASC, 1734-485ASC (PDF). El conjunto ensamblado de la cabecera ArmorPoint con mi tarjeta de comunicacin serie tiene el siguiente aspecto:

Cabecera ArmorPoint con inteface serie sobre mi mesa, lista para hacer pruebas (disculpad la calidad de las conexiones, a pesar del mal aspecto el conjunto funcion sin problemas).

En conjunto, para hacer mis pruebas, tengo conectado un PLC CompactLogix L35E con una tarjeta escner de DeviceNet. Entre esta ltima y la cabeceraArmorPoint coloco un PowerTap referencia 1485T-P2T5-T5, que me servir para alimentar la red. Conecto el cable DeviceNet y en los extremos, entre los cables blanco y azul pondr sendas resistencias de cierre. Para conectar el lector de cdigos de barras a la tarjeta de comunicaciones he fabricado chapuceramente un adaptador como el siguiente:

El conjunto completo y alimentado sobre mi mesa presenta el siguiente aspecto:

PLC + PowerTap + ArmorPoint + Lector de cdigos de barras

Ahora toca configurar la tarjeta de comunicaciones, para ello abrimos el software de redes RSNetWorx for DeviceNet y buscamos la tarjeta 1738-232ASCM12:

Los parmetros de comunicacin serie deben ser coherentes con los indicados el la configuracin hecha en el lector de cdigos de barras. Tambin deberemos ampliar los buffers de comunicacin y especificar el caracter terminador. No olvidemos mapear en el escner las reas de entradas y salidas necesarias. Configuro mi PLC en un proyecto de RSLogix5000, con la red DeviceNet del escner y la subred del ArmorPoint. Con la herramienta DeviceNet Tag Generator Tool genero en mi proyecto los tags necesarios para no tener que direccionarlos a mano. A la hora de realizar la programacin, lo primero a tener en cuenta es que las instrucciones para manejo del puerto serie integrado en el PLC no son aplicables a un puerto serie en DeviceNet. Adems tenemos una limitacin adicional: el tamao de buffer mximo es de 128 bytes. Si vamos a hacer comunicaciones de menor tamao no habra ningn problema, pero en mi caso necesito recibir tramas de unos 200 bytes. La solucin para mi aplicacin consiste en programa el lector de cdigos de barras para que cada 80 bytes (por ejemplo) inserte un carcter de terminacin. As que para leer una trama de 200 bytes voy a tener que hacer tres lecturas sucesivas y reunirlas en mi PLC. Para manejar las tramas de comunicacin voy a definir un tipo de string de 256 caracteres:

Los tags que voy a necesitar los voy a agrupar en un UDT:

Para saber que tenemos datos disponibles en el buffer de comunicacin serie tenemos el tag DNET_N01_S01_COS_I.ReceiveRecordNumber (creado automticamente por el DeviceNet Tag Generator), que se ir incrementando con cada recepcin. Como cada trama viene troceada en varias recepciones, para saber que he ledo todos los datos, el lector de cdigo de barras lo he configurado para que me d en los primeros cuatro bytes la longitud total de la trama. As que tendr que ir sumando la longitud de cada recepcin hasta que coincida con lo que me diga el lector. Si tuviese una longitud de trama fija la programacin sera ms sencilla. Mi rutina de recepcin de datos es la siguiente:

Para activar una recepcin de datos hay que setear el tag SERIE_DNET.ORDEN_LECTURA. Cuando la trama haya sido completamente leda el mismo tag se pondr a cero, con lo podremos leer en SERIE_DNET.LECTURA la trama buscada. Su funcionamiento es el siguiente: cuando se activa la orden de lectura se borra la trama anterior y se vigilan cambios en DNET_N01_S01_COS_I.ReceiveRecordNumber. Cuando este cambio se detecta se comprueba que su longitud est dentro unos lmites y se copian los datos recibidos en un string. Si estamos en el primer trozo se sacan los cuatro primeros bytes y se lee la longitud total de la trama. Vamos concatenando lecturas sucesivas hasta obtener la longitud buscada o que pase un tiempo mximo desde haber recibido el primer trozo. El proyecto de RSLogix5000 con el que he realizado las pruebas te lo puedes descargar aqu. Solo he hecho pruebas para la recepcin de datos, puesto que para mi aplicacin es suficiente. La programacin del envo de datos debera seguir una filosofa similar.

Vous aimerez peut-être aussi