Modbus协议:工业通信的基石

【1】 Modbus协议

1.1 起源

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

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

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

1.2 分类

1)Modbus RTU

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

2)Modbus ASCII

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

3)Modbus TCP

运行在以太网上的协议

1.3 优势

免费、简单、容易使用

1.4 应用场景

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

1.5 ModbusTCP特点

1)采用主从问答式通信

2)Modbus TCP协议是应用层协议,基于传输层的TCP协议实现的

3)Modbus TCP端口号默认502

【2】ModbusTCP协议格式

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

Modbus TCP/IP协议最大数据帧长度为260字节,报文头7字节,功能码1字节,数据最大252字节。

2.1 报文头

包含7字节,分别是:

事务处理标识符:没有限制,主机发送什么,从机回复什么

协议标识符:00 00 (十六进制)占2字节,表示Modbus TCP协议

长度:存放的后面字节长度,用4位十六进制表示(2字节)

单元标识符:从机ID

2.2 寄存器

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

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

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

功能码:0x01 0x05 0x0f

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

功能码:0x02

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

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

功能码:0x03 0x06 0x10

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

功能码:0x04

2.3 功能码

具体协议分析可参考:

http://www.360doc.com/content/20/0804/12/43769266_928452485.shtml

读:

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

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

写单个:

主机->从机:报文头(7)+功能码(1)+地址(2)+数据/断通标志(2)

写多个:

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

练习:点亮一个灯

00 00 00 00 00 06 01 05 00 00 FF 00

【3】Modbus工具

3.1 Modbus Slave/Poll

1)默认安装

2)破解 :点击connection->connect,输入序列号即可

3)使用

先设置

后连接(连接时注意先开启slave端(相当于服务器),后起poll端(相当于客户端))

Slave是从机,Poll是主机

3.2 网络调试助手

相关推荐
黑客思维者5 个月前
工业控制系统安全之 Modbus 协议中间人攻击(MITM)分析与防范
系统安全·网络攻击模型·安全威胁分析·中间人攻击·modbus协议
咖喱年糕1 年前
【正点原子STM32】RS485串行通信标准(串口基础协议 和 MODBUS协议、总线连接、通信电路、通信波形图、RS485相关HAL库驱动、RS485配置步骤、)
modbus协议·rs485串行通信标准·总线连接、通信电路、波形图·rs485相关hal库驱动·rs485配置步骤·串口基础协议
sakabu1 年前
libmodbus编程应用(超详细源码讲解+移植到stm32)
笔记·学习·开源协议·modbus协议·libmodbus
兴达易控1 年前
Modbus协议转Profibus协议模块接热传感器配置攻略
modbus转·modbus协议·转profibus协议模块·modbus协议转·profibus协议网关·profibus协议模块·profibus协议转