RemoteVariableSynchronizer() コンストラクタ

RemoteVariableSynchronizer() コンストラクタ

重要:
RemoteVariableSynchronizer を使用すると、タグをコントローラと常に同期させることができます。常時同期はリソースを大量に消費するため、
FactoryTalk Optix アプリケーション
とコントローラのパフォーマンスに大きな影響を与える可能性があります。
Rockwell Automation
では、以下を推奨します。
  • RemoteVariableSynchronizer の使用を少数のタグに制限します。NetLogic でタグの読み取りまたは書き込みを強制する必要がある場合は、代わりに IUAVariable.RemoteRead(timeoutMilliseconds) または IUAVariable.RemoteWrite(value, timeoutMilliseconds)を使用します。
  • コンストラクタの引数に timespan を追加することで、通信負荷を軽減します。期間を指定しない場合、タグの同期は連続ループで実行されます。最後のタグ値を受信するとすぐに、待機時間なしで新しい同期サイクルが開始されます。
RemoteVariableSynchronizer を使用して、特定のタグ セットと NetLogic のコントローラとの同期を維持します。たとえば、RemoteVariableSynchronizer を使用して VariableChange イベントを購読します。「サブスクリプションを作成する」を参照してください。
タグは自動的に同期されるため、次の場合は RemoteVariableSynchronizerTags を使用する必要はありません。
  • タグが現在表示されているインターフェイスで使用されている
  • タグがデータロガーで使用されている
  • タグがアラームの入力変数である
  • タグに ValueChange イベントがある
プロジェクト変数のリストを含むことができる
RemoteVariableSynchronizer
オブジェクトを作成し、関連するフィールド変数との同期を維持します。
public RemoteVariableSynchronizer()
重要:
RemoteVariableSynchronizer
オブジェクトは NetLogic 内のクラスメンバーとして宣言する必要があります。

デフォルトのポーリング時間のあるコンストラクタ

次の例では
Speed
プロジェクト変数の値をモータの速度を識別するフィールド変数の値と同期させる
variableSynchronizer
オブジェクトを作成します。
motorSpeed
オブジェクトで表されるプロジェクト変数は
variableSynchronizer
オブジェクトに
Add()
メソッドを介して追加されます。
フィールド変数が値を変更すると
motorSpeed_VariableChange
メソッドが実行されます。(フィールド変数の)
motorSpeed
の値が 200 を超えると、警告メッセージが生成されます。デフォルトのポーリング時間はフルスピードに設定されています。
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;
この
Stop()
メソッドでは、NetLogic 親ノードが削除されたときの同期の終了は
Dispose()
メソッドの呼び出しによって発生します。

カスタム ポーリング時間のあるコンストラクタ

次の例では
RemoteVariableSynchronizer
のポーリング時間が
5000
ミリ秒に設定されています。
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;
ご質問やご意見
このドキュメントに関するご質問やご意見は、こちらまでお寄せください。 こちらからご意見をお寄せください。
Normal