OPCUA Server创建VariableNode的时候如何指定namespace

88 阅读1分钟

一般情况下使用函数UA_Server_addVariableNode创建变量的时候,第二个参数requestedNewNodeId一般设置为UA_NODEID_NULL, 最后一个参数为UA_NodeId *outNewNodeId, 创建变量得到的变量节点NodeId的namespace index默认为0

UA_StatusCode ret = UA_Server_addVariableNode(
      ua_server_, UA_NODEID_NULL,
      UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
      UA_NODEID_NUMERIC(0, UA_NS0ID_HASORDEREDCOMPONENT),
      UA_QUALIFIEDNAME(0, "browse name"),
      UA_NODEID_NUMERIC(namespace_sr, UA_SRID_DIGITALVALUETYPE), attr, NULL,
      &variable_node_id);

那如何使添加的变量节点namespace index为指定值?

UA_NodeId variable_node_id = UA_NODEID_NUMERIC(3, 0);

UA_StatusCode ret = UA_Server_addVariableNode(
      ua_server_, variable_node_id,
      UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER),
      UA_NODEID_NUMERIC(0, UA_NS0ID_HASORDEREDCOMPONENT),
      UA_QUALIFIEDNAME(0, "browse name"),
      UA_NODEID_NUMERIC(namespace_sr, UA_SRID_DIGITALVALUETYPE), attr, NULL,
      &variable_node_id);

将NodeId设置为UA_NODEID_NUMERIC(3, 0)。这将创建一个新的NodeId,其namespace索引为3,而标识符部分由服务器自动生成。在这个例子中,UA_Server_addVariableNode函数将创建一个新的变量节点,其NodeId的namespace索引为3,标识符部分由服务器自动生成。