Modbus RTU DC Monitor

来自Waveshare Wiki
跳转至: 导航搜索

说明

Modbus RTU Relay
{{{name2}}}
{{{name3}}}
功能简介
特性 RS485 模拟量采集模块
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 RS485

产品概述

本产品是一款工业标准款电流和功率监测模块,4通道同步采集,采用 Modbus RTU 协议,可通过RS485接口监测通道的电流、电压、功率。内置电源隔离、光耦隔离、自恢复保险丝和 TVS 等保护电路。

产品参数

供电电压 DC 7~36V
通信接口 RS485
通信波特率 4800,9600,19200,38400,57600,115200,128000,256000
默认通信格式 9600,N,8,1
采集电阻 0.002Ω 1%
采集电压范围 0~36V
采集电流范围 ±8A
分辨率 0.8mA
Modbus 协议 标准 Modbus RTU 协议
指示灯 STA:MCU 指示灯,MCU 正常工作时闪烁
TXD:发送指示灯,发送数据时灯亮
RXD:接收指示灯,接收数据时灯亮

硬件说明

  • 模块可以测量四通道的电流电压,每个通道都可以单独工作,四个通道分别对应(IN1+ IN1-),(IN2+ IN2-),(IN3+ IN3-)和(IN4+ IN4-)。

Modbus-RTU-Analog-Input-6.png


INx+ 和 INx- 分别表示电流的输入和输出,模块通过测量INx+和INx-串联的采样电阻差分电压得到流过电流大小。模块可以测试双向电流,所有输入输出反接也可以。
特别注意:测量不同的电源需要接GND共地,否则不能测量总线电压,只能测到差分电压和电流。

硬件连接

  • 将USB TO 485和目标板通过杜邦线,将A-->A和B-->B相连,如下图所示:

Modbus-RTU-Analog-Input-8CH-test-01.jpg

软件测试

SSCOM串口调试助手

  • 下载SSCOM 串口调试助手并在电脑上打开,打开对应的端口号,设置波特率为9600,选择hex发送和接收。
    发送如下指令,正常就会返回八路模拟输入数据。
01 04 00 00 00 08 F1 CC

Modbus RTU DC Monitor 1.png

  • 如果需要发送其他命令则选择HEX发送,加检验选择ModbusCRC16校验,输入命令的前六个字节点击发送则会自动添加CRC校验码。
    例如发送如下指令,读取通道1电压。
01 04 00 03 00 01

Modbus RTU DC Monitor 2.png

  • 更多详细的控制指令请查看请查看开发协议。

Modbus Poll软件

  • 串口软件不方便观察数据,可以选择Modbus Poll软件读取数据。下载并安装Modbus Poll软件。
  • 打开软件,选择setup->Read/Write Definition,Slave ID选择实际设备地址,Function选择04功能码,Quantity改为12通道。点击OK确认。

Modbus RTU DC Monitor 3.png

  • 选择Connection->Connect...,选择对应的串口,波特率为9600,八位无校验模式。点击OK连接。

Modbus-RTU-Analog-Input-3.png

  • 连接正常后则可以显示4通道监测数据。

Modbus RTU DC Monitor 4.png

开发协议

功能码介绍

功能码 备注
03 读取保持寄存器
04 读取输入寄存器
06 写单个保持寄存器

寄存器地址介绍

地址(HEX) 地址存储内容 寄存器取值 权限 Modbus 功能码
3x0000 道通1电压 无符号,单位mV 0x04
3x0001 道通1电流 有符号,单位mA 0x04
3x0002 道通1功率 无符号,单位10mW 0x04
3x0003 道通2电压 无符号,单位mV 0x04
3x0003 道通2电流 有符号,单位mA 0x04
3x0005 道通2功率 无符号,单位10mW 0x04
3x0006 道通3电压 无符号,单位mV 0x04
3x0007 道通3电流 有符号,单位mA 0x04
3x0008 道通3功率 无符号,单位10mW 0x04
3x0009 道通4电压 无符号,单位mV 0x04
3x000A 道通4电流 有符号,单位mA 0x04
3x000B 道通4功率 无符号,单位10mW 0x04
4x2000 串口参数 高八位为校验方式:0x00~0x02
低八位为波特率方式:0x00~0x07
读/写 0x03,0x06
4x4000 设备地址 直接存储 Modbus 地址
设备地址:0x0001-0x00FF
读/写 0x03,0x06
4x8000 软件版本 转为十进制然后小数点左移两位即表示软件版本
0x0064 = 100 = V1.00
0x03

Modbus RTU指令介绍

读取输入寄存器指令

发送码:01 04 00 00 00 0C F0 0F

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
04 04指令 读取输入寄存器
00 00 寄存器起始地址 0x0000 - 0x0007对应1~8输入通道
00 0C 寄存器数量 读取寄存器数量,最多8个通道
F0 0F CRC16 前6字节数据的CRC16校验和

返回码: 01 04 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 82 8B

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
04 04指令 读取输入寄存器
18 字节数量 数据长度
00 00
……
00 00
寄存器数据 表示4个通道的电压,电流,功率数值
82 8B CRC16 前6字节数据的CRC16校验和

示例: [1号地址设备]

读取通道1电压 : 01 04 00 00 00 01 31 CA
读取通道1电流 : 01 04 00 01 00 01 60 0A
读取通道2数据 : 01 04 00 03 00 03 40 0B

设置波特率指令

发送码:00 06 20 00 00 05 43 D8

