modbus通讯协议详解

1.什么是Modbus?

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。 Modbus比其他通信协议使用的更广泛的主要原因(3给个优点)有:

(1)公开发表并且无版权要求
(2)易于部署和维护
(3)对供应商来说,修改移动本地的比特或字节没有很多限制

Modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。

顾名思义,它是一个bus,即总线协议。比如串口协议、IIC协议、SPI都是通信协议。你接触到这种协议,相信你所处的行业是工业方面或者你的产品用于工业。

归纳:Modbus就是一种用在工业上的简单协议!


学习笔记(重要):

  • PLC诞生在1969年
  • Modbus莫迪康公司(现在施耐德电气)1979年
  • 为了PLC通讯而发表
  • 协议 接口 串口232 485 网口 为不同的设备提供了一种通用语言
    应用层的报文传输协议 RTU ASCII TCP

ModbusRTU 通讯协议
**通讯功能:**本质是 读/写

存储区
1输出线圈 bool 1bit true/false
2输入线圈 bool 1bit true/false
3 输入寄存器 word 16bit 2个字节
4输出寄存器word 16bit 2个字节

存储区范围: 5位标准地址        6位扩展地址
Y XXXX
输出线圈   代号0  00001-09999   000001-065536   读写
输入线圈   代号1   10001-19999   100001-165536   只读
输入寄存器  代号3   30001-39999   300001-365536   只读
输出寄存器  代号4   40001-49999   400001-465536   读写


读/写 功能 功能码

  • 读取:
    读取输出线圈 01H
    读取输入线圈02H
    读取保持寄存器03H
    读取输入寄存器04H
  • 写入:
    预置单线圈 05H
    预置多线圈0FH
    预置单寄存器06H
    预置多寄存器10H

**ModbusRTU/ASCII报文格式:**一个寄存器2个字节

从站地址(1byte)+功能码(1byte)+数据(N byte)+校验(2byte)

TX:01 03 00 00 00 02 C4 0B
01站地址 03读取保持寄存器 00 00起始地址00 02数量 C4 0B校验码
RX:01 03 04 00 49 01 29 EB AB
01站地址 03读取保持寄存器 04返回字节数 00 49 01 29返回的4个字节 EB AB校验码

对于读取来说

站地址:要找谁?

功能码:要干什么?

校验:验证数据是否正确?

解析modbus 十六进制 java 解析modbus协议_寄存器


解析modbus 十六进制 java 解析modbus协议_通信协议_02