Modbus协议和点表.docx
《Modbus协议和点表.docx》由会员分享,可在线阅读,更多相关《Modbus协议和点表.docx(397页珍藏版)》请在冰豆网上搜索。
![Modbus协议和点表.docx](https://file1.bdocx.com/fileroot1/2023-1/5/5423e60e-498e-4cc2-80e2-ebf6a99d0d7a/5423e60e-498e-4cc2-80e2-ebf6a99d0d7a1.gif)
Modbus协议和点表
公司Modbus通讯协议部分功能码描述:
本通讯协议描述了公司GZDW直流屏监控系统在ModbusRTU通讯模式下的信息传输,输入输出命令格式和数据地址的定义,以方便第三方使用和开发,保证信息和数据在上位监控计算机和公司直流屏系统之间有效的传输。
1.物理接口:
1.1串行通讯口采用RS485方式。
1.2信息传输方式采用半双工异步方式,起始位1位,数据位8位,无校验,停止位1位。
1.3数据传输速率为9600bps(默认),存在选项.
1.4在现场总线设备中,GZDW直流屏通讯口作从站.
2.本通讯转换器支持的MODBUSRTU通讯帧结构解释:
符合标准ModbusRTU通讯协议格式
每个Modbus通讯帧由以下几个部分组成:
1)地址域
2)功能域
3)数据域
4)校验域
数据发送顺序:
地址域(1Byte)
功能域(1Byte)
数据域(NByte)
校验域(2Byte)
2.1地址域
ModbusRTU从站地址域为一个字节,公司直流屏系统地址固定为0x03,其响应网络数据帧中地址域数据与自身地址相等的数据信息命令。
2.2功能码域
ModbusRTU通讯协议中功能码域包括一个字节,有关本公司直流系统功能码参见下表:
功能码
含义
功能描述
0x01
读取开关量输出
读取公司直流系统内一个或多个继电器(实际输出)
0x02
读取开关量输入
读取公司直流系统内一个或多个开关输入状态
0x03
读取寄存器
读取公司直流系统内一个或多个寄存器值
0x04
读取输入寄存器
读取公司直流系统内一个或多个变量
0x05
写单个线圈
设定公司直流系统内单个实际输出
0x10
设置寄存器
设置公司直流系统内一个或多个寄存器值
2.3数据域
ModbusRTU通讯协议数据域长度不定,视具体情况而定.数据域中数据采用高字节在前,低字节在后的传输顺序,例如:
一个16位寄存器包含数据为0x12BC,该寄存器数据发送顺序为:
高位字节:
0x12
低位字节:
0xBC
2.4校验域
公司直流系统ModbusRTU通讯协议采用16位CRC校验,传输时低字节在前,高字节在后
2.5功能域中01命令示例:
01功能码可由上位机发送请求本通讯转换器中的一个或多个线圈(实际输出)状态,返回实际输出点接通/断开状态。
01H读线圈状态数据帧格式(主机---→从机)
从站地址
1字节
功能码01H
1字节
位数据请求开始地址
2字节
位请求个数
2字节
CRC校验码
2字节
应答01H数据帧(从机---→主机)
从站地址
1字节
功能码01H
1字节
字节数(字节记数器)
1字节
位数据
n字节
CRC校验码
2字节
具体实例:
1>查询
查询信息规定了要读的起始线圈和线圈量,线圈的起始地址为零,1-16 个线圈的寻址地址分为0-15。
例:
请求从机设备17 读20-56 线圈。
Slave Address 11
Function 01
Starting Address Hi 00
Starting Address Lo 13
No. of Points Hi 00
No. of Roints Lo 25
Error Check (LRC or CRC)----
2>响应
响应信息中的各线圈的状态与数据区的每一位的值相对应, 1=ON; 0=OFF。
第一个数据字节的LSB 为查询中的寻址地址, 其他的线圈按顺序在该字节中由低位向高位排列,直至8 个为止, 下一个字节也是从低位向高位排例。
若返回的线圈数不是8 的倍数,则在最后的数据字节中的剩余位至字节的最高位全部填零,字节数区说明全部数据的字节数
Slave Address 11
Function 01
Byte Count 05
Data (Coils 27-20) CD
Data (Coils 35-28) 6B
Data (Coils 43-36) B2
Data (Coils 51-44) 0E
Data (Coils 56-52) 1B
Error Check (LRC or CRC)-----
注释:
线圈27-20 的状态用CDH 表示,二进制值为11001101,该字节的MCB 为线圈27,LSB 为20。
线圈从左(27)向右(20)状态分别为ON-ON-OFF-OFF-ON-ON-OFF-ON,因此第一个字节中的线圈从左到右应是27-20。
下一个字节的线圈应为35 至28。
位数据串行转输从低位到高位,即20.27,28.35。
最后一个数据字节中,56-52 线圈的状态为1BH(或二进制00011011),线圈56 是左数第4 位,线圈52 是该字节的最低位, 所线圈56 至52 的状态分别为ON-ON-OFF-ON-ON 注意3 个剩余位(至最高位的数)全部填0。
2.6功能域中02命令示例
02功能码可由上位机发送请求本通讯转换器中的一个或多个接点(实际输入)状态,返回实际输入点接通/断开状态。
应答02H数据帧(从机---→主机)
从站地址
1字节
功能码02H
1字节
字节数(字节记数器)
1字节
位数据
n字节
CRC校验码
2字节
02H读接点状态数据帧格式(主机---→从机)
从站地址
1字节
功能码02H
1字节
位数据请求开始地址
2字节
位请求个数
2字节
CRC校验码
2字节
具体实例
1>查询
查询信息规定了要读的输入起始地址,以及输入信号的数量。
输入起始地址为0,1-16 个输入口的地址分别为0-15。
例:
请求读从机设备17 的10197-10218 的输入位状态。
Slave Address 11
Function 02
Starting Address Hi 00
Starting Address Lo C4
No. of Points Hi 00
No. of Roints Lo 16
Error Check (LRC or CRC)----
2>响应
响应信息中的各输入口的状态,分别对应于数据区中的每一位值,1 = ON; 0 = OFF,第一个数据字节的LSB 为查询中的寻址地址,其他输入口按顺序在该字节中由低位向高位排列,直至8 个位为止。
下一个字节中的8 个输入位也是从低位到高位排列。
若返回的输入位数不是8 的倍数,则在最后的数据字节中的剩余位直至字节的最高位全部填零。
字节的最高位,字节数区。
说明了全部数据的字节数。
Slave Address 11
Function 02
Byte Count 03
Data (Inputs 10204-10197) AC
Data (Inputs 10212-10205) DB
Data (Inputs 10218-10213) 35
Error Check (LRC or CRC)----
注释:
输入位10204-10197 的状态用35H (或二进制00110101) 表示。
输入位10218 为左数第3 位,10213 输入位为LSB,输入位10218-10213 的状态分别为ON-ON-OFF-ON-OFF-ON,注意最位还有2 个剩余位需填零。
2.7功能域中03命令示例:
03功能码可由上位机发送请求本通讯转换器中的有效寄存器,数据发送顺序示例:
03H读寄存器数据帧格式(主机---→从机)
从站地址
1字节
功能码03H
1字节
数据请求开始地址
2字节
寄存器请求个数
2字节
CRC校验码
2字节
应答03H数据帧(从机---→主机)
从站地址
1字节
功能码03H
1字节
字节数(2*应答寄存器数)
1字节
第一个寄存器数据
2字节
第一个寄存器数据
2字节
·········
CRC校验码
2字节
具体实例
1>查询
查询信息规定了要读的寄存器起始地址及寄存器的数量,寄存器寻址起始地址为0000,寄存器1-16 所对应的地址分别为0-15
例:
请求读从机设备17 的108,109,110三个地址的变量值。
Slave Address 11
Function 03
Starting Address Hi 00
Starting Address Lo 6B
No. of Points Hi 00
No. of Roints Lo 03
Error Check (LRC or CRC) ----
2>响应
响应信息中的寄存器数据为二进制数据,每个寄存器分别对应2 个字节,第一个字节为高位值数据,第二个字节为低位数据。
例按查询要求返回响应。
Slave Address 11
Function 03
Byte Count 06
Data Hi (Register 40108) 02
Data Lo(Register 40108) 2B
Data Hi(Register 40109) 00
Data Lo(Register 40109) 00
Data Hi(Register 40110) 00
Data Lo(Register 40110) 64
Error Check (LRC or CRC) -----
注释:
寄存器40108 的数据用022BH 2 个字节(或用十进制555)表示,寄存器40109-40110 中的数据为0000 和0064H,(十进制时为0 和100)
2.7功能域中04命令示例:
04功能码可由上位机发送请求本通讯转换器中的有效模拟量值,数据发送顺序示例:
04H读模拟量数据帧格式(主机---→从机)
从站地址
1字节
功能码04H
1字节
数据请求开始地址
2字节
寄存器请求个数
2字节
CRC校验码
2字节
应答04H数据帧(从机---→主机)
从站地址
1字节
功能码04H
1字节
字节数(2*应答寄存器数)
1字节
第一个寄存器数据
2字节
第一个寄存器数据
2字节
·········
CRC校验码
2字节
具体实例
1>查询
查询信息规定了要读的模拟量起始地址及模拟量的数量,模拟量寻址起始地址为0000,模拟量1-16 所对应的地址分别为0-15
例:
请求读从机设备17 的108,109,110三个地址的模拟量值。
Slave Address 11
Function 04
Starting Address Hi 00
Starting Address Lo 6B
No. of Points Hi 00
No. of Roints Lo 03
Error Check (LRC or CRC) ----
2>响应
响应信息中的模拟量数据为二进制数据,每个模拟量分别对应2 个字节,第一个字节为高位值数据,第二个字节为低位数据。
例按查询要求返回响应。
Slave Address 11
Function 04
Byte Count 06
Data Hi (Register 40108) 02
Data Lo(Register 40108) 2B
Data Hi(Register 40109) 00
Data Lo(Register 40109) 00
Data Hi(Register 40110) 00
Data Lo(Register 40110) 64
Error Check (LRC or CRC) -----
注释:
模拟量30108 的数据用022BH 2 个字节(或用十进制555)表示,模拟量30109-30110 中的数据为0000 和0064H,(十进制时为0 和100)
2.8功能域中05命令示例
05功能码可由上位机发送设置本通讯转换器中的一个线圈(实际输出)状态,返回实际输出点接通/断开状态。
应答05H数据帧(从机---→主机)
从站地址
1字节
功能码05H
1字节
位数据请求开始地址
2字节
位设置值
2字节
CRC校验码
2字节
05H读接点状态数据帧格式(主机---→从机)
从站地址
1字节
功能码05H
1字节
位数据请求开始地址
2字节
位设置值
2字节
CRC校验码
2字节
具体实例
1>查询
查询信息规定了需要强制线圈的类型,线圈起始地址为0,线圈1 的寻址地址为0 由查询数据区中的一个常量。
规定被请求线圈的ON/OFF 状态, FF00H 值请求线圈处于ON 状态,0000H 值请求线圈处于OFF 状态,其它值对线圈无效,不起作用。
强制单个线圈(0X 类型)为ON 或OFF 状态
例:
强制从机设备17 中的173 线圈为ON 状态
Slave Address 11
Function 05
Coil Address Hi 00
Coil Address Lo AC
Force Data Hi FF
Force Data Lo 00
Error Check (LRC or CRC) -----
2>响应
线圈为强制状态后即返回正常响应 例:
按查询要求返回响应
Slave Address 11
Function 05
Coil Address Hi 00
Coil Address Lo AC
Force Data Hi FF
Force Data Lo 00
Error Check (LRC or CRC) -----
2.9功能域中16命令示例:
16(0x10)功能码可由上位机发送设置本通讯转换器中的有效寄存器,数据发送顺序示例:
10H设置寄存器数据帧格式(主机---→从机)
从站地址
1字节
功能码10H
1字节
数据设置开始地址
2字节
寄存器设置个数
2字节
字节个数(2*寄存器个数)
1字节
第一个寄存器数据
2字节
第二个寄存器数据
2字节
·········
CRC校验码
2字节
应答10H数据帧(从机---→主机)
从站地址
1字节
功能码10H
1字节
数据开始地址
2字节
寄存器个数
2字节
CRC校验码
2字节
具体实例
1>查询
把数据按顺序预置到各 (4×类型) 寄存器中,信息中规定了要预置的寄存器类型,寄存器寻址的起始地址为 0,寄存器1 寻址地址为0。
查询数据区中指定了寄存器的预置值,M84 和484 型控制器使用10 位二进制数据,2 个字节,剩余的高6 位置0。
而其他类型的控制器使用一个 16 位二进制数据, 每个寄存器 2 个字节。
例:
请求在从机设备 17 中的 2 个寄存器中放入预置值,起始寄存器为 40002 ,预置值为 00 0AH 和 01 02H。
Slave Address 11
Function 10
Starting Address Hi 00
Starting Address Lo 01
No. of Registers Hi 00
No. of Registers Lo 02
Byte Count 04
Data Hi 00
Data Lo 0A
Data Hi 01
Data Lo 02
Error Check (LRC or CRC) -----
2>响应
正常响应返回从机地址,功能代码和起始地址和预置寄存器数。
例:
按查询要求返回响应
Slave Address 11
Function 10
Starting Address Hi 00
Starting Address Lo 01
No. of Registers Hi 00
No. of Registers Lo 02
Error Check (LRC or CRC) -----
七口通讯管理主板变量定义:
2009_12_26监控主板出厂地址:
0x01
从站中变量地址
所对应功能码
变量名称
R/W
4x0001
0x03/0x10
一段MCM100_1(地址:
2)交流单元有无(1:
有0:
无)
R,W
4x0002
0x03/0x10
一段MCM100_1(地址:
2)交流单元通讯故障次数报警
R,W
4x0003
0x03/0x10
一段MCM100_1(地址:
2)交流单元检测交流过压设定值0.01
R,W
4x0004
0x03/0x10
一段MCM100_1(地址:
2)交流单元检测交流欠压设定值0.01
R,W
4x0005
0x03/0x10
一段电池巡检单元数量(最大可设6块)
R,W
4x0006
0x03/0x10
一段电池巡检单元通讯故障次数设定
R,W
4x0007
0x03/0x10
一段单体电池电压过压值设定0.01
R,W
4x0008
0x03/0x10
一段单体电池电压欠压值设定0.01
R,W
4x0009
0x03/0x10
一段电池温度过温报警0.1
R,W
4x0010
0x03/0x10
一段地址为4的巡检仪采集的#1路温度值微调
R,W
4x0011
0x03/0x10
一段地址为4的巡检仪采集的#2路温度值微调
R,W
4x0012
0x03/0x10
一段地址为4的蓄电池巡检单元采集单体电池电压微调
R,W
4x0013
0x03/0x10
一段地址为5的蓄电池巡检单元采集单体电池电压微调
R,W
4x0014
0x03/0x10
一段地址为6的蓄电池巡检单元采集单体电池电压微调
R,W
4x0015
0x03/0x10
一段地址为7的蓄电池巡检单元采集单体电池电压微调
R,W
4x0016
0x03/0x10
一段地址为8的蓄电池巡检单元采集单体电池电压微调
R,W
4x0017
0x03/0x10
一段地址为9的蓄电池巡检单元采集单体电池电压微调
R,W
4x0018
0x03/0x10
一段支路绝缘巡检单元数量
R,W
4x0019
0x03/0x10
一段支路绝缘巡检单元通讯故障次数设定
R,W
4x0020
0x03/0x10
一段地址为10的绝缘巡检单元CT值数字微调
R,W
4x0021
0x03/0x10
一段地址为11的绝缘巡检单元CT值数字微调
R,W
4x0022
0x03/0x10
一段地址为12的绝缘巡检单元CT值数字微调
R,W
4x0023
0x03/0x10
一段地址为13的绝缘巡检单元CT值数字微调
R,W
4x0024
0x03/0x10
一段地址为14的绝缘巡检单元CT值数字微调
R,W
4x0025
0x03/0x10
一段地址为15的绝缘巡检单元CT值数字微调
R,W
4x0026
0x03/0x10
一段开关量巡检单元数量
R,W
4x0027
0x03/0x10
一段开关量巡检单元通讯故障次数设定
R,W
4x0028
0x03/0x10
一段JK001单元通讯故障次数设定
R,W
4x0029
0x03/0x10
一段充电回路分流器量程参数㊣0.1
R,W
4x0030
0x03/0x10
一段均充电流值(初始值设置:
0.1C)㊣0.1
R,W
4x0031
0x03/0x10
一段浮充电流值(初始值设置:
0.02C)㊣0.1
R,W
4x0032
0x03/0x10
一段浮充转均充电流值(初始值设置:
0.05C)0.1㊣
R,W
4x0033
0x03/0x10
一段合母过压报警值变比:
0.1
R,W
4x0034
0x03/0x10
一段合母欠压报警值变比:
0.1
R,W
4x0035
0x03/0x10
一段控母过压报警值变比:
0.1
R,W
4x0036
0x03/0x10
一段控母欠压报警值变比:
0.1
R,W
从站中变量地址
所对应功能码
变量名称
R/W
4x0037
0x03/0x10
一段控母电流霍尔传感器量程参数㊣变比:
0.1
R,W
4x0038
0x03/0x10
一段预留电流采集回路霍尔传感器量程参数㊣变比:
0.1
R,W
4x0039
0x03/0x10
一段均充间隔时间(单位:
小时,系统初始值:
2160h)㊣
R,W
4x0040
0x03/0x10
一段均充限定时间(单位:
分钟,系统初始值:
600m)㊣
R,W
4x0041
0x03/0x10
一段均充延时时间(单位:
分钟,系统初始值:
180m)㊣
R,W
4x0042
0x03/0x10
一段合母电压数字电位器(系统初始值:
100)㊣
R,W
4x0043
0x03/0x10
一段控母电压数字电位器(系统初始值:
100)㊣
R,W
4x0044
0x03/0x10
一段充电电流数字电位器(系统初始值:
100)㊣
R,W
4x0045
0x03/0x10
一段负载电流数字电位器(系统初始值:
100)㊣
R,W
4x0046
0x03/0x10
一段模块电压数字电位器(系统初始值:
100)㊣
R,W
4x0047
0x03/0x10
一段电池电压数字电位器(系统初始值:
100)㊣
R,W
4x0048
0x03/0x10
一段模块通讯故障次数参数设定㊣
R,W
4x0049
0x03/0x10
一段所用模块的个数㊣
R,W
4x0050
0x03/0x10
一段单个模块的容量变比:
0.1㊣
R,W
4x0051
0x03/0x10
一段浮充电压设置值变比:
0.1㊣
R,W
4x0052
0x03/0x10
一段均充电压设置值变比:
0.1㊣
R,W
4x0053
0x03/0x10
一段系统电池容量(3000→3000Ah)㊣
R,W
4x0054
0x03/0x10
一段监控板所联模块的种类(0:
瑞虹达1:
通合)
R,W
4x0055
0x03/0x10
一段系统电压等级(110V220V)
R,W
4x0056
0x03