• Modbus通信协议学习


    Modbus 通讯是工业上用的比较广泛的通讯协议,它包含Modbus TCP ,RTU,ASCII,在日常的工作中我们用到的并比较多的是ModbusRTU.ModbusRTU与ModbusAscii均支持RS485通信协议。

    1.这里介绍下ModbusTcp与ModbusRTU的区别在哪里:

         1.1 通信硬件连接的区别:

                RTU依托的的工业串口连接,例如RS485,TCP则依托的以太网传输。

          1.2 通信协议的报文的区别,下文会列举。

    2. 协议

        协议:就是双方的通信约定,我需要以那种格式,及格式的内容代表的何种意思能够达成我们双方的沟通。

        MoubusRTU 通信报文格式:

        报文:简单的说就是我们发送的一连串完整的数据,就是我们发送的一帧数据,可以把他们叫做报文。

        CRC校验

              其实就是检测发送的报文与接收方收到的报文是否一致,如果一直就发送给成功,否则代表发送有误,具体以的CRC如何实现检验的呢?就是将前面的一连串的报文进行    累加求和得到一个数据,再将高低位分别存放到CRC校验的高低八位上,就是先了CRC检验(TCP没有CRC校验)。

        报文格式:那报文格式到底是长个啥样子呢?下面来进一步学习。

                         Eg:  

                         01    06    00 01    0017    98 04


               那上面的这一长串的数据代表什么意思呢?其实这就是RTU的报文格式及数据,下面一一列举所带代表的意思;

               01   从机的地址,也就是你要往哪台设备上发送数据的那台设备的地址。

               06   功能号,意思是你要对这台从机做何种操作,读线圈/寄存器?写线圈/寄存器?注意一点的是这个线圈与寄存器的区别,是个啥玩意,其实就是对位变量与16位变量的操作。

         00 01 操作的寄存器地址,代表往0001地址上操作。

               00 17  向寄存器上写入的数据,数据就是16位数据00 17.

               98 04  CRC 校验(将 01 06 00 01 00 17累加后得到的16位数据98 04)

       说到这大家对报文格式有了初步的认识了,下面列举下到底有多少功能码?他们分别的作用是什么?

       功能码列举

                      0x01  读线圈状态

                      0X02  读取输入状态

                      0x03  读保持寄存器

                      0x04  读输入寄存器

                      0x05  读取单个线圈

                0x06  写单个寄存器

                  0x0F  写多个线圈

                      0x10   写多个寄存器

       ModbusTCP与RTU区别与联系可以参考如下链接https://wenku.baidu.com/view/43b10bc26294dd88d0d26b8e.html(来自百度文库)本文不做赘述

  • 相关阅读:
    mybatis做like模糊查询
    mysql带有子查询的like查询
    form表单提交,后台怎么获取select的值?后台直接获取即可,和input方式一样。
    Spring MVC 向页面传值-Map、Model和ModelMap
    JavaWeb登录、注销、退出、记住用户名和密码
    EL表达式多条件或判断用法
    三级分销会员一次查询出来的SQL语句
    mysql 中合并查询结果union用法 or、in与union all 的查询效率
    关于取List中的指定几条数据以及注意事项
    BoxedApp Packer 将您的原始应用“打包”成单个完全的可执行二进制文件
  • 原文地址:https://www.cnblogs.com/TechnologyDictionary/p/12340457.html
Copyright © 2020-2023  润新知