- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
modbusRTU说明
Modbus通讯规约
Modbus通讯规约被广泛的作为系统集成的标准。当通讯命令发送至仪器时,符合相应地址码的设备接收通讯命令,读取信息,如果没有出错则执行相应的任务,然后把执行结果返送给发送者;如果出错则返送错误报告信息(CRC16校验码出错则不返送任何信息)或者不返送任何信息。其通讯数据帧格式如下:
地址码 功能码 数据区 校验码 8位 8位 N×8位 16位CRC 地址码:
地址码是信息帧的第一个字节(8位),从0到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能相应回送。当从机回送信息时,相应的地址码表明该信息来自于相应地址的从机。
功能码:
主机发送的功能码告诉从机执行怎么样的任务,从机的功能码则表明从机响应主机相应任务进行了操作。Modbus通讯规约定义的功能码为01H到7FH,多功能电力监测仪使用了其中一部分功能码。下表列出了所用到的功能码的具体含义及操作。
代码(Hex) 含 义 操 作 03H 读取数据 读取指定寄存器开始的一个或多个数据 06H 写单个寄存器 把设置的单个数值写入指定的寄存器 10H 写多个寄存器 把设置的数值写入指定的连续寄存器 注:如果从机发送的功能码的最高位是1(功能码127),则表明从机没有响应操作或发送出错。
数据区:
数据区是根据不同的功能码而不同。数据区可以是实际数值,设置点,主机发送给从机或从机发送给主机的地址。数据区包含需要从机执行什么动作或由从机采集的返送信息,这些信息可以是数值、参考地址等等。例如,功能码告诉从机读取寄存器的值,则数据区必须包含要读取的寄存器的起始地址及读取长度。如果功能码告诉从机设置某些连续寄存器的值,则数据区还要包含这些数值。对于不同的从机,地址和数据信息可能都不相同。
校验码:
校验码可用于主机或从机判断接受信息是否出错。有时由于电子噪音或其它一些干扰,信息在传输过程中会发生细微的变化,这时自己根据信息计算所得的检验码与信息中包含的校验码就会不一致,从而判断接受信息出错。校验码保证了主机或从机对在传送中出错的信息不起作用,增加了系统的安全和效率。校验码采用CRC-16校验方法。
计算CRC码的步骤为:
(1).预置16位寄存器为FFFFH。称此寄存器为CRC寄存器;
(2).把第一个8位数据与CRC寄存器的低位相异或,把结果放于CRC寄存器;
(3).把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位;
(4).如果最低位为0:重复第3步(再次移位)如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
(5).重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
(6).重复步骤2到步骤5,进行下一个8位数据的处理;
(7).最后得到的CRC寄存器即为CRC码。(CRC码 = CRC_L + CRC_H)
出错返送:
从主机接收到的信息如有CRC错误,则将被忽略。
从机返送的错误码的格式如下:
地址码 : 1字节
功能码 : 1字节(最高位为1)
错误码 : 1字节
CRC码 : 2字节
响应回送如下出错命令。
01 – 非法的功能码。
接收到的功能码XX-XXXX表不支持。
02 – 非法的数据位置。
指定的数据位置超出XX-XXXX表的范围。
03 – 非法的数据值。
接收到主机发送的数据值超出相应地址的数据范围。
2、通讯说明
2.1 信息帧举例:
假设从机地址为01 ,起始地址为0002的3个寄存器内数据如下
地址 数据 0002
0004
0006 000A
020B
125C 功能码03H 读取寄存器
主机发送 字节数 举例 从机地址
功能码
起始地址
读取点数
CRC码 1
1
2
2
2 01 发送至从机01
03 读取寄存器
00 起始地址为0002
02
00 读取3个寄存器
03 共6 字节
A4 由主机计算的CRC码
0B
从机响应 字节数 举例 从机地址
功能码
读取字
寄存器地址1
寄存器地址2
寄存器地址3
CRC码 1
1
1
2
2
2
2 01 发送至从机01
03 读取寄存器
06 3个寄存器共6字节
00 地址0002中的数据
0A
02 地址0004中的数据
0B
12 地址0006中的数据
5C
C5 从机计算的CRC码
97 从机寄存器内数据不发
文档评论(0)