字段 含义 备注
00 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 设置波特率,设备地址
20 00 指令寄存器 0x2000为设置波特率,0x4000为设置设备地址
00 校验方式 0x00为无校验,0x01为偶检验,0x02为奇校验
05 波特率数值 波特率数值对应
0x00 : 4800
0x01 : 9600
0x02 : 19200
0x03 : 38400
0x04 : 57600
0x05 : 115200
0x06 : 128000
0x07 : 256000
43 D8 CRC16 前 6 字节数据的 CRC16 校验和

返回码:00 06 20 00 00 05 43 D8

字段 含义 备注
00 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 设置波特率,设备地址
20 00 指令寄存器 0x2000为设置波特率,0x4000为设置设备地址
00 校验方式 0x00为无校验,0x01为奇检验,0x02为偶校验
05 波特率 波特率数值对应
0x00 : 4800
0x01 : 9600
0x02 : 19200
0x03 : 38400
0x04 : 57600
0x05 : 115200
0x06 : 128000
0x07 : 256000
43 D8 CRC16 前 6 字节数据的 CRC16 校验和

示例:

[1号地址设备]

设置波特率 4800 :00 06 20 00 00 00 83 DB
设置波特率 9600 :00 06 20 00 00 01 42 1B
设置波特率115200 :00 06 20 00 00 05 43 D8

设置设备地址指令

发送码:00 06 40 00 00 01 5C 1B

字段 含义 备注
00 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 设置波特率,设备地址
40 00 指令寄存器 0x2000为设置波特率,0x4000为设置设备地址
00 01 设备地址 设置的设备地址,0x0001-0x00FF
5C 1B CRC16 前 6 字节数据的 CRC16 校验和

返回码:00 06 40 00 00 01 5C 1B

字段 含义 备注
00 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 设置波特率,设备地址
40 00 指令寄存器 0x2000为设置波特率,0x4000为设置设备地址
00 01 设备地址 设置的设备地址,0x0001-0x00FF
5C 1B CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

设置设备地址为0x01 :00 06 40 00 00 01 5C 1b
设置设备地址为0x02 :00 06 40 00 00 02 1C 1A
设置设备地址为0x03 :00 06 40 00 00 03 DD DA

读取设备地址指令

发送码:00 03 40 00 00 01 90 1B

字段 含义 备注
00 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读取设备地址指令
40 00 指令寄存器 0x4000为读取设备地址,0x8000为读取软件版本
00 01 字节数 固定0x0001
90 1B CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 02 00 01 79 84

字段 含义 备注
00 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读取软件版本,读取设备地址指令
02 字节数 返回字节数
00 01 设备地址 设置的设备地址,0x0001-0x00FF
79 84 CRC16 前 6 字节数据的 CRC16 校验和

示例:

[1号地址设备]

发送 : 00 03 40 00 00 01 90 1B
返回 : 01 03 02 00 01 79 84 //地址0x01
[2号地址设备]

发送 : 00 03 40 00 00 01 90 1B
返回 : 02 03 02 00 02 7D 85 //地址0x02
[3号地址设备]

发送 : 00 03 40 00 00 01 90 1B
返回 : 03 03 02 00 03 81 85 //地址0x03

读取软件版本指令

发送码:00 03 80 00 00 01 AC 1B

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读取软件版本,读取设备地址指令
80 00 指令寄存器 0x4000为读取设备地址,0x8000为读取软件版本
00 01 字节数 固定0x0001
8F CA CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 02 00 64 B9 AF

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读取软件版本,读取设备地址指令
02 字节数 返回字节数
00 64 软件版本 转为十进制然后小数点左移两位即表示软件版本


0x0064 = 100 = V1.00

B9 AF CRC16 前 6 字节数据的 CRC16 校验和

示例:

[1号地址设备]

发送:00 03 80 00 00 01 AC 1B
返回:01 03 02 00 64 B9 AF //0x0064 = 100 =V1.00

读异常状态指令

发送码:01 07 41 E2

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
07 07功能码 读异常状态功能码
41 E2 CRC16 前 3 字节数据的 CRC16 校验和

返回码:01 07 00 22 30

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
07 07功能码 读异常状态功能码
00 异常状态 高四位表示通道1~4初始化状态,低四位表示通道1~4当前更新状态。
0表示正常,1表示异常。
41 E2 CRC16 前 3 字节数据的 CRC16 校验和

示例[1号地址设备]:

发送 : 01 07 41 E2
返回 : 01 07 13 63 FD //通道3读取错误,通道4初始化错误,读取错误。

异常功能码

当接收到的指令出错或者异常设备将会返回异常响应,异常响应格式如下。

返回码:01 85 03 02 91

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
85 异常功能吗 异常功能码 = 请求功能码 + 0x80
03 字节数 异常码
02 91 CRC16 前 6 字节数据的 CRC16 校验和

异常码是一个单字节值,用于指示错误的类型。Modbus协议定义的几个常用异常码:

异常码 名称 描述
0x01 非法功能 请求的功能码不支持
0x02 非法数据地址 请求的数据地址错误
0x03 非法数据值 请求的数据值或操作无法执行
0x04 服务器故障 服务器设备故障
0x05 应答 已接收到请求并正在处理
0x06 设备繁忙 设备当前正忙无法执行请求的操作

FAQ


技术支持


联系人:林工
EMAIL:services@waveshare.net (邮箱不常用,推荐使用QQ或微信沟通)
电话:0755-83040712
QQ:3004506335
微信:扫下方二维码添加
Lxw.jpg

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证