编辑 | blame | 历史 | 原始文档

ModbusPoll v7.0.0 使用教程

目录

  1. 软件介绍
  2. 安装与启动
  3. 基本配置
  4. 连接设置
  5. 数据读取配置
  6. 水处理机与集中供液设备通信实例
  7. 数据监控与分析
  8. 故障排除
  9. 高级功能

软件介绍

ModbusPoll是一款专业的Modbus主机仿真器工具,主要用于:
- 测试和调试Modbus从设备
- 监控Modbus设备数据
- 验证设备通信协议
- 故障诊断和排除

主要特性

  • 支持Modbus RTU/ASCII/TCP协议
  • 实时数据监控
  • 多种数据格式显示
  • 日志记录功能
  • 批量读取功能

安装与启动

系统要求

  • Windows 7/8/10/11
  • .NET Framework 4.0 或更高版本
  • 至少50MB可用磁盘空间

安装步骤

  1. 下载ModbusPoll-v7.0.0安装包
  2. 右键点击安装包,选择"以管理员身份运行"
  3. 按照安装向导完成安装
  4. 启动程序:开始菜单 → ModbusPoll

首次启动

启动后会显示主界面,包含:
- 菜单栏:文件、连接、设置等
- 工具栏:常用功能快捷按钮
- 数据显示区域:寄存器数据表格
- 状态栏:连接状态和统计信息

基本配置

连接设置

  1. 串口连接(RTU/ASCII)
    Connection → Connect 或点击工具栏连接图标

  2. 连接参数配置

  • Port: 选择串口(COM1, COM2等)
  • Baud Rate: 波特率(常用9600, 19200, 38400)
  • Data Bits: 数据位(通常为8)
  • Parity: 校验位(None, Even, Odd)
  • Stop Bits: 停止位(1或2)
  • Mode: 选择RTU或ASCII
  1. TCP连接设置
  • IP Address: 设备IP地址
  • Port: 端口号(默认502)
  • Unit ID: 从站地址

连接设置

串口连接示例

以水处理机为例:
- Port: COM1
- Baud Rate: 9600
- Data Bits: 8
- Parity: None
- Stop Bits: 1
- Mode: RTU
- Response timeout: 1000ms
- Delay between polls: 100ms

TCP连接示例

集中供液设备网络连接:
- IP Address: 192.168.1.100
- Port: 502
- Unit ID: 1
- Response timeout: 3000ms
- Delay between polls: 500ms

数据读取配置

设置读取参数

  1. Setup → Read/Write Definition
  2. 配置读取参数:
  • Slave ID: 从站地址(1-247)
  • Function: 功能码
    • 01: 读取线圈状态
    • 02: 读取输入状态
    • 03: 读取保持寄存器
    • 04: 读取输入寄存器
  • Address: 起始地址
  • Quantity: 读取数量
  • Scan Rate: 扫描频率(ms)

水处理机与集中供液设备参数配置示例

温度监控:
- Slave ID: 1
- Function: 03 (Read Holding Registers)
- Address: 23 (0x0017)
- Quantity: 2
- Scan Rate: 1000ms

供液压力监控:
- Slave ID: 1
- Function: 03
- Address: 25 (0x0019)
- Quantity: 2
- Scan Rate: 500ms

液位状态监控:
- Slave ID: 1
- Function: 01 (Read Coils)
- Address: 0x0001
- Quantity: 16
- Scan Rate: 2000ms

电导率监控:
- Slave ID: 1
- Function: 03
- Address: 24 (0x0018)
- Quantity: 2
- Scan Rate: 1000ms

PH值监控:
- Slave ID: 1
- Function: 03
- Address: 29 (0x001D)
- Quantity: 2
- Scan Rate: 1000ms

水处理机与集中供液设备通信实例

水处理机参数读取

根据水处理设备通信协议配置:

1. 温度参数(寄存器地址:0x0017)
   - Function: 03
   - Address: 23 (0x0017)
   - Quantity: 2
   - Data Format: Float (4字节)

2. 电导率参数(寄存器地址:0x0018)
   - Function: 03
   - Address: 24 (0x0018)
   - Quantity: 2
   - Data Format: Float

3. 供液压力参数(寄存器地址:0x0019-0x001A)
   - Function: 03
   - Address: 25 (0x0019)
   - Quantity: 4
   - Data Format: Float (供液一、供液二压力)

