首页 > 数据库技术 > 详细

Modbus通信协议学习

时间:2020-02-21 15:26:15      阅读:59      评论:0      收藏:0      [点我收藏+]

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(来自百度文库)本文不做赘述

 

Modbus通信协议学习

原文:https://www.cnblogs.com/TechnologyDictionary/p/12340457.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!