Modbus RTU Module (A)

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

说明

Modbus RTU IO 8CH
{{{name2}}}
{{{name3}}}
功能简介
特性 RS485 DI/DO数字量输入输出模块
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 RS485

用电与继电器安全注意事项

  • 本产品须由专业的电工或技术人员作业使用,使用过程中请做好用电安全、防漏电和绝缘等保护措施。
  • 在安装、维护或更换继电器设备之前,请务必关闭电源并拔下插头。
  • 请勿试图拆卸继电器设备,以免损坏设备或导致电击危险。
  • 请妥善安装放置继电器设备产品,请勿在潮湿、过热、易燃或易爆环境中使用,避免因安装或使用不慎引发安全事故。

1. 负载匹配

  • 确认继电器的额定电压、电流与负载匹配,切勿超载使用。电流过大可能会导致触点融化粘连,甚至起火烧毁。
  • 对于感性负载(电机、线圈、灯具等),启动电流可能远高于额定电流,应选择额定电流有足够余量的继电器。

2. 短路与过流保护

  • 在继电器回路上加 熔断器(保险丝)空气开关(断路器),以防负载短路或意外过流烧毁继电器。
  • 接线时确保负载回路无短路,必要时选用额定电流合适的保护元件。

3. 电弧与吸合保护

  • 继电器开关瞬间会产生电弧,易造成触点损耗或熔焊。
  • 建议对感性负载使用 RC 吸收电路压敏电阻 等灭弧保护。

4. 安装环境

  • 避免在潮湿、高温、易燃易爆或灰尘较多的环境中使用。
  • 继电器应安装稳固,避免振动或冲击导致误动作或损坏。

5. 断电操作

  • 在维护、接线或更换继电器前,请务必切断电源,确保人身和设备安全。
  • 磁保持继电器在状态改变时才通电,平时断电,请避免剧烈震动或强磁场干扰导致继电器状态改变。

6. 状态确认

  • 磁保持继电器上电后请根据需要确认或重置继电器状态,避免因运输、安装或外界干扰导致动作状态异常。
  • 避免在磁保持继电器动作过程中断电,以免状态不确定或触点损坏。

7. 定期检查

  • 长期使用后,请定期检查继电器触点、接线端子及绝缘情况,确保正常工作。
  • 出现异常发热、异味或烧痕,应立即断电并更换继电器。

本产品是一款工业级 RS485 接口控制的数据采集控制模块,支持2路继电器输出,2路开关量输入,2路模拟电流输出,2路模拟输入。采用 Modbus RTU 协议,内置电源隔离、磁耦隔离、自恢复保险丝和 TVS 等保护电路。

产品参数

通信接口 RS485
通信波特率 4800,9600,19200,38400,57600,
115200,128000,256000
默认通信格式 9600,N,8,1
Modbus 协议 标准 Modbus RTU 协议
供电电压 DC 7~36V
数字输入 2DI,5~36V,无源输入/有源输入 (NPN 型或 PNP 型),内置双向光耦
数字输出 2DO,5~40V,开漏输出,输出负载 500mA/通道 (MAX)
模拟输出 2AO,0~20mA, 分辨率12位、1uA,精度±0.03mA
模拟输入 2AI,0~10V/2~10V/0~20mA/4~20mA, 分辨率12位 ,精度≤3‰,更新速率 31Hz,采样电阻249Ω
设置设备地址范围 1~255 (默认为1,即对应16进制的0x01)

基本功能

支持通过 RS485 发送 Modbus RTU 协议指令读取开关量输入,从而根据输入控制数字量输出。
Modbus-RTU-IO-8CH-details-3.jpg

接线说明

硬件接线说明

Modbus-RTU-IO-8CH-details-7.jpg

