xfh经验分享

关于我

在技术的海洋里,我是那位永远保持神秘的航海者。 你可以在我的博客里看到我对工业协议的热情与探索, 但真正的故事,只有在代码与实验中才能揭晓。

技术博客

这里将陆续发布我对 Modbus、工业物联网、AI系统等领域的深度拆解与实战经验。 目前内容正在酝酿中,敬请关注,未来会有更多精彩与惊喜。

Modbus 协议实战分享

Modbus 是工业自动化领域最常用的通信协议之一,本文将从协议概念、常见数据类型、主从模式、以及在 Python 中的实现等方面进行详细阐述。

1. 协议概述

2. 主从模式

Modbus 的通信模型是“主机-从机”。主机(Master)发起请求,从机(Slave)响应。主机可以一次请求多个从机,但一次只能与一个从机通信。

3. 常见功能码(Function Code)

功能码功能
01读取线圈状态
02读取离散量输入
03读取保持寄存器
04读取输入寄存器
05写单个线圈
06写单个保持寄存器

4. Python 示例(使用 pymodbus)

from pymodbus.client.sync import ModbusTcpClient

client = ModbusTcpClient('192.168.1.10', port=502)
client.connect()

# 读取从机 1 的保持寄存器 0~9
rr = client.read_holding_registers(0, 10, unit=1)
print(rr.registers)

client.close()
            

5. 常见错误排查

  1. 确认从机地址与功能码匹配
  2. 检查网络连通性(ping、telnet 502)
  3. 使用 Wireshark 捕获 Modbus 报文,验证 CRC/校验码
  4. 确认从机是否支持所请求的功能码

以上内容仅为 Modbus 协议的入门级概览,若想深入了解,可参考 Modbus 官方网站 或相关书籍。