目录

起源:

分类:

应用场景:

Modbus TCP协议格式



起源:

Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。

Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP三种

其中Modbus TCP是在施耐德收购Modicon后1997年发布的。

分类:

  1. Modbus RTU:

运行在串口上的协议,采用二进制表现形式以及紧凑型数据结构,通信效率高,应用广泛

  1. Modbus ASCII:

运行在串口上的协议,采用ASCII码传输,并且利用特殊字符作为其字节的开始与结束标识,其传输效率要远远低于Modbus RTU协议,一般只有在通信数据量较小的情况下才考虑使用Modbus ASCII通信协议

  1. Modbus TCP:

运行在以太网上的协议

  1. 优势:

免费、简单、容易使用

应用场景:

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

  1. ModbusTCP特点:
  2. 采用主从问答方式进行通信
  3. Modbus TCP是应用层协议,基于传输层TCP协议实现
  4. Modbus TCP端口号默认为502

Modbus TCP协议格式

ModbusTcp协议包含三部分:报文头、功能码、数据

标准MODBUSRTU通讯协议java对接 标准modbus tcp协议_网络

Modbus TCP/IP协议最大数据帧长度为260字节

  1. 报文头

包含7个字节,分别是:

标准MODBUSRTU通讯协议java对接 标准modbus tcp协议_寄存器_02

  1. 寄存器

包含四种:离散量输入、线圈、输入寄存器、保持寄存器

  1. 离散量和线圈其实就是位寄存器(每个寄存器数据占1字节),工业上主要用于控制IO设备。

线圈寄存器,类比为开关量,每一个bit都对应一个信号的开关状态。所以一个byte就可以同时控制8路的信号。比如控制外部8路io的高低。 线圈寄存器支持读也支持写,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。

对应上面的功能码也就是:0x01 0x05 0x0f

离散输入寄存器,离散输入寄存器就相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,是不能够写的。比如我读取外部按键的按下还是松开。

所以功能码也简单就一个读的 0x02

  1. 输入和保持寄存器是字寄存器(每个寄存器数据占2个字节),工业上主要用于存储工业设备的值。

保持寄存器,这个寄存器的单位不再是bit而是两个byte,也就是可以存放具体的数据量的,并且是可读写的。比如我我设置时间年月日,不但可以写也可以读出来现在的时间。写也分为单个写和多个写

所以功能码有对应的三个:0x03 0x06 0x10

输入寄存器,这个和保持寄存器类似,但是也是只支持读而不能写。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的AD采集值

对应的功能码也就一个 0x04

  1. 功能码

标准MODBUSRTU通讯协议java对接 标准modbus tcp协议_网络_03