Constructeur RemoteVariableSynchronizer()

Constructeur RemoteVariableSynchronizer()

IMPORTANT:
RemoteVariableSynchronizer vous permet de forcer les balises à se synchroniser en continu avec un automate. La synchronisation en continu exige beaucoup de ressources et peut avoir un impact significatif sur les performances d’un automate
Application FactoryTalk Optix
.
Rockwell Automation
vous recommande de :
  • Limiter l’utilisation de RemoteVariableSynchronizer à un petit ensemble de balises. Si vous devez forcer la lecture ou l’écriture de balise dans un NetLogic, utilisez plutôt IUAVariable.RemoteRead(timeoutMilliseconds) or IUAVariable.RemoteWrite(value, timeoutMilliseconds).
  • Ajoutez timespan (laps de temps) comme argument du constructeur pour réduire la charge de communication. Si vous ne spécifiez pas le laps de temps, la synchronisation des balises s’exécute dans une boucle continue. Dès que les dernières valeurs de balise sont reçues, un nouveau cycle de synchronisation commence sans temps d’attente.
Utilisez RemoteVariableSynchronizer pour garder un ensemble spécifique de balises synchronisé avec un automate dans un NetLogic. Par exemple, utilisez RemoteVariableSynchronizer pour vous abonner à un événement VariableChange. Consultez la rubrique Créer un abonnement.
Les balises étant automatiquement synchronisées, vous n’avez donc pas besoin d’utiliser les RemoteVariableSynchronizerTags dans les cas suivants :
  • Les balises sont utilisées dans l’interface actuellement affichée
  • Les balises sont utilisées dans un enregistreur de données
  • Une balise est une variable d’entrée pour une alarme
  • Une balise possède un événement ValueChange
Créez un objet
RemoteVariableSynchronizer
pouvant contenir une liste de variables de projet à synchroniser avec les variables de champ associées.
public RemoteVariableSynchronizer()
IMPORTANT: L’objet
RemoteVariableSynchronizer
doit être déclaré comme membre de classe dans le NetLogic.

Constructeur avec la durée d’interrogation par défaut

Dans l’exemple suivant, un objet
variableSynchronizer
est créé pour conserver la valeur d’une variable de projet
Speed
synchronisée avec la valeur d’une variable de champ qui identifie la vitesse d’un moteur. La variable de projet, représentée par l’objet
motorSpeed
, est ajoutée à l’objet
variableSynchronizer
via la méthode
Add()
.
Lorsque la valeur de la variable de champ est modifiée, la méthode
motorSpeed_VariableChange
est exécutée. Lorsque la valeur
motorSpeed
(de la variable de champ) est supérieure à 200, un message d’avertissement est généré. La durée d’interrogation par défaut est définie sur la valeur maximale.
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;
Dans la méthode
Stop()
, la fin de la synchronisation lorsque le nœud parent du NetLogic est supprimé s’effectue en invoquant la méthode
Dispose()
.

Constructeur avec une durée d’interrogation personnalisée

Dans l’exemple suivant, la durée d’interrogation de
RemoteVariableSynchronizer
est définie sur
5000
 millisecondes.
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;
Fournir une réponse
Vous avez des questions ou des commentaires sur cette documentation ? Veuillez envoyer vos commentaires ici.
Normal