RemoteVariableSynchronizer() constructor

WICHTIG:
Mit „RemoteVariableSynchronizer“ können Sie die kontinuierliche Synchronisierung von Tags mit einem Controller erzwingen. Die kontinuierliche Synchronisierung ist ressourcenintensiv und kann die Leistung einer
FactoryTalk Optix-Anwendung
und eines Controllers erheblich beeinträchtigen.
Rockwell Automation
empfiehlt Ihnen Folgendes:
  • Beschränken Sie die RemoteVariableSynchronizer-Nutzung auf eine kleine Auswahl an Tags. Wenn Sie das Lesen oder Schreiben eines Tags in einer NetLogic erzwingen müssen, verwenden Sie stattdessen IUAVariable.RemoteRead(timeoutMilliseconds) oder IUAVariable.RemoteWrite(value, timeoutMilliseconds).
  • Fügen Sie zur Verringerung der Kommunikationslast dem Konstruktor timespan als Argument hinzu. Ohne Angabe des Arguments timespan werden die Tags in einer Endlosschleife kontinuierlich synchronisiert. Nach dem Empfang des letzten Tag-Wertes beginnt der neue Synchronisationszyklus ohne Wartezeit.
Verwenden Sie RemoteVariableSynchronizer dafür, eine bestimmte Auswahl an Tags mit einem Controller in einer NetLogic synchronisiert zu halten. Verwenden Sie RemoteVariableSynchronizer beispielsweise zum Abonnieren eines VariableChange-Ereignisses. Weitere Informationen finden Sie unter Abonnement erstellen.
Tags werden automatisch synchronisiert, weshalb Sie für die Synchronisierung von RemoteVariableSynchronizerTags nicht verwenden müssen, wenn:
  • Tags in der aktuell angezeigten Schnittstelle verwendet werden
  • Tags in einem Datenlogger verwendet werden
  • Ein Tag eine Eingabevariable für einen Alarm ist
  • Ein Tag ein ValueChange-Ereignis hat
Erstellen Sie ein
RemoteVariableSynchronizer
-Objekt, das eine Liste mit Projektvariablen enthalten kann, die mit den entsprechenden Feldvariablen synchronisiert bleiben müssen.
public RemoteVariableSynchronizer()
WICHTIG: Das
RemoteVariableSynchronizer
-Objekt muss innerhalb der NetLogic als Mitglied der Klasse deklariert werden.

Konstruktor mit Standardabfragezeit

Im nachstehenden Beispiel wird ein
variableSynchronizer
-Objekt erstellt, um den Wert einer
Speed
-Projektvariablen mit dem Wert einer Feldvariable zur Identifizierung der Motordrehzahl synchronisiert zu halten. Die vom
motorSpeed
-Objekt dargestellte Projektvariable wird über die
Add()
-Methode zum
variableSynchronizer
-Objekt hinzugefügt.
Wenn sich der Wert der Feldvariable ändert, wird die
motorSpeed_VariableChange
-Methode ausgeführt. Wenn der Wert von
motorSpeed
(der Feldvariable) größer als 200 ist, wird eine Warnmeldung generiert. Die Standardabfragezeit ist auf volle Geschwindigkeit festgelegt.
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;
In der Methode
Stop()
wird durch Aufrufen der Methode
Dispose()
die Beendigung der Synchronisierung ausgelöst, wenn der übergeordnete Knoten des NetLogic-Objekts entfernt wird.

Konstruktor mit benutzerdefinierter Abfragezeit

Im folgenden Beispiel wird die Abfragezeit für
RemoteVariableSynchronizer
auf
5000
Millisekunden festgelegt.
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;
Rückmeldung geben
Haben Sie Fragen oder Feedback zu dieser Dokumentation? Bitte geben Sie hier Ihr Feedback ab.