Node.js之 node-opcua 使用

news/2024/12/21 7:52:39/

Node-OPCUA 是一个专为 Node.js 和浏览器环境设计的 OPC UA 协议栈,使用 TypeScript 编写,提供了实现 OPC UA 协议的所有必要功能。以下是 Node-OPCUA 的一些主要特点和使用方法:

Node-OPCUA 特点
完整的 OPC UA 协议栈:Node-OPCUA 提供了一个完整的 OPC UA 客户端和服务器端的实现。
异步特性:充分利用了 Node.js 的异步特性,创建了高度响应的应用程序。
代码质量:通过 GitHub Actions 进行持续集成,拥有超过 3500 个单元测试和 93% 的代码覆盖率,确保了高质量的代码。
安装 Node-OPCUA
在 Node.js 项目中,可以通过 npm 来安装 Node-OPCUA:

npm install node-opcua --unsafe-perms

这个命令会安装 Node-OPCUA 包及其依赖项

创建 OPC UA 服务器
在项目目录中创建一个 app.js 文件,并添加以下代码来创建一个 OPC UA 服务器:

const { OPCUAServer } = require("node-opcua");
const server = new OPCUAServer({});async function start() {await server.initialize();await server.start();console.log("Server is now listening...");
}
start().catch(err => {console.error("Error starting server", err);
});

运行服务器:

node app.js

这将启动一个 OPC UA 服务器,监听来自客户端的连接。

创建 OPC UA 客户端
Node-OPCUA 也可以用来创建 OPC UA 客户端,连接到 OPC UA 服务器并进行数据交换。以下是创建客户端并连接到服务器的基本步骤:

const opcua = require('node-opcua');async function connect_opcua_client() {try {const client = opcua.OPCUAClient.create({securityPolicy: opcua.SecurityPolicy.None,securityMode: opcua.MessageSecurityMode.None,keepSessionAlive: true});await client.connect("opc.tcp://192.168.3.1:4840");// 其他操作,如创建会话、读取和写入数据等} catch (err) {console.log(err);}
}
connect_opcua_client();

在这个示例中,我们创建了一个 OPC UA 客户端,并连接到指定的 OPC UA 服务器。

读取和写入数据
使用 Node-OPCUA,你可以从 OPC UA 服务器读取数据,或者向服务器写入数据。以下是读取和写入数据的示例代码:

javascript
// 读取数据
var nodeIdS = "ns=1;s=XXXX";
const dataValue = await session.read({nodeId: nodeIdS,attributeId: opcua.AttributeIds.Value
});
console.log(" read value success = ", dataValue.toString());// 写入数据
var nodesToWrite = [{nodeId: nodeIdS,attributeId: opcua.AttributeIds.Value,value: {dataType: opcua.DataType.Double,value: 2.2}
}];
await session.write(nodesToWrite);
console.log(' setValue success!');

在这个示例中,我们从节点读取数据,并写入新的数据值。

Node-OPCUA 提供了一个强大的工具集,用于在 Node.js 环境中实现 OPC UA 通信。通过上述步骤,你可以快速开始使用 Node-OPCUA 来构建你的工业自动化解决方案。

以上就是文章全部内容了,如果喜欢这篇文章的话,还希望三连支持一下,感谢!


http://www.ppmy.cn/news/1556869.html

相关文章

网安入门|前端基础之Html_css基础

Web1.0、Web2.0 和 Web3.0 是互联网发展的三个主要阶段,每个阶段有其独特的特征和技术进步。以下是对它们的介绍: Web 1.0(静态互联网) 时间:1990年代初到2000年代初 特点: 静态内容:网页主要…

小程序-基于java+SSM+Vue的微信阅读小程序设计与实现

项目运行 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

OOP面向对象编程:类与类之间的关系

OOP面向对象编程:类与类之间的关系 三大关系:复合(适配器设计模式)、委托(桥接设计模式)、继承 8、1复合Composition has-a -> 适配器模式 一个类里面含有另一个类的对象 —> 复合关系 has-a 适配器设…

【自动化部署】Ansible Playbook 基础应用

文章目录 Ansible Playbook基础示例Playbook 结构运行 Playbook 定义和引用变量指定远程主机sudo切换用户when条件判断Ansible Playbook 迭代功能with_items 循环结构创建文件(Play 1)创建目录(Play 2)添加用户(Play 3…

@Resource与@Autowire

Resource与Autowired都是Java中用于依赖注入的注解,它们在Spring/Spring Boot项目中有着广泛的应用。以下是对这两个注解的详细解析: 一、Resource注解 来源: Resource是Java EE(Jakarta EE)提供的注解,它…

单元测试知识总结

我们希望每段代码都是自测试的,每次改动之后,都能自动发现对现有功能的影响。 1 测试要求 在对软件单元进行动态测试之前,应对软件单元的源代码进行静态测试; 应建立测试软件单元的环境,如数据准备、桩模块、模拟器…

如何正确地安装和配置帝国CMS系统?

安装和配置帝国CMS系统可以按照以下步骤进行: 下载EmpireCMS的安装包:访问EmpireCMS官方网站(http://www.phome.net/)下载最新版本的安装包。 解压安装包:将下载的EmpireCMS安装包解压到本地电脑的一个目录中。 创建…

【二维码美化】

words:二维码内容,链接或者句子 version:二维码大小,范围为 [1,40] level:二维码纠错级别,范围为 {L,M,Q,H},H 为最高级,默认。 picture:自定义二维码背景图,…