We are using Ignition 7.9.6 as our process historian for a water treatment plant. We also are exploring it for use in our Water Distribution system. There are many uses for accumulation calculations for the utility. Our legacy SCADA has built in functions for generating and resetting accumulations of signals such as flow, for this hour, last hour, this day, last day, this month, last month, etc. These are useful when doing demand calculations to manage water supply; since demand changes each day based on diurnal swings, each season, and also with weather. Better demand calculations result in better process information which means better decision making at the treatment facility and for distribution storage management.
Ignition does not have any ‘out of the box’ accumulation functions (e.g. integration, or ‘area under the curve’ with respect to time) which may be employed for this purpose. There ARE tag events which access currentvalue, previousvalue, etc. which could be modified to generate some type of accumulation calculation; there are also HOUR METER and EVENT METER in transaction groups, which provide a similar but not identical function to accumulation. I can also imagine using a gateway script, probably a timer, to accomplish this.
I would like to be able to create something like a subroutine or template so that I can develop the logic once, and apply it to multiple instances of tags. For this purpose pairing the logic with a UDT may be desirable to enforce structure, data typing etc. In addition to being able to accumulate over differing time frames such as hour, day, month, the implication is that there must also be an associated reset to the total for each of the various time frames.
This needs to be something that can be developed by a process control technician, but not necessarily an SQL expert. It also must be manageable over a long lifespan, and fairly easy to troubleshoot - the output should be easy to get to, think logging and where does it go?
Since there are so many options, I am very unsure of how best to proceed. I don’t want to spend a lot of time developing something that either already exists, or may be better accomplished in another way.
Does anyone else have experience developing and implementing accumulator functions to create values logged to either database tags or memory tags? The accumulated values would be referenced in charts that show today’s process vs. yesterday’s process, or even todays vs. any day in the past? I’d appreciate your input on what you have learned and how best to implement this.