node-opcua 是一款前端类的 npm 包,它提供了一个用于 OpenOPC 协议(OCP)服务器通信的 OPC UA 客户端,可以方便的与 PLC 设备进行通信。本文将详细介绍如何使用 node-opcua 进行开发。
什么是 OPC UA?
OPC UA 是一种开放的协议,用于数据存储和传输,主要应用于工业自动化领域。OPC UA 协议允许设备和应用程序进行通信,并用于将各个设备、应用程序和物理实体等连接到统一的工业互联网中。
安装
在使用 node-opcua 之前,需要确保已经安装了 node.js 和 npm 包管理器。安装 node-opcua 可以使用以下命令:
npm install -g node-opcua
创建 OPC UA 客户端
首先我们需要通过 node-opcua 来创建一个 OPC UA 客户端。可以使用以下代码:
-- -------------------- ---- ------- ----- ----- - ---------------------- ------ -- -- - --- - ----- ------ - -------------------------- -------------------- ----- --- ----- ------------------------------------------- ----- ------- - ----- ----------------------- -- --- ------ - ----- ----- - ------------------- -- ----- - -----展开代码
在上面的代码中,我们引入了 node-opcua
包,然后通过创建 OPC UA 客户端 OPCUAClient
来建立会话,并通过 connect
方法连接到指定的 OPC UA 服务器。
在 OPC UA 服务器上浏览节点
一旦我们成功连接到 OPC UA 服务器,我们可以使用以下代码获取服务器提供的节点:
const browseResult = await session.browse("RootFolder"); console.log(`Found ${browseResult.continuationPoint.nodes.length} nodes!`);
在上面的示例中,我们使用了 browse
方法来浏览 OPC UA 服务器上的根节点,然后打印出从服务器返回的节点数。
从节点中读取变量值
我们可以使用以下代码从节点中读取变量的值:
const nodeId = "ns=1;s=Temperature"; const nodesToRead = [{ nodeId: opcua.resolveNodeId(nodeId), attributeId: opcua.AttributeIds.Value }]; const value = await session.read(nodesToRead); console.log(`The value of ${nodeId} is: ${value[0].value.value.toString()}`);
通过上述代码,我们可以读取 OPC UA 服务器上的 Temperature
变量的值。
写入节点变量
与读取变量值类似,我们也可以使用以下代码来将特定的值写入 OPC UA 服务器节点的变量中:
-- -------------------- ---- ------- ----- ------ - -------------------- ----- ----------- - - ------- ---------------------------- ------------ ------------------------- ------ - --------- ---------------------- ------ ------ ------- - -- ----- --------------------------- ------------------ ------ ------- -- -------------展开代码
因此,我们可以通过 write
方法,将 Hello World!
写入服务器上的 MyVariable
变量中。
结语
本文介绍了如何使用 node-opcua 创建 OPC UA 客户端,并在服务器上浏览节点、读取和写入节点变量的过程中进行操作。在工业自动化生态中,OPC UA 极为重要且广泛应用,熟练使用 node-opcua 对于我们开发 OPC UA 应用程序或进行调试都会是一个不可或缺的技能。
示例代码:
https://github.com/ferdymor/project-template-examples/tree/main/node-opcua-tutorial
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65054