node-red实现ModBus-RTU 通信协议(RS485信号输出)的数据交互

news/2024/7/7 20:20:34


node-red实现485型 - 温湿度变表数据转换

  • 一、介绍
  • 二、 通讯协议
    • 2.1 通讯基本参数
    • 2.2 数据帧格式定义
    • 2.3 寄存器地址
    • 2.4 通讯协议示例以及解释
  • 三、 node-red实现数据交互
    • 3.1 node-red读取数据
    • 3.2 node-red写回数据

  本文参考《86 壳液晶温湿度变送器使用说明书(485 型)》,介绍基于485型 - 温湿度变表,通过node-red对数据进行读写的操作。
1

回到目录

一、介绍

  该变送器带有液晶显示,实时显示温湿度,背部免螺丝端子接线,可安装在标准86mm接线盒上。设备采用标准ModBus-RTU 通信协议,RS485信号输出,通信距离最大可达2000米(实测)。探头内置型、外延型可选,广泛适用于通讯机房、仓库楼宇以及自控等需要温湿度监测的场所。
1
回到目录

二、 通讯协议

2.1 通讯基本参数

1

回到目录

2.2 数据帧格式定义

采用 ModBus-RTU 通讯规约,格式如下:

  • 初始结构 ≥4 字节的时间
  • 地址码 = 1 字节
  • 功能码 = 1 字节
  • 数据区 = N 字节
  • 错误校验 = 16 位 CRC 码
  • 结束结构 ≥4 字节的时间
  • 地址码:为变送器的地址,在通讯网络中是唯一的(出厂默认 0x01)。
  • 功能码:主机所发指令功能指示。
  • 数据区:数据区是具体通讯数据,注意 16bits 数据高字节在前!
  • CRC 码:二字节的校验码。
    2

回到目录

2.3 寄存器地址

3
回到目录

2.4 通讯协议示例以及解释

1

  1. 温度计算:
    当温度低于 0 ℃ 时温度数据以补码的形式上传。
    温度:FF9B H(十六进制)= -101 => 温度 = -10.1℃
  2. 湿度计算:
    湿度:292 H (十六进制)= 658 => 湿度 = 65.8%RH
    2
    回到目录

三、 node-red实现数据交互

3.1 node-red读取数据

  根据第二章节对设备问询帧地址的定义,模拟读取如下配置信息的设备数据:

说明十进制十六进制
设备地址DevID400x28
功能码30x03
数据起始地址address00x00 0x00
数据长度len20x00 0x02
检验码crc20xC3 0xF2

  CRC(Cyclic Redundancy Check,循环冗余校验)是一种数据校验方式,主要用于判断数据传输过程中数据是否发生改变、传输是否出错,并在传输时保证数据完整性。上位机须按照MODBUS协议的命令格式发送数据(包括计算的CRC值),从机才能正确辨识数据。若无CRC值,从机将返回含有错误号的应答包,不会得到正确结果。标准的做法,发送前计算CRC值并一起发送,接收后也计算CRC值并与接收的校验码对比是否相等,以辨别数据是否准确。CRC校验码的计算,参考链接:modbus rtu协议的CRC(循环冗余校验)在线计算
1
计算CRC为:F2 C3 ,高位在左,低位在右,交换得到数据为:
msg.payload = Buffer.from([0x28, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC3, 0xF2]);

1
回到目录

3.2 node-red写回数据

回到目录


http://lihuaxi.xjx100.cn/news/1966122.html

相关文章

【ES6 Map数据结构】建议日常开发操作数组时使用 new Map

Map数据结构 new Map使用属性及方法:1. size属性2. set(key,value)3. get(key)4. has(key)5. delete(key)6. clear()7. 遍历方法: keys()、values()、entries()、forEach()(1). keys()(2). values()(3). entries()(4). forEach() 8. toString()9. valueOf 算法使用 …

深入探讨:开发连锁餐饮APP的关键技术要点

时下,开发一款功能强大、用户友好的连锁餐饮APP成为许多餐饮企业的当务之急。在本文中,我们将深入探讨开发连锁餐饮APP的关键技术要点,涵盖了前端、后端以及数据库等方面。 一、前端开发 前端是用户与APP交互的入口,因此设计良好…

Linux 多个php版本选择需要的php的版本(修改环境变量)

这两天遇到了个问题, 原本服务器的php版本是7.3.13,经过一些操作之后不知道怎么了变成了5.6 #php版本查看 php -v然后我就对 5.6版本进行了升级,升级到了7.3.33, 这个时候 php -v 是7.3.33, 神奇的一幕出现了&#xf…

大数据开发之Hive(压缩和存储)

第 9 章:压缩和存储 Hive不会强制要求将数据转换成特定的格式才能使用。利用Hadoop的InputFormat API可以从不同数据源读取数据,使用OutputFormat API可以将数据写成不同的格式输出。 对数据进行压缩虽然会增加额外的CPU开销,但是会节约客观…

从零学Java 线程的状态

Java 线程的状态 文章目录 Java 线程的状态线程的基础状态1 常见方法1.1 休眠1.2 放弃1.3 加入1.4 优先级1.5 线程打断1.6 守护线程1.7 线程的状态 - 等待 2 线程安全问题2.1 线程同步: 同步代码块2.2 线程同步: 同步方法2.3 同步规则2.4 线程的状态 - 阻塞2.5 特殊现象: 死锁 …

“与辉同行”首秀金额过亿,一个东方甄选拆出无数个董宇辉?

董宇辉又爆了! 小作文风波后,董宇辉不仅摇身一变成东方甄选新股东,还自立门户成立了新直播间“与辉同行”。 首秀当天在抖音平台正式开播,首秀就创下了惊人的成绩:直播间人气高达1.2亿,销售额超过1.1亿&a…

What is `@Controller` does?

Controller 是SpringMVC注解,标记一个类作为Web控制器(Controller),负责处理HTTP请求并返回响应结果 在SpringMVC中,控制器类的主要职责是: 1、接收来自客户端的HTTP请求 2、调用服务层或其他业务逻辑组件…

自动化测试理论(1)—概述需要掌握的内容

要在自动化测试领域取得成功,需要掌握一系列技能和概念。以下是一些关键的内容: 编程语言: 了解并精通至少一种编程语言,如Python,Java,JavaScript等。编写自动化测试脚本通常需要编程技能。 自动化测试框…