RemoteVariableSynchronizer() 构造函数

重要提示:
RemoteVariableSynchronizer 允许强制标签与控制器始终同步。持续同步非常耗费资源,可能会显著影响
FactoryTalk Optix 应用程序
和控制器的性能。
Rockwell Automation
建议:
  • 将 RemoteVariableSynchronizer 的使用限制为一小部分标签。如果需要在 NetLogic 中强制读取或写入标签,请改用 IUAVariable.RemoteRead(timeoutMilliseconds)IUAVariable.RemoteWrite(value, timeoutMilliseconds)
  • 添加时间跨度作为构造函数的参数,以减少通信负载。如果未指定时间跨度,则标签同步会以连续循环方式运行。收到最后一个标签值后,将立即开始新的同步周期,无需等待时间。
使用 RemoteVariableSynchronizer 可以使一组特定的标签与 NetLogic 中的控制器保持同步。例如,使用 RemoteVariableSynchronizer 订阅 VariableChange 事件。请参见创建订阅
标签是自动同步的,因此在下列情况下无需使用 RemoteVariableSynchronizerTags:
  • 标签在当前显示的界面中使用
  • 标签在数据记录器中使用
  • 标签是报警的输入变量
  • 标签具有 ValueChange 事件
创建
RemoteVariableSynchronizer
对象,该对象包含要与相关字段变量保持同步的项目变量的列表。
public RemoteVariableSynchronizer()
重要提示:
RemoteVariableSynchronizer
对象必须声明为 NetLogic 中的类成员。

具有默认轮询时间的构造函数

在以下示例中,创建一个
variableSynchronizer
对象,该对象使
Speed
项目变量的值与用于标识电机速度的字段变量的值保持同步。通过
Add()
方法将
motorSpeed
对象表示的项目变量添加到
variableSynchronizer
对象中。
当字段变量的值发生变化时,将执行
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;
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