modbus快速入门

我的小站:Ean7的小站

1. Modbus 是什么?

Modbus 是一种工业通信协议,用于 PLC、传感器、变频器、仪表、智能电表等设备之间交换数据。

它的特点:

  • 简单

  • 开放标准

  • 工业应用非常广

  • 主从结构(传统 Modbus RTU/TCP)

    • 在 Modbus 里面,主站(Master) 可以简单理解为:

      主动发起通信、提出读写请求的一方。

      而:

      从站(Slave) 是被询问、返回数据或执行命令的一方。

      现在新的 Modbus 标准里更常叫:

      • Master → Client(客户端)
      • Slave → Server(服务器)

      但工业现场仍然习惯叫主站/从站。

典型场景:

bash 复制代码
上位机/PLC
    |
    | Modbus
    |
+---+----+----+
|        |    |
温度计  电表  变频器

2. Modbus 有哪些类型?

主要有三个:

类型 物理层 常用场景
Modbus RTU RS485 工业现场最多
Modbus ASCII RS232/485 老设备
Modbus TCP Ethernet 现在越来越多

现在最常用:

  • RS485 + Modbus RTU
  • 网口 + Modbus TCP

3. Modbus TCP 快速理解

例如:

电脑读取一个温度传感器:

bash 复制代码
电脑(Modbus Client)
        |
        | TCP 502端口
        |
温度设备(Modbus Server)

设备:

bash 复制代码
IP:
192.168.1.100

端口:
502

4. Modbus 的核心:寄存器

Modbus 不直接传:

bash 复制代码
temperature = 25.6℃

而是:

bash 复制代码
读取地址 40001
返回:
256

然后约定:

bash 复制代码
实际温度 = 数据 / 10

256 / 10 = 25.6℃

5. 四种寄存器类型(重点)

Modbus 有四类数据:

类型 名称 读写 示例
Coil 线圈 读写 开关
Discrete Input 离散输入 只读 按钮
Input Register 输入寄存器 只读 温度
Holding Register 保持寄存器 读写 参数

记忆:

bash 复制代码
0xxxx
线圈
开关


1xxxx
输入


3xxxx
输入寄存器


4xxxx
保持寄存器

实际设备中最常见:

bash 复制代码
40001
40002
40003
...

6. 一个实际例子

假设:

温度模块:

bash 复制代码
地址:
40001

数据:
253

说明书:

bash 复制代码
温度 = 寄存器值 ×0.1

读取:

bash 复制代码
40001 → 253

计算:

bash 复制代码
253×0.1

=25.3℃

7. Modbus RTU(RS485)是什么?

典型接线:

bash 复制代码
PLC             温度模块

A  ------------ A
B  ------------ B

GND ---------- GND

多个设备:

bash 复制代码
          RS485总线

主站
 |
 +----设备1 地址1
 |
 +----设备2 地址2
 |
 +----设备3 地址3

每个设备有地址:

bash 复制代码
设备1:
Slave ID=1

设备2:
Slave ID=2

8. Modbus RTU 通信参数

必须一致:

例如:

bash 复制代码
波特率:
9600

数据位:
8

停止位:
1

校验:
None

简称:

bash 复制代码
9600 8N1

或者:

bash 复制代码
9600 8E1

9. 一次读取过程

例如:

主机:

bash 复制代码
我要读取:
Slave=2

寄存器:
40001

数量:
2个

发送:

bash 复制代码
02
03
0000
0002
CRC

解释:

字段 意义
02 设备地址
03 功能码
0000 开始地址
0002 读取2个寄存器
CRC 校验

设备回复:

bash 复制代码
02
03
04
00FA
0102
CRC

表示:

两个16位数据:

bash 复制代码
250
258

10. 常用功能码

功能码 作用
01 读线圈
02 读输入
03 读保持寄存器
04 读输入寄存器
05 写单个线圈
06 写单个寄存器
15 写多个线圈
16 写多个寄存器

最常用:

bash 复制代码
03 读数据

06 写数据

11. Python 快速测试

安装:

bash 复制代码
pip install pymodbus

读取 Modbus TCP:

bash 复制代码
from pymodbus.client import ModbusTcpClient


client = ModbusTcpClient(
    "192.168.1.100",
    port=502
)

client.connect()


result = client.read_holding_registers(
    address=0,
    count=10
)


print(result.registers)


client.close()

输出:

bash 复制代码
[253, 100, 0, 55,...]

12. 常用调试软件

Windows

推荐:

Modbus Poll

功能:

  • 模拟主站
  • 读写寄存器
  • 看通信帧
Modbus Slave

模拟设备。


Linux

命令:

bash 复制代码
sudo apt install mbpoll

读取:

bash 复制代码
mbpoll \
-m tcp \
-a 1 \
-r 40001 \
192.168.1.100

13. 最重要的三个概念

三个:

① Modbus 是读写寄存器
bash 复制代码
设备 = 一堆地址

② 地址不是数据

例如:

bash 复制代码
40001

只是位置。

里面可能:

bash 复制代码
温度
压力
电压

要看设备手册。


③ 通信双方必须知道规则

包括:

bash 复制代码
设备地址
寄存器地址
数据类型
缩放比例
字节顺序
相关推荐
论迹复利7 小时前
PSA Certified 是什么——物联网芯片安全认证的三级体系
物联网·struts·安全
MetrixAeroCore9 小时前
AI玩具出海用物联网卡还是eSIM?200国漫游和本地落地卡成本差多少?
物联网
数智顾问12 小时前
(84页PPT)PWC海科集团生物医药业务5年发展战略项目建议书(附下载方式)
大数据·人工智能·物联网
MetrixAeroCore13 小时前
智能快递柜格口监控物联网卡在老旧小区弱网环境下多运营商切换组网方案
物联网
北京晶数信息科技13 小时前
加油站成品油智慧监管系统项目建设实施汇报(一)
大数据·物联网·产品经理·需求分析
TurMass工程师13 小时前
什么是 TurMass™ Mesh?它在电力物联网感知网络中起什么作用?
物联网·电力物联网·turmass·turmassmesh
测功机之家14 小时前
国内口碑好的测功机公司找哪家
python·物联网
AimerMilet1 天前
物联网卡流量池是什么意思?企业用划算吗?
物联网
Xxtaoaooo1 天前
DolphinDB 物联网数据平台全景:一份从架构到落地的实践地图
物联网·系统架构·时序数据库·数据库架构·dolphindb