Add delay between Polls for devices in Modbus RTU

Hi Phil
It’s games changer for specially when you add slave mode in ignition.
Could I know the price?
Does your serial lib work in ARM like raspberry PI?

Tentatively, $400.

It should. It is in the list:

Note that this is the same library that IA switched to in the midst of v8.0, and made part of the platform before v8.1 came out. I'll be leveraging that when I release support for v8.1.

I test that lib and it works.
Can we have separate timeout setting for each ID on the same serial link?
Can we access setting via opc ua? Like timeout and dynamicly change it?

No, the timeout is per-link. Sorry. But the minimum time between requests is per-unit.

No, the architecture requires the settings be in place at device startup, so they are part of the settings record.

Does this RS-485 Mode new feature solve this issue in v8.1.25 rc1?

Added an "RS-485 mode" setting to Modbus RTU driver.

No, just turns on “RS-485 Mode” on the underlying serial library, which I think just enables tx/rcv on the RTS pin.

I also want to read 25 power analyzers with rs485 communication. I can read sequentially into the TGW 700 (modbus rtu to tcp) gateway and into Kepserver.
Is it possible to read this directly with Ignition?

Should be possible. Have you tried? (Ignition's two-hour free trial mode should let you confirm this on your hardware.)

I think it doesn't work, I did many tests.
"In queries on Kepserver"
ID1 - query-answer
wait 1 second
ID2 -
wait 1 second
ID3 -
wait 1 second
ID4 -
wait 1 second
........
ID25
I can do this in Kepserver.

"Queries in Ignition"
The device becomes busy. Where should I set the waiting time?

Ignition's native driver doesn't have such an option. My alternate driver (linked above) has something close to that, that forces a delay between requests to the same ID. Note that you'll need to have all of your tags in a tag group that is set to 25000 ms pace.

1 Like

For anyone finding this, note that the Modbus Broadcast function using slave ID zero supports a write function code only, like when Lt. Rip Masters (of Rin Tin Tin fame) tells the sergeant to get the cavalry troops mounted up and the Sergeant yells out, “Saddle up, men”. The sergeant is not expecting a reply and neither is the Modbus RS-485 bus, the expectation is the completion of some universal action. An RS-485 bus would be chaos with multiple slaves attempting to reply all at once.

https://modbus.org/docs/Modbus_over_serial_line_V1.pdf

In broadcast mode, the master can send a request to all slaves.
No response is returned to broadcast requests sent by the master. The broadcast requests are necessarily writing commands. All
devices must accept the broadcast for writing function. The address 0 is reserved to identify a broadcast exchange.

I'm aware. Due to shared code between serial Modbus and Modbus TCP, I don't actually support broadcasts on unit zero. (Modbus TCP expects unit zero to work like any other unit.)