2016-09-21 9 views
0

OPC UA 서버에서 노드를 업데이트하는 방법 - C#OPC UA 서버에서 노드를 업데이트하는 방법

EmptyNodeManager.cs의 CreateAddressSpace에 노드를 만들었습니다. 모두 제대로 작동하지만 실제 노드에서 값이 변경되면 클라이언트는 변경 사항을 관찰하지 않습니다. 당신은 업데이트하는 데 사용하는 코드를 표시하지 않습니다

PropertyState variableA = new PropertyState(i); 

variableA.NodeId = new NodeId("/System_Memory/I/A", NamespaceIndex); 
variableA.Description = "Sensore che individua la posizione iniziale del trapano"; 
variableA.TypeDefinitionId = VariableTypeIds.PropertyType; 
variableA.ReferenceTypeId = ReferenceTypeIds.HasProperty; 
variableA.BrowseName = new QualifiedName("A", NamespaceIndex); 
variableA.DisplayName = variableA.BrowseName.Name; 
variableA.DataType = (uint)BuiltInType.Boolean; 
variableA.Value = plc.readFileI(0); // Chiamata al metodo per la lettura 

i.AddChild(variableA); 

답변

0

죄송합니다, 제가 설명을 요청할 수 없습니다 때문에 말씀 드릴 수 없습니다, 그래서 ... :

코드가 거기 아래로 변수 및 사용중인 C# OPC-UA 스택을 명시 적으로 말하지 않습니다 - EmptyNodeManager가 있기 때문에 OPC Foundation 스택을 사용한다고 가정합니다. 이 가입하지 않는 클라이언트가 업데이트를 표시되지 않습니다

void Update(BaseVariableState variable, object value) 
    { 
     if (variable == null) throw new ArgumentNullException("variable"); 
     if (!object.Equals(variable.Value, value)) 
     { 
      variable.Value = value; 
      variable.Timestamp = m_timestamp; 
      // SystemContext is a property in EmptyNodeManager 
      variable.ClearChangeMasks(SystemContext, false); 
     } 
    } 

참고 : ClearChangeMasks을 (호출 할 때까지 스택 업데이트에서

그래서 다음 내가 사용하는 변수를 변경하려면) 전송되지 않습니다 해당 변수에 대한 변경 사항.