Modpoll 使用教学文档

官方教程

1. 工具简介

Modpoll 是一个基于命令行的 Modbus 主机模拟器和测试工具,广泛用于调试 Modbus 设备。它支持多种通信协议(ASCII、RTU、TCP、UDP)和数据类型,可以在 Windows、Linux 和基于 ARM 的设备(如 Raspberry Pi)上运行。

  • 开发基础:使用 FieldTalk™ Modbus 驱动程序。

  • 适用场景

    • 测试 Modbus 从站设备。
    • 调试 Modbus 通信协议。
    • 模拟 Modbus 主站功能。

2. 支持的操作系统

  • Windows(支持 x86 和 x64 架构)。
  • Linux(支持 x86、x86_64、ARM32 和 ARM64 架构)。
  • ARM 平台(如 Raspberry Pi 和 BeagleBoard)。

3. 系统要求

  • Windows:支持 Windows 7 及更高版本。
  • Linux:支持主要的 Linux 发行版(如 Ubuntu、Debian、CentOS 等)。
  • 网络或串口:需连接 Modbus 从站设备,支持 TCP/IP 或串口(RS-232/RS-485)通信。

4. 安装步骤

4.1 Windows 安装
  1. 下载 modpoll ZIP 文件:modpoll-3.15.zip

  2. 解压 ZIP 文件到任意目录(如 C:\modpoll)。

  3. 打开命令提示符(

    cmd
    

    ),切换到解压目录下的

    win
    

    文件夹:

    cd C:\modpoll\win
    
  4. 测试是否安装成功:

    modpoll -h
    

    如果显示帮助信息,则说明安装成功。

4.2 Linux 安装
  1. 下载 modpoll 的 TAR 压缩包:modpoll-3.15.tgz

  2. 在终端运行以下命令解压文件:

    tar xzf modpoll-3.15.tgz
    
  3. 解压后会生成一个包含多种架构的二进制文件的文件夹。将适合当前系统架构的文件路径添加到环境变量:

    export PATH=$PWD/modpoll/linux_arm-eabihf:$PATH
    

    (此处以 ARM 平台为例,具体路径请根据实际情况修改)。

  4. 测试是否安装成功:

    modpoll -h
    

    如果显示帮助信息,则说明安装成功。

4.3 可选步骤:添加到全局路径

为了方便运行,可以将 modpoll 添加到系统路径:

  • Windows:将解压目录(如 C:\modpoll\win)添加到环境变量 Path 中。

  • Linux

    :将

    modpoll
    

    文件移动到

    /usr/local/bin
    

    或其他系统路径:

    sudo mv modpoll /usr/local/bin/
    

5. 使用方法

5.1 基本语法
modpoll [选项] SERIALPORT|HOST [WRITEVALUES...]
  • SERIALPORT

    :串口名称,适用于 Modbus ASCII 或 Modbus RTU 协议。

    • Windows: COM1, COM2
    • Linux: /dev/ttyS0, /dev/ttyS1
  • HOST:主机名或 IP 地址,适用于 Modbus TCP 协议。

  • WRITEVALUES:要写入的值列表。如果未指定,默认执行读取操作。

5.2 常用选项
通信协议
  • -m ascii:Modbus ASCII 协议。
  • -m rtu:Modbus RTU 协议(默认)。
  • -m tcp:Modbus TCP 协议。
  • -m udp:Modbus UDP 协议。
从站地址
  • -a #:指定从站地址(串口范围 1-247,TCP 范围 0-255,默认值为 1)。
寄存器设置
  • -r #:起始寄存器地址(范围 1-65536,默认值为 1)。

  • -c #:读取的寄存器数量(范围 1-125,默认值为 1)。

  • -t #
    

    :数据类型:

    • 0:线圈(FC1)。
    • 1:离散输入(FC2)。
    • 3:输入寄存器(FC4)。
    • 4:保持寄存器(FC3,默认)。
串口设置
  • -b #:波特率(如 9600、19200,默认值为 19200)。
  • -d #:数据位(ASCII 协议为 7 或 8,RTU 为 8)。
  • -s #:停止位(1 或 2,默认值为 1)。
  • -p none:无校验。
  • -p even:偶校验(默认)。
  • -p odd:奇校验。
TCP 设置
  • -p #:IP 协议端口号(默认值为 502)。
5.3 示例
1. 获取帮助信息
modpoll -h
2. Modbus RTU 示例

通过 Modbus RTU 从地址为 3 的从站连续读取 10 个保持寄存器,起始寄存器为 500:

modpoll -b 9600 -p none -m rtu -a 3 -r 500 -c 10 COM1
3. Modbus TCP 示例

从 IP 地址为 10.0.0.100 的设备读取 5 个浮点值,起始寄存器为 100:

modpoll -t 4:float -r 100 -c 5 -1 10.0.0.100
4. 写入操作示例
  • 写多个寄存器(功能码 16):

    modpoll -r 1201 10.0.0.100 1234
    
  • 写单个寄存器(功能码 6):

    modpoll -r 1201 -c 1 10.0.0.100 1234
    
5. 读取保持寄存器(Modbus TCP)
modpoll -m tcp -a 1 -r 100 -c 5 192.168.0.10

说明:

  • 使用 Modbus TCP 协议。
  • 从 Modbus 地址为 1 的设备读取保持寄存器(功能码 03)。
  • 起始寄存器地址为 100,读取 5 个寄存器。
  • 目标设备的 IP 地址为 192.168.0.10
6. 读取线圈状态(Modbus RTU)
modpoll -m rtu -p /dev/ttyUSB0 -b 9600 -a 2 -1 -r 10

说明:

  • 使用 Modbus RTU 协议。
  • 串口设备为 /dev/ttyUSB0,波特率为 9600
  • 从 Modbus 地址为 2 的设备读取线圈状态(功能码 01)。
  • 起始寄存器地址为 10,读取 1 个寄存器。
7. 写单个保持寄存器
modpoll -m tcp -a 1 -r 200 -t 3:int -1 192.168.0.10

说明:

  • 使用 Modbus TCP 协议。
  • 向 Modbus 地址为 1 的设备的保持寄存器(功能码 06)写入值。
  • 寄存器地址为 200,数据类型为 整数
  • 目标设备的 IP 地址为 192.168.0.10
8. 读取离散输入(功能码 02)
modpoll -m rtu -p COM1 -b 19200 -a 3 -2 -r 20 -c 8

说明:

  • 使用 Modbus RTU 协议。
  • 串口为 COM1,波特率为 19200
  • 从 Modbus 地址为 3 的设备读取离散输入(功能码 02)。
  • 起始地址为 20,读取 8 个输入。
9. 写多个保持寄存器
modpoll -m rtu -p /dev/ttyUSB1 -b 115200 -a 4 -r 300 -t 3:int -c 3 --value 100 200 300

说明:

  • 使用 Modbus RTU 协议。
  • 向地址为 4 的设备写入多个保持寄存器。
  • 起始地址为 300,写入的值为 100, 200, 300
  • 波特率为 115200

6. 常见问题解决

1. “找不到命令”错误
  • 检查 modpoll 是否添加到系统路径。
  • 确认文件是否具有执行权限(Linux/macOS)。
2. 权限不足
  • 在 Linux/macOS 上运行命令时,尝试使用

    sudo
    

    sudo modpoll ...
    
3. 无法连接设备
  • 确保 Modbus 从站设备地址、波特率等配置正确。
  • 检查串口或网络连接是否正常。

通过以上内容,您可以快速掌握 modpoll 的安装和使用方法,用于调试和测试 Modbus 设备。


调试与注意事项

  1. 串口配置

    • 确保波特率、数据位、停止位、奇偶校验与设备一致。
    • 使用 -p 指定串口设备。
  2. 功能码匹配

    • 功能码 01: 读取线圈状态。
    • 功能码 02: 读取离散输入。
    • 功能码 03: 读取保持寄存器。
    • 功能码 04: 读取输入寄存器。
    • 功能码 05/06: 写单个线圈或寄存器。
    • 功能码 15/16: 写多个线圈或寄存器。
  3. 寄存器地址

    • Modbus 寄存器地址从 1 开始,但有些工具从 0 开始计数。确认工具与设备的地址偏移。
  4. 权限问题

    • 在 Linux 中,确保用户有访问串口的权限,必要时使用 sudo

通过上述教学,你可以使用 modpoll 测试和调试 Modbus 设备,快速验证通信是否正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值