MODBUS-通讯协议在产品中的应用框架V2.0.doc

MODBUS-通讯协议在产品中的应用框架V2.0.doc

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
标准化指导性技术文件 Modbus通讯协议在天辰产品中的应用框架 发布部门:开发部 发布时间:2008-03-20 版本:2.0 Modbus通讯协议概述 本部分为介绍性内容,已经熟悉Modbus协议或需要在产品中迅速实现协议的技术人员可以跳过此部分,直接参考第二部分。 术语 ADU(Application Data Unit) 应用数据单元 LSB(Least Significant Bit) 最低有效位 MB(Modbus Protocol) Modbus协议 MSB(Most Significant Bit) 最高有效位 PDU(Protocol Data Unit) 协议数据单元 协议描述 Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引用一些附加域,见图1。 01 写单个线圈 05 — 05 写多个线圈 15 — 0F 16比特访问 输入寄存器 读输入寄存器 04 — 04 内部存储器或物理输出存储器 读多个寄存器 03 — 03 写单个寄存器 06 — 06 写多个寄存器 16 — 10 读/写多个寄存器 23 — 17 屏蔽写寄存器 22 — 16 读FIFO队列 24 — 18 文件访问记录 读文件记录 20 6 14 写文件记录 21 6 15 诊断 读异常状态 07 — — 诊断 08 00-18 — 获得公用事件计数器 11 — 0B 获得公用事件记录 12 — 0C 报告从站ID 17 — 11 读设备识别码 43 14 2B 其他 封装接口传输 43 — 2B 功能码描述 01(0x01)读线圈 见表3~表5。 使用该功能码从一个远程设备中读1~2000个连续的线圈状态。请求PDU指定了起始地址,即指定了第一个线圈地址和线圈数目。在PDU中,从17(十六进制11)返回从站忙计数。 响应报文中的线圈按数据域的每位一个线圈进行打包。状态被表示成1=ON和0=OFF。第一个数据字节的LSB(最低有效位)包含询问中所寻址的输出。其他线圈依次类推,一直到这个字节的高位端为止,并在后续字节中按照从低位到高位的顺序排列。 如果返回的输出数量不是8的倍数,将用零填充最后数据字节中的剩余位(一直到字节的最高位端)。字节数量域说明了数据的全部字节数。 表3 请求 功能码 1字节 0x01 起始地址 2字节 0x0000~0xFFFF 线圈数量 2字节 1~2000(0x07D0) 表4 响应 功能码 1字节 0x01 字节计数 1字节 N* 线圈状态 n字节 n=N或N+1    *N=输出数量/8,如果余数不等于0,那么N=N+1。 表5 错误 功能码 1字节 功能码+0x80 异常码 1字节 01或02或03或04 02(0x02)读离散量输入 见表6~表8。 使用该功能从一个远程设备中读1~2000个连续的离散量输入状态。请求PDU指定了起始地址,即指定了第一个离散量输入地址和离散量输入数目。在PDU中,从零开始寻址离散量输入。因此标号1~16的离散量输入寻址为0~15。 响应报文中的离散量输入按数据域的每位一个离散量输入进行打包。状态被表示成1=ON和0=OFF。第一个数据字节的LSB(最低有效位)包含讯问中所寻址的输入。其他离散量输入依次类推,一直到这个字节的高位端为止,并在后续字节中按照从低位到高位的顺序排列。 如果返回的输出数量不是8的倍数,将用零填充最后数据字节中的剩余位(一直到字节的最高位端)。字节数量域说明了数据的全部字节数。 表6 请求 功能码 1字节 0x02 起始地址 2字节 0x0000~0xFFFF 线圈数量 2字节 1~2000(0x07D0) 表7 响应 功能码 1字节 0x02 字节计数 1字节 N* 线圈状态 N*×1个字节 … *N=输出数量/8,如果余数不等于0,那么N=N+1 表8 错误 差错码 1字节 0x82 异常码 1字节 01或02或03或04 03(0x03)读保持寄存器 见表9~表11。 使用该功能码从远程设备中读保持寄存器连续块的内容。请求PDU说明了起始寄存器地址和寄存器数量。在PDU中,从零开始寻址寄存器。因此编号1~16的寄存器寻址为0~15。 将响应报文中的寄存器数据打包成每个寄存器有两字节。 对于每个寄存器,第一个字节为高位字节,第二个字节

文档评论(0)

177****6330 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档