Costruttore RemoteVariableSynchronizer()

Costruttore RemoteVariableSynchronizer()

IMPORTANTE:
RemoteVariableSynchronizer consente di forzare i tag in modo che si sincronizzino costantemente con un controller. La sincronizzazione costante richiede molte risorse e può avere un impatto significativo sulle prestazioni di una
Applicazione FactoryTalk Optix
e di un controller.
Rockwell Automation
consiglia quanto segue:
  • Limitare l'utilizzo di RemoteVariableSynchronizer a un piccolo set di tag. Se è necessario forzare la lettura o la scrittura di un tag in una NetLogic, utilizzare invece IUAVariable.RemoteRead(timeoutMilliseconds) o IUAVariable.RemoteWrite(value, timeoutMilliseconds).
  • Aggiungere l'intervallo temporale come argomento del costruttore per ridurre il carico di comunicazione. Se non si specifica l'intervallo temporale, la sincronizzazione dei tag viene eseguita in un ciclo continuo. Non appena vengono ricevuti gli ultimi valori dei tag, inizia un nuovo ciclo di sincronizzazione senza tempi di attesa.
Utilizzare RemoteVariableSynchronizer per mantenere un set specifico di tag sincronizzato con un controller in una NetLogic. Ad esempio, utilizzare RemoteVariableSynchronizer per sottoscrivere un evento VariableChange. Vedere Creare una sottoscrizione.
I tag vengono sincronizzati automaticamente, pertanto non è necessario utilizzare RemoteVariableSynchronizerTags quando:
  • I tag sono utilizzati nell'interfaccia attualmente visualizzata
  • I tag vengono utilizzati in un logger dei dati
  • Un tag è una variabile di input per un allarme
  • Un tag presenta un evento ValueChange
Crea un oggetto
RemoteVariableSynchronizer
che possa contenere un elenco di variabili di progetto da tenere sincronizzate con le variabili di campo correlate.
public RemoteVariableSynchronizer()
IMPORTANTE: L'oggetto
RemoteVariableSynchronizer
deve essere dichiarato come membro della classe all'interno della NetLogic.

Costruttore con il tempo di polling predefinito

Nell'esempio seguente viene creato un oggetto
variableSynchronizer
per mantenere il valore di una variabile di progetto
Speed
sincronizzato con il valore di una variabile di campo che identifica la velocità di un motore. La variabile di progetto, rappresentata dall'oggetto
motorSpeed
, viene aggiunta all'oggetto
variableSynchronizer
tramite il metodo
Add()
.
Quando la variabile di campo cambia il suo valore, viene eseguito il metodo
motorSpeed_VariableChange
. Quando il valore di
motorSpeed
(della variabile di campo) è maggiore di 200, viene generato un messaggio di avviso. Il tempo di polling predefinito è impostato sulla velocità massima.
private void Start() { motorSpeed = LogicObject.Owner.GetVariable("Speed");
variableSynchronizer = new RemoteVariableSynchronizer();
variableSynchronizer.Add(motorSpeed); motorSpeed.VariableChange += MotorSpeed_VariableChange; } private void MotorSpeed_VariableChange(object sender, VariableChangeEventArgs e) { if (motorSpeed.Value > 200) { Log.Warning("Speed limit reached!"); } } private IUAVariable motorSpeed; private RemoteVariableSynchronizer variableSynchronizer;
Nel metodo
Stop()
l'invocazione del metodo
Dispose()
causa la fine della sincronizzazione quando viene rimosso il nodo padre della NetLogic.

Costruttore con tempo di polling personalizzato

Nel seguente esempio, il tempo di polling per
RemoteVariableSynchronizer
è impostato su
5000
millisecondi.
public override void Start() { var variable1 = Project.Current.Get<IUAVariable>("Model/Variable1"); variable1.VariableChange += Variable1_VariableChange;
synchronizer = new RemoteVariableSynchronizer(TimeSpan.FromMilliseconds(5000));
synchronizer.Add(variable1); } private void Variable1_VariableChange(object sender, VariableChangeEventArgs e) { Log.Info($"Variable1 {e.NewValue}"); } public override void Stop() { synchronizer.Dispose(); var variable1 = Project.Current.Get<IUAVariable>("Model/Variable1"); variable1.VariableChange -= Variable1_VariableChange; } RemoteVariableSynchronizer synchronizer;
Fornire un feedback
Hai domande o feedback su questa documentazione? invia il tuo feedback qui.
Normal