Introduction: OPTO22 SNAP UP1 ADS Lectura De Parametros De Red Mediante LINUX

About: Proyectos, articulos, y opiniones tecnologicas para el hogar y la industria

OPTO22

Opto22 y en general su hardware industrial se caracteriza por ser bastante abierto en cuanto a documentacion,protocolos y descripcion de fallas se refiere. Aunque no tienen una "suite" completa basada en Linux para trabajar con sus equipos, si poseen algunos ejemplos de aplicaciones concretas para trabajar bajo ambiente Linux.

* This article is also available in English.

Para mas informacion visita: Automatizanos.com

Step 1: ​SNAP UP1 ADS

Este equipo es una mezcla de controlador (CPU) y manejador de entradas y salidas (I/O). Si bien no es un equipo de ultima generacion y no se recomienda para nuevos diseños, aun es fabricado y soportado por el fabricante. Por su gran flexibilidad para implementar diversos protocolos de comunicacion, lo hacen muy atractivo como pasarela para Internet De las Cosas (IoT)

Este equipo cuenta con una interfaz de red Ethernet. Por medio de esta interfaz de red se puede hacer configuraciones generales del equipo, descarga de la estrategia de control y monitoreo remoto HMI. Cuando el controlador esta conectado a una red ethernet, el fabricante provee una herramienta para windows llamada PAC MANAGER ( que hace parte de la suite gratuita PAC PROJECT ), con la cual se pueden detectar que equipos hay conectados a la red.

El principal inconveniente de esta aplicacion es que para poder llevar a cabo dicha deteccion, el equipo SNAP UP1 ADS debe estar configurado con similares parametros de red al computador que ejecuta la aplicacion!. de no ser asi el controlador no podra ser detectado. Si no se conocen de antemano los parametros de red del controlador solo quedan dos caminos:

- Reiniciar el controlador con los parametros por defecto y poner una nueva direccion conocida (se borraria la estrategia de control y demas configuraciones cargadas)

- Utilizar una aplicacion mediante puerto serial para obtener estos datos

Dicha aplicacion es OptoFlash-ENET, la cual es utilizada para leer y cambiar parametros de red, ver informacion de hardware y actualizar el firmware de : "cerebros " (brains) SNAP ethernet, "cerebros" (brains) SNAP ultimate, y la tarjeta M4SENET-100

Para comunicar la aplicacion se requiere la construccion de un cable serial RS232 desde el computador, al terminal de tornillos del SNAP UP1 ADS. Si no se dispone de un puerto serial en el computador, se puede recurrir a un convertidor RS232 USB sin problemas y si no se desea soldar cables la alternativa mas practica es usar un conector de 9 pines hembra con conexion a terminales de tornillo!

Step 2: ​ANALISIS DE TRAMAS DE DATOS

La aplicacion OptoFlash-ENET se comunica con el hardware mediante un protocolo ASCII el cual puede ser leido y analizado con facilidad. Ademas de esto la aplicacion provee una ventana en donde se puede ver claramente las tramas que envia el computador hacia el hardware. En la ventana de depuracion de comunicaciones de la aplicacion puede verse que se realizan 3 cosas:

1. Envio de comando "Power Up Clear"

2. Peticion para lectura de informacion de hardware

3. Peticion para lectura de informacion de parametros de red

Segun la documentacion de Opto22 el comando "power up clear" limpia una bandera que se genera cada vez que el controlador es encendido o reiniciado, dandole a conocer a la aplicacion de monitoreo que este se reinicio. Si no se envia este comando de "aceptacion" de reinicio, el hardware rechazara cualquier otro comando de monitoreo o configuracion. Por ello la aplicacion garantiza enviar un Power Up Clear, antes de realizar cualquier otra peticion.

La trama del comando "power up clear" es la siguiente

>000004100000FFFFF010000000040000010100020964

Los ultimos cuatro digitos de la trama corresponden al CRC-16

La trama para el comando de lectura de parametros de configuracion de red es la siguiente

>000004100001FFFFF0100000000400000101000CCD24

Igualmente los ultimos cuatro digitos corresponden al CRC-16

Step 3: ​COMUNICACION EN LINUX

En la ventana de depuracion de la aplicacion OptoFlash-ENET se nota que la comunicacion se realiza mediante un puerto serial configurado en 19200 8 N 1. Configuracio bastante comun en multiple hardware industrial!

Puesto que tanto los comandos como respuestas son la representacion en ASCII de numeros HEX, cualquier aplicacion de terminal serial que pueda enviar y recibir caracteres ASCII bastara para realizar la comunicacion. En este caso especifico se utilizo CUTECOM

Primero se debe enviar el comando de "power up clear"

>000004100000FFFFF010000000040000010100020964.

El dispositivo contesta con un mensaje similar a este:

>00000420AAAA0000000000001958

>00000410AAAAFFFFF0200000000400000101000068CE.

Luego se enviara la peticion de lectura de los parametros de red

>000004100001FFFFF0100000000400000101000CCD24

La respuesta obtenida es la siguiente:

>00010420AAAA000000000000E55C >00010410AAAAFFFFF0200000004A00000101000000000001050002004000008F070107D20100000 0C0A80268FFFFFF00C0A8020100000000000000000000000000000000FFFFFFFF008900170000000 00079FFFF00A03D007DC15952

Puesto que se conoce de antemano mediante la aplicacion de windows los parametros actuales del dispositivo, bastara buscar en la trama recibida coincidencias, la mas facilmente identificable es:

>00010420AAAA000000000000E55C >00010410AAAAFFFFF0200000004A00000101000000000001050002004000008F070107D20100000 0C0A80268FFFFFF00C0A8020100000000000000000000000000000000FFFFFFFF008900170000000 00079FFFF00A03D007DC15952

Que corresponde a la direccion MAC del equipo

Al analizar la trama, se nota que son representaciones ASCII de numeros en HEX, por lo tanto la direccion de red y demas parametros probablemente se encuentran codificados de esta forma!.

La aplicacion de windows decia que la direccion de red era 192.168.2.104 lo que en HEX equivale a: C0A80268. Buscando esta cadena en la trama, efectivamente aparece en

>00010420AAAA000000000000E55C >00010410AAAAFFFFF0200000004A00000101000000000001050002004000008F070107D20100000 0C0A80268FFFFFF00C0A8020100000000000000000000000000000000FFFFFFFF008900170000000 00079FFFF00A03D007DC15952

Y si se mira detalladamente los numeros que siguen FFFFFF00C0A80201 corresponden a la representacion en HEX de 255.255.255.0 y 192.168.2.1 por lo tanto ya se hallaron los bloques de informacion de los parametros de red actuales!! El resto de la trama probablemente indiquen otro tipo de informacion no mostrada en la aplicacion OptoFlash-ENET o son espacios dejados para añadir mas informacion en algun futuro.

Esta informacion es un primer paso para desarrollar una aplicacion en Linux, que automatice el proceso de envio, recepcion y analisis de tramas

Se requeriria hacer pruebas con otros modelos de hardware para constatar si la trama se mantiene igual (en estructura y tamaño), o si por el contrario para diferentes equipos la informacion de los parametros de red viene en otros sitios diferentes de la trama, o esta cambia!

Para mas informacion, visita: Automatizanos.com