2016-09-21 3 views
0

Ich habe eine neue Frage: Wie aktualisiere ich Knoten in einem OPC UA Server - C#?So aktualisieren Sie Knoten in einem OPC UA Server

Ich habe die Knoten in CreateAddressSpace von EmptyNodeManager.cs erstellt. Alles funktioniert gut, aber wenn der Wert sich auf dem realen Knoten ändert, beobachtet der Client die Variation nicht.

Dort unten Code ist:

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); 

Antwort

0

Sorry, kann ich nicht kommentieren, so kann ich nicht zur Klärung bitten, so ...

Sie zeigen den Code nicht aktualisieren Sie verwenden, um die Variable und Sie sagen nicht explizit, welchen C# OPC-UA-Stack Sie verwenden - ich nehme den OPC-Foundation-Stack an, da er einen EmptyNodeManager hat.

In diesem Stack-Updates nicht, bis Sie ClearChangeMasks(), so rufen Sie schickte die folgende, eine Variable zu ändern, die ich verwenden:

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); 
     } 
    } 

Beachten Sie, dass der Client das Update nicht sehen, es sei denn es abonniert hat zu Änderungen für diese Variable.

Verwandte Themen