Utiliser des variables indirectes avec des références distantes
- Last UpdatedSep 24, 2024
- 2 minute read
Les références distantes avec des variables indirectes sont différentes des références aux variables locales. La syntaxe d'une référence distante est la suivante :
NomAccès:Item
Condition
-
NomAccès est n'importe quel nom d'accès InTouch Nom d'accès.
-
Élément est un nom d'élément valide, pris en charge par le serveur d'E/S défini dans le nom d'accès.
Lorsque vous utilisez des références distantes, le serveur renvoie une valeur, et non une structure de variable. La valeur comprend l'horodatage et l'indicateur de qualité. Ainsi, une variable indirecte affectée à une référence distante ne peut accéder à des .champs de variables autres que ceux concernant la valeur, l'heure et la qualité. Par exemple, une variable indirecte ne peut accéder aux attributs d'une variable, pour spécifier des limites d'alarme, à travers une référence distante.
Une solution possible est de créer une console sur l'écran réunissant un ensemble de variables indirectes. L'illustration suivante montre une console permettant de modifier les limites d'alarmes d'une pompe.

Dans cet exemple, la console présente 10 variables indirectes associées à un<:hs>.champ .Value implicite. La console d'alarmes est redirigée sur la référence distante, IndPumpRPM, pointant vers un poste InTouch distant appelé ServeurVar1. Un nom d'accès InTouch est configuré de la manière suivante :
|
Nom d'accès : |
TagSource1 |
|
Nom du poste : |
TagServer1 |
|
Nom de l'application : |
Affichage |
|
Nom de la rubrique : |
Nom de point |
Pour rediriger l'affichage vers la référence distante PumpRPM, le QuickScript suivant est exécuté :
IndPumpRPMName.Name = "TagSource1:PumpRPM.Name";
IndPumpRPMValue.Name = "TagSource1:PumpRPM";
IndPumpRPMHiHiLimit.Name = "TagSource1:PumpRPM.HiHiLimit";
IndPumpRPMHiLimit.Name = "TagSource1:PumpRPM.HiLimit";
IndPumpRPMLoLimit.Name = "TagSource1:PumpRPM.LoLimit";
IndPumpRPMLoLoLimit.Name = "TagSource1:PumpRPM.LoLoLimit";
IndPumpRPMHiHiStatus.Name = "TagSource1:PumpRPM.HiHiStatus";
IndPumpRPMHiStatus.Name = "TagSource1:PumpRPM.HiStatus";
IndPumpRPMLoStatus.Name = "TagSource1:PumpRPM.LoStatus";
IndPumpRPMLoLoStatus.Name = "TagSource1:PumpRPM.LoLoStatus";
Toutefois, ce script doit s'exécuter chaque fois que l'afficheur est redirigé. Une autre solution est de créer une QuickFunction InTouch, écrite une fois pour toutes, et de lui passer le nom de la référence distante. Pour réduire la quantité de scripts, vous pouvez utiliser plusieurs consoles appelant la même QuickFunction.
Par exemple, en utilisant un groupe de commandes similaires, vous pouvez définir une QuickFunction appelée RedirectAlarmFacePlate() :

Il vous suffit alors d'appeler la fonction RedirectAlarmFacePlate() pour gérer toute l'opération de redirection. Pour cela, la fonction doit être appelée par un autre QuickScript InTouch. Par exemple :
CALL RedirectAlarmFacePlate ("TagSource1:PumpRPM");