Portable Windows desktop tool for field-bus monitoring, short-term logging, and troubleshooting of Modbus TCP, Modbus RTU, and Siemens S7 data.
Status: active repair and usability work. The repository is usable, but the public documentation stays conservative and only describes implemented behavior.
IOBusMonitor helps service technicians, maintenance engineers, and system integrators:
- inspect live PLC/register values,
- log measurements into local SQLite archives,
- review recent history with built-in charts,
- configure devices, points, and measurements inside the app,
- evaluate the workflow without hardware by using demo mode.
It is designed for workstation use during commissioning, troubleshooting, and short-term observation of industrial signals.
- Not a SCADA replacement.
- Not a safety controller.
- Not a certified historian.
- Not a PLC programming environment.
- Not a write/control tool for PLC outputs unless a future feature explicitly implements and documents that behavior.
The current documented workflow is read-oriented monitoring and local logging.
- System integrators
- Maintenance engineers
- Service technicians
- Automation developers who need a quick diagnostic desktop tool
| Protocol | Current use | Notes |
|---|---|---|
| Modbus TCP | Read-only polling | device, point, and measurement administration available in-app |
| Modbus RTU | Read-only polling | serial port settings and slave-based polling supported |
| Siemens S7 | Read-only polling | S7.Net-based read path with in-app device/point/measurement administration |
- Live dashboard for the latest values grouped from configured devices and points
- Local daily SQLite archive in
Data/Data_yyyyMMdd.db - History view with bounded loading and chart downsampling
- In-app administration for devices, points, and measurements
- Demo mode that seeds sample configuration and generates synthetic live values locally
- Portable packaging script for clean
Release|x64ZIP creation
- Getting started: docs/GETTING_STARTED.md
- Configuration guide: docs/CONFIGURATION.md
- Troubleshooting: docs/TROUBLESHOOTING.md
- FAQ: docs/FAQ.md
- Build guide: docs/BUILD.md
- Release packaging: docs/RELEASE.md
- Services: docs/SERVICES.md
- Testing notes: docs/TESTING.md
- Support model: SUPPORT.md
- Build and launch the app on Windows.
- On first run, let it create
Settings/Settings.dband the defaultDatafolder. - Click
Enable Demo Modefrom the shell prompt, or openSettingsand enableDemo mode. - Click
Start Monitoring. - Open the dashboard and history pages to inspect synthetic live data and archived samples.
Windows prerequisites:
- Windows 10/11 x64
- Visual Studio 2019+ or Build Tools with
msbuild - NuGet CLI on
PATH
nuget restore .\IOBusMonitor.sln
msbuild .\IOBusMonitor.sln /p:Configuration=Release /p:Platform=x64See docs/BUILD.md for environment details and current WSL limitations.
.\build\package-release.ps1That script restores packages, builds Release|x64, stages a clean runtime folder, and creates a ZIP under dist/.
- Add a device for Modbus TCP, Modbus RTU, or Siemens S7.
- Add one or more points under that device.
- Add measurements under each point.
- Use connection validation or test connection actions where available in the admin workflow.
- Start monitoring.
- Watch the latest values on the dashboard.
- Open the history page to load recent archived samples.
IOBusMonitor.exe
Settings/Settings.db # persistent app settings and configured devices/points/measurements
Data/Data_yyyyMMdd.db # one SQLite archive per day
Logs/ # optional diagnostic logs
- Windows desktop application only; this repository does not claim Linux or WSL runtime support for the WPF app.
- Documentation currently reflects read-only monitoring behavior. Output writing/control is not documented as supported.
- The app is intended for local monitoring and troubleshooting, not plant-wide supervisory control.
- Automated tests cover core library logic, not WPF rendering or real hardware communication.
- Screenshots were intentionally removed here because the shell/dashboard UI changed and the older images no longer represent the current interface.
- Demo mode is clearly marked in the shell with a
DEMO MODEbadge. - While demo mode is enabled, the timer service does not poll real network or serial devices.
- Demo values are written into the normal SQLite archive path so dashboard and history workflows can be evaluated without hardware.
Reset Demo Sample Datarecreates demo configuration and clears previously generated demo archive rows for demo-named devices.
The codebase is MIT licensed and public. The repository is suitable for free issue-based collaboration and for paid custom integration or deployment work.
Use GitHub Issues for:
- reproducible bugs,
- build failures,
- documentation errors,
- feature proposals,
- protocol compatibility reports.
For support boundaries and custom-work examples, see SUPPORT.md.
- Bug reports and documentation issues: use GitHub Issues
- Paid/custom work examples: see docs/SERVICES.md
- Public paid-support email or website is not published in this repository at the moment
- CI badge reflects the real
windows-ciGitHub Actions workflow in this repository. - License badge reflects the repository license.
- No release badge is shown because a verified public release asset was not confirmed in this task.
MIT. See LICENSE.