- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
lPLC寄存器地址与Modbus地址对应的问题
Modbus 地址
通常 Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的偏移地址。Modbus Master 协议库把标准的 Modbus 地址映射为所谓 Modbus 功能号,读写从站的数据。Modbus Master 协议库支持如下地址:
00001 - 09999:数字量输出( 线圈)
10001 - 19999:数字量输入(触点)
30001 - 39999:输入数据寄存器(通常为模拟量输入)
40001 - 49999:数据保持寄存器
Modbus Master 协议库支持的功能
为了支持上述 Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:
表 1. 需要从站支持的功能
Modbus 地址 读/写 Modbus 从站须支持的功能 00001 - 09999数字量输出 读 功能 1 写 功能 5:写单输出点功能 15:写多输出点 10001 - 19999数字量输入 读 功能 2 写 - 30001 - 39999输入寄存器 读 功能 4 写 - 40001 - 49999保持寄存器 读 功能 3 写 功能 6:写单寄存器单元功能 16:写多寄存器单元 如何理解 Modbus 地址与功能码的区别?
Modbus 地址与 Modbus 的功能码是两个层次的概念。
根据 Modbus 通信协议,Modbus 数据的地址使用 0xxxx、1xxxx、3xxxx 和 4xxxx 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。在使用 S7-200 的指令库时,Modbus 数据地址与 S7-200 的 I/O 和数据存储区地址间有特定的对应关系。
有些设备表明它支持 Modbus RTU 通信协议,但也详细提供了读写数据的详细通信帧格式,其中包括如何指定 Modbus 站的地址,需要读写数据类型、长度等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容即所谓“功能码”,如功能 1 指定读取单个/多个数字量输出点的值。
支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是 Modbus 数据地址。Modbus 地址所访问的数据,是通过各种“功能”读写而来。功能码是 Modbus 地址的底层。如果 Modbus 通信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此功能号与 Modbus 地址间的对应关系。使用modbus地址时应注意下述问题:? ? ? 1)40001~4xxxx是美国modicon公司和ge公司plc使用的modbus地址,它是基于1的地址,即同类元件的首地址为1。西门子plc的modbus地址是基于0的地址。? ? ? 2)美国的modbus地址左起第2位用来表示元件的类型,例如i0.0的modbus地址为010001。因为数据类型已经包含在功能码中了,西门子的i0.0的modbus地址实际上为000000,i2.0的modbus地址为000016(或十六进制数16#0010),而不是010017。1、modbus的保持和输入寄存器是以word(16bit)为单位的。(Data is packed as two bytes per register.)
比如4****(保持寄存器/输出寄存器)和3****(输入寄存器)是以字为单位的。
所以,如果读40001寄存器开始的一个16位的无符号数,那么返回2个Byte,并可以从40002开始读下一个16位的无符号数。
但是,如果读40001寄存器开始的一个32位浮点数,那么,返回4个Byte,而且,下一个32位浮点数必须从40003开始。
客户问题:
1)、将40001定义为一个Byte的数据;
2)、将40001定义为32位浮点数,40002为下一个32位浮点数。
我们可以参考一下国标GBT_19582-1 2008 (基于Modubs协议的工业自动化网络规范)的功能码表:
2、寄存器最小地址为1,而报文起始地址为0。(Register 1 is addressed as 0)
在数据报文中,所有的modbus地址都是从0开始的。也就是首次出现的数据项在报文中的地址为0。比如:(All data addresses in Modbus messages are referenced to zero. The first occurrence of a data item is addressed as item number zero. For example:)
在控制器中,“线圈1”在Modbus报文的地址域中的地址为00 00。(The coil known as ‘coil 1’ i
您可能关注的文档
最近下载
- 明代故宫、孔府旧藏服饰.pdf VIP
- 中考物理总复习《力学》专项练习题(附答案).docx
- 2025年春新人教PEP版英语三年级下册课件 Revision Going to a school fair-第2课时.pptx
- 春节文艺活动劳务合同6篇.docx
- 局领导班子成员之间相互批评意见清单(6).doc VIP
- 2025年1月最新版化危为安ccsc每日答题题库和配套答案(持续更新中).docx
- 应用数理统计基础课后习题答案(全)-庄楚强.pdf
- 《民法典》无效合同处理规则适用要点解析.docx
- 农商银行董事会换届工作报告(三年工作总结及下届工作思路).docx
- 2023-2024学年江苏省盐城市高二下学期6月期末考试化学试题(解析版).docx
文档评论(0)