Skip to main content

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.

. Spécification:
  • 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'interface IBaseInstance:

    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, et LocalComAddress.

  • 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éfinition Variable, 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 module

    • le 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és

    • Les 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.

Exemple 25. Exemple
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