1 / 6
文档名称:

Modbus 协议.doc

格式:doc   大小:49KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Modbus 协议.doc

上传人:miaoshen1985 2018/9/12 文件大小:49 KB

下载得到文件列表

Modbus 协议.doc

文档介绍

文档介绍:MODBUS 协议
MODBUS查询报文例子:
01 03 00 00 00 01 84 0A
其中 01:硬件地址(以表硬件地址)
03:读寄存器(看实际仪表的说明书)
00 00:启始位
00 01:读取数据的长度
84 0A:校验位(由前四项+固定公式计算得到)
从站地址
功能码
起始地址
数据长度
校验码
1字节
1字节
2字节
2字节
CRCH
CRCL
MODBUS 回复报文例子
01 03 00 02
控下表1 是ModBus 的功能码定义
表1 ModBus 功能码
01 READ COIL STATUS
02 READ INPUT STATUS
03 READ HOLDING REGISTER
04 READ INPUT REGISTER
05 WRITE SINGLE COIL
06 WRITE SINGLE REGISTER
15 WRITE MULTIPLE COIL
16 WRITE MULTIPLE REGISTER
主站周期性扫描从站,即定期向从站发送读数据命令,从站按照MODBUS格式返回数据,具体数据格式如下:
主站向从站发送的命令:
从站地址
功能码
起始地址
数据长度
校验码
1字节
1字节
2字节
2字节
CRCH
CRCL
从站向主站返回的数据:
从站地址
功能码
字节长度
数据1
数据2
……
数据n
校验码
1字节
1字节
1字节
2字节
2字节
……
2字节
H
L

从站地址:
功能码: 01H:读开关量数据;03H:读模拟量数据。
起始地址:为两个字节(16bit)二进制码,用于表示数据的起始地址。
数据长度: 为两个字节(16bit)二进制码,用于表示本帧数据的数
据量。
校验码: 为两个字节(16bit)二进制码,本帧数据的CRC循环冗余
校验码,高八位在前,低八位在后,其定义见MODBUS标准
通讯规约。
字节长度:从站返回字节长度。对于模拟量数据:字节长度=数据长度*2
对于开关量:字节长度=数据长度/8
数据1、数据2、……、数据n:对于模拟量数据:两个字节表示一个完整的模拟量,计算方法为:实际数据=高八位*256 + 低八位
对于开关量:一个字节表示八个开关量状态。从高到低排列。
对于一条RTU协议的命令可以简单的通过以下的步骤转化为ASCII协议的命令:
1、把命令的CRC校验去掉,并且计算出LRC校验取代。
2、把生成的命令串的每一个字节转化成对应的两个字节的ASCII码,比如0x03转化成0x30,0x33(0的ASCII码和3的ASCII码)。
3、在命令的开头加上起始标记“:”,它的ASCII码为0x3A。
4、在命令的尾部加上结束标记CR,LF(0xD,0xA),此处的CR,LF表示回车和换行的ASCII码。
所以以下我们仅介绍RTU协议即可,对应的ASCII协议可以使用以上的步骤来生成。
下表是Modbus支持的功能码:
功能码名称作用 01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态取得一组开关输入的当前状态(O