我下载了 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 正确理解了数据类型: