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 复制代码
设备地址
寄存器地址
数据类型
缩放比例
字节顺序
相关推荐
河北乐讯通物联网服务商42 分钟前
插拔联通模块配上物联网卡,设备联网为何即插即用
物联网·物联网卡·插拔联通模块
注塑机数据采集联网13 小时前
注塑机数据采集网关对接MES系统数字化技术方案
大数据·网络·数据库·物联网·数据挖掘·数据分析
IT规划师14 小时前
MQTT实战 - Topic设计12条军规:90%的消息混乱都源于命名错误(三)
物联网·mqtt·topic·.net core
省钱兄--zs15 小时前
GogoAI 自助健身场馆:AIoT 赋能 24 小时无人值守健身房
物联网·aiot·智慧场馆·gogoai·24 小时无人健身房
星恒讯工业路由器15 小时前
2030通信网络决策:5G-A与6G的战略选择框架
网络·物联网·信息与通信·6g·5g-a·通信物联网·tco成本
星恒讯工业路由器16 小时前
双栈时代的访问断层:当同一个域名走向两条网络路径
网络·物联网·信息与通信·ipv4·通信·ipv6·双栈网络
河北乐讯通物联网服务商16 小时前
什么是 5G 双域?物联网行业 5G 双域网络科普
物联网·5g·5g双域
河北乐讯通物联网服务商16 小时前
智能水表NB-IoT物联网卡,远程抄表稳定方案
物联网·物联网卡·智能水表
pusheng202516 小时前
普晟传感再获“消防产业核心配套优质品牌”:以可靠传感技术,让全球合规变简单
大数据·前端·人工智能·物联网·安全