4. 液位参数(寄存器地址:0x001B-0x001C)
   - Function: 03
   - Address: 27 (0x001B)
   - Quantity: 4
   - Data Format: Float (储液、配液液位)

5. PH值参数(寄存器地址:0x001D)
   - Function: 03
   - Address: 29 (0x001D)
   - Quantity: 2
   - Data Format: Float

批量读取配置

Setup → Read/Write Definition → Add Multiple
创建多个读取组:
- 组1:温度相关参数 (0x0017-0x0018)
- 组2:压力相关参数 (0x0019-0x001A)
- 组3:液位相关参数 (0x001B-0x001C)
- 组4:PH值参数 (0x001D)
- 组5:状态相关参数 (0x0001-0x0010)

数据监控与分析

数据显示格式

  1. Display → Data Format
  2. 选择合适的显示格式:
  • Signed/Unsigned: 有符号/无符号
  • 16-bit/32-bit: 数据位数
  • Hex/Decimal/Binary: 进制显示
  • Float: 浮点数显示

字节序配置详解

重要:正确的字节序设置是数据正确显示的关键

配置步骤
1. Display → Data Format → Advanced
2. 字节序选项
```
□ Byte Swap - 字节交换
□ Word Swap - 字交换

四种组合对应不同字节序:
┌─────────────┬──────────┬────────────┐
│ 选项组合 │ 字节序 │ 示例 │
├─────────────┼──────────┼────────────┤
│ 无勾选 │ ABCD │ 42 0C CC CD │
│ Byte Swap │ BADC │ 0C 42 CD CC │
│ Word Swap │ CDAB │ CC CD 42 0C │
│ Both │ DCBA │ CD CC 0C 42 │
└─────────────┴──────────┴────────────┘
```

实际验证方法
基于您的通信数据 CD CC 0C 42: 1. 尝试DCBA格式:CD CC 0C 42 → 35.2°C ✓ 2. 其他格式都会显示异常值 3. 因此您的设备使用DCBA字节序

配置建议
- 水处理设备通常使用大端序(ABCD)
- PC-based设备通常使用小端序(DCBA)
- 根据实际数据验证选择正确格式

实时监控

View菜单选项:
- Data View: 数据表格视图
- Register View: 寄存器视图
- Traffic View: 通信流量视图
- Error View: 错误日志视图

数据记录

  1. Log → Start Logging
  2. 设置日志文件路径和格式
  3. 选择记录间隔和条件
  4. 开始记录数据变化

告警设置

Setup → Alarm Setup
配置告警条件:
- 水温超限:> 40°C 或 < 35°C
- 供液压力异常:< 0.1MPa 或 > 0.5MPa
- 电导率异常:< 13.0 或 > 15.0 mS/cm
- 设备离线:通信超时 > 5秒

故障排除

常见问题及解决方案

1. 连接失败

问题:无法连接到设备
解决方案:
- 检查串口/网络连接
- 确认波特率和通信参数
- 检查设备地址是否正确
- 验证电缆连接

2. 数据读取异常

问题:读取数据全为0或异常值
解决方案:
- 检查功能码是否正确
- 确认寄存器地址
- 检查数据格式设置
- 验证设备是否支持该功能

3. 通信超时

问题:频繁出现通信超时
解决方案:
- 增加Response Timeout时间
- 减少扫描频率
- 检查网络稳定性
- 确认设备负载情况

4. 数据格式错误

问题:数据显示格式不正确
解决方案:
- 检查字节序设置(大端/小端)
- 确认数据类型(整数/浮点)
- 调整数据位数设置
- 参考设备手册确认格式

5. 字节序问题诊断

问题:数据数值异常(过大或过小)
症状:
- 温度显示几千度或负值
- 压力显示异常大的数值
- 电导率显示不合理数值

解决步骤:
1. 查看Traffic View中的原始十六进制数据
2. 尝试不同字节序组合:
   - Display → Data Format → Byte Swap
   - Display → Data Format → Word Swap
3. 选择显示合理数值的组合
4. 验证多个参数确保设置正确

实例:
原始数据:CD CC 0C 42
- 默认(ABCD):异常值
- Byte swap(BADC):异常值  
- Word swap(CDAB):异常值
- Byte+Word(DCBA):35.2°C ✓正确

高级功能

1. 脚本自动化

