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_SEC
I 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
SetProxyIdentification
con 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
MirrorVar
consente 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
ProxyParameter
permette di definire i parametri per il proxy. Dovrebbero essere presi in considerazione i seguenti punti:L'obiettivo del
ProxyParameter
deve corrispondere a un parametro target del moduloIL
variable
del 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