Manufacturer specific Modbus codes

I have a device that I use with Ignition via Modbus connections. We pull data from it using holding registers (0x03) regularly. However, one data value is not available in the holding registers, instead, it's available via a manufacturer specific code, 0x41. Is there a way to use this code within Ignition. I thought about writing a Python script to do the communications, but the device only allows one Modbus connection on Port 502, so I'd have to shut down all my other communications to the device to send the 0x41 code.

No, not with our driver.

I've had an idea for how stuff like this can be done if I ever get a chance to rewrite the driver some day, but it doesn't help you out now.

Maybe @pturmel's driver can do it?

Maybe you should try to contact the device supplier and ask them to open multiple modbus connection functions. I have encountered this situation more than once, and they artificially blocked this function due to "stability" and "reduced after-sales". Maybe changing a setting in advanced configuration will solve the problem.

Yes, with scripting, via system.opc.rawModbus(). Complete instructions are in the User Manual.

Thanks for all the suggestions. That single value probably isn't worth me re-working all my tags with a new driver. I'll just ignore it for now until the vendor updates their maps.

Yes, while the address formats are generally compatible, there are some differences. If you do the following with the IA driver, you can drop mine in its place:

  • Use zero-based addressing (the IA default is one-based),

  • Do not use mapped addresses (but the IA driver has nothing to browse without them),

  • and always include the slave unit number in your addresses (IA defaults to zero, mine defaults to one).