W&T conecta
Interfaces para TCP/IP, Ethernet, RS-232, RS-485, USB, 20mA, fibra óptica de vidrio y de plástico, http, SNMP, OPC, Modbus TCP, I/O digital, I/O analógico, ISA, PCI

Tema:

Programación de Web-IO con
zócalos binarios

Consultar y aplicar señales IO con estructuras binarias



Aquí les mostramos en primer lugar los fundamentos para activar nuestros productos Web-IO con zócalos binarios vía TCP o UDP. No importa el lenguaje de programación que se utilice, pues los principios son idénticos para todos. A continuación encontrará las instrucciones de configuración de los Web-IO para el acceso binario, así como la información acerca del formato y la estructura de las estructuras binarias.


Más abajo hemos incluido enlaces con ejemplos detallados para diferentes lenguajes de alto nivel.


Acceso vía TCP/UDP

Acceso vía TCP

Igual que para una conversación telefónica, con TCP hay que establecer una conexión antes de poder intercambiar información.

En este caso, el cliente establece la conexión que será aceptada por el servidor. En las aplicaciones para Web-IO con sockets binarios, el Web-IO puede trabajar como servidor o como cliente, según la configuración. Aunque en general, la aplicación es el cliente y Web-IO el servidor.

Activar Web-IO vía zócalos TCP

Web-IO como servidor
Como servidor, el Web-IO ha abierto un puerto TCP para aceptar la conexión (si no se ha configurado de otro modo, es el puerto 49153). El cliente, es decir la aplicación, establece una conexión con la dirección IP del servidor para ese puerto. Para ello, también el cliente abre un puerto TCP (cambio dinámico) en el que recibe los envíos de datos del servidor, o sea del Web-IO.

Una vez establecida la conexión, la aplicación puede enviar datos (request) al Web-IO, que serán contestados o ejecutados (reply) por el Web-IO. Con la configuración correspondiente, el Web-IO puede transmitir el estado de la entrada (event message) sin una solicitud previa por parte de la aplicación.

Normalmente es la aplicación la que cierra la conexión TCP. Web-IO solo cierra la conexión en caso de error.

En el modo de socket binario TCP, el Web-IO solo puede aceptar una conexión en el puerto TCP abierto. Un intento de conexión de otro cliente sería rechazado (de un modo similar a una línea de teléfono ocupada).

Web-IO como cliente
Como cliente, el Web-IO se encarga de establecer la conexión. Un cambio de señal en las entradas activa el establecimiento de la conexión con el servidor configurado.

Una vez establecida la conexión se transmite el estado de las entradas. Mientras se mantenga la conexión se pueden intercambiar datos igual que en el modo de Web-IO como servidor.

El cierre de la conexión se activa por un Inactivity Timeout, es decir, un límite de tiempo. Web-IO cierra la conexión cuando no se produce ningún cambio en las entradas antes de que finalice el límite de tiempo configurado.

Acceso vía UDP

Al contrario que en una conversación telefónica, UDP no necesita ninguna conexión. De un modo similar a una comunicación por radio, simplemente se envía la información. Por lo tanto con UDP no hay cliente ni servidor, en su lugar se habla de UDP Peers que envían sus datagramas en igualdad de condiciones.

Activar Web-IO vía zócalos UDP

La aplicación envía datos al Web-IO (request), a los que Web-IO reacciona como corresponda y, si es necesario, envía una respuesta (reply). Además, con la configuración respectiva, Web-IO envía un datagrama cuando cambia el estado de las entradas.


Configurar Web-IO

Configurar Web-IO para acceso binario

Seleccione en la estructura de menús el entorno web Vías de comunicación >> Zócalo-API y active sockets Binary1. El resto de la configuración depende del tipo de acceso al socket requerido.

Web-IO como servidor binario En Socket-Type seleccione BINARY1 TCP-Server.

Activar Web-IO vía zócalos TCP

El puerto local puede ser adaptado a la propia aplicación si fuese necesario.

Cuando Web-IO deba enviar a la aplicación automáticamente el estado en caso de cambios en las entradas, marque la opción correspondiente en Input-Trigger.

Además, hay que habilitar las salidas que deban ser conmutadas a través de la aplicación.

Web-IO como cliente binario En Socket-Type seleccione BINARY1 TCP-Client.

Activar Web-IO vía zócalos TCP

En Server-IP se introduce la dirección de IP del usuario de la red, en el que está activa la aplicación de servidor, con la que debe conectarse Web-IO.

El Server Port es el puerto en el que la aplicación de servidor acepta la conexión. Ese puerto puede ser modificado si es preciso.

Normalmente el puerto local debería permanecer en AUTO para permitir una asignación dinámica. Pero, si la estructura lo exige, también se puede introducir un puerto específico.

Las entradas, que deban activar un establecimiento de la conexión cuando cambia el estado, tienen que estar activadas en Input-Trigger. Una vez establecida la conexión, se envían los estados automáticamente a la aplicación.

En el campo de intervalo se puede determinar si se debe establecer una conexión y con qué ciclo.

Por último, hay que habilitar las salidas que deban ser conmutadas a través de la aplicación de servidor.

Web-IO como UDP Peer binario En Socket-Type seleccione BINARY1 UDP-Peer.

Activar Web-IO vía zócalos UDP

En Remote-Peer-IP se introduce la dirección de IP del usuario de la red a la que Web-IO debe enviar los datagramas.

El puerto local UDP y el puerto remoto UDP pueden ser adaptados a la propia aplicación si fuese necesario.

Cuando Web-IO deba enviar a la aplicación automáticamente el estado en caso de cambios en las entradas, marque la opción correspondiente en Input-Trigger.

En el campo de intervalo se puede determinar si se debe enviar datagramas a la aplicación y con qué ciclo.

Las salidas, que deban ser conmutadas por la aplicación, tienen que estar habilitadas para ello.


Estructuras binarias

Formato y estructura de las estructuras binarias

Las estructuras que se intercambian son idénticas, independientemente de si se accede vía TCP o UDP.

Las estructuras de datos con variables individuales que se guardan en grupos sucesivos en la memoria como una secuencia de bytes. Con ese mismo orden son enviados también a través de la red. Todas las estructuras binarias para Web-IO están formadas de cuatro valores de 16 bits, a los que pueden seguir otros valores de 8, 16 o 32 bits, según la función de la estructura.

La estructura EA-Driver

Estructura binaria Web-IO

Start_1 y Start_2 Estas dos variables de 16 bits tienen siempre el valor 0 y forman la secuencia de inicio en cada comienzo de una estructura.

StructType En el tipo de estructura está codificado lo que debe hacer Web-IO o a lo que se refiere su respuesta. Estructuras de un determinado tipo tienen un formato específico de tipo.

StructLength Indica la longitud total de una estructura en bytes.

Lo que a simple vista parece complicado ofrece una gran ventaja: determinada información tiene siempre la misma ubicación dentro de la estructura y puede ser encontrada allí de inmediato. Por lo tanto se elimina la búsqueda de determinados contenidos en las cadenas de caracteres.

Ejemplo: consulta de entradas y salidas

Con el siguiente ejemplo queremos mostrar cómo se puede solicitar el estado de las entradas y las salidas y cómo es la estructura de la respuesta de Web-IO.

El tipo de estructura RegisterRequest La estructura RegisterRequest se corresponde con la estructura básica EA-Driver. En StructType se introduce 0x21 hex. (decimal 33) y se ajusta la StructLength a 8 (bytes).

Estructura binaria Web-IO

El tipo de estructura RegisterState Web-IO envía como respuesta una estructura del tipo RegisterState.

Estructura binaria Web-IO

También en la estructura RegisterState la primera parte se corresponde con la estructura básica EA-Driver. En StructType se introduce 0x31 hex. (decimal 49) y se ajusta la StructLength 0x0E hex. (decimal 14 Byte).

Pero le siguen otras tres variables de 16 bits. La variable DriverID en realidad ya no tiene ningún significado, pero sigue formando parte de la estructura con el valor 2 por razones de compatibilidad con los modelos de Web-IO anteriores.

Las variables InputValue y OutputValue reproducen los estados de conmutación de las entradas y salidas. El valor introducido se corresponde con el patrón de bits de las entradas o de las salidas. La codificación es sencilla. Aquí un ejemplo para las 12 entradas de un Web-IO #57730:

En ON se encuentran las entradas 0,1,5,7,10,11. Las otras entradas están en OFF.

En nuestro caso 1100 1010 0011. En escritura hexadecimal equivale a 0xCA3 o decimal 3235.

En el ejemplo anterior el valor para OutputValue es 1, por lo tanto solo la salida 0 está activada, es decir en ON. El resto de las salidas se encuentran en el estado OFF.

Encontrará una descripción detallada de la comunicación con estructuras binarias en el Breve resumen de estructuras binarias o en manual de programación para Web-IO.


Ejemplos en diferentes lenguajes de programación

Productos