Fastest data rate to Ignition

I have pressure test application that requires real time high resolution trend graph and trend reporting feature from a Pressure Transmitter.

For proof of concept, I have EPIC setup to generate tag data every 20ms.

I have a trial version of Ignition 8.1 on computer near EPIC.

On Ignition, I tried polling data via Opto22 Driver, it can only poll data at 300ms the fastest.

Using Node-Red, I send MQTT Data to MQTT Distributor to MQTT Engine, it can only received data at 300ms the fastest.

Any other way to stream data into Ignition?

Anyone can share a tool or script for Ignition to write data to file as it comes in that is low level (bypassing other input data processing)?

Thank you.

What analog input module are you using?
What is the data freshness specification on that module?

Hi Ben,

I didn’t look at that specs. Last time I check, opto22 module can go down to 10ms refresh rate.

I believe the bottle neck is on the EPIC-Ignition communication.

But 300 ms inter-system throughput still relative slow for existing input module technology?

I found one obvious solution though, but do not know if it is robust.
Program node-red to write data to a database.
Configure Ignition to read simultaneously.

Can a database manage this kind of punches?

Make sure you are adjusting the data scan rate setting on the device page on the gateway: image

The opto driver ignores the scan rate of the tag group that is setup in Ignition Designer.

I don’t use anything faster than 1000ms, so I’m not sure if it will go any faster than what you are seeing. Also, every public tag is read, so the more tags you have the slower it may go.

Another option would be to use the Modbus TCP driver in Ignition. That will honor the tag group scan interval and you can set it to read just the tags you need faster.

1 Like

That scan rate on Opto22 driver can only go down to 250ms.

I am looking for solution similar to DMAC (direct memory access) if you will.
Where external software (like ignition) can access PAC variable natively. Otherwise analog input refresh rate of 10ms is useless for ignition, if inter-system throughput is 250ms.

Probably Modbus can do better.
Sometimes I give up using Modbus, I keep forgetting how to refer to its naming convention.
Please, anyone, remind me how to setup Modbus TCP server via PAC Control.
I gave up using Modbus server on NodeRed.

Now I stick with NR writing to database.
If PAC Control can natively write to database, it will be more efficient.

There is a built-in Modbus TCP server for the IO on the EPIC, you don’t need to do anything in PAC Control unless you want access to variables.

In groov manage you can go to the IO, IO tools, MMP Calculator and select the data type, module and channel and it will give you the Modbus Unit Id (slave) and address to use:

So to read an analog point on module 1, channel 3, you would setup an Ignition tag with the OPC address of [Gateway device name]21.HRF2145 where the gateway device name is what you called the Modbus TCP device in the gateway and the register is one higher than the address (unless you turned on the zero-based addressing check in the advanced options on the gateway device, then you could use 2144).

Again, not sure how fast this will respond, so you will need to test it. Let us know what you find.

This sounds a lot like using our MMP library with Python. (or C++ etc).
Its fast and can easily connect directly to a database.

If it must go through Ignition, then you may also be able to setup Opto22 MMP streaming from the PR1 (see the OptoMMP protocol guide 1465) to the Ignition gateway and use IAs UDP driver to parse the data. This would take a bit of work to make happen though and Ignition may not be able to process the data at the speeds you are wanting: