Rubrique : Procurations
La section Proxies
définit un bloc fonctionnel qui implémente le proxy.
Un proxy sert à l'échange de données de modules d'application différente. L'instance du FB proxy représente l'instance du module dans une application distante.
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
Les détails concernant la syntaxe des types de définition sont décrits dans la section Déclaration des modules.
Le bloc fonction doit dériver de
IBaseInstance
.Le bloc fonction doit avoir une méthode
SetProxyIdentification
avec la signature suivante, qui n'est pas incluse dans l'interfaceIBaseInstance
:SetProxyIdentification(pbyName : POINTER TO BYTE, udiComAddr : UDINT, udiLocalComAddr : UDINT, pEnvironment : MEnv)
Le nom d'instance passé et l'adresse définie doivent être renvoyés à partir des propriétés
InstanceName
,ComAddress
, etLocalComAddress
.Le bloc fonction ne doit pas dériver de
IModule
.La section
MirrorVar
permet de refléter une variable d'instances de module sur ses instances proxy. Pour cela, le chemin d'instance de la variable doit être déclaré dans la définitionVariable
, qui doit être indiqué sous la forme d'un chemin relatif (à l'instance de module FB). Les règles suivantes s'appliquent à la variable spécifiée de l'instance de module FB :La variable doit faire partie des variables, entrées ou sorties du FB de l'instance de module.
Il doit être défini dans le module FB ainsi que dans le proxy FB
Il doit être du même type dans les deux FB
Il doit avoir un type primitif ; ainsi, aucun pointeur, interface ou structure dans son ensemble n'est autorisé pour la mise en miroir, mais seuls les types simples (numeric, STRING, TIME, etc.)
Si les variables spécifiées remplissent ces conditions, elles sont automatiquement transférées dans le cadre du RMP sans que l'utilisateur ait à se soucier davantage du transfert.
La section
ProxyParameter
permet de définir des paramètres pour le proxy. Les points suivants doivent être pris en compte :La cible de la
ProxyParameter
doit correspondre à un paramètre cible du modulele
variable
du module proxy doit correspondre au type de la variable utilisée pour le paramètre module. Seuls les types primitifs et les énumérations sont autorisésLes paramètres proxy sont définis une fois sur la valeur configurée dans l'instance de module lors de la phase d'initialisation de l'application respective. Pendant que l'application est en cours d'exécution, ces variables ne sont pas reflétées dans les proxys
Le nom du bloc fonction peut être qualifié par un chemin d'espace de noms.
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