2016-09-21 21 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スタックを想定しています。あなたがClearChangeMasksを呼び出すまで

そのスタックでは更新はので、私は以下を使用し、変数を変更するには、)(送信されません:それは加入していない限り、クライアントが更新を見ていないということ

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

注意をその変数の変更に。

関連する問題