# modbus-poll-tool **Repository Path**: hello-rong/modbus-poll-tool ## Basic Information - **Project Name**: modbus-poll-tool - **Description**: https://github.com/agentthink/modbus-poll-tool - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-01 - **Last Updated**: 2026-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Modbus Workbench 替代 Modbus Poll / ModScan 的 Nexys 系统事业部自有 Modbus Master 诊断工具。 - **目标**:Windows 10 (1809+) / 11 x64 — 单一 exe,无需安装 .NET 运行时 - **开发/测试**:macOS 上也可构建·运行(Avalonia 跨平台) - **技术栈**:C# 12 / .NET 8 LTS,Avalonia 11 (Fluent),CommunityToolkit.Mvvm,System.IO.Ports - **协议核心**:无外部 Modbus 库,在 `Nmw.Core` 中直接实现(用于原始帧日志·黄金向量验证) ## 截图 ### 主界面 ![主界面](Assets/screenshots/main-window.png) ### 内置模拟器 支持 Modbus TCP 和 RTU 从站模拟,无需物理设备即可测试: ![模拟器](Assets/screenshots/simulator-window.png) ### 连接设置 支持 Modbus TCP、RTU(串口)、RTU over TCP: ![连接设置](Assets/screenshots/connection-dialog.png) ### 多轮询标签页 可同时运行多个轮询任务: ![多轮询](Assets/screenshots/polling-tabs.png) ### 使用说明 内置帮助文档,快速上手: ![使用说明](Assets/screenshots/help-dialog.png) ## 安装方法(一般用户) 没有安装过程。只需获取一个可执行文件即可。 1. 从本仓库的 **[Releases](../../releases)** 页面下载最新版本的 `Nmw.App.exe`(或 zip)。 2. 放到任意文件夹并**双击运行**。 - 无需安装 .NET 运行时(self-contained 单一 exe) - 支持操作系统:Windows 10 (1809+) / Windows 11,x64 3. 首次运行时如出现 Windows SmartScreen 警告,点击 **[更多信息] → [运行]**(无代码签名)。 4. 删除只需移除 exe 文件即可。 > 使用 RTU(串口) 时:USB-RS485 转换器驱动(如 FTDI/CH340)需另行安装才能识别 COM 端口。 ## 功能概要 | 功能 | 内容 | |---|---| | 连接 | Modbus TCP / RTU(串口) / RTU over TCP,超时·重试·帧间延迟设置 | | 读取轮询 | FC01/02/03/04,每个轮询独立周期(最低 10ms),启动/停止,多轮询标签页(共享同一通道) | | 写入 | FC05/06/15/16 对话框,网格双击预填,响应/异常名称显示 | | 数据格式 | U16/S16/Hex/Bin,32bit U/S/Float(字序 ABCD·CDAB·BADC·DCBA),64bit S/Double,ASCII | | 统计 | 每个轮询的 Tx / 有效 Rx / Error / 最后响应时间(ms) / 最后错误名称 | | 流量日志 | 时间戳 + TX/RX raw hex + 错误,环形缓冲 5000 行,仅错误过滤,.txt 保存 | | 地址表示 | 协议地址(0 基) ↔ PLC 表示(1 基,40001 风格,5/6 位) 切换 | | 工作区 | 连接设置 + 轮询定义 + 别名保存为 `.nmw`(JSON) 并还原 | | **内置模拟器** | 无物理设备即可测试的内置从站 — **Modbus TCP + RTU 串口**(FC01~06,15,16,值编辑·自动变化,数据共享) | ## 无设备测试(内置模拟器) 即使没有物理 Modbus 设备,也可以单独用应用测试全部功能。 1. 点击工具栏的 **[模拟器...]** → 在模拟器窗口确认端口(默认 1502)后点击 **[启动/停止]** 2. 在模拟器网格(保持/输入寄存器,线圈,接点)中直接输入值,或 开启 **[值自动变化]** 让寄存器值持续变化 3. 主窗口 **[连接...]** → Modbus TCP,主机 `127.0.0.1`,端口 `1502`,然后连接 4. 启动轮询 → 模拟器值显示在网格中。执行写入(FC05/06/15/16)后 模拟器网格即时反映 5. 错误测试:轮询模拟器区域(默认地址 0~999)以外的地址 会显示 `Illegal Data Address`。停止模拟器可观察 Timeout/连接错误 模拟器仅绑定 127.0.0.1 并响应所有 Unit ID。支持多连接, 可同时运行多个轮询标签页。 **RTU(串口) 从站模式**:在模拟器窗口将模式切换为 "RTU 串口", 即可在指定 COM 端口以 RTU 从站响应。在同一 PC 上与主站一起测试 需要虚拟 COM 端口对(Windows:使用 [com0com](https://com0com.sourceforge.net/) 创建 COM3↔COM4 对 → 从站在 COM4 启动,[连接...] 中以 RTU COM3 连接)。 也可使用互相接线的 USB-RS485 转换器 2 个。TCP/RTU 从站共享相同数据 存储,因此无论从哪端连接都能看到相同的值。 ## 仓库结构 ``` src/Nmw.Core/ 协议核心(无 UI 依赖):Protocol, Framing, Transport, Client, Polling, Data, Workspace src/Nmw.App/ Avalonia UI (ViewModels / Views / Models) tests/Nmw.Core.Tests/ 黄金向量 + 单元测试 tests/Nmw.Integration.Tests/ 基于 TestSlave(TCP) 的往返集成测试 tests/Nmw.App.Tests/ 基于 Avalonia.Headless 的 UI 冒烟测试 ``` ## 构建 / 测试 / 运行 ```bash dotnet build NexysModbusWorkbench.sln # 警告 0 标准 (TreatWarningsAsErrors) dotnet test NexysModbusWorkbench.sln # 全部测试 dotnet run --project src/Nmw.App # 开发运行 (macOS/Windows) ``` ## 部署 (win-x64 单一 exe) ```bash dotnet publish src/Nmw.App -c Release -r win-x64 --self-contained true \ -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true \ -p:EnableCompressionInSingleFile=true -o publish/win-x64 ``` - 产物:`publish/win-x64/Nmw.App.exe`(验证时约 43.2MB — 标准 90MB 以内) - macOS 也可跨平台 publish。部署用 exe 在 Windows PC 上用上述命令重新生成。 - `publish/` 文件夹不提交(.gitignore 对象)。