modbus协议文档格式.docx
《modbus协议文档格式.docx》由会员分享,可在线阅读,更多相关《modbus协议文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
...
数据n
CRC高字节
CRC低字节
地址域功能域数据域错误检测域
帧定界:
MODBUSRTU方式下,每两个字符之间发送或者接收的时间间隔不能超过1.5倍字符传输时间。
如果两个字符时间间隔超过了3.5倍的字符传输时间,规约就认为一帧数据已经接收,新的一帧数据传输开始。
ASCII方式
ASCII模式
:
LRC高字节
LRC低字节
回车
换行
帧定界:
“:
”帧起始“CRLF”帧结束
ASCII方式用两个ASCII字符表示一个8位数据,比如16进制的3A用字符“3”和字符“A”表示。
MODBUSTCP
MODBUSTCP模式下,由于模块的地址由IP地址确定,所以不再有地址域内容,考虑到TCP网络是可靠的数据传输网络,故不再有校验数据。
但是考虑到在IP网上数据到达的顺序可能与我们预期的数据不一致,故增加了一个数据序号,考虑到在MODBUSTCP协议上承载MODBUS协议,还在头部数据中增加了一个地址域。
MODBUSTCP/MODBUS桥
STC-511可以用于MODBUSTCP到MODBUS的桥设备使用,作为MODBUS桥设备时,需要在地址域上加上地址,另外对应的串口需要设置为MODBUS主设备。
由于存在两个串口设备,地址域的最高位MSB=1则访问串口2,MSB=0则访问串口1。
地址域广播地址是把低7位全部置为1,在发送到MODBUS总线时,地址修改为0。
地址域为0表示不访问MODBUS串口设备。
支持命令
我们目前所支持的功能码非常有限,主要包括:
01READCOILSTATUS
02READINPUTSTATUS
03READHOLDINGREGISTERS
04READINPUTREGISTERS
05FORCESINGLECOIL
06PRESETSINGLEREGISTER
15FORCEMULTIPLECOILS
16FORCEMULTIPLEREGISTERS
20READ
21WRITE
24READFIFOQUEUE
读继电器状态
功能码:
01
数据起始地址:
00001~00008
数据长度:
不大于08(因为只有8个输出继电器)
说明:
读取输出继电器的状态。
数据说明:
描述
说明
00001
第1个输出继电器
=1吸合=0断开
00002
第2个输出继电器
00003
第3个输出继电器
00004
第4个输出继电器
00005
第5个输出继电器
00006
第6个输出继电器
00007
第7个输出继电器
00008
第8个输出继电器
00009
第9个输出继电器(虚拟)
00010
第10个输出继电器(虚拟)
00011
第11个输出继电器(虚拟)
00012
第12个输出继电器(虚拟)
00013
第13个输出继电器(虚拟)
00014
第14个输出继电器(虚拟)
00015
第15个输出继电器(虚拟)
00016
第16个输出继电器(虚拟)
MODBUS请求
功能码
1BYTE
0X01
起始地址
2BYTE
0X0000TO0XFFFF
读取数量
1TO2000(0X7D0)
MODBUS响应
字节计数
N
线圈状态
nBYTE
n=NorN+1
N=读取数量/8如果余数不为0则N=N+1
错误响应
0X01+0X80
错误代码
0x1or0x2or0x3or0x4
举例
请求
响应
域名称
数据(hex)
01
起始地址高(字节)
00
03
起始地址低(字节)
13
27(h)~20状态
CD
读取数量高(字节)
35(h)~28状态
6B
读取数量低(字节)
38(h)~36状态
05
读开关量输入
02
100001~1000016
不大于16(因为只有16路输入)
读取输入开关量的状态。
输入的量改变状态需要经过0.1S滤波抗干扰后才会变化。
如果用户想知道改变的时刻,需要读取系统的FIFO中的SOE事件记录或者读取文件中的SOE记录。
输入量的每次改变都会累积到该路对应的32位计数器上,对于计数,输入的最高频率可以是1KHz。
100001
第1路开关量状态
=0没有通电=1接通电源
100002
第2路开关量状态
100003
第3路开关量状态
100004
第4路开关量状态
100005
第5路开关量状态
100006
第6路开关量状态
100007
第7路开关量状态
100008
第8路开关量状态
100009
第9路开关量状态
100010
第10路开关量状态
100011
第11路开关量状态
100012
第12路开关量状态
100013
第13路开关量状态
100014
第14路开关量状态
100015
第15路开关量状态
100016
第16路开关量状态
0X02
输入状态
0X02+0X80
02
C4
204(h)~197状态
AC
212(h)~205状态
DB
16
218(h)~213状态
35
读保持寄存器
03
400001-400128
不大于125(因为通信缓冲区的限制)
读取保持寄存器的值。
读取的是16位整数或者无符合整数。
400001
当日时间
系统当日毫秒时钟低16位
400002
当日时间
系统当日毫秒时钟高16位
400003
系统日期低16位
400004
系统日期高16位
400005
第1路开关量脉冲计数
低16位计数
400006
高16位计数
400007
第2路开关量脉冲计数
400008
400009
第3路开关量脉冲计数
400010
400011
第4路开关量脉冲计数
400012
400013
第5路开关量脉冲计数
400014
400015
第6路开关量脉冲计数
400016
400017
第7路开关量脉冲计数
400018
400019
第8路开关量脉冲计数
400020
400021
第9路开关量脉冲计数
400022
400023
第10路开关量脉冲计数
400024
400025
第11路开关量脉冲计数
400026
400027
第12路开关量脉冲计数
400028
400029
第13路开关量脉冲计数
400030
400031
第14路开关量脉冲计数
400032
400033
第15路开关量脉冲计数
400034
400035
第16路开关量脉冲计数
400036
400037
直流量1系数
第1路直流系数,系统调校
400038
直流量2系数
第2路直流系数,系统调校
400039
直流量3系数
第3路直流系数,系统调校
400040
直流量4系数
第4路直流系数,系统调校
400041
直流量5系数
第5路直流系数,系统调校
400042
直流量6系数
第6路直流系数,系统调校
400043
直流量7系数
第7路直流系数,系统调校
400044
直流量8系数
第8路直流系数,系统调校
400045
模拟量1输出
第1路直流模拟量输出
10000对应满量程(10V或20mA)
400046
400047
模拟量1输出系数
系统调校
400048
模拟量2输出系数
400049
模拟量1输出偏移量
400050
模拟量2输出偏移量
400051
闸门时间
0.05s为单位,用于各路频率测量
40060
脉冲输出1的脉冲宽度
单位1ms=0表示不输出
40061
脉冲输出2的脉冲宽度
40063
脉冲输出1的周期
单位1ms=0表示单次脉冲输出
40064
脉冲输出2的周期
保留
40071
第1路模拟量定值报警输出继电器设置
最高位(BIT15)表示该功能投入,
BIT14表示继电器动作性质
=0表示报警后一直吸合
=1表示报警后吸合设置时间后释放
低6位为动作继电器编号,0表示第1路,…
40072
第1路模拟量定值报警设置
模拟量的值
40073
第2路模拟量定值报警输出继电器设置
同40071
40074
第2路模拟量定值报警设置
40075
第3路模拟量定值报警输出继电器设置
40076
第3路模拟量定值报警设置
40077
第4路模拟量定值报警输出继电器设置
40078
第4路模拟量定值报警设置
40079
第5路模拟量定值报警输出继电器设置
40080
第5路模拟量定值报警设置
40081
第6路模拟量定值报警输出继电器设置
40082
第6路模拟量定值报警设置
40083
第7路模拟量定值报警输出继电器设置
40084
第7路模拟量定值报警设置
40085
第8路模拟量定值报警输出继电器设置
40086
第8路模拟量定值报警设置
400101
MODBUS地址
400102
IP地址高16位
400103
IP地址低16位
400104
网关地址高16位
400105
网关地址低16位
400106
子网掩码高16位
400107
子网掩码低16位
400108
MAC地址高16位
400109
MAC地址中16位
400110
MAC地址低16位
400117
继电器设置
最低位对应第1路继电器输出
某位=1,对应的继电器在得到吸合命令后,吸合400118设置时间后释放,也就是点动功能
400118
继电器释放时间
单位0.05s
400119
串口1设置
0XQWST
400120
串口2设置
0XQWST
400121
串口1延时设置
单位1ms
400122
串口2延时设置
400123
系统时间
年(高字节)月压缩BCD码
400124
日(高字节)小时压缩BCD码
400125
分(高字节)秒压缩BCD码
400126
毫秒(最大999毫秒)
0XQWST的含义
Q为二进制最高4位,W为次高4位,S位次低4位,T为最低4位
Q为串口的奇偶设置,Q=0X1为N81Q=0XD为E81Q=0XE为O81
S为主从设备设置,S=0该串口为从设备,S=1该串口为主设备,用于MODBUSTCP/MODBUS桥设备。
T为串口波特率设置,
T
波特率
9600
1
300
2
600
3
1200
4
2400
5
4800
6
7
19200
8
38400
9
57600
A
B
C
D
E
F
关于系统时间的说明:
当日毫秒时钟是指从当日0:
00开始计时的以毫秒为单位的一个32位数,其最大计数为86,400,000。
系统日期是指从2000年1月1日开始的天数,系统中保留了2000年~2099年的日期,对应2100年以后的日期,系统不能保证正确。
系统时间还有3个保持寄存器,保存年、月、日、时、分、秒,是系统实时钟芯片的时钟,与系统的时间和日期是相互关联的,设置一个,则会同时也设置另外一个而不用外界干预。
0X03
1TO125(0X7D)
N*2
N*2BYTE
0X03+0X80
06
寄存器高(108)
寄存器低(108)
2B
寄存器高(109)
寄存器低(109)
寄存器高(110)
寄存器低(110)
64
读输入寄存器
04
30001--30024
不大于12
读取输入数据。
读出值为16位整数
300001
第1路直流模拟量
5000满量程(5V或者20ma)
300002
第2路直流模拟量
300003
第3路直流模拟量
300004
第4路直流模拟量
300005
第5路直流模拟量
300006
第6路直流模拟量
300007
第7路直流模拟量
300008
第8路直流模拟量
300009
第1路开关量信号频率
闸门时间内的计数值
300010
第2路开关量信号频率
300011
第3路开关量信号频率
300012
第4路开关量信号频率
300013
第5路开关量信号频率
300014
第6路开关量信号频率
300015
第7路开关量信号频率
300016
第8路开关量信号频率
300017
第9路开关量信号频率
300018
第10路开关量信号频率
300019
第11路开关量信号频率
300020
第12路开关量信号频率
300021
第13路开关量信号频率
300022
第14路开关量信号频率
300023
第15路开关量信号频率
300024
第16路开关量信号频率
0X04
0X04+0X80
04
08
输入寄