Mein Gebäude – Temperatur- und Luftfeuchtigkeitssensoren

Tutorial

Dieses Kapitel präsentiert einen konkreten Anwendungsfall für die Gruppierung physikalischer Sensoren und Verbesserung der Temperaturdaten im digitalen Zwilling. Es zeigt, wie Scripting es ermöglicht, das Display zu vereinheitlichen und die Werte zu formatieren und die Überwachung durch kalkulierte Mängel zu stärken.

In unserem Anwendungsfall werden die Temperatur- und Luftfeuchtigkeitssensoren als zwei Sensoren eingesetzt physische Aspekte am Boden. Aus Sicht des Endnutzers jedoch, Diese beiden Maßnahmen sind eng miteinander verbunden und müssen einheitlich konsultiert werden.

Deshalb haben wir uns entschieden, diese beiden Sensoren in einem einzigen Gerät zu gruppieren Immersive, benannt "Zimmer", um ein Stück kohärent darzustellen, um ein Werk kohärent darzustellen im digitalen Zwilling.

Für die Darstellung des Temperatursensors im digitalen Zwilling, Das zentrale Element ist der gemessene Wert. Das Hauptziel ist es, hervorzuheben Diese Schlüsselinformation, indem sie direkt in der Ausrüstungsblase angezeigt werden, und bietet somit sofortiges und intuitives Lesen.

Zusätzlich werden die angezeigten Werte mit ihrer Einheit formatiert, um Verbesserung der Lesbarkeit und des Verständnisses der Daten durch den Nutzer.

Schließlich wird zur Stärkung der Aufsicht ein berechneter Defekt hinzugefügt. Dies löst einen Alarm aus, wenn die Temperatur übersteigt eine vordefinierte Schwelle, die so eine schnelle Erkennung abnormaler Situationen gewährleistet.

Funktionale Ziele

  1. Bringen Sie zwei physikalische Sensoren (Temperatur und Luftfeuchtigkeit) im selben Immersive "Room"-Gerät zusammen
  2. Zeigen Sie die Temperaturmessung direkt in der Geräteblase an
  3. Formatter-Werte, um die Maßeinheit einzuschließen
  4. Erzeugen Sie einen Alarm, wenn die Temperatur einen festgelegten Schwellenwert überschreitet

Voraussetzungen

  • Erstellung eines familienbezogenen Verhaltensskripts Room
  • Räume im digitalen Zwilling kombinieren.

Darstellung der Temperaturmessung in der Geräteblase

Durch JS-Skripte können wir die sichtbaren Informationen modifizieren, die sichtbar sind im Symbol, das mit der Ausrüstung im Zwilling verbunden ist (Widget3D), Dazu fügen Sie einfach die Customize Zu unserem Skript.

Die Immobilie, an der wir interessiert sind, ist die Immobilie text der Widget3D wie im folgenden Diagramm gezeigt.

Die Texteigenschaft des Widget3D, die verwendet wurde, um die Temperatur anzuzeigen.

Der Zugang zur Temperaturmessung erfolgt direkt vom Objekt aus equipment. Dazu ruft man einfach die referenzierte Temperaturvariable ab nach dem Kenner TEMP in der Beschreibung unserer Familie.

Hier wird die Variablenreferenz verwendet, aber der Name der Température kann auch verwendet werden.

Anpassung der Excel-Datei.

JS-Skript:

function Customize(equipment, widget2d, widget3d)
{
  // Récupération de la variable TEMP de l'équipement
  // Astuce : Une variable peut être récupérée via son nom (Température) ou sa référence (TEMP)
  let temperatureVar = equipment.GetVariable("TEMP");

  // Modification du texte par la valeur de la température (1 décimale) ajout et de l’unité
  widget3d.text = temperatureVar.AsFloat.toFixed(1) + "°C";
}

Sobald das Skript angewendet und die Anwendung neu gestartet ist, kannst du die Änderungen sehen.

Formatierte Temperaturanzeige in der Raum-Ausrüstungsblase.

Formwerte zu Anzeigeeinheiten

Messungen aus dem Feld stellen manchmal physikalische Größen dar, die mit einer Messeinheit verbunden sind. (Temperatur °C oder °C, Geschwindigkeit, Energie ...).

Diese Messungen haben oft viele Dezimalstellen, die für den Nutzer nicht immer relevant sind.

Daher wird empfohlen, die Anzeige auf eine einzige Dezimalstelle zu beschränken, um die Informationen klarer zu machen.

Vergleich zwischen Rohwerten und Werten, die mit einer Einheit formatiert sind.

Wie im obigen Beispiel gezeigt:

  • Die Rohwerte (links) sind schwer zu lesen.
  • Nach der Formatierung (rechts) werden die Werte auf eine Dezimalstelle abgerundet und von ihrer Einheit begleitet, was das Lesen erleichtert.

Zwei ergänzende Methoden werden vorgestellt, um dies zu erreichen:

  1. Die vorgelagerte Konfiguration der Maßeinheiten, direkt in der Excel-Datei.

Dieser Ansatz ermöglicht es, die Anzeige der Daten zu standardisieren, sobald sie integriert sind.

  1. Formatierung über das Behavior-Skript, das mehr Flexibilität bietet

und ermöglicht es, die Anzeige dynamisch anzupassen (Einheit, Anzahl der Dezimalstellen). Nach Bedarf.

Konfigurieren Sie die Einheit eines Maßes aus Excel

Beim Konfigurieren der Messkanäle eines Geräts aus der Excel-Datei, Es ist möglich, die für jeden Kanal zugeordnete Maßeinheit anzugeben.

  • Wenn keine Einheiten angegeben sind, werden die Werte wie in Immersive angezeigt.

(Beispiel links)

  • Wenn eine Einheit konfiguriert ist, fügt Immersive diese Einheit automatisch neben den Wert hinzu

und begrenzt die Anzeige auf eine einzige Dezimalstelle für bessere Lesbarkeit. (Beispiel rechts)

In unserem Fall konfigurieren wir die Einheiten Celsius und Pourcent In der Spalte Einheit für die Temperatur- und Feuchtigkeitskanäle.

Konfigurieren Sie Maßeinheiten in der Immersive Excel-Datei.

Formatierung der Darstellung einer Variablen aus Scripting

In manchen Fällen ist es notwendig, die Art und Weise, wie eine Variable ihren Wert darstellt, feiner zu verändern. Um dies zu ermöglichen, ist es notwendig, eine neue JS-Skriptmethode zu implementieren Zum Verhalten unserer Ausrüstung: GetFormattedData

Beispiel:

// Fonction de formatage des variables
function GetFormattedData(equipment, variable)
{
    // Formatage spécifique selon la variable
    // Filtre par nom : variable.Name => "Temperature", "Humidity"
    // Filtre par référence : variable.NameKey => "TEMP", "HYGRO"
    switch (variable.NameKey)
    {
        case "TEMP" : return variable.AsFloat.toFixed(1) + " °C (formattage js)";
        case "HYGRO" : return variable.AsFloat.toFixed(1) + " % (formattage js)";
    }

    // Dans les autres cas on retourne une chaîne vide, le formattage est geré par défaut.
    return "";
}

Das Ergebnis unseres Skripts ist wie folgt:

Ergebnis der Formatierung von Werten mittels JS-Skripting.

Erzeugung eines Alarms im Falle von Überschreitung einer Temperaturschwelle

Im Rest unseres Szenarios wollen wir den Nutzer warnen, wenn eine Temperatur einen bestimmten Schwellenwert überschreitet, damit er schnell reagieren kann. Dazu definieren wir einen Alarm, der direkt in der Schnittstelle hervorgehoben wird.

Das Erstellen und Aufheben von Warnungen erfolgt in zwei Schritten.

  • Implementierung der Funktion SetupEquipment um die Warnung zu erstellen.
  • Implementierung der Funktion OnEquipmentChanged zur Berechnung des Alarms.

Alarmmeldung erstellen: Temperatur zu hoch

Um eine neue Warnung auf einem Gerät aufzunehmen, wird ein Aufruf an die Funktion verwendet CreateStaticFault wenn die Ausrüstung initialisiert wird. Damit kannst du einen Kanal in der Kategorie "Defekt" der Ausrüstung erstellen.

JS-Skript:

function SetupEquipment(equipment)
{
  // Création d'un nouveau défaut
    equipment.CreateStaticFault('Température trop élevée');
}

Alarmberechnung: Temperatur zu hoch

Der Schwellenüberschreitungsalarm muss berechnet werden, sobald der Temperatursensor eine Aktualisierung seiner Werte erhält, daher fügen wir die Berechnung in die Funktion hinzu OnEquipmentChanged die dieser Aufgabe gewidmet ist.

Nachdem wir die 2 Variablen (Messung und Alarm) auf unserer Ausrüstung abgerufen haben, müssen wir nur noch die Geschäftsregel zur Fehlerauslösung implementieren und unsere Warnung aktualisieren. Hier lösen wir den Fehler "Temperatur zu hoch" aus, wenn unsere Temperaturmessung einen Wert vom Server erhalten hat (IsConnected), und wenn sein numerischer Wert (AsFloat) ist größer als 40.

JS-Skript:

function OnEquipmentChanged(equipment)
{
    // Récupération de la variable de température et d'alarme.
    var temperatureVar = equipment.GetVariable("TEMP");
    var temperatureTooHighVar = equipment.GetVariable("Température trop élevée");

    // L'alarme doit être déclenchée :
    //  * si la température est connectée
    //  * et si la valeur mesurée au dessus de 40°C.
    let isAboveThreshold = temperatureVar.IsConnected
                        && temperatureVar.AsFloat > 40;

    // On affecte la valeur calculée (de type boolean) à la variable d'alarme.
    temperatureTooHighvariable.AsBool = isAboveThreshold;
}

Nach der Anwendung werden Teile mit einer Temperatur über dem konfigurierten Schwellenwert angezeigt, wobei der Temperaturdefekt zu hoch ist.

Räume mit einer Temperatur über dem konfigurierten Schwellenwert werden mit zu hohem Temperaturdefekt angezeigt