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对数据进行读写的操作。
回到目录
一、介绍
该变送器带有液晶显示,实时显示温湿度,背部免螺丝端子接线,可安装在标准86mm接线盒上。设备采用标准ModBus-RTU 通信协议,RS485信号输出
,通信距离最大可达2000米(实测)。探头内置型、外延型可选,广泛适用于通讯机房、仓库楼宇以及自控等需要温湿度监测的场所。
回到目录
二、 通讯协议
2.1 通讯基本参数
回到目录
2.2 数据帧格式定义
采用 ModBus-RTU 通讯规约,格式如下:
- 初始结构 ≥4 字节的时间
- 地址码 = 1 字节
- 功能码 = 1 字节
- 数据区 = N 字节
- 错误校验 = 16 位 CRC 码
- 结束结构 ≥4 字节的时间
- 地址码:为变送器的地址,在通讯网络中是唯一的(出厂默认 0x01)。
- 功能码:主机所发指令功能指示。
- 数据区:数据区是具体通讯数据,注意 16bits 数据高字节在前!
- CRC 码:二字节的校验码。
回到目录
2.3 寄存器地址
回到目录
2.4 通讯协议示例以及解释
- 温度计算:
当温度低于 0 ℃ 时温度数据以补码的形式上传。
温度:FF9B H(十六进制)= -101 => 温度 = -10.1℃ - 湿度计算:
湿度:292 H (十六进制)= 658 => 湿度 = 65.8%RH
回到目录
三、 node-red实现数据交互
3.1 node-red读取数据
根据第二章节对设备问询帧地址的定义,模拟读取如下配置信息的设备数据:
项 | 说明 | 十进制 | 十六进制 |
---|---|---|---|
设备地址 | DevID | 40 | 0x28 |
功能码 | 读 | 3 | 0x03 |
数据起始地址 | address | 0 | 0x00 0x00 |
数据长度 | len | 2 | 0x00 0x02 |
检验码 | crc | 2 | 0xC3 0xF2 |
CRC(Cyclic Redundancy Check,循环冗余校验)是一种数据校验方式,主要用于判断数据传输过程中数据是否发生改变、传输是否出错,并在传输时保证数据完整性。上位机须按照MODBUS协议的命令格式发送数据(包括计算的CRC值),从机才能正确辨识数据。若无CRC值,从机将返回含有错误号的应答包,不会得到正确结果。标准的做法,发送前计算CRC值并一起发送,接收后也计算CRC值并与接收的校验码对比是否相等,以辨别数据是否准确。CRC校验码的计算,参考链接:modbus rtu协议的CRC(循环冗余校验)在线计算
计算CRC为:F2 C3 ,高位在左,低位在右,交换得到数据为:
msg.payload = Buffer.from([0x28, 0x03, 0x00, 0x00, 0x00, 0x02, 0xC3, 0xF2]);
回到目录
3.2 node-red写回数据
回到目录