产品接线表
通道标号 功能 通道标号 功能
7~36V 供电电源正极 485 A+ RS485信号线 A端
GND 供电电源负极 485 B- RS485信号线 B端
NC 无效引脚 EARTH RS485屏蔽地线
DGND 信号地 DGND 信号地
DI1 第一通道信号输入端 DO1 第一通道信号输出端
DI2 第二通道信号输入端 DO2 第二通道信号输出端
DI3 第三通道信号输入端 DO3 第三通道信号输出端
DI4 第四通道信号输入端 DO4 第四通道信号输出端
DI5 第五通道信号输入端 DO5 第五通道信号输出端
DI6 第六通道信号输入端 DO6 第六通道信号输出端
DI7 第七通道信号输入端 DO7 第七通道信号输出端
DI8 第八通道信号输入端 DO8 第八通道信号输出端
DI COM[1] 输入信号公共端 DO COM[2] 输出信号公共端
  1. DI COM为输入信号公共端,可接悬空也可电源正极或电源负极,可直接从供电电源取电,也可接独立电源供电。
    • 不接悬空:干接点无源输入
    • 接电源正极:低电平触发,NPN型湿接有源输入,电压5V-36V DC
    • 接电源负极:高电平触发,PNP型湿接有源输入,电压5V-36V DC
      Modbus-RTU-IO-8CH-DI-connection.jpg
  2. DO COM为输出信号公共端,接输出电源正极。
    • Modbus-RTU-IO-8CH-DO-connection.jpg

数字量输入接线

数字量输入接线方式可细分为:无源干接点输入、有源湿接点NPN型输入、有源湿接点PNP型输入。

数字量输入接线方式示意图

  • 无源干接点输入接线图

Modbus-RTU-IO-8CH-DI-connect-01.jpg

  • 有源湿接点NPN型输入接线图

Modbus-RTU-Relay-D-3.png

  • 有源湿接点PNP型输入接线图

Modbus-RTU-Relay-D-4.png

数字量输出接线

  • 数字量输出接线图

Modbus-RTU-IO-8CH-DO-connection.jpg

硬件连接

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

Modbus-RTU-IO-8CH-RS485-connect.jpg

实例演示

演示介绍了下面两种软件的操作方式。
SSCOM串口调试助手操作更方便,免安装,指令完整显示分析更方便,缺点是数据不直观。
Modbus Poll软件是直接对寄存器操作,数据显示更方便观察,缺点是指令不完成显示,需熟悉Modbus寄存器操作。
可选任意一种方式测试,首次测试建议使用SSCOM串口调试助手软件。

SSCOM串口调试助手

  • 下载SSCOM串口调试助手并在电脑上打开,打开对应的端口号,设置波特率为9600,点击多字符串打开多条字符串发送窗口,点击对应的功能即可发送对应的命令,

Modbus-RTU-Relay-2-1.png
注意:模块出厂默认为正常模式,继电器可以直接指令控制,如果有指令正常返回,但继电器没动作,可能模块已改为其他控制模式,可通过读取继电器控制模式指令查询一下。

  • 如果需要发送其他命令则选择HEX发送,加检验选择ModbusCRC16校验,输入命令的前六个字节点击发送则会自动添加CRC校验码。

Modbus-RTU-Relay-3.png

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

Modbus Poll软件

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

Modbus-RTU-Relay-C-1.png

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

Modbus-RTU-Analog-Input-3.png

  • 连接正常后则可以查看当前输入通道状态,选择对应通道后,双击状态值即可跳出发送页面,选择ON或OFF,然后发送即可控制对应的继电器开合。

Modbus-RTU-Relay-C-2.png

  • 选择File-New新建一个窗口,选择setup->Read/Write Definition,Slave ID选择实际设备地址,Function选择02功能码,Address设置为0,Quantity设置为8通道,Scan Rate改为100ms。点击OK确认。

Modbus-RTU-Relay-D-5.jpg

  • 新建窗口2可以显示当前输入状态,改变输入接口电平,对应的数值也会改变。

Modbus-RTU-Relay-D-6.jpg


开发协议 V2

功能码介绍

功能码 备注
01 读输出状态
02 读输入状态
03 读取保存寄存器
05 写单个输出通道
06 设置单个寄存器
0F 写多个输出通道
10 设置多个寄存器

寄存器地址介绍

