Skip to main content

Sección: Proxies

La sección Proxies define un bloque de funciones que implementa el proxy.

Un proxy sirve para el intercambio de datos de módulos de diferente aplicación. La instancia del FB proxy representa la instancia del módulo en una aplicación remota.

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

Los detalles sobre la sintaxis de los tipos de definición se describen en la sección Declaración del módulo.

. Especificación:
  • El bloque de funciones debe derivar de IBaseInstance.

  • El bloque de funciones debe tener un método. SetProxyIdentification con la siguiente firma, que no está incluida en la Interfaz IBaseInstance:

    SetProxyIdentification(pbyName : POINTER TO BYTE, udiComAddr : UDINT, udiLocalComAddr : UDINT, pEnvironment : MEnv)

    El nombre de instancia pasado y la dirección establecida deben devolverse desde las propiedades InstanceName, ComAddress, y LocalComAddress.

  • El bloque de función no debe derivar de IModule.

  • La sección MirrorVar permite reflejar una variable de las instancias de un módulo en sus instancias de proxy. Para esto, la ruta de instancia de la variable debe declararse en la definición. Variable, que debe indicarse en forma de ruta relativa (al FB de la instancia del módulo). Las siguientes reglas se aplican a la variable especificada del FB de instancia del módulo:

    • La variable tiene que ser parte de los Vars, Entradas o Salidas del FB de la instancia del módulo.

    • Debe estar definido tanto en el FB de módulo como en el FB de proxy

    • Debe ser del mismo tipo en ambos FB

    • Debe tener un tipo primitivo; por lo tanto, no se permiten punteros, interfaces o estructuras como un todo para la duplicación, sino solo tipos simples (numéricos, STRING, TIME, etc.)

    Si las variables especificadas cumplen estas condiciones, se transfieren automáticamente como parte del RMP sin que el usuario tenga que preocuparse más por la transferencia.

  • La sección ProxyParameter permite definir el parámetro para el proxy. Se deben tener en cuenta los siguientes puntos:

    • el objetivo de la ProxyParameter debe corresponder a un objetivo de parámetro del módulo

    • los variable del módulo proxy debe coincidir con el tipo de la variable utilizada para el parámetro del módulo. Solo se permiten enumeraciones y tipos primitivos

    • Los parámetros del proxy se establecen una vez en el valor configurado en la instancia del módulo durante la fase de inicialización de la aplicación respectiva. Mientras se ejecuta la aplicación, estas variables no se reflejan en los proxies

  • El nombre del bloque de funciones se puede calificar con una ruta de espacio de nombres.

ejemplo 25. Ejemplo
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