Sezione: Procure
La sezione Proxies definisce un blocco funzione che implementa il proxy.
Un proxy serve per lo scambio di dati di moduli di diversa applicazione. L'istanza dell'FB proxy rappresenta l'istanza del modulo in un'applicazione 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_SECI dettagli riguardanti la sintassi dei tipi di definizione sono descritti nella sezione Dichiarazione del modulo.
Il blocco funzione deve derivare da
IBaseInstance.Il blocco funzione deve avere un metodo
SetProxyIdentificationcon la seguente firma, che non è inclusa nell'interfacciaIBaseInstance:SetProxyIdentification(pbyName : POINTER TO BYTE, udiComAddr : UDINT, udiLocalComAddr : UDINT, pEnvironment : MEnv)Il nome dell'istanza passato e l'indirizzo impostato devono essere restituiti dalle proprietà
InstanceName,ComAddress, ELocalComAddress.Il blocco funzione non deve derivare da
IModule.La sezione
MirrorVarconsente di eseguire il mirroring di una variabile delle istanze di un modulo nelle sue istanze proxy. Per questo il percorso dell'istanza della variabile deve essere dichiarato nella definizioneVariable, che deve essere indicato sotto forma di percorso relativo (all'FB di istanza del modulo). Per la variabile specificata dell'FB di istanza del modulo valgono le seguenti regole:La variabile deve far parte delle Var, degli ingressi o delle uscite dell'FB di istanza del modulo.
Deve essere definito nell'FB del modulo e nell'FB proxy
Deve essere dello stesso tipo in entrambi gli FB
Deve avere un tipo primitivo; quindi per il mirroring non sono consentiti puntatori, interfacce o strutture nel loro insieme, ma solo tipi semplici (numerici, STRING, TIME, ecc.)
Se le variabili specificate soddisfano queste condizioni, vengono trasferite automaticamente come parte dell'RMP senza che l'utente debba preoccuparsi ulteriormente del trasferimento.
La sezione
ProxyParameterpermette di definire i parametri per il proxy. Dovrebbero essere presi in considerazione i seguenti punti:L'obiettivo del
ProxyParameterdeve corrispondere a un parametro target del moduloIL
variabledel modulo proxy deve corrispondere al tipo della variabile utilizzata per il parametro del modulo. Sono consentiti solo tipi ed enumerazioni primitiviI parametri proxy vengono impostati una volta sul valore configurato nell'istanza del modulo durante la fase di inizializzazione della rispettiva applicazione. Mentre l'applicazione è in esecuzione, queste variabili non vengono rispecchiate nei proxy
Il nome del blocco funzione può essere qualificato con un percorso dello spazio dei nomi.
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