RemoteVariableSynchronizer() 생성자

RemoteVariableSynchronizer() 생성자

중요:
RemoteVariableSynchronizer를 사용하면 태그가 컨트롤러와 지속적으로 동기화되도록 할 수 있습니다. 지속적인 동기화는 리소스를 많이 사용하며
FactoryTalk Optix 응용 프로그램
및 컨트롤러의 성능에 큰 영향을 줄 수 있습니다.
Rockwell Automation
은 다음 사항을 권장합니다.
  • RemoteVariableSynchronizer 사용을 작은 태그 집합으로 제한합니다. NetLogic에서 태그를 강제로 읽거나 써야 하는 경우 IUAVariable.RemoteWrite(value, timeoutMilliseconds) 또는 IUAVariable.RemoteRead(timeoutMilliseconds)을 대신 사용합니다.
  • 시간 범위를 생성자의 인수로 추가하여 통신 부하를 줄입니다. 시간 범위를 지정하지 않으면 태그 동기화가 연속 루프로 실행됩니다. 마지막 태그 값이 수신되는 즉시 대기 시간 없이 새로운 동기화 주기가 시작됩니다.
RemoteVariableSynchronizer를 사용하여 특정 태그 집합을 NetLogic의 컨트롤러와 동기화된 상태로 유지합니다. 예를 들어, RemoteVariableSynchronizer를 사용하여 VariableChange 이벤트에 구독합니다. 구독 만들기 항목을 참조하십시오.
태그는 자동으로 동기화되므로 다음과 같은 경우 RemoteVariableSynchronizerTags를 사용할 필요가 없습니다.
  • 태그가 현재 표시된 인터페이스에서 사용되는 경우
  • 태그가 데이터 로거에서 사용되는 경우
  • 태그가 경보의 입력 변수인 경우
  • 태그에 ValueChange 이벤트가 있는 경우
관련 필드 변수와 동기화된 상태로 유지할 프로젝트 변수 목록을 포함할 수 있는
RemoteVariableSynchronizer
개체를 만듭니다.
public RemoteVariableSynchronizer()
중요:
RemoteVariableSynchronizer
개체는 NetLogic 내에서 클래스 구성원으로 선언되어야 합니다.

기본 폴링 시간을 사용하는 생성자

다음 예에서는
Speed
프로젝트 변수의 값을 모터의 속도를 식별하는 필드 변수의 값과 동기화된 상태로 유지하기 위해
variableSynchronizer
개체를 만듭니다.
motorSpeed
개체로 표시되는 프로젝트 변수는
Add()
메서드를 통해
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()
메서드에서는
Dispose()
메서드를 호출하여 NetLogic 상위 노드가 제거될 때 동기화가 종료됩니다.

사용자 지정 폴링 시간이 있는 생성자

다음 예에서는
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