Sektion: Proxies
Die Sektion Proxies
definiert den Funktionsbaustein, welcher den Proxy implementiert.
Ein Proxy dient dem Datenaustausch von Modulen verschiedener Applikationen. Die Instanz des Proxy-FBs repräsentiert die Modulinstanz der anderen Applikation.
SEC Proxies //optional: yes, modifier: [UPDATE] SEC Proxy : <identifier> //optional: yes, modifier [UPDATE] FB := <FB name>; //optional: no, type: QID SEC MirrorVar : <identifier> //optional: yes, modifier [UPDATE]) Variable := <variable name>; //optional: no, type: VarPath END_SEC SEC ProxyParameter : <target> // optional: yes, modifier [UPDATE] Variable := <InstancePath>; // optional: no, type: VarPath END_SEC END_SEC END_SEC
Details über die Syntax der Definitionstypen sind im Kapitel Syntax der Moduldeklaration beschrieben.
Der Funktionsbaustein muss von
IBaseInstance
ableiten.Der Funktionsbaustein muss über eine Methode
SetProxyIdentification
mit folgender Signatur verfügen, die nicht im InterfaceIBaseInstance
enthalten ist:SetProxyIdentification(pbyName : POINTER TO BYTE, udiComAddr : UDINT, udiLocalComAddr : UDINT, pEnvironment : MEnv)
Der übergebene Instanzname und die gesetzte Adresse müssen von den Eigenschaft
InstanceName
,ComAddress
undLocalComAddress
zurückgegeben werden..Der Funktionsbaustein darf nicht von
IModule
ableiten.Mit der Sektion
MirrorVar
können Variablen von Modulinstanzen auf Proxy-Instanzen gespiegelt werden. Dazu muss der Instanzpfad der Variablen in Form eines relativen Pfads (zum FB der Modulinstanz) inVariable
deklariert werden. Für die angegebene Variable des Modul-Instanz-FBs gelten folgende Regeln:Die Variable muss Teil von Vars, Inputs oder Outputs des Modul-Instanz-FBs sein
Sie muss sowohl im Modul-FB als auch im Proxy-FB definiert sein
Sie muss in beiden FBs den gleichen Typ haben
Sie muss einen primitiven Typ besitzen; es sind also keine Pointer, Interfaces oder Structs als Ganzes für die Spiegelung erlaubt, sondern nur einfache Typen (numerisch, STRING, TIME, etc.)
Erfüllen die angegebenen Variablen diese Bedingungen werden sie automatisch im Rahmen des RMP übertragen, ohne dass sich der Benutzer weiter um die Übertragung kümmern müsste.
Mit der Sektion
ProxyParameter
können Parameter für den Proxy definiert werden. Dabei sind folgende Punkte zu beachten:Das Target des
ProxyParameters
muss einem Parameter-Target des Moduls entsprechen.Die
Variable
des Proxy-Moduls muss mit dem Typ der Variable übereinstimmen, die für den Modul-Parameter verwendet wird. Erlaubt sind hierbei nur primitive Typen und Enumerationen.Die Proxy-Parameter werden in der Initialisierungsphase der jeweiligen Applikation einmalig auf den in der Modulinstanz konfigurierten Wert gesetzt. Während die Applikation läuft, werden diese Variablen nicht in die Proxies gespiegelt.
Der Name des Funktionsbausteins kann mit einem Namespace-Pfad qualifiziert werden.
SEC Proxies SEC Proxy ProxyFB1 FB := ProxyModule1; SEC MirrorVar : diInput Variable := diInput; END_SEC SEC ProxyParameter : InParam1 Variable := TL.Input1_Name; END_SEC END_SEC END_SEC