我正在使用 node-opcua 库。我有 OPCUAServer 的实例。如何获取节点值并进行编辑?
我认为 OPC 客户端应该能够做到这一点,但我想与 OPC 服务器交互,因为我正在响应内部事件。
我是否应该使用诸如WriteRequest 之类的东西来执行此类操作?
我正在使用 node-opcua 库。我有 OPCUAServer 的实例。如何获取节点值并进行编辑?
我认为 OPC 客户端应该能够做到这一点,但我想与 OPC 服务器交互,因为我正在响应内部事件。
我是否应该使用诸如WriteRequest 之类的东西来执行此类操作?
或者,您可以setValueFromSource
在变量上使用该方法。这将绕过 writeValue 中发生的所有读/写访问检查。也是同步的
nodeToChange.setValueFromSource({ dataType: "Double", value: 3.14});
setValueFromSource
可以采用可选的 statusCode
nodeToChange.setValueFromSource(
{ dataType: "Double", value: 3.14},
opcua.StatusCodes.BadWaitingForInitialData
);
如果未指定,则假定为 StatusCodes.Good。
和一个可选的源时间戳
nodeToChange.setValueFromSource(
{ dataType: "Double", value: 3.14},
opcua.StatusCodes.Good, new Date());
我设法用 UAVariable 的 writeValue() 方法解决它:
var opcua = require('node-opcua');
var server = new opcua.OPCUAServer({
port: OpcServerConfig.port,
resourcePath: OpcServerConfig.resourcePath,
buildInfo: OpcServerConfig.buildInfo
});
var nodeToChange = server.engine.addressSpace.findNode('ns=1;b=1020FFAA');
nodeToChange.writeValue(
null,
new opcua.DataValue({
value: new opcua.Variant({dataType: opcua.DataType.Double, value: 5})
}),
null,
() => { }
);