Tools → Scripting
支持VB脚本自动化:
- 自动连接设备
- 批量数据处理
- 条件触发操作
- 报告生成

2. 数据导出

File → Export Data
支持多种格式:
- CSV文件
- Excel文件
- XML格式
- 自定义格式

3. 多设备监控

可同时监控多个设备:
1. File → New Document
2. 配置不同设备参数
3. Window → Tile 平铺显示
4. 实现多设备集中监控

4. 趋势分析

View → Trend View
功能特性:
- 实时趋势图表
- 历史数据回放
- 数据统计分析
- 异常点标记

水处理机与集中供液设备监控实战

完整监控配置

# 水处理机与集中供液设备监控配置示例
设备信息:
  设备型号: 水处理机+集中供液设备
  通信方式: Modbus RTU/TCP
  波特率: 9600
  从站地址: 1

监控参数:
  温度监控:
    地址: 0x0017
    单位: °C
    告警: 35-40°C
    
  电导率监控:
    地址: 0x0018
    单位: mS/cm
    告警: 13.0-15.0
    
  压力监控:
    供液一: 0x0019
    供液二: 0x001A
    单位: MPa
    告警: 0.1-0.5
    
  液位监控:
    储液: 0x001B
    配液: 0x001C
    单位: %
    告警: 10-90%
    
  PH值监控:
    地址: 0x001D
    单位: pH
    告警: 6.5-7.5

扫描设置:
  正常扫描: 1000ms
  快速扫描: 500ms
  慢速扫描: 2000ms

通信协议分析:
  基于实际通信数据:
  - 使用Modbus TCP协议
  - 功能码03 (Read Holding Registers)
  - 起始地址: 0x0017 (温度)
  - 数据格式: 32位浮点数 (IEEE 754)
  - 字节序分析: 
    * 原始数据: CD CC 0C 42
    * 需要DCBA字节序 (Byte+Word Swap)
    * 解析结果: 35.2°C
  - 数据示例验证:
    * CD CC 0C 42 (十六进制) 
    * → 0x420CCCCD (重排后)
    * → 35.2000008 (IEEE 754浮点数)
    * → 35.2°C (显示值)
    
配置要点:
  - ModbusPoll设置: Display → Data Format
  - 勾选: Byte Swap + Word Swap
  - 数据类型: 32-bit Float
  - 验证方法: 观察温度是否在合理范围(30-50°C)

自动化脚本示例

' 水处理机与集中供液设备状态检查脚本
Sub CheckWaterTreatmentStatus()
    Dim temp, pressure1, pressure2, conductivity, ph
    
    ' 读取温度 (地址23)
    temp = mbPoll.ReadFloat(1, 3, 23)
    
    ' 读取压力 (地址25,26)
    pressure1 = mbPoll.ReadFloat(1, 3, 25)
    pressure2 = mbPoll.ReadFloat(1, 3, 26)
    
    ' 读取电导率 (地址24)
    conductivity = mbPoll.ReadFloat(1, 3, 24)
    
    ' 读取PH值 (地址29)
    ph = mbPoll.ReadFloat(1, 3, 29)
    
    ' 检查异常
    If temp > 40 Or temp < 35 Then
        MsgBox "水温异常: " & temp & "°C"
    End If
    
    If pressure1 < 0.1 Or pressure1 > 0.5 Then
        MsgBox "供液一压力异常: " & pressure1 & "MPa"
    End If
    
    If conductivity < 13.0 Or conductivity > 15.0 Then
        MsgBox "电导率异常: " & conductivity & "mS/cm"
    End If
    
    If ph < 6.5 Or ph > 7.5 Then
        MsgBox "PH值异常: " & ph
    End If
End Sub

最佳实践建议

1. 性能优化

  • 合理设置扫描频率,避免过度轮询
  • 使用批量读取减少通信次数
  • 定期清理日志文件
  • 监控系统资源使用情况

2. 数据管理

  • 建立规范的参数命名规则
  • 定期备份重要配置
  • 设置合理的数据保存周期
  • 实施数据安全措施

3. 维护建议

  • 定期检查通信线路
  • 更新设备驱动程序
  • 备份工程配置文件
  • 建立故障处理流程

附录

A. Modbus功能码对照表

