- プロジェクトの作成
- オブジェクトと変数のリファレンス
- プロジェクトの拡張
- チュートリアル
- グラフィックオブジェクト チュートリアル
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;
ご質問やご意見