Automating address mapping

We have configured an Ignition system to allow the customer to add new machinery through the user interface. Using a script we can add a new Modbus TCP/IP device using system.device.addDevice.

Is it also possible to set up address mapping in the script as well? This would allow us to refer to addresses using the PLC registers and just use Modbus as the transport mechanism.

Address mapping is optional for Modbus TCP devices. It’s purpose is to give users something to see in the OPC browser. If you are automating, you can just create the tags with the appropriate addresses and data formats.

1 Like

Yes, but workers on site are much more familiar with the PLC native addressing, so it would be one less layer for them to learn about if they ever have to maintain the system.

For example, if they are dealing with register D210, they will see an OPC item path like

ns=l;s=[Device]1.D210

instead of a Modbus OPC item path like

ns=l;s=[Device]1.HR211

(including an annoying offset!)

Address mapping works well so it would be a shame not to be able to use it when we automate the process.

Ah, OK. Well, the entire address map for the device is stored as a string in a property named “AddressMap”, so try to set that in the driver’s deviceProps. You might have to dig around in the SDK example (the modbus driver is published code) for the format. Look at its ModbusStringParser.toParseableString(). From a quick look, it’s fairly predictable. You can get some samples, too, if you look in your server’s internal database at the table ModbusTcpDriverSettings.

1 Like

OK Phil, thanks.

I was trying to access the server’s internal database on a 7.9.2 server recently but I couldn’t find it. Where do I look?

I just had to dig around a bit, since its not linked in the web UI any more: http://servername:8088/main/web/status/sys.internaldb

1 Like

Thanks Phil. Useful but dangerous!

1 Like