OPC-UA从客户端启动后如何动态添加新变量
Posted
技术标签:
【中文标题】OPC-UA从客户端启动后如何动态添加新变量【英文标题】:How to add new Variable dynamically after OPC-UA has started from client side 【发布时间】:2021-11-15 14:32:57 【问题描述】:我有一个 OPC-UA 服务器启动并运行一些预配置的标签,现在我想在我的某些标签更改时从我的 NodeJS OPC-UA 客户端添加一个新变量。 例如
import
OPCUAClient,
MessageSecurityMode, SecurityPolicy,
AttributeIds,
from "node-opcua-client";
const connectionStrategy =
initialDelay: 1000,
maxRetry: 1
const options =
applicationName: "MyClient",
connectionStrategy: connectionStrategy,
securityMode: MessageSecurityMode.SignAndEncrypt,
securityPolicy: SecurityPolicy.Basic256Sha256,
endpointMustExist: false,
;
const client = OPCUAClient.create(options);
const endpointUrl = "opc_url";
try
// step 1 : connect to
await client.connect(endpointUrl).then(res => console.log('connected!'))
// console.log("connected !");
// step 2 : createSession
await client.createSession(userName: "user_name", password: "password", async (err, session) =>
if(err)
console.log(err)
if(!err)
// do something
在do something
部分我尝试过:
var nodeId = "nodeId";
var nodesToWrite = [
nodeId: nodeId,
attributeId: AttributeIds.Value,
value: /*new DataValue(*/
value: /* Variant */
dataType: 1,
value: false
];
session.write(nodesToWrite, (err, statusCodes) =>
if(!err)
console.log("success", statusCodes);
else
console.log(err, statusCodes)
);
但是由于nodeId
不存在所以会抛出不存在的错误。
我找到了一个snippet example 来从服务器端添加变量,但是是否可以从客户端执行它,因为我们想根据我从客户端监控的其他变量添加一些变量。
【问题讨论】:
【参考方案1】:请看链接 https://reference.opcfoundation.org/Core/docs/Part4/5.7.2/
并与 SDK/Server 供应商确认是否支持 NodeManagement Service Set。
如果是,您可以在会话上下文中找到一个方法,例如 session.addNodes()
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于OPC-UA从客户端启动后如何动态添加新变量的主要内容,如果未能解决你的问题,请参考以下文章