Write Multiple OPC tags - Slow Response

Your simulator is responding an order of magnitude slower than mine.

Looks like the average response time to a Write Single Register request is ~30ms, you're doing ~500 of them because of the non-contiguous registers, that's ~15 seconds.

How can I set up a simulator as efficient as yours ?

Even using some random Modbus server like this one is fast: modbus-tcp-server¡PyPI

I'm not sure how/why your setup is so slow to be honest.

Are you testing over a WAN?

His capture showed 127.0.0.1, but his response time is more in line with VPN over WAN...

1 Like

try Modbus Slave from Witte?

I have good experience with it

I was wrong about this... it's multiple orders of magnitude :upside_down_face:

vs

(note the unit on the Y axis)

It's a slow day here...

1 Like

wait i now see you're already using modbus slave...and your writes are still that slow? i wonder if there's something funky on the firewall side on your box. try just sending a single packet over loopback and wiresharking it?

Never mind, I found the issue.

I was not writing any values to some HR registers within the specified range. That was stopping Ignition to write using Modbus function 16 even though I enabled Force Multiple Register Writes Ignition was writing one by one.

For example:
HR 1 - Write
HR 2 - Pass
HR 3 - Write
HR 4 - Pass
...

Now I'm writing to all registers, and it takes 400ms to write 1000 UDT instances.

Thank you so much to everyone!

This doesn’t force writes over non-contiguous registers, it effectively disables the use of the write single register function.

Remedied this. There's now a dead simple Modbus server docker image published to digitalpetri/modbus-server. No configuration. Listens on 0.0.0.0:502 in the container, all unit/slave ids are accepted and point to the same memory area. Modifications to coils and registers are not persisted, though this is probably the only configuration option I'm considering implementing.

kevin@fedora-x1 ~> docker run --rm -it -p 502:502 digitalpetri/modbus-server
Picked up JAVA_TOOL_OPTIONS: 
[main] INFO com.digitalpetri.modbus.ModbusServer - Listening on 0.0.0.0:502
3 Likes