1

我下载了 node-opcua 示例服务器,并尝试添加一些 opc ua 节点,以测试服务器。我能够创建对象和变量:

    const namespace = addressSpace.getOwnNamespace();

    const myDevices = namespace.addFolder(rootFolder.objects, { browseName: "TestFolder" });

    const testObj = namespace.addObject({
      organizedBy: myDevices,
      browseName: "TestObj",
      nodeId: "s=TestObj"
    });

    const testVariable = namespace.addVariable({
      componentOf: testObj,
      browseName: "TestVar",
      nodeId: "ns=1;s=TestVar",
      dataType: "Double",
      value: new Variant({ dataType: DataType.Double, value: 1000.0 })
    });

但我无法创建 Struct (ExtensionObject)。我试过这样的事情:


    const testParams = {
      firstField: 0,
      secondField : 0
    };
    const structure = addressSpace.findDataType("Structure");
    const dataType = namespace.createDataType({
      browseName: "TestStuct",
      isAbstract: false,
      subtypeOf: structure.nodeId
    });
    const inner_options = {
        componentOf: testObj,
        browseName: "TestStuctVar",
        dataType: dataType.nodeId,
        value: testParams
    };
    const strucVar = namespace.addVariable(inner_options);

但与 UA Expert 连接后,我得到了“Null”数据类型: 所以似乎服务器没有添加我创建的数据类型。
在另一台服务器上,当我添加结构数据类型时,UA Expert 正确理解了数据类型:

4

0 回答 0