Conexión de dispositivos
ThingWorx Kepware Server permite la comunicación para la automatización industrial y el IoT industrial. A menudo se utiliza en sistemas de producción en la fabricación por lotes de procesos discretos, la producción y distribución de petróleo y gas, la automatización de edificios, la producción y distribución de energía, etc.
Se han observado algunos escenarios en ThingWorx 9.4 y versiones anteriores, y Kepware 6.15 y versiones anteriores, en los que las propiedades remotas marcadas como Read from Edge muestran una calidad UNKNOWN y no reflejan los valores más recientes del dispositivo. Se han observado los siguientes escenarios.
Escenario
Descripción
Reinicio de la plataforma
Cuando la plataforma se reinicia, no se pueden leer los valores iniciales desde la periferia para las propiedades remotas marcadas como Read from Edge. Esto se debe a que no hay conexiones de socket web activas.
Edge/Kepware se vuelve a conectar después de la desconexión
Cuando Edge/Kepware se vuelve a conectar después de una pérdida de conexión, intenta enlazar. Esto sigue el patrón de enlace mencionado en Reinicio de la plataforma (escenario 1). Esto ocurre porque no se leen las propiedades de la periferia en el flujo de trabajo.
Servicio RestartThing o guardado desde Composer
En este caso práctico, la cosa se marca primero como detenida. Esto hace que pierda los enlaces con el extremo de la periferia.
Durante el método RestartThing, ThingWorx Platform primero enlaza al extremo existente y llama al método notifyPropertyUpdate. Este servidor edge llama a GetPropertySubscriptions para obtener información sobre propiedades y enlaces remotos. Puede que esta llamada no se realice correctamente, ya que es posible que la cosa no se haya iniciado. Algunas propiedades pueden actualizarse como resultado de la llamada a readPropertyValueFromEdge.
Inicio de Kepware en frío
Cuando Kepware se inicia por primera vez en un sistema, no tiene información sobre el enlazado de propiedades. Después del inicio, Kepware se conecta a ThingWorx Platform y se enlaza a RemoteThings. Kepware luego intenta sincronizar el estado en función de los detalles de propiedad obtenidos de ThingWorx Platform. Al mismo tiempo, Kepware también comienza a obtener datos de dispositivos industriales/hardware (por ejemplo, sistemas PLC, SCADA, DCS, etc.). Durante este proceso, ThingWorx Platform intenta leer las propiedades antes de que Kepware obtenga su valor del dispositivo. Esto puede dar lugar a datos con calidad DESCONOCIDA.
Corrección proporcionada
La solución implica la introducción de un nuevo mecanismo síncrono de obtención del valor actual de propiedades remotas, así como la reorganización de las llamadas al servicio interno de modo que solo se invoque cuando la cosa está en estado Running.
Se introduce un nuevo servicio SynchronizeModelState. Este servicio lo utilizará ThingWorx Platform para enviar información del modelo, como suscripción a propiedades, suscripciones a eventos, etc. Este servicio espera los valores de propiedad actuales de Edge a cambio. Este servicio también resuelve el problema de colapso por activación simultánea de varios hilos de ejecución que puede suceder cuando se inicia o reinicia la ThingWorx Platform, o cuando se reinicia la cosa remota.
Cuando el dispositivo Edge se vuelve a conectar, se establece una nueva conexión a Websocket y se recibe una solicitud de enlace. En esta solución, el dispositivo Edge espera a que se envíe la respuesta de enlace al cliente y, a continuación, ejecuta la llamada sincrónica para extraer las propiedades actuales, así como activar la solicitud asíncrona. La razón para esperar a que se complete el enlace es evitar una llamada cíclica y el bloqueo del enlace.
Se han añadido dos nuevas propiedades para realizar el seguimiento del estado de sincronización entre ThingWorx Platform y el dispositivo Edge. Estas dos propiedades se definirán después de la sincronización correcta del estado del dispositivo Edge con plataforma. Estas propiedades se redefinirán cuando la cosa se inicie o se detenga, o cuando el dispositivo Edge se desconecte.
IsInitialStateSynchronized(Booleano): si el dispositivo Edge está sincronizado actualmente con ThingWorx Platform o no.
lastInitialStateSynchronized(Fecha y hora): la última vez que el dispositivo Edge ha sincronizado su estado con ThingWorx Platform.
¿Fue esto útil?