信科电子modbus控制模块通讯协议与寄存器地址说明V1.2
广播地址245(0xF5)
如果不知道板的当前地址,可以使用广播地址通讯,但是总线上的每一块板都会做出响应。
功能码1 读取多线圈
通讯寄存器地址:0-63,对应1-64路继电器的状态
以模块通讯地址1举例:
发送 |
01 |
01 |
00 00 |
00 05 |
FC 09 |
模块地址 |
功能码 |
寄存器地址 |
继电器数量 |
CRC校验 |
|
返回 |
01 |
01 |
05 |
00 |
53 48 |
模块地址 |
功能码 |
寄存器地址 |
状态一个字节 |
CRC校验 |
功能:读取第1到第5路继电器的状态(此例为全部断开状态)
发送 |
01 |
01 |
00 00 |
00 40 |
3D FA |
模块地址 |
功能码 |
寄存器地址 |
继电器数量 |
CRC校验 |
|
返回 |
01 |
01 |
64 |
FF FF FF FF FF FF FF FF |
23 9A |
模块地址 |
功能码 |
寄存器地址 |
状态8个字节 |
CRC校验 |
功能:读取第1到第64路继电器的状态(此例为全部吸合状态)
功能码3 读取多寄存器
寄存器地址0:读取当前地址 单独读取
寄存器地址1:读取当前电路板软件版本号 单独读取
寄存器地址2:用户自定义数据,掉电非易失 单独读取
寄存器地址1000-1003:十六进制03E8,读取继电器的状态,四个寄存器含有八个字节,代表64路继电器的状态。
每个寄存器两个字节,一共四个寄存器,八个字节,代表64路继电器的最新状态。
以寄存器地址1000-1003,模块通讯地址1举例:
发送 |
01 |
03 |
03 E8 |
00 04 |
C4 79 |
模块地址 |
功能码 |
寄存器地址 |
寄存器数量 |
CRC校验 |
|
返回 |
01 |
03 |
08 |
FF FF FF FF FF FF FF FF |
D4 53 |
模块地址 |
功能码 |
数字字节数量 |
数据(继电器状态8个字节) |
CRC校验 |
功能:读取第1到第64路继电器的状态(此例为全部吸合状态)
功能码5 强制单线圈
通讯寄存器地址:0-63 ,对应1-64路继电器的状态
以模块通讯地址1举例:
发送 |
01 |
05 |
00 08 |
00 00 |
4C 08 |
模块地址 |
功能码 |
继电器编号 |
新的状态 |
CRC校验 |
|
返回 |
01 |
05 |
00 08 |
00 00 |
4C 08 |
模块地址 |
功能码 |
继电器编号 |
状态 |
CRC校验 |
功能:关闭第9路继电器的状态,因为是从0开始编号,所以数据8代表第九个继电器
发送 |
01 |
05 |
00 03 |
FF 00 |
7C 3A |
模块地址 |
功能码 |
继电器编号 |
新的状态 |
CRC校验 |
|
返回 |
01 |
05 |
00 03 |
FF 07 |
7C 3A |
模块地址 |
功能码 |
继电器编号 |
状态 |
CRC校验 |
功能:打开第四路继电器,因为是从0开始编号,所以数据3代表第四个继电器
功能码6 强制单寄存器
寄存器地址0功能:强制写入新的通讯地址,以广播地址245(0xF5)举例。
发送 |
F5 |
06 |
00 00 |
00 03 |
CRCH CRCL |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
|
返回 |
F5 |
06 |
00 00 |
00 03 |
CRCH CRCL |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
功能:使用广播地址,将目标板的通讯地址设置为3
寄存器地址1功能:写入无效。
寄存器地址2功能:写入用户自定义数据,以模块通讯地址1为例
发送 |
01 |
06 |
00 02 |
12 A5 |
4E D1 |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
|
返回 |
01 |
06 |
00 02 |
12 A5 |
4E D1 |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
功能:将用户自定义数据设置为0x12A5,掉电不丢失。
寄存器地址3功能 :关闭某一路通讯地址,向这个地址写入几,第几路的继电器就会关闭。
发送 |
01 |
06 |
00 03 |
00 03 |
39 CB |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
|
返回 |
01 |
06 |
00 03 |
00 03 |
39 CB |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
功能:关闭第三路继电器。
寄存器地址4功能 :打开某一路通讯地址,向这个地址写入几,第几路的继电器就会打开。
发送 |
01 |
06 |
00 04 |
00 03 |
88 0A |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
|
返回 |
01 |
06 |
00 04 |
00 03 |
88 0A |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
功能:打开第三路继电器。
寄存器地址5功能 :翻转某一路通讯地址,向这个地址写入几,第几路的继电器就会翻转。
发送 |
01 |
06 |
00 05 |
00 03 |
D9 CA |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
|
返回 |
01 |
06 |
00 05 |
00 03 |
D9 CA |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
功能:翻转第三路继电器。继电器的状态发生翻转
寄存器地址13,14,15 功能与寄存器地址3,4,5的功能相同,只是电路板不会返回任何数据,支持数据连续发送,方便编写主机程序。
通讯寄存器地址:1000-1003 ,对应1-64路继电器的状态
以模块通讯地址1举例:
发送 |
01 |
06 |
03 E8 |
23 78 |
10 A8 |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
|
返回 |
01 |
06 |
03 E8 |
23 78 |
10 A8 |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
功能:将寄存器地址03 E8(十进制1000)的值设置为23 78,对应第1-16路继电器的新状态
发送 |
01 |
06 |
03 E9 |
23 78 |
41 68 |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
|
返回 |
01 |
06 |
03 E9 |
23 78 |
41 68 |
模块地址 |
功能码 |
寄存器地址 |
寄存器值 |
CRC校验 |
功能:将寄存器地址03 E9(十进制1001)的值设置为23 78,对应第17-32路继电器的新状态
寄存器通讯地址2000-2003 功能与寄存器通讯地址1000-1003相同,电路板不返回任何指令,方便进行数据连续发送。
功能码15 强制多线圈,十六进制0x0F
通讯寄存器地址:0-63 ,对应1-64路继电器的状态
以模块通讯地址1举例:
发送 |
01 |
0F |
00 00 |
00 04 |
01 |
0F |
7E 92 |
模块地址 |
功能码 |
继电器编号 |
继电器数量 |
字节数量 |
状态 |
CRC校验 |
|
返回 |
01 |
0F |
00 00 |
00 04 |
54 08 |
||
模块地址 |
功能码 |
继电器编号 |
继电器数量 |
CRC校验 |
功能:打开第1-4路继电器
发送 |
01 |
0F |
00 00 |
00 10 |
02 |
5F 08 |
DA 16 |
模块地址 |
功能码 |
继电器编号 |
继电器数量 |
字节数量 |
状态 |
CRC校验 |
|
返回 |
01 |
0F |
00 00 |
00 10 |
54 08 |
||
模块地址 |
功能码 |
继电器编号 |
继电器数量 |
CRC校验 |
功能:打开第1-5路,第7路,第12路继电器
功能码16 强制多寄存器,十六进制0x10.
通讯寄存器地址:1000-1003 ,对应1-64路继电器的状态
以模块通讯地址1举例:
发送 |
01 |
10 |
03 E8 |
00 01 |
02 |
23 78 |
9B 6A |
模块地址 |
功能码 |
寄存器地址 |
寄存器数量 |
字节数量 |
数据 |
CRC校验 |
|
返回 |
01 |
10 |
03 E8 |
00 01 |
81 B9 |
||
模块地址 |
功能码 |
寄存器地址 |
寄存器数量 |
CRC校验 |
功能:将寄存器地址03 E8(十进制1000)的值设置为23 78,对应第1-16路继电器的新状态
发送 |
01 |
10 |
03 E8 |
00 04 |
08 |
...... |
CRCH CRCL |
模块地址 |
功能码 |
寄存器地址 |
寄存器数量 |
字节数量 |
8字节数据 |
CRC校验 |
|
返回 |
01 |
10 |
03 E8 |
00 04 |
CRCH CRCL |
||
模块地址 |
功能码 |
寄存器地址 |
寄存器数量 |
CRC校验 |
功能:将寄存器地址03 E8(十进制1000)开始的四个寄存器更新为新的值,也就是寄存器1000,1001,1002,1003,对应1-64路继电器的新的状态
数据举例:
发送 |
01 |
10 |
03 E8 |
00 04 |
08 |
01 02 03 04 05 06 07 08 |
20 5C |
模块地址 |
功能码 |
寄存器地址 |
寄存器数量 |
字节数量 |
8字节数据 |
CRC校验 |
|
返回 |
01 |
10 |
00 E8 |
00 04 |
41 BA |
||
模块地址 |
功能码 |
寄存器地址 |
寄存器数量 |
CRC校验 |
功能:将寄存器地址03 E8(十进制1000)开始到四个寄存器分别设置为十六进制:0x0102 0x 0304 0x 0506 0x 0708。