Call us! 512-349-0334 or (877) INDUSOFT

¿Cómo se priorizan los mensajes de Driver y se envían en InduSoft Web Studio?

Nota: La siguiente discusión es un extracto de la recientemente actualizada Nota Técnica “Driver Runtime” disponible aquí.

La forma en que los Mensajes de Tareas del Driver se colocan en la Cola de Mensajes del Driver en el software InduSoft Web Studio SCADA depende de dos factos: Timestamp y Prioridad.

Los mensajes con mayor prioridad se ejecutan antes que los mensajes de menor prioridad, independientemente de sus Timestamps (tiempo en el que los mensajes se activan). Los Mensajes con la misma prioridad son ejecutados de acuerdo a su timestamp, de modo FIFO (First In (Primero en Entrar), First Out (Primero en Salir)).

 

Nota: Si el usuario especifica un número de reintentos en el cuadro de diálogo del Driver de Comunicación Configuración >> Avanzado, el driver de comunicación continúa ejecutando el mensaje el número de veces especificado por el usuario en caso de fallas de comunicación. Cuando el número de intentos expira, el mensaje es removido de la cola, incluso si la comunicación no fue exitosa.

Debido a que el Driver Runtime en InduSoft Web Studio inserta mensajes en la cola en el orden en que deben ser ejecutados (el cual se basa en la prioridad y timestamp de cada mensaje), el Driver de Comunicación ejecuta el mensaje de la parte superior de la pila first, removiéndolo desde la cola luego de ejecutarlo, sin tener en cuenta si la comunicación se ha realizado correctamente o no.

La Figura 1 y Tabla 1 muestran como la terea Driver runtime inserta mensajes en la cola según su prioridad/timestamp y cómo el Driver de Comunicación ejecuta los mensajes de la parte superior de la pila y los remueve luego de la ejecución.

Figura 1: Creación de la Cola de Mensajes del Driver Runtime

Nota: Antes de InduSoft Web Studio v6.1 + SP5 (Build 61.5.00.00), los mensajes de comandos Habilitar Lectura cuando está Incativo tenían una prioridad aún más baja (prioridad 4). Entonces, estos mensajes no podían ni siquiera ser enviados a la cola, a menos que hubiera siquiera una instancia del driver (thread) disponible (inactivo) para ejecutarlo. Este comportamiento no era necesariamente malo, pero dio lugar a confusión, por lo que se modificó para las versiones más recientes.

Tabla 1: Tipo de Mensaje y Prioridad

 

Modos de Driver de Comunicación

El escenario más simple para la Interfaz de Driver de Comunicación es un ejemplo de Driver de Comunicación con intercambio de datos con un dispositivo (Figura 2).

Figura 2: Tarea Driver Runtime e Instancia de Driver de Comunicación (<Nombre del Driver>.dll)

 

La Tarea Driver Runtime en InduSoft Web Studio es capaz de manejar más de un Driver de Comunicación de Manera simultánea. El máximo número de Drivers de Comunicación soportado por la Tarea Driver Runtime es limitado por la licencia del producto (Figura 3).

Figura 3: Tarea Driver Runtime con algunos Drivers de Comunicación

De manera adicional, el mismo Driver de Comunicación puede intercambiar datos con algunos dispositivos (Figura 4).

Figura 4: Driver Runtime con una sola instancia del driver conversando con múltiples dispositivos

Cada instancia de un Driver de Comunicación ejecuta los Mensajes de Drivers de la Cola de manera síncrona. Esto significa que el driver de comunicación no ejecuta el siguiente mensaje de la cola hasta que el mensaje actual se ejecute por completo (es decir, recibe una respuesta satisfactoria en el dispositivo, recibe un error del dispositivo o time out).

Este comportamiento es adecuado para muchos sistemas pequeños y medianos. Sin embargo, en sistemas grandes, este escenario podría no ofrecer el rendimiento esperado, debido a que el Driver de Comunicación se convierte en un cuello de botella en la comunicación con varios dispositivos, o incluso con un solo dispositivo.

Cuando el Driver de Comunicación intercambia datos con más de un dispositivo, y al menos uno de ellos no está disponible (es decir, desconectado de la red), esta situación puede disminuir significativamente el rendimiento de toda la interfaz de comunicación. Esto es debido a que el Driver de Comunicación no ejecuta los mensajes posteriores en la pila de mensajes para otro(s) dispositivo(s) adecuadamente conectado a la red durante el tiempo que se está tratando de ejecutar mensaje(s) para el dispositivo desconectado. Dado que el “Tiempo-Out” es fijado típicamente en el orden de segundos, puede causar serios retrasos en las comunicaciones con todos los dispositivos.

InduSoft Web Studio ofrece una solución para estos cuellos de botella mediante el uso de “Conexiones Simultáneas” para el mismo driver de comunicación.

 

 

Conexiones Simultáneas

Nota: El máximo número de solicitudes simultáneas depende del dispositivo y de las especificaciones del protocolo. Por favor, consulte la documentación del fabricante del dispositivo para obtener más información sobre el dispositivo y el protocolo que está utilizando.

El usuario puede configurar el número de conexiones simultáneas para el mismo Driver de Comunicación en el cuadro de diálogo Configuración >> Avanzado en la interfaz del driver (Figura 5). Durante el runtime, IWS crea una instancia independiente (thread) del Driver de Comunicación para cada conexión simultánea configurada por el usuario.

Figura 5: Configuración del Driver y Configuración Avanzada que muestra
las Conexiones Simultáneas

Figura 6: Driver que muestra dos conexiones simultáneas con el mismo dispositivo

La Figura 6 ilustra la estructura interna de la interfaz de comunicación de IWS cuando el usuario configura dos conexiones simultáneas para el mismo producto.

Es importante mencionar que las instancias (threads) del driver se crean en la memoria, y son transparentes para el usuario.

Cada conexión simultánea del Driver de Comunicación funciona en paralelo con los demás. Cuando se ejecuta una instancia de un mensaje, se elimina de la cola y busca el siguiente mensaje adecuado en la cola de partida en la parte superior de la pila de mensajes.

IWS implementa diversos mecanismos para asegurarse de que las conexiones simultáneas del driver no intenten ejecutar el mismo mensaje en la Cola de Mensajes del Driver. Cuando una instancia (thread) del driver de comunicación busca un mensaje en la Cola de Mensajes del Driver, puede que no lleven el mensaje superior, si se trata de un producto que ya está en comunicación con el número máximo de conexiones (otras instancias de driver de comunicación) configurado por el usuario. En este escenario, el driver de comunicación que está en reposo busca el mensaje más alto para el dispositivo que no está en comunicación con el número máximo de conexiones configuradas por el usuario – que no necesariamente es el mensaje de nivel superior de la cola.

 

Figura 7: El driver muestra dos conexiones simultáneas a dos dispositivos diferentes

La Figura 7 ilustra la estructura interna de la interfaz de comunicación de IWS cuando el usuario configura dos conexiones simultáneas, con un por cada dispositivo. En este escenario, habrá una instancia (thread) del driver de comunicación para cada dispositivo. Si un dispositivo no responde a las solicitudes del driver, esta situación no va a disminuir el rendimiento de la comunicación del otro dispositivo.

Nota: Las conexiones simultáneas no pueden ser implementadas con los protocolos seriales porque la capa física no soporta solicitudes asíncronas en la línea serial (peer-to-peer). Además, los drivers que utilizan bibliotecas de terceros apoyarán conexiones simultáneas sólo si la biblioteca de terceros es compatible también.

 

Más información sobre el funcionamiento, instalación y configuración de los Drivers de Comunicación se puede encontrar en el Manual de Ayuda principal (Techref.pdf) para InduSoft situada en Contenido >> Comunicaciones con Otros Dispositivos >> Drivers y en el Manual de Ayuda para el driver específico <DriverName>.pdf

Además, más información sobre el funcionamiento del driver, la tarea del driver, información de fondo de comunicaciones, y una discusión sobre los protocolos que se puede encontrar en la Nota Técnica: “Driver Runtime” que se encuentra aquí.

Comments are closed.