Node-opcua 是一个基于 Node.js 的 OPC UA(开放式平台通信架构)库,可以用来构建 OPC UA 服务器和客户端。npm 包 node-opcua-client-dynamic-extension-object 扩展了 Node-opcua 客户端,使其支持动态扩展对象。本文将介绍如何使用这个库,并提供相关示例代码。
安装 node-opcua-client-dynamic-extension-object
首先需要将 node-opcua 和 node-opcua-client-dynamic-extension-object 安装到本地项目中:
npm install node-opcua npm install node-opcua-client-dynamic-extension-object
加载和使用库
加载库和创建 OPC UA 客户端的方式和 Node-opcua 客户端相同:
-- -------------------- ---- ------- ----- ----- - ---------------------- ----- -------------------- - ------------------------------------------------------ ----- ----------- - ----------------------------- ----- ------- - - -------------------- ------ -- ----- ------ - --- ---------------------------
然后加载扩展对象:
opcuaExtensionObject(client);
现在 client 对象既支持 Node-opcua 客户端的所有功能,也能够使用扩展对象。
创建和添加扩展对象
扩展对象允许客户端动态创建和添加新的对象类型。要创建并添加一个新类型的扩展对象,需要先定义该对象的结构。
例如,要创建一个名为 myNewObjectType 的对象类型,可以将它定义为一个 JSON 对象:
-- -------------------- ---- ------- ----- --------------- - - ----- ------------------ --------- ----------------- ------- - - ----- ---------------- ---------- --------- -- - ----- --------------- ---------- -------- -- -- --
这个对象具有两个字段:一个字符串字段和一个整数字段。
然后可以调用 client.addExtensionObject
方法将新类型的对象添加到客户端:
client.addExtensionObject(myNewObjectType);
现在客户端可以使用 myNewObjectType
创建新的对象,如下所示:
const myNewObject = client.createObject(myNewObjectType); myNewObject.myStringField = "test"; myNewObject.myInt32Field = 42;
读取扩展对象
要读取扩展对象的属性,需要使用 OPC UA 的读取服务。Node-opcua 客户端提供了 read
方法,可以用于读取属性。
const dataValue = await client.read( myNewObject.nodeId, opcua.AttributeIds.Value ); console.log(dataValue);
这将输出包含读取到的属性值的 DataValue
对象。
示例代码
完整的示例代码如下:
-- -------------------- ---- ------- ----- ----- - ---------------------- ----- -------------------- - ------------------------------------------------------ ----- ----------- - ----------------------------- ----- ------- - - -------------------- ------ -- ----- ------ - --- --------------------------- ----------------------------- ----- --------------- - - ----- ------------------ --------- ----------------- ------- - - ----- ---------------- ---------- --------- -- - ----- --------------- ---------- -------- -- -- -- ----- -------- ------ - --- - ----- ---------------------------- ------------------- --------- ---- ------------- ------------------------------------------- ----- ----------- - ------------------------------------- ------------------------- - ------- ------------------------ - --- ----- --------- - ----- ------------ ------------------- ------------------------ -- ----------------------- - ----- ------- - --------------------- - ------- - ----- -------------------- ------------------- --------------- - - -------
可以在 GitHub 上的 node-opcua-client-dynamic-extension-object-demo 仓库中找到这个示例代码的完整版。
结论
本文介绍了如何使用 npm 包 node-opcua-client-dynamic-extension-object 扩展 Node-opcua 客户端,使其支持动态扩展对象。我们学习了如何定义和添加新类型的对象,以及如何读取扩展对象的属性。延伸阅读,你可以在 Node-opcua 官方文档中深入了解 OPC UA 和 Node-opcua 的其他方面。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedbe9eb5cbfe1ea0611b8e