Modbus协议介绍及Modbus TCP

一、Modbus起源

1.起源

Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。
Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTUModbus ASCIIModbus TCP三种
其中Modbus TCP是在施耐德收购Modicon后1997年发布的。

2.分类

1)Modbus RTU
运行在串口上的协议,采用二进制的表现形式以及紧凑型数据结构通信效率高,应用比较广泛
2)Modbus ASCII
运行在串口上的协议,采用ASCII码进行传输,并且利用特殊字符作为字节开始和结束的标志传输效率远远低于Modbus RTU ,只有通信数据量比较少时才会考虑它
3)Modbus TCP
运行在以太网上的协议

3.优势

免费、简单、容易使用

4.应用场景

Modbus协议是现在国内工业领域应用最多的协议,不只PLC设备,各种终端设备,比如水控机、水表、电表、工业秤、各种采集设备

5.ModbusTCP特点⭐⭐⭐

1)采用主从问答方式通信
2)Modbus TCP协议属于应用层协议,基于传输层TCP进行传输
3)Modbus TCP默认端口号502

二、Modbus TCP协议格式

ModbusTcp协议包含三部分:报文头、功能码、数据
在这里插入图片描述
Modbus TCP/IP协议最大数据帧长度为260字节

1.报文头

包含7个字节,分别是:
在这里插入图片描述

2.寄存器

寄存器分类:线圈离散量输入保持寄存器输入寄存器

  • 1)离散量和线圈 其实就是位寄存器(每个寄存器数据占1字节),工业上主要用于控制IO设备。
    • 线圈寄存器,类比为开关量,每一个bit都对应一个信号的开关状态。所以一个byte就可以同时控制8路的信号。比如控制外部8路io的高低。 线圈寄存器支持读也支持写,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。
      对应上面的功能码也就是:0x01 0x05 0x0f
    • 离散输入寄存器,离散输入寄存器就相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,是不能够写的。比如我读取外部按键的按下还是松开。
      所以功能码也简单就一个读的 0x02
  • 2)输入和保持寄存器是字寄存器(每个寄存器数据占2个字节),工业上主要用于存储工业设备的值。
    • 保持寄存器,这个寄存器的单位不再是bit而是两个byte,也就是可以存放具体的数据量的,并且是可读写的。比如我我设置时间年月日,不但可以写也可以读出来现在的时间。写也分为单个写和多个写
      所以功能码有对应的三个:0x03 0x06 0x10
    • 输入寄存器,这个和保持寄存器类似,但是也是只支持读而不能写。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的AD采集值
      对应的功能码也就一个 0x04

📢线圈寄存和保持寄存器是可读可写的,离散输入寄存器和输入寄存器只能读不可写。

3.功能码

在这里插入图片描述

4.协议包书写模板总结

  • 读操作

    • 主机->从机:
      报文头(7字节) + 功能码(1字节) + 起始地址(2字节) + 数量(2字节)

    • 从机->主机:
      报文头(7字节) + 功能码(1字节) + 字节计数(1字节) + 数据(n字节)

  • 写单个

    • 主机->从机:
      报文头(7字节) + 功能码(1字节) + 地址(2字节) + 数据/断通标志(2字节)
      断通标志:0xff 00(开) 0x00 00(关)
    • 从机->主机:
      原文返回
  • 写多个:

    • 主机->从机:
      报文头(7字节) + 功能码(1字节) + 起始地址(2字节) + 数量(2字节,线圈数/寄存器数) + 字节计数(1字节) + == 数据==(n字节)
    • 从机->主机:
      报文头(7字节) + 功能码(1字节) + 起始地址(2字节) + 数量(2字节,线圈数/寄存器数)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunqk5665

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值