地址(HEX) 地址存储内容 寄存器取值 权限 Modbus 功能码
0x0000
……
0x0001
输出道通1~输出通道2地址 0xFF00:开启;
0x0000:关闭;
0x5500:翻转;
读/写 0x01,0x05,0x0F
0x00FF 操作全部寄存器 0xFF00:输出全部开启;
0x0000:输出全部关闭;
0x5500:输出全部翻转;
0x05,0x0F
0x0100
……
0x0101
输出道通1~输出通道2地址 0xFF00:翻转;
0x0000:不变;
0x05
0x0200
……
0x0201
输出道通1~输出通道2闪开 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
0x05
0x0400
……
0x0401
输出道通1~输出通道2闪闭 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
0x05
1x0000
……
1x0001
输入道通1~输入通道2地址 表示1~2输入通道状态 0x02
3x0000
……
3x0001
模拟输入道通1~模拟输入通道2数据 数值为无符号十六进制 0x04
4x0000
……
4x0001
模拟输出道通1~模拟输出通道2数据 数值为无符号十六进制 读/写 0x03,0x06,0x10
4x1000
……
4x1001
输出道通1~输出通道2控制模式 0x0000~0x0003四种控制模式 读/写 0x03,0x06,0x10
4x3000
……
4x3001
模拟输入道通1~模拟输入通道2数据类型 0x0000~0x0004五种量程范围 读/写 0x03,0x06,0x10
4x2000 串口参数 高八位为校验方式:0x00~0x02
低八位为波特率方式:0x00~0x07
0x03,0x06
4x4000 设备地址 直接存储 Modbus 地址
设备地址:0x0001-0x00FF
读/写 0x03,0x06
4x8000 软件版本 转为十进制然后小数点左移两位即表示软件版本
0x0064 = 100 = V1.00
0x03

Modbus RTU 数字指令介绍

控制单个输出通道

发送码:01 05 00 00 FF 00 8C 3A

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
05 05指令 写单个输出通道指令
00 00 地址 要控制输出通道的寄存器地址,0x0000 - 0x0001
FF 00 指令 0xFF00:开启;
0x0000:关闭;
0x5500:翻转;
8C 3A CRC16 前6字节数据的CRC16校验和

返回码: 01 05 00 00 FF 00 8C 3A

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
05 05指令 写单个输出通道指令
00 00 地址 要控制输出通道寄存器地址,0x0000-0x0001
FF 00 指令 0xFF00:开启;
0x0000:关闭;
0x5500:翻转;
8C 3A CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]:

0号输出通道开启 : 01 05 00 00 FF 00 8C 3A
0号输出通道关闭 : 01 05 00 00 00 00 CD CA
1号输出通道开启 : 01 05 00 01 FF 00 DD FA
1号输出通道关闭 : 01 05 00 01 00 00 9C 0A

控制全部输出通道

发送码:01 05 00 FF FF 00 BC 0A

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
05 05指令 写单个输出通道指令
00 FF 地址 固定0x00FF
FF 00 指令 0xFF00:开启;
0x0000:关闭;
0x5500:翻转;
BC 0A CRC16 前6字节数据的CRC16校验和

返回码: 01 05 00 FF FF 00 BC 0A

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
05 05指令 写单个输出通道指令
00 FF 地址 固定0x00FF
FF 00 指令 0xFF00:开启;
0x0000:关闭;
0x5500:翻转;
BC 0A CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]:

全部输出通道开启 : 01 05 00 FF FF 00 BC 0A
全部输出通道关闭 : 01 05 00 FF 00 00 FD FA
全部输出通道翻转 : 01 05 00 FF 55 00 C2 AA

读取输出通道状态

发送码:01 01 00 00 00 02 BD CB

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
01 01指令 查询输出通道状态指令
00 00 输出通道起始地址 输出通道的寄存器地址,0x0000 - 0x0001
00 08 输出通道数量 读取输出通道数量,不能超过最大输出通道数量
3D CC CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 01 01 00 51 88

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
01 01指令 查询输出通道状态指令
01 字节数 返回状态信息的所有字节数。
00 查询的状态 返回的输出通道状态
Bit0:起始输出通道状态;
Bit1:下个输出通道状态,
依次类推,高端空闲位则为零
51 88 CRC16 前 6 字节数据的 CRC16 校验和

示例:[1号地址设备]

