Launching today

mbSCADA
Modbus Poll reimagined in Rust, with SCADA on top.
2 followers
Modbus Poll reimagined in Rust, with SCADA on top.
2 followers
Modbus Poll is the default tool for anyone working with Modbus devices, but it hasn't changed much in years. You get two color rules per row, no SCADA layer, and a license fee for every machine. mbSCADA is a clean-room reimplementation built for people who want more control without paying per seat. It's for automation engineers, embedded developers, and anyone who needs to poll Modbus/TCP, RTU, or ASCII devices and actually see what's going on.




Free
Launch Team

CloudflareStill paying to deploy your apps? Try Cloudflare Workers for free
Promoted
Hi everyone,
I built mbSCADA because I got tired of Modbus Poll. Not because it's bad — it's the industry standard — but because I wanted my own styling rules and didn't want to pay a license fee for every machine.
The hardest part was the .mbp/.mbw import. The format isn't documented anywhere. I generated files in Modbus Poll 10.5, went through them byte by byte, and built a parser/writer that round-trips them exactly. You open your old config folder, change an alias, and nothing else is touched. The original app's code was never opened — this is a clean-room job based on observed behavior.
Beyond import, I added what I was missing: up to 32 styled branches per row (the original gives you two), sparklines right in the table, alarms with acknowledge and history, computed tags like {T2 jacket} - {T1 reactor}, and a built-in slave simulator — you can spin up a TCP or RTU device and poll it with itself. The app is ~6 MB, fully local, no telemetry.
Two honest caveats: ASCII transports are unit-tested but I've run them on real hardware less than TCP/RTU. And the .mbp writer (save as Modbus Poll) is in the engine but not in the UI yet.
I'd love feedback from anyone who works with Modbus daily. Are there features you miss? Does the import work with your specific configs? Bug reports welcome, especially weird .mbp files — my corpus is small, and more real files make the parser stronger.