Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ InTouch HMI

Indirekte Variablen mit Fernverweisen verwenden

  • Last UpdatedSep 24, 2024
  • 2 minute read

Wenn indirekte Variablen auf Fernvariablen verweisen sollen, sind einige Besonderheiten zu beachten. Die Syntax für Fernverweise ist wie folgt:

Zugriffsname:Item

Dabei gilt:

  • Zugriffsname ist ein beliebiger Zugriffsname, der in InTouch definiert ist.

  • Item ist ein beliebiger Item-Name, der von dem betreffenden E/A-Server unterstützt wird.

Wenn Sie Fernverweise verwenden, sendet der Server einen Wert und nicht eine Variablenstruktur an den Client zurück. Der Wert enthält einen Zeit- und Qualitätsstempel. Wenn einer indirekten Variablen ein Fernverweis zugeordnet wird, kann über die indirekte Variable daher lediglich auf diejenigen Variablen-Punktfelder zugegriffen werden, die sich auf den Wert, die Zeit und die Qualität beziehen. So kann z. B. eine indirekte Variable nicht über einen Fernverweis auf Alarmgrenzen zugreifen.

Um dieses Problem zu lösen, können Sie ein Anzeigefeld mit verschiedenen indirekten Variablen erstellen. Die folgende Abbildung zeigt ein solches Bedienfeld, mit dem Sie die Alarmgrenzen für eine Pumpe ändern können.

Graphics describing a faceplate to modify the alarm limits for a pump

In diesem Beispiel verwendet das Anzeigefeld zehn indirekte Variablen. Es verweist nicht auf Punktfelder dieser Variablen, sondern jeweils auf ihren Wert.Value (Punktfeld) Dem Anzeigefeld soll nun die Fernvariable "Pumpe001" auf einem InTouch-Rechner namens "TagServer1" zugewiesen werden. Hierzu wurde wie folgt ein InTouch-Zugriffsname konfiguriert:

Zugriffsname:

TagSource1

Knotenname:

TagServer1

Projektname:

Ansicht

Topic-Name:

Tag-Name

Um das Anzeigefeld mit der gewünschten Fernvariablen zu verknüpfen, führen Sie nun ein Skript wie das folgende aus:

IndPumpeUPMName.Name = "VarQuelle1:Pumpe001.Name";

IndPumpeUPMValue.Name = "VarQuelle1:Pumpe001";

IndPumpeUPMHiHiLimit.Name = "VarQuelle1:Pumpe001.HiHiLimit";

IndPumpeUPMHiLimit.Name = "VarQuelle1:Pumpe001.HiLimit";

IndPumpeUPMLoLimit.Name = "VarQuelle1:Pumpe001.LoLimit";

IndPumpeUPMLoLoLimit.Name = "VarQuelle1:Pumpe001.LoLoLimit";

IndPumpeUPMHiHiStatus.Name = "VarQuelle1:Pumpe001.HiHiStatus";

IndPumpeUPMHiStatus.Name = "VarQuelle1:Pumpe001.HiStatus";

IndPumpeUPMLoStatus.Name = "VarQuelle1:Pumpe001.LoStatus";

IndPumpeUPMLoLoStatus.Name = "VarQuelle1:Pumpe001.LoLoStatus";

Ein solches Skript muss jedes Mal ausgeführt werden, wenn der Verweis des Anzeigefelds geändert werden soll. Eine bessere Lösung ist daher die Erstellung einer InTouch-QuickFunction, mit der Sie einmalig ein Skript schreiben, dem Sie den Namen des gewünschten Fernverweises übergeben. Wenn Sie mehrere identische Anzeigefelder verwenden, können diese außerdem alle dieselbe QuickFunction aufrufen.

Sie können z. B. unter Verwendung der obigen Skriptbefehle eine QuickFunction mit dem Namen RedirectAlarmFacePlate() erstellen:

Define a QuickFunction RedirectAlarmFacePlate

Sie müssen nun lediglich die QuickFunction RedirectAlarmFacePlate() aufrufen, damit alle Verweise geändert werden. Dazu muss die QuickFunction von einem anderen InTouch-Skript aufgerufen werden. Zum Beispiel:

CALL RedirectAlarmFacePlate ("VarQuelle1:Pumpe001");