01 - Read Coils (读取线圈状态)
02 - Read Discrete Inputs (读取离散输入)
03 - Read Holding Registers (读取保持寄存器)
04 - Read Input Registers (读取输入寄存器)
05 - Write Single Coil (写单个线圈)
06 - Write Single Register (写单个寄存器)
15 - Write Multiple Coils (写多个线圈)
16 - Write Multiple Registers (写多个寄存器)

B. 常用波特率设置

1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200

C. 水处理机与集中供液设备常用地址映射

基于实际通信数据的地址映射:
温度:0x0017 (十进制23)
电导率:0x0018 (十进制24)
供液一压力:0x0019 (十进制25)
供液二压力:0x001A (十进制26)
储液液位:0x001B (十进制27)
配液液位:0x001C (十进制28)
PH值:0x001D (十进制29)
状态类:0x0001-0x0010
控制类:0x0020-0x0030

D. 大端小端(字节序)详解

什么是大端小端?

字节序(Byte Order)是指多字节数据在内存中的存储顺序,主要有两种:

大端序(Big Endian)
- 高位字节存储在低地址
- 符合人类阅读习惯
- 网络传输标准字节序

小端序(Little Endian)
- 低位字节存储在低地址
- 多数x86处理器采用
- Intel架构默认字节序

实际例子说明

以32位浮点数 35.2°C 为例:

IEEE 754 浮点数表示:0x420C_CCCD

大端序存储:
地址    内容
0x1000  0x42  (最高位字节)
0x1001  0x0C
0x1002  0xCC
0x1003  0xCD  (最低位字节)

小端序存储:
地址    内容
0x1000  0xCD  (最低位字节)
0x1001  0xCC
0x1002  0x0C
0x1003  0x42  (最高位字节)

如何确定设备字节序?

方法1:通过通信数据分析
从commdata.txt看到的数据:CD CC 0C 42 1. 将这4个字节按不同字节序解释: - 大端序:0x42_0C_CCCD = 35.2 (合理的温度值) - 小端序:0xCDCC_0C42 = 非常大的数值(不合理) 2. 结论:设备使用大端序

方法2:查看设备手册
设备技术文档通常会说明: - "网络字节序" = 大端序 - "主机字节序" = 通常是小端序 - "Intel格式" = 小端序 - "Motorola格式" = 大端序

方法3:ModbusPoll中的验证
在ModbusPoll中测试: 1. Setup → Data Format → Byte Swap 2. 观察数据是否合理: - 温度应该在0-100°C范围 - 压力应该在0-10MPa范围 - 电导率应该在10-20mS/cm范围 3. 选择显示正确数值的字节序

ModbusPoll字节序设置

配置路径:Display → Data Format

选项说明
```
□ Byte swap - 交换字节序
□ Word swap - 交换字顺序
□ Dword swap - 交换双字顺序

组合设置对应不同格式:
- 无勾选:ABCD (大端序)
- Byte swap:BADC
- Word swap:CDAB
- Byte+Word swap:DCBA (小端序)
```

实际应用示例

案例1:温度读取异常
问题:读取温度显示为几千度 原因:字节序设置错误 解决:勾选"Byte swap"调整字节序

案例2:压力值显示异常
读取数据:12 34 56 78 大端序解释:0x12345678 = 305,419,896 (异常) 小端序解释:0x78563412 = 2,018,915,346 (异常) 需要Word swap:0x34127856 = 873,756,758 (仍异常) 正确设置:Byte+Word swap = 0x78563412转换为浮点数

调试技巧

步骤1:记录原始数据
使用Traffic View查看原始十六进制数据 例如:42 0C CC CD

步骤2:手动计算验证
使用在线IEEE 754转换器: - 输入:420CCCCD - 输出:35.2000008... - 验证是否为合理数值

步骤3:ModbusPoll中测试
依次尝试四种字节序组合: 1. ABCD - 原始顺序 2. BADC - Byte swap 3. CDAB - Word swap 4. DCBA - Byte+Word swap 选择显示合理数值的设置

常见设备字节序

大端序设备:
- 施耐德PLC
- 西门子S7系列
- ABB设备
- 大多数网络设备

小端序设备:
- 三菱PLC
- 欧姆龙PLC
- PC-based控制器
- Intel架构设备

本教程基于ModbusPoll v7.0.0版本编写,适用于水处理机与集中供液设备参数监控系统。如有问题请参考官方文档或联系技术支持。