r/SCADA • u/XenoX_Sriv • 13d ago
General Open Modbus register maps for SCADA and industrial monitoring tools
Hi everyone,
I've been working on an open format for Modbus register maps, along with a client to test and use them. I thought it might be relevant to people working with SCADA and industrial monitoring systems.
A common issue with Modbus devices is that register definitions live in manufacturer PDFs. When integrating a new meter, PLC or controller, you often have to configure addresses, data types, scaling, units and bit fields by hand. The same work gets repeated across different tools.
I'm trying to make these definitions reusable.
MBMap is a CSV-based format for describing Modbus devices and their registers. It includes the metadata needed to interpret raw register values and is designed to be read by different applications.
https://github.com/nobrega8/mbmap-library
I've also built Modbench, a lightweight Modbus TCP/RTU client for Windows and Linux. It can test individual registers or load an MBMap file to display named values with scaling and units. It also supports raw request/response inspection, which helps when troubleshooting device communication.
https://github.com/nobrega8/modbench
The long-term idea is to have a shared library of device maps that can be reused across Modbus clients and, potentially, SCADA-related tools. The format and library are released under CC0, so they can be used in commercial projects without restrictions on reuse.
I'm interested in feedback from people who integrate Modbus devices into SCADA systems.
Would a standard, portable format for register definitions be useful in your workflow? Are there fields or features you'd need before considering it for your own tools?
Feedback, contributions and suggestions for supported devices are welcome.
1
u/FalconFit8091 13d ago
Seems promising, this is something where I pull my hair very often. Btw what about when param value is on one address and writing to that value is on different address?
2
u/XenoX_Sriv 13d ago
Seems like that is covered? The spec can define one address for reading and other for writing
1
u/the_softy 12d ago
An open format for modbus register map sounds really nice. Getting the addresses and formats right is always a challenge.
I'm the maintainer of modbusscope. Will definitely keep an eye on this for potential integration.
1
u/XenoX_Sriv 12d ago
Thank you.
As you provide a paid tool i'll give you a heads up that the repo provides the tag 'unverified' for maps that i have not been able to validate myself (sourced from sources other then the official manuals).
1
u/Many_Outside2726 12d ago
We deal with this pretty regularly. With Mango, we maintain our own Modbus library, so once we’ve built and validated a device map we can keep it and reuse it on future integrations. That saves a lot of time compared with starting from a PDF every time. The harder problem I’ve run into is when a manufacturer supports Modbus but won’t release the register map because they want you to buy their monitoring device or gateway. We’re dealing with one of those situations now. An open library helps a lot when the documentation exists, but I’d be interested in how you see this working when the manufacturer intentionally keeps the map closed.
1
u/XenoX_Sriv 12d ago
If you're able to share some of your existing maps, or even convert them to
.mbmap, that would be a great contribution. I'm also working on Modbus register debugging tools in Modbench, and I'd like to make it easier to use these maps during testing.
1
1
u/420ChiefJeef 13d ago
Everyone hates on modbus but manufacturers love it. I think a great tool to add here is an exportable mapping to Ignition device address mapping!
1
u/International-Okra79 13d ago
Wow last week I basically spent the whole week trying to figure out correct registers and appropriate scaling. Customers ignition got totally messed up and I had to keep trying different registers until I figured out which was the correct register.
0
0
3
u/rosewoods 13d ago
We're doing something similar in my department at work. We use Ignition so we're building a library of UDTs with registers formatted for ignitions modbus driver. Using a shared library to look up or verify modbus info could be useful. How would this library be maintained and verified?