发送 : 01 01 00 00 00 02 BD CB
返回 : 01 01 01 00 51 88    //全部输出通道关闭
发送 : 01 01 00 00 00 02 BD CB
返回 : 01 01 01 01 90 48    //0号输出通道开启,其余输出通道关闭

写输出通道状态

发送码:01 0F 00 00 00 02 01 03 9E 96

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
0F 0F指令 写输出通道状态指令
00 00 输出通道起始地址 要控制输出通道的寄存器地址,0x0000 - 0x0001
00 08 输出通道数量 操作输出通道数量,不能超过最大输出通道数量
01 字节数量 状态字节数
03 输出通道状态 Bit0:起始输出通道状态;
Bit1:下个输出通道状态,
依次类推,高端空闲位则为零
9E 96 CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 0F 00 00 00 02 D4 0A

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
0F 0F指令 全部寄存器控制指令
00 00 输出通道地址 要控制输出通道的寄存器地址,0x0000 - 0x0007
00 02 输出通道数量 操作输出通道数量
D4 0A CRC16 前 6 字节数据的 CRC16 校验和

示例:[1号地址设备]

输出通道全部开启 : 01 0F 00 00 00 02 01 FF 9E D7
输出通道全部关闭 : 01 0F 00 00 00 02 01 00 DE 97
通道0开;通道1关 : 01 0F 00 00 00 02 01 01 1F 57

输出通道闪开闪闭指令

发送码:01 05 02 00 00 07 8D B0

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
05 05指令 单个控制指令
02 指令 02 为是闪开指令,04为闪闭指令
00 输出通道地址 要控制的输出通道地址,0x00~0x07
00 07 间隔时间 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
闪开闪闭的时间最大设置为0x7FFF
8D B0 CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 05 02 00 00 07 8D B0

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
05 05指令 单个控制指令
02 指令 02 为是闪开指令,04为闪闭指令
00 输出通道地址 要控制输出通道地址,0x00~0x07
00 07 间隔时间 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
闪开闪闭的时间最大设置为0x7FFF
8D B0 CRC16 前 6 字节数据的 CRC16 校验和

示例:[1号地址设备]

0号输出通道闪开 : 01 05 02 00 00 07 8D B0  //700MS = 7*100MS = 700MS
1号输出通道闪开 : 01 05 02 01 00 08 9C 74  //800MS
0号输出通道闪闭 : 01 05 04 00 00 05 0C F9  //500MS
1号输出通道闪闭 : 01 05 04 01 00 06 1D 38  //600MS

读取输入通道状态

发送码:01 02 00 00 00 02 F9 CB

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
02 02指令 读取输入状态指令
00 00 输入起始地址 输入寄存器地址,0x0000 - 0x0001
00 02 寄存器数量 读取输入通道数量,不能超过最大输入数量
F9 CB CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 02 01 00 A1 88

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
02 02指令 读取输入状态指令
01 字节数 返回状态信息的所有字节数。
00 查询的状态 返回的输入通道状态
Bit0:起始输入通道状态;
Bit1:下个输入通道状态,
依次类推,高端空闲位则为零
A1 88 CRC16 前 6 字节数据的 CRC16 校验和

示例:[1号地址设备]

发送 : 01 02 00 00 00 02 F9 CB
返回 : 01 02 01 00 A1 88    //输入全部没有触发
发送 : 01 02 00 00 00 02 F9 CB
返回 : 01 02 01 01 60 48    //1通道输入触发,其余通道没有触发

读取输出通道控制模式

发送码:01 03 10 00 00 02 C0 CB

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读取保持寄存器
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8输出通道
00 02 寄存器数量 读取寄存器数量,最多8个通道
C0 CB CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 04 00 00 00 00 FA 33

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读保持寄存器
04 字节数 返回状态信息的所有字节数。
00 00
……
00 00
控制模式 表示1 - 2 输出通道控制模式,0x0000~0x0003表示四种控制模式
0x0000:正常模式,输出通道受指令直接控制;
0x0001:联动模式,输出通道状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的输出通道状态翻转一次
0x0003:跳变模式,输入通道电平跳变一次对应的输出通道状态翻转一次
注意:除了联动模式外,其他模式都同时支持通过指令控制输出通道。
FA 33 CRC16 前 6 字节数据的 CRC16 校验和

