modbus协议与nodejs modbus-serial实现

news/2025/4/2 3:51:52/

nodejs可通过modbus-serial库来实现modbus协议

npm install modbus-srial

安装完后在examples目录下有例子说明如何使用,本文主要讲述作为客户端的使用方式。

 polling_RTU是使用485串口来实现modbus通信, polling_TCP和 polling_UDP则使用TCP/UDP来实现通信。

使用TCP/UDP模式时,modbus-serial发送的指令码格式如下,总共6个字节

 

如下为使用modbus-seria的polling_TCPl发码,并使用wireshark抓包:

 

 使用RTU(485串口)模式时,发送的指令码格式如下所示,总共8个字节,比TCP、UDP模式增加了2个字节的CRC校验码。

 

 如下为使用modbus-serial的polling_RTU发码,并使用串口抓包工具抓包的发码情况:

 

以上发码对应某空调协议的发码要求:

 slave地址在modbus-serial中使用setID来设置,如下:

 功能码一般分为0x03(读Holding寄存器功能码)和0x04(读Input寄存器功能码)

这两个功能码对应modbus-serial中使用两个函数

readHoldingRegisters(对应0x03)

readInputRegisters(对应0x04)

readInputRegisters、readHoldingRegisters这两个函数入口的两个参数则分别为寄存器地址和要读取的字节数。

 

对于RTU(485串口)模式,modbus-serial自动在数据包末尾添加2个字节的CRC校验码,不需要显式添加。

写入单个寄存器,对应的功能码0x06

client.writeRegister(0x0B/*寄存器地址*/, 0xdc/*寄存器值*/)

抓包发码

对应的文档如下指令码

写入多个寄存器,对应的功能码为16(0x10)

client.writeRegisters(1, [100, 90, 80, -200 + 65535, -100 + 65535])

 补充modbus的功能码

在这里插入图片描述

其他参考:

NPM 包 modbus-serial 使用教程-JavaScript中文网-JavaScript教程资源分享门户


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

相关文章

深度学习中关于图像分类的设计

目录 一、前言 二、项目介绍 三、项目展示 四、项目经验分享 一、前言 深度学习是一种基于人工神经网络的机器学习技术,通过多层非线性变换来学习数据的高级抽象表示。深度学习在图像、语音、自然语言处理等领域都有广泛应用。深度学习的优点是可以处理大量数据…

AI 生成第6篇测试文章:用例编写指南

背景 在软件开发中,用例是描述系统如何与用户及其他系统交互的通用模型。用例可以帮助开发人员更好地理解和设计软件系统,同时也可作为系统的文档。因此,在编写用例时需要非常注意内容的细节和质量。 用例需要包含的内容 在编写用例时&…

【SpringBoot整合RabbitMQ(下)】

八、死信队列 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了, consumer 从 queue 取出消…

在博客逮到一个阿里8年测试开发,聊过之后我悟了....

老话说的好,这人呐,一旦在某个领域鲜有敌手了,就会闲得疋虫疼。前几天我在上班摸鱼刷社区的时候认识了一位腾讯测试开发大佬,在阿里工作了8年,因为本人天赋比较高,平时工作也兢兢业业,现在企业内…

Git安装应用

Git版本控制 1. 概述 1.1 什么是版本控制 开发中实际场景 场景一:备份 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月以来的努力付之东流 ​ 场景二:代码还…

OpenGL之创建窗口

目录 什么是OpenGL? 核心模式与立即渲染模式 立即渲染模式 (Immediate mode) 核心模式(Core-profile) 状态机 对象 创建窗口 配置环境 什么是OpenGL? 一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),…

【Linux内核解析-linux-5.14.10-内核源码注释】Linux系统关于多进程和多线程相关知识点

Linux系统关于多进程和多线程的问题,常见的有以下几个: 什么是进程和线程? 进程是操作系统资源分配的最小单位。它包括程序、数据和进程控制块(PCB),是一个正在运行中的程序实例。每个进程都有自己的内存…

Redis(二)对事务进行操作及Jedis

系列文章目录 Redis入门笔记(一):Redis在Linux下安装和八大数据类型 文章目录 系列文章目录前言Redis对事务进行操作开启事务:multi执行事务:exec放弃事务:discard编译型异常(命令错误&#xf…