欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    《Modbus通讯》word版.docx

    • 资源ID:13436579       资源大小:13.35KB        全文页数:5页
    • 资源格式: DOCX        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《Modbus通讯》word版.docx

    .Modbus通讯在坛子中看到很多弟兄们在做Modbus通讯时遇到很多问题,包括Modbus的请求或响应的基本知识,包括编程等等,现将我的一点拙见写出来,供大家参考和批评指正。Modbus协议最早有施耐德旗下的Modicon公司与1978年提出,目前已经称为国际标准和国家、行业标准。该协议是典型的串行通讯协议,支持CRC或LRC校验。通讯速率支持2.4kbps115.2kbps,更快也可以,但是误码率较高。支持RTU或ASCII通讯凡是,支持奇/偶/无校验。RTU通讯时标准通讯参数为支持8个数据位、1个停止位、偶校验;ASCII通讯时标准通讯参数为支持7个数据位、1个停止位、偶校验;Modbus总线理论上支持的从站个数可达248个(单条总线、不加中继时连接的设备个数与通讯端口和连接的设备有关,有的可连接16个设备,最大连接32个设备),不加中继双绞线距离可达1200米。Modbus通讯时最常用的是RTU通讯方式:1.通讯时读请求格式如下:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)。2.读响应格式如下:从站地址(1个字节)、功能代码(1个字节)、读数据长度(1个字节)、数据(长度与数据长度中的字节数相同)、CRC校验(2个字节)。3.  写请求格式:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、写出数据长度(1个字节)、写出数据(长度与数据长度字节相同)、CRC校验(2个字节)。4.  写响应格式:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、写数据长度(2个字节)、CRC校验(2个字节)。如果为RTU通讯,校验方式为CRC校验;ASCII通讯时,校验方式为LRC校验方式。功能代码有很多:01:读单个线圈(0*地址)数据02:读输入信号(1*地址)数据03:读连续多个寄存器地址(4*)04:读连续多个输入模拟量地址(3*)05:写单个线圈(0*地址)数据06:写单个寄存器数据(4*)07:读以外状态信息08:诊断:15:写多个连续线圈(0*地址)数据16:写多个连续寄存器(4*)数据17:返回从站ID:20:读参考信息(文件记录)21:写参考信息(文件记录)23:读写FIFO队列不同的Modbus设备支持的功能代码也有区别,总的来说Modbus设备可分为三类:1.  基本型:支持03和16功能码2.  标准型:支持03和16、01、02、08、15功能码3.  扩展型:支持除标准型的功能码外,还支持20、21、23功能码。Modbus读寄存器时最大可连续读取125个字的数据,写100个子的数据。读位时可读2000个位信息,写1600个位信息。(位的数据与字的数据是16倍的关系)很多人认为做Modbus读写位操作时,所有数据应该保存在位地址中。其实不是,在做Modbus通讯时,由于所有数据都是按照字节方式打包的,因此,所有位数据都是存储到字节中发送或读取的(这就是个别通讯一直疑问为什么做位读写时数据还要存储到字地址中的原因)。最后,由于Modbus通讯同时支持字读写和位读写(在施耐德所有PLC中,所有地址都是按照“字”地址和“位”地址定义的,字地址和位地址没有任何关系,可以任意调用,而西门子所有PLC地址都是按照“字节”方式定义的。)在存储数据时,西门子PLC中的数据是按照“低字节、高字节”顺序存储的,如果读取浮点数数据,顺序为:低字低字节、低字高字节、高字低字节、高字高字节。而施耐德所有PLC由于按照“字”地址和“位”地址定义的,所有数据存储时与西门子PLC完全相反,即如果读取浮点数数据,顺序为:低字高字节、低字低字节、高字高字节、高字低字节的顺序。这就是为什么有些数据上传到西门子PLC或HMI时,所有数据都不正确的原因,是因为高低字节顺序反了。如果出现上述问题,只需将高低字节编程做个转换即可。刚开始应用MODBUS通讯的时候,犯过错,拿出来分享下。功能码  03  16  对应的  4*x(寄存器)  应用最多。  一般起始地址对应的40001。  例如仪表的地址是0x1F0  。容易对应成40496  。实际是40497.采用Modbus通讯读写数据时,数据内容中并不包含数据的地址,数据地址包含在Modbus读写的请求中。如下所示:通讯时读请求格式如下:从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)。因此,需要注意如下内容:1.  从Modbus地址编码来说,最小地址为1,如1*、0*、3*、4*地址中最小地址都为1,如10001,00001,30001,40001等。但是很多厂家的设备在编码时都是按照最小地址为0来编码的,所以,写设备的数据区地址时必须加1,这就是“瘦锅”提到的问题;2.  另外有的SCADA软件读取Modbus设备数据时,有的要求地址长度必须为6位(如ifix,所有地址必须为6位),而有的要求为5为(如intouch软件,读施耐德Quantum  PLC时为6位,其它中端PLC为5位)。其实,从Modbus响应来说,所有数据中不包含地址,因此,在显示时输入6位或5位地址没有任何区别。ifix或intouch软件中要求的6位或5位只是各自厂家按照自己的习惯来要求的。常见的测试Modbus通讯的软件除了常见的串口调试工具以外,最常用的是Modscan,可以测试Modbus和Modbus  TCP/IP。我做过MODBUS  RTU从站的程序,当时是完成了FC03和FC16的功能寄存器起始地址的2个字节正好被我定义为DB块号和DBB的号比如如果主站发01  03  01  02  00  04  CRC_H  CRC_L我就把从DB1.DBW2开始的四个字打包加上CRC校验发出去。*;

    注意事项

    本文(《Modbus通讯》word版.docx)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开