示例:[1号地址设备]

读取 1号输出通道控制模式 : 01 03 10 00 00 01 80 CA
读取 2号输出通道控制模式 : 01 03 10 01 00 01 D1 0A

设置单输出通道控制模式

发送码:01 06 10 00 00 01 4C CA

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 写单个寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道输出通道控制模式
00 01 控制模式 表示1 - 8 输出通道控制模式,0x0000~0x0003表示四种控制模式
0x0000:正常模式,输出通道受指令直接控制;
0x0001:联动模式,输出通道状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的输出通道状态翻转一次
0x0003:跳变模式,输入通道电平跳变一次对应的输出通道状态翻转一次
注意:除了联动模式外,其他模式都同时支持通过指令控制输出通道。
4C CA CRC16 前6字节数据的CRC16校验和

返回码: 01 06 10 00 00 01 4C CA

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 写单个寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1001对应1~2通道输出通道控制模式
00 01 控制模式 输出通道控制模式,0x0000~0x0003表示四种控制模式
4C CA CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]

设置1输出通道为联动模式 : 01 06 10 00 00 01 4C CA
设置2输出通道为翻转模式 : 01 06 10 01 00 02 5D 0B

设置多输出通道控制模式

发送码:01 10 10 00 00 02 04 00 01 00 01 AE 6F

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
10 写多寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1001对应1~2通道输出通道控制模式
00 02 寄存器数量 设置寄存器数量,最多2个通道
04 字节数量 设置输出字节数
00 01
……
00 01
控制模式 表示1 - 2 输出通道控制模式,0x0000~0x0003表示四种控制模式
0x0000:正常模式,输出通道受指令直接控制;
0x0001:联动模式,输出通道状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的输出通道状态翻转一次
0x0003:跳变模式,输入通道电平跳变一次对应的输出通道状态翻转一次
注意:除了联动模式外,其他模式都同时支持通过指令控制输出通道。
AE 6F CRC16 前6字节数据的CRC16校验和

返回码: 01 10 10 00 00 02 45 08

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
10 写多寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道输出通道控制模式
00 02 寄存器数量 设置寄存器数量,最多8个通道
45 08 CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]

设置1-2通道输出通道为联动模式: 01 10 10 00 00 02 04 00 01 00 01 AE 6F
设置1-2通道输出通道为正常模式: 01 10 10 00 00 02 04 00 00 00 00 3E 6F

Modbus RTU 模拟指令介绍

设置模拟输出单通道指令

发送码:01 06 00 00 03 E8 89 74

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 写单个寄存器指令
00 00 寄存器地址 0x0000 - 0x0007对应1~8输出通道
03 E8 设置数值 设置值为16进制,单位uA,高位在前,低位在后
0x03E8 = 1000uA,即1mA
89 74 CRC16 前6字节数据的CRC16校验和

返回码: 01 06 00 00 03 E8 89 74

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 写单个寄存器指令
00 00 寄存器地址 0x0000 - 0x0007对应1~8输出通道
03 E8 设置数值 设置值为16进制,单位uA,高位在前,低位在后
0x03E8 = 1000uA,即1mA
89 74 CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]

设置  1通道输出1mA : 01 06 00 00 03 E8 89 74
读取  2通道输出5mA : 01 06 00 01 13 88 D5 5C

设置模拟输出多通道指令

发送码:01 10 00 00 00 02 04 03 E8 03 E8 73 61

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
10 写多寄存器指令
00 00 寄存器起始地址 0x0000 - 0x0002对应1~2输出通道
00 02 寄存器数量 设置寄存器数量,不能超过最大通道数量
04 字节数量 设置输出字节数
03 E8
……
03 E8
指令 起始道模拟量输出
……
最后道模拟量输出
设置值为16进制,单位uA,高位在前,低位在后
0x03E8 = 1000uA,即1mA
73 61 CRC16 前6字节数据的CRC16校验和

返回码: 01 10 00 00 00 02 41 C8

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
10 写多寄存器指令
00 00 寄存器起始地址 0x0000 - 0x0007对应1~8输出通道
00 02 寄存器数量 设置寄存器数量,不能超过最大通道数量
41 C8 CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]

设置1-2模拟通道输出1mA : 01 10 00 00 00 02 04 03 E8 03 E8 73 61
设置1-2模拟通道输出2mA : 01 10 00 00 00 02 04 07 D0 07 D0 F0 8E

读取模拟输出指令

发送码:01 03 00 00 00 02 C4 0B

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读取保持寄存器
00 00 寄存器起始地址 0x0000 - 0x0001对应1~2输入通道
00 02 寄存器数量 读取寄存器数量,不能超过最大通道数量
C4 0B CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 04 03 E8 03 E8 7A FD

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读保持寄存器
04 字节数 返回状态信息的所有字节数。
03 E8
……
03 E8
输出数值 起始通道模拟量输出
……
最后通道模拟量输出
设置值为16进制,单位uA,高位在前,低位在后
0x03E8 = 1000uA,即1mA
7A FD CRC16 前 6 字节数据的 CRC16 校验和

示例:[1号地址设备]

读取  1通道数据类型 : 01 03 00 00 00 01 84 0A
读取  2通道数据类型 : 01 03 00 01 00 01 D5 CA

读取模拟输入指令

发送码:01 04 00 00 00 02 71 CB

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
04 04指令 读取输入寄存器
00 00 寄存器起始地址 0x0000 - 0x0001对应1~2输入通道
00 02 寄存器数量 读取寄存器数量,不能超过最大通道数量
71 CB CRC16 前6字节数据的CRC16校验和

返回码: 01 04 04 00 00 00 00 FB 84

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
04 04指令 读取输入寄存器
04 字节数量 数据长度
00 00
……
00 00
寄存器数据 表示0 - 2 通道采集模拟量的数值
无符号十六位标识一个通道,高位在前,低位在后
数据范围根据输出数据类型确定
FB 84 CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]

读取模拟输入  1通道 : 01 04 00 00 00 01 31 CA
读取模拟输入  2通道 : 01 04 00 01 00 01 60 0A

读取模拟输入通道数据类型指令

发送码:01 03 30 00 00 02 CB 0B

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读取保持寄存器
30 00 寄存器起始地址 0x3000 - 0x3001对应1~2输入通道
00 02 寄存器数量 读取寄存器数量,不能超过最大通道数量
CB 0B CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 04 00 02 00 02 DA 32

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读保持寄存器
04 字节数 返回状态信息的所有字节数。
00 02
……
00 02
数据类型 表示0 - 1 通道数据类型,0x0000~0x0004表示五种量程范围
0x0000:量程0~5V,输出范围0~5000 或 量程0~10V,输出范围0~10000,单位mV;
0x0001:量程1~5V,输出范围1000~5000 或 量程2~10V,输出范围2000~10000,单位mV;
0x0002:量程0~20mA,输出范围0~20000,单位uA;
0x0003:量程4~20mA,输出范围4000~20000,单位uA;
0x0004:直接输出数值码,输出范围0~4096,需要经过线性转换才能得到实际测量电压和电流;
DA 32 CRC16 前 6 字节数据的 CRC16 校验和

示例:[1号地址设备]

读取模拟输入  1通道数据类型 : 01 03 10 00 00 01 80 CA
读取模拟输入  2通道数据类型 : 01 03 10 01 00 01 D1 0A

设置模拟输入单通道数据类型指令

发送码:01 06 30 00 00 03 C6 CB

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 写单个寄存器指令
30 00 寄存器起始地址 0x3000 - 0x1001对应1~2输入通道输出数据类型
00 03 通道数据类型 通道数据类型,0x0000~0x0004表示五种量程范围
0x0000:量程0~5V,输出范围0~5000 或 量程0~10V,输出范围0~10000,单位mV;
0x0001:量程1~5V,输出范围1000~5000 或 量程2~10V,输出范围2000~10000,单位mV;
0x0002:量程0~20mA,输出范围0~20000,单位uA;
0x0003:量程4~20mA,输出范围4000~20000,单位uA;
0x0004:直接输出数值码,输出范围0~4096,需要经过线性转换才能得到实际测量电压和电流;
C6 CB CRC16 前6字节数据的CRC16校验和

返回码: 01 06 30 00 00 03 C6 CB

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 写单个寄存器指令
30 00 通道数据类型地址 0x3000 - 0x3001对应1~2输入通道数据类型
00 03 通道数据类型 通道数据类型,0x0000~0x0004表示五种量程范围>
C6 CB CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]

设置  1通道数据类型为0~20mA : 01 06 30 00 00 02 07 0B
读取  2通道数据类型为4~20mA : 01 06 30 00 00 03 C6 CB

设置模拟输入多通道数据类型指令

发送码:01 10 30 00 00 02 04 00 03 00 03 17 AF

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
10 写多寄存器指令
30 00 寄存器起始地址 0x3000 - 0x3001对应1~2输入通道数据类型
00 02 寄存器数量 设置寄存器数量,不能超过最大通道数量
04 字节数量 设置输出字节数
00 03
……
00 03
指令 对应0 - 7 通道数据类型,0x0000~0x0004表示五种量程范围
0x0000:量程0~5V,输出范围0~5000 或 量程0~10V,输出范围0~10000,单位mV;
0x0001:量程1~5V,输出范围1000~5000 或 量程2~10V,输出范围2000~10000,单位mV;
0x0002:量程0~20mA,输出范围0~20000,单位uA;
0x0003:量程4~20mA,输出范围4000~20000,单位uA;
0x0004:直接输出数值码,输出范围0~4096,需要经过线性转换才能得到实际测量电压和电流;
17 AF CRC16 前6字节数据的CRC16校验和

返回码: 01 10 30 00 00 02 4E C8

字段 含义 备注
01 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
10 写多寄存器指令
30 00 寄存器起始地址 0x3000 - 0x3001对应1~2输入通道数据类型
00 02 寄存器数量 设置寄存器数量,不能超过最大通道数量
4E C8 CRC16 前6字节数据的CRC16校验和

示例:[1号地址设备]

读取1-2通道数据类型为4~20mA : 01 10 30 00 00 02 04 00 03 00 03 17 AF
读取1-2通道数据类型为 1 ~ 5V : 01 10 30 00 00 02 04 00 01 00 01 37 AE

Modbus RTU 通信指令介绍

设置波特率指令

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

字段 含义 备注
00 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
06 06指令 设置波特率,设备地址
20 00 指令寄存器 0x2000为设置波特率,0x4000为设置设备地址,0x8000为读取软件版本
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为设置设备地址,0x8000为读取软件版本
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为设置设备地址,0x8000为读取软件版本
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为设置设备地址,0x8000为读取软件版本
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 指令寄存器 0x2000为设置波特率,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 校验和

示例:[2号地址设备]

发送 : 00 03 40 00 00 01 90 1B
返回 : 00 03 02 00 02 04 45     //地址0x02

读取软件版本指令

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

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

返回码:00 03 02 00 C8 84 12

字段 含义 备注
00 设备地址 0x00表示广播地址;0x01-0xFF表示设备地址
03 03指令 读取软件版本,读取设备地址指令
02 字节数 返回字节数
00 C8 软件版本 转为十进制然后小数点左移两位即表示软件版本
0x00C8 = 200 = V2.00
84 12 CRC16 前 6 字节数据的 CRC16 校验和

示例:

发送:00 03 80 00 00 01 AC 1B
返回:03 03 02 00 C8 F1 00       //0x00C8 = 200 =V2.00

异常功能码

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

返回码: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



设备无需额外下载驱动,通过设备的485接口发送modbus指令即可控制设备继电器的开关或者查询继电器状态

{{{5}}}


没有拨码,只能通过指令设置

{{{5}}}


请参考 Modbus系列BootLoader说明 进入boot模式,然后就可以选择选项3来读取通信参数或者选择选项2来重置通信参数

{{{5}}}


检查一下485总线是否反接,没反接的话在A、B线之间跨接上120Ω的终端电阻

{{{5}}}



5V供电情况下,待机时的功耗参考值:0.39w。具体功耗请以实际情况为准

{{{5}}}




技术支持


联系人:邓工
EMAIL:3005766107@qq.com
QQ:3005766107
微信:扫下方二维码添加
Dhz-wx.png

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