PLC data logging and Ignition synchronization

I have lately came across an requirement that showed up in several tenders and left me a bit baffled. It can be summed up something like this:

  • basic setup, several PLCs on a network connected to the SCADA server (since I’d be building a system with Ignition, this is Ignition GW)
  • for simplicity, suppose Ignition GW is a standalone version, with DB installed on the same machine
  • in normal operation, data from the PLC is polled and using tag historian stored stored in DB
  • BUT: in case that GW goes offline, PLC should log data locally (for up to 24 h) and when the GW starts again all the locally stored data in all of the PLCs should be synchronized into the database.

Let’s suppose PLC supports data logging and has enough memory for all the tags for 24 h. We usually work with Micrologix 1400 or Siemens S7-1200, although we don’t have experience with data logging function.

Does anyone have a suggestion how to approach this problem and get historical data from PLC into Ignition and ultimately to correctly fill historical DB?

I’ve done something similar to this for transaction data not specifically historical data but the concept should be the same.

You push data into a fifo, and then using a transaction group you are always looking at the top of the fifo for new data to log. When there is data, log the data and once the data is logged set a flag in the PLC to pop the fifo.

I’ve never done this with a historical group, but I assume that you could do that same thing. Only caveat is that you would need to possibly use the PLC time for the data record time if that is important to have that time stamp at the time of the data.

As @bschroeder says, you create FIFO in the PLC. The PLC has to trigger its own data logging into the FIFO. Ignition has to monitor the FIFO for new data and drain it to the DB. Ignition’s tag historian has no way to do this.

I tend to script the data transfer instead of using a transaction group, mainly to have more robust handshaking.

+1 to @bschroeder’s & @pturmel’s suggestions. You’ll need to store timestamps along with the data in the PLC FIFO buffer. If you want to use Ignition’s historian functionality, you’d use system.tag.storeTagHistory to store the records into the historian as you drain them from the FIFO.

Thank you everybody, these are some great tips on how to start with this.

Interesting specification ! Please keep posted on the success and difficulties of It’s implementation! Ideally plc vendors should provide such a store and forward mechanism in the plcs in my opinion !

Totally not applicable. I’m not entirely sure you aren’t a spammer. /: