Symptom
A trend shows a flat line, a straight interpolation, or a blank interval where the process was running; reports for the period are missing data; the gap appears on one tag, on all tags from one controller, or on every tag; the gap coincides with a communication alarm, a server event, or maintenance.
The short answer
Trend Gaps
A gap in a trend means the historian has no samples for that tag over that period, and the shape of the gap says why. A gap on every tag from one source at the same time is a communication loss or a source outage; a gap on every tag in the system is the historian itself stopping, falling behind, or running out of space; a gap on one tag while its neighbors are fine is that tag, its scan class, its compression settings, or a rename that split its history into two names. Gaps that end with a burst of backfilled data mean a buffer worked; gaps that stay empty mean nothing was collected or nothing was forwarded. Read the historian event log for the period, the communication alarms for the source, and the tag configuration, and the cause is usually plain.
Key points
- Which tags share the gap tells you where it came from: one tag, one source, or the whole historian.
- A gap that backfilled later is a buffer that worked; a gap that never filled is data that was never collected or never forwarded.
- Compression and exception settings that are too coarse make a slow-moving signal look like a gap.
- Renamed or re-created tags leave the old history under the old name.
- A clock jump on the source or the server puts samples in the wrong place, which reads as a gap and a pile.
Possible causes and what to check
| Possible cause | What to check |
|---|---|
| Communication loss to the source | Every tag from one controller or one site has the gap, and the communication alarm log shows an outage for the same period. Fix the link; see whether the collector buffered. |
| Historian service stopped or restarted | Every tag in the system has the gap; the server event log shows the service stopping, a reboot, an update, or a failover. Check the redundancy and the maintenance record. |
| Collector or interface node down | All tags handled by one collector; the collector log and its connection to the historian server. |
| Store-and-forward buffer full or not forwarding | Gaps that should have backfilled and did not; the buffer size, the disk on the collector, and the forward status. Size the buffer for the longest expected outage. |
| Compression or exception deadband too wide | Slow, steady tags show long straight lines with no samples; a level that drifted within the deadband for hours. Tighten the settings for that tag. |
| Scan class or collection disabled on the tag | One tag with no data since a date; the tag was turned off, put in a scan class that does not run, or has no source address. |
| Tag renamed or re-created | History stops on one name and starts on another the same day. Merge or map the histories, and stop re-creating tags. |
| Clock jump on the source or the server | Samples time stamped in the wrong period, producing a gap and a cluster; the time synchronization log. Fix the time source. |
| Disk full or archive not created | The historian stopped writing when the archive filled and no new archive was ready; the server disk and the archive schedule. |
| Bad quality treated as no data | The source reported bad quality through the period and the trend hides bad samples; the raw data shows samples with bad quality flags. |
Read the shape
| Gap pattern | Points at |
|---|---|
| One tag, others from the same source fine | The tag: collection off, wrong scan class, too much compression, renamed |
| All tags from one source | Communication to that source, or the source itself |
| All tags through one collector | The collector node or its link to the server |
| Every tag in the system | The historian service, its disk, its archive, or a failover |
| Gap that filled in later | A buffer that worked; the outage was real but the data survived |
| Gap followed by a cluster of samples at one time | A clock jump, or a backfill stamped with arrival time instead of source time |
| Straight line between two distant samples | Compression: nothing exceeded the deadband, so nothing was stored |
Working it
- 1
Bound the gap
The exact start and end from the raw samples, not from the trend display, which interpolates.
- 2
Find its neighbors
Other tags from the same source, the same collector, and the system at large, for the same period. This step alone classifies most gaps.
- 3
Read the logs
The communication alarm history for the source, the collector log, and the historian server event log for the period.
- 4
Check the tag
Collection enabled, scan class, source address, compression and exception settings, and the tag history for a rename.
- 5
Check the buffer
For a communication gap, whether store-and-forward was configured, whether it filled, and whether it forwarded; the collector disk.
- 6
Check the clock
Time synchronization status on the source, the collector, and the server; a step in the time log during the period.
- 7
Fix the cause, then the record
Restore collection, then decide with the operators whether to annotate the gap, backfill from a local source, or leave it and note it in the report.
Buffers and outages
The design that survives a communication outage without a gap is a buffer at the collector, sized in hours or days for the longest outage the site will see, that stores samples with their source time stamps and forwards them when the link returns. A remote site with a local controller that logs its own values can be backfilled from that log after a long outage if the historian supports it. What cannot be recovered is data that was never collected, which is why a controller-side buffer or a local logger matters at sites whose data has regulatory value.
Regulatory records
Where the trend is a compliance record, a gap has to be explained, not just fixed. The explanation is the outage record, the maintenance record, or the instrument record for the period, attached to the report, and the gap annotated in the historian if the system allows it. Manufacturing a value to fill the hole is not an option; a documented gap is a routine finding, an invented reading is a violation.
Frequently asked questions
- The trend shows a flat line, not a blank. Is that a gap?
- It depends on the display. Many trend tools draw a line between the last sample before and the first sample after an interval with no data, which hides the gap. Look at the raw samples for the interval; if there are none, it is a gap, and the display setting to show gaps as breaks should be turned on.
- The communication was down for two hours and the data came back afterward. Why is there still a gap on some tags?
- The buffer forwarded the tags it was buffering; tags not in the buffered set, or added after the buffer was configured, or handled by a different collector, were not stored. Review which tags the buffer covers.
- Why do gaps appear only on the historian and not on the operator screens?
- The screens show the live value from the controller over one path; the historian collects over another, often through a separate interface or server. One path can fail while the other works, and the gap is on the failed one.
- Can I backfill a gap from the chart recorder or the controller log?
- If the historian supports inserting time stamped values and the source is a recorded measurement, yes, with a note that the values were imported and from where. Values estimated by a person are not backfill.
Related topics
- Historian ProblemsHow a historian goes wrong and how to find each fault: gaps, wrong values, detail never stored, disks that fill, slow queries, backfill that never arrives, and unreadable archives, with the collector, queue, configuration, and storage checks that locate it.
- Historian Data CollectionDeciding what the historian stores and how often: polled versus exception collection, the deadband per tag, rates for control loops, levels, totals, and compliance values, timestamps at the source, quality codes, calculated tags, and the tag list review that keeps a historian from filling with noise and missing what matters.
- Historian CompressionHow historians store years of data on a disk: exception deadbands at the collector, swinging door compression at the archive, what each discards and what it keeps, the settings that turn a trend into a staircase, lossless alternatives, and how to check that the compressed data still tells the truth.
- Time SynchronizationWhy every clock in a control system must agree and what happens when they do not: out-of-order events, historian gaps at daylight saving, authentication failures, wrong totals. The time source and hierarchy, how each device is synchronized, and the checks.
- Duplicate or Missing HistoryA historian with two records for one moment, or none: a redundant pair both collecting, a buffer that forwarded twice, a tag under two names, a daylight saving shift, or a source that resends on reconnect. Cleaning the record without inventing data.
- Values Frozen On ScreenThe HMI shows numbers that are not changing while the plant runs. Whether the controller, the communication driver, the tag server, or the display stopped, and the order to check them in.
Direct contact
Have a controls question?
Reach Eric Sullivan directly about anything on this site, a controls or automation topic, or one of his personal projects.