Choosing the Correct Storage Method in Wonderware Historian
The most frequent request I seem to get from our customers, when creating a new Wonderware Historian tag, is to describe the different storage methods that could be selected for the tag. In this blog entry, I would like to explain the available storage options for tags and the various situations where one or the other storage method should be used.
However, before we dive into the technical aspects of creating a new tag, please refer to the diagram below for a quick review of the Wonderware Historian architecture.
The Historian consists of several programs, also called subsystems, which interact with each other to comprise the Historian. The Data Acquisition Subsystem is responsible for communicating with the I/O Server to read real world values from the manufacturing process. The Data Storage Subsystem receives the values from the Data Acquisition Subsystem and saves them to the Historian Database. As we will see in more detail below, there are several options for saving these values to the database. Finally, the Data Retrieval Subsystem provides the means for a user to query the Historic Data. There are several retrieval methods available for reading the historic data, and I will describe those options in a follow-up blog entry.
When a new historian tag is created to save a real world value, such as a tank level or product temperature, the data storage method has to be defined. This will, specify how the tag’s value is saved. The choice of storage method affects the number of values written to disk and the resolution of the data that will be available for later retrieval.
The following storage methods are available when creating a new tag:
- No data values are stored
- All data values are stored (forced storage)
- Only changed data values are stored (delta storage)
- Only data values that occur at a specified time interval are stored (cyclic storage)
No Data Storage
Selecting the no data storage option is very useful in situations where the Historian’s open architecture is used to provide current production values, and there is no need to retain the historic data. For example, we have crated tags with no data storage options to provide live or current values for inventory control applications. In those cases the external application was requesting current tank levels at the beginning of each shift.
The Forced Storage option saves each data value as it is read from the real world. This option is useful for those situations when the I/O server is reading real world values by exception. That is, each time the value changes, this method will save the new value.
If the I/O Server is set up to poll the value at a given frequency, instead of exception, then this method will save the value at the polling rate defined in the I/O Server. In that situation, the Forced Storage will be identical to the Cyclic Storage method, with the advantage that higher than 1 second data save rate can be achieved, since 1 second is the fastest data save rate available for Cyclic Storage.
We use the forced storage options in situations where it’s critical that every value is recorded. For example if a packaging line’s scale is providing the weight of each product, then using this option ensures that every product weight is recorded. Since the Historian also captures the date- and time-stamp with the value, we also have the added information as to when that product was weighed.
The Delta Storage option, also called storage by exception, saves data based on a change in the tag’s value. To decrease the resolution of tag values saved, the following filters or deadband options are available:
- Time Deadband
- Value Deadband
- Rate of Change (swinging door) Deadband
The Time Deadband defines the minimum time value that needs to elapse before the next change in value will be saved. Any change in the value within this time period will not be recorded. A zero deadband value indicates that the system will save each value as it changes.
The Value Deadband defines the percentage amount the tag’s value must change before it will be saved. Any change in value that is less than the specified deadband will not be recorded. A zero deadband value indicates that the system will save each value as it changes.
The Rate of Change Deadband defines the percentage of deviation, or the rate at which the tag value must change, in order to save the tag’s value. The Rate of Change Deadband can be used in conjunction with the Time and Value Deadbands to further refine to storage resolution. A value of zero indicates that the Rate of Change Deadband will not be applied.
We use the delta storage option in situations where the tag value stays constant for longer periods of time such as for a tank level, and there are high fluctuations or chatter in the value. Using different deadband options, the chatter can be filtered out and only true changes in the tank level are recorded. Using this option significantly reduces the volume of data that is generated, compared to a situation where every change is recorded.
The Cyclic Storage option saves data based on a defined time interval, or storage rate. With this option, tag values are saved at the defined time interval, but only if the data value changed during the time interval. The storage rate selected needs to be at the I/O server polling rate or slower. There is no sense of saving values faster than available from the real world. On the other hand, if the storage rate is too slow, changes in the tag’s value might be missed.
The following predefined storage rates are available to choose from:
- 1, 2, 3, 5, 6, 10, 15, 30 seconds
- 1, 2, 3, 5, 6, 10, 15, 20, 30 minutes
- 1 hour
In this blog entry, I described the different storage options available in the Wonderware Historian. In the follow-up blog entry, I will address the Data Retrieval Subsystem, and the available options to query historic data. An interesting side note to consider: the choices for querying historic data are independent of the selected storage option, and the Historian will fill in missing tag values during data retrieval.