COV histories

COV (Change of Value) histories are often used in place of interval histories (records created at a fixed interval regardless of value change) for control points where the value does not change frequently. Using COV histories may consume less memory for storage. The records COV histories create indicate when the value of the control point changed, whereas, interval histories provide consistent record counts at the configured intervals, which makes analysis simpler at the expense of, perhaps, not knowing exactly when the value changed within the interval.

The framework handles COV history records in a special way.

Figure 53.   The AnalyticService’s NEQL test for COV identity
Image

The Test Cov Neql property on the AnalyticService determines if a history contains COV (irregular interval) histories. This property, which defaults to hs:hisInterpolate=’cov’, relies on the hs:hisInterpolate tag from the Haystack tag dictionary being applied to COV histories in the history database.

The Haystack tag dictionary is a smart tag dictionary with a tag rule that applies the hs:hisInterpolate tag as an implied tag to any control point with a history extension. If the history extension is a COV history (records at irregular intervals), the hs:hisInterpolate tag value is cov and if the history extension is an interval history (records at regular intervals), the hs:hisInterpolate tag value is linear.

The tag rule does not automatically apply the hs:hisInterpolate tag to COV histories in the station’s database, which are imported, such as Niagara history imports or BACnet history imports. You must manually apply this tag as a direct tag with the cov tag value. This is similar to the process of applying a direct n:history tag to histories imported using a BACnet history import.

Consider a Boolean point named Occupancy with a COV history extension, where the value is controlled by a schedule that is active from 8:00 AM – 4:00 PM Monday through Friday. The Occupancy point has the a:a and hs:occupied marker tags applied.

Figure 54.   Bound table with missing hs:hisInterpolate=’cov’ tag
Image

A bound table with an Analytic Table Binding may be used to display the records from yesterday. Even though the binding’s Interval property is configured to create a record every Fifteen Minutes, the framework returns only two expected COV records: one for 8:00 AM and the other for 4:00 PM. The framework returns only the actual COV records because the control point does not have the hs:hisInterpolate=’cov’ tag applied.

If the hs:hisInterpoalte=’cov’ tag is applied to the Occupancy control point, the same bound table displays a record for every 15 minutes by filling in the missing intervals with the best known value.

Figure 55.   Bound table with hs:hisInterpolate=’cov’ tag applied reporting from yesterday
Image

The framework uses the hs:hisInterpolate=’cov’ tag to automatically fill in missing records from yesterday for the requested interval where the requested time range has a COV record available. The framework does not fill in future records, such as a time range of today where the last record in the history is 8:00 AM and the current time is after 8:00 AM.

Figure 56.   Bound table with hs:hisInterpolate=’cov’ tag applied reporting for today
Image

In this example it is necessary to enable the Missing Data Strategy to use an Interpolation Algorithm, such as K Nearest Neighbour.

Figure 57.   Missing data strategy configuration
Image

The missing data strategy fills in the missing records at the requested interval based on the Interpolation Algorithm. The trend flags for the interpolated records provide a text indicator, such as {Knn}, which indicates that the framework used the K-nearest-neighbour interpolation algorithm to display the data.

Figure 58.   Bound table with hs:hisInterpolate=’cov’ tag applied using K Nearest Neighbour

xNAFBoolea

Image