Geräte verbinden
ThingWorx Kepware Server ermöglicht die Kommunikation für die industrielle Automatisierung und das industrielle Internet der Dinge (IoT). Die Anwendung wird häufig in Produktionssystemen für die diskrete Prozesschargenfertigung, Öl- und Gasproduktion und -verteilung, Gebäudeautomation, Energieerzeugung und vieles mehr verwendet.
In ThingWorx 9.4 und früheren Versionen sowie in Kepware 6.15 und früheren Versionen wurden einige Szenarien beobachtet, in denen für Remote-Eigenschaften, die als Read from Edge gekennzeichnet sind, die Qualität UNKNOWN angezeigt wird und die Eigenschaften nicht die neuesten Werte vom Gerät widerspiegeln. Die folgenden Szenarien wurden beobachtet.
Szenario
Beschreibung
Plattform-Neustart
Wenn die Plattform neu gestartet wird, können die Startwerte für Remote-Eigenschaften, die als Read from Edge gekennzeichnet sind, nicht vom Edge gelesen werden. Grund hierfür ist, dass keine Web Socket-Verbindungen aktiv sind.
Wiederherstellung der Edge/Kepware-Verbindung nach Trennung
Wenn Edge/Kepware die Verbindung nach einem Verbindungsverlust wiederherstellt, wird ein Bindungsversuch unternommen. Dieser folgt dem Bindungsmuster wie unter "Plattform-Neustart" beschrieben (Szenario 1). Dies liegt daran, dass im Workflow keine Edge-Eigenschaften gelesen werden.
RestartThing-Dienst oder Speichern in Composer
In diesem Anwendungsfall wird das Ding zuerst als angehalten markiert. Dies führt dazu, dass Bindungen mit dem Edge-Endpunkt verloren gehen.
Während der RestartThing-Methode bindet ThingWorx Platform zuerst an den vorhandenen Endpunkt und ruft die Methode notifyPropertyUpdate auf. Dieses Edge ruft GetPropertySubscriptions auf, um Informationen über Remote-Eigenschaften und Bindungen zu erhalten. Dieser Aufruf ist möglicherweise nicht erfolgreich, da das Ding eventuell noch nicht gestartet wurde. Einige Eigenschaften werden möglicherweise als Folge des Aufrufs von readPropertyValueFromEdge aktualisiert.
Kaltstart von Kepware
Wenn Kepware zum ersten Mal auf einem System gestartet wird, liegen keine Informationen zur Eigenschaftsbindung vor. Nach dem Start stellt Kepware eine Verbindung zu ThingWorx Platform her und bindet sich an RemoteThings. Kepware versucht dann, den Status basierend auf Eigenschaftsdetails, die von ThingWorx Platform abgerufen wurden, zu synchronisieren. Gleichzeitig beginnt Kepware damit, Daten von Industriegeräten/Hardware (z.B. SPS, SCADA- oder DCS-Systeme usw.) abzurufen. Dabei versucht ThingWorx Platform, Eigenschaften zu lesen, bevor Kepware den Wert vom Gerät abruft. Dies kann zu Daten mit der Qualität UNBEKANNT führen.
Korrektur bereitgestellt
Die Lösung umfasst die Einführung eines neuen synchronen Abrufmechanismus zum Abrufen des aktuellen Werts von Remote-Eigenschaften und zum Reorganisieren von internen Dienstaufrufen, sodass der Aufruf nur erfolgt, wenn sich das Ding im Status Running befindet.
Ein neuer Dienst SynchronizeModelState wird eingeführt. Dieser Dienst wird von ThingWorx Platform verwendet, um Modellinformationen wie Eigenschaftsabonnement, Ereignisabonnements usw. zu senden. Dieser Dienst erwartet im Gegenzug die aktuellen Eigenschaftswerte von Edge. Dieser Dienst löst auch das Thundering-Herd-Problem, das auftreten kann, wenn ThingWorx Platform gestartet oder neu gestartet wird oder das Remote-Ding neu gestartet wird.
Beim Wiederherstellen der Edge-Verbindung wird eine neue Websocket-Verbindung hergestellt, und eine Bindungsanforderung wird empfangen. In dieser Lösung wartet das Edge-Gerät, bis die Bindungsantwort an den Client gesendet wird, und führt dann den synchronen Aufruf aus, um aktuelle Eigenschaften abzurufen und eine asynchrone Anforderung auszulösen. Durch das Warten auf den Abschluss der Bindung sollen ein zyklischer Aufruf und das Blockieren der Bindung verhindert werden.
Es wurden zwei neue Eigenschaften hinzugefügt, um den Status der Synchronisation zwischen ThingWorx Platform und dem Edge-Gerät zu verfolgen. Diese beiden Eigenschaften werden festgelegt, nachdem der Status des Edge-Geräts erfolgreich mit der Plattform synchronisiert wurde. Diese Eigenschaften werden zurückgesetzt, wenn das Ding gestartet oder angehalten wird oder wenn das Edge-Gerät die Verbindung trennt.
IsInitialStateSynchronized(Boolesch) – Wenn das Edge-Gerät derzeit mit ThingWorx Platform synchron ist.
lastInitialStateSynchronized(DateTime) – Der Zeitpunkt, an dem das Edge-Gerät zuletzt seinen Status mit ThingWorx Platform synchronisiert hat.
War dies hilfreich?