Scratch Pad to Groov view using ModBus

Is there a way to view these scratch pad values in groov view using modbus. I tried calculating modbus id and address from mmp. But i couldn’t able to get the values in groov view. Attaching all the settings.

I cant test this for a few hours, perhaps even tomorrow, but if you look at the ‘MMP’ settings in the table hear, you should be up and running.

Try this:

Set the Unit Id to 110 in the “Edit Modbus Device” screen
Uncheck Use base-one addressing as well to match the MMP calculator so you don’t have to add 1 to everything in the tag setup.
Set your 32-bit value order and 64-bit value order to first register is most significant (big endian).

On the tag setup use Holding Register.

Report back if it doesn’t work and I can do a quick test on my bench here for you.

Edit: Also must set the port to 8502.


I can second everything philip says, but I’d also like to add: do you need to access it via Modbus for some reason? You can use the Opto 22 I/O Unit device type to communicate with it via MMP and then just use the MMP addresses directly:

1 Like

I am able to see the value but it doesn’t match the scratch pad values.

One of our client asked for some of float table and integers from the pac control to send it to their scada using modbus. To test out the modbus works i am trying to communicate between 2 controllers using groov view modbus. But still i dont get proper values on my groov view after using all parameters said by philip.

Keep in mind that getting it working in groov View wont translate to the customer scada. (Modbus is a fickle beast).
ie, be mindful of the time you are spending that is not progressing the task.

Yes, This is our first project working on modbus. I am trying to figure out how the things work. It would be really helpful if you guys help me out on this.

I just now followed @philip directions (blindly) to ensure it works.
Spot on.
MMP to Modbus in groov View… Thanks for the help Philip.

I set everything according to philip but still i am not able to read proper values.


This bit here on your settings is wrong:

You have it set for first register is least, it should be first is most.

Here is how it should look:

Finally got it working. Thanks beno, philips and jonathan. Still things i want to know is will this work for scada or no? is there any other way to go around for scada modbus

Modbus is pretty universal, if your customer scada has a way to configure it, like the byte order, registers and mostly importantly, device ID (Opto MMP is so large it uses more than one device ID, some scada modbus implementations that I have seen cant cope with this), you should be, with a bit of trial and error (just as you did with groov View now) be up and running pretty quickly.

There is no way we can say ‘yes or no’ if it will work in your customers scada since there are 100’s of them and we can’t test them all.

1 Like

Sounds like you need to give some info to the SCADA person. If I was wanting to find out what info to read from a modbus device, this is the information I would want:

Protocol: Modbus TCP (Not RTU)
IP Address: The Opto22 device IP
IP Port: 8502 (hopefully the can change this, since 502 is not supported by Opto22)
Unit Id/Slave ID: 110 (Hopefully they can set this with Modbus TCP, some can’t)
Function Code: 3, Holding Registers
Start Register: 4097
Start Address: 4096 (What hits the wire)
Qty of Registers: 2 times the number of float values (2 registers/tag)
Data Type: 32-bit Floating Point IEEE-754
Byte-order: Big endian / network order

I can only dream that I could get that info from every modbus device manufacturer, instead we get poorly written modbus documentation that is many times longer than the modbus spec itself and gets many things wrong and you can still only get it right by trial and error - that is the typical state of modbus.


Thanks philip for the detailed explaination on this. From my understanding correct me if i am wrong. In opto controller we are just pushing the values to scratch pad from pac controller. The scada platform grab the variables/values by using modbus parameters to get these values from the scratch pad?!

Guessing with experience here, but 0.2% of scada can do MMP calls, 10% can do REST API calls, 80% can do OPCUA, 99.0% can do ModbusTCP calls.