Export: Time Stamps
Problem
The EPICS time stamps provide accuracy up to the nanosecond level
and the ChannelArchiver saves those stamps without loss. The clocks
of multiple I/O controllers can be synchronized to a high degree, so
time stamps remain comparable even if the channels originate from
different machines.
A problem arises when you compare different channels. The time
stamps might differ slightly because a single CPU cannot scan
several channels exactly at once. In addition, scan tasks on
different machines are not synchronized, you might also want to
compare channels that were scanned at different rates or were
archived on change ('monitored').
The net result is that for a given exact point in time the archiver
will seldom find more than one value. When exporting in a
spreadsheet format, '#N/A' is used to indicate this:
Time |
A |
B |
3/22/2000 17:02:28.700986000 |
0.0718241 |
#N/A |
3/22/2000 17:02:28.701046000 |
#N/A |
-0.0860064 |
3/22/2000 17:02:37.400964000 |
0.0543581 |
#N/A |
3/22/2000 17:02:37.510961000 |
#N/A |
-0.111776 |
... |
|
|
In the example, the time stamps of channels A and B are obviously
"close", but since they are still different and cannot
simply be put on a single line in a spreadsheet format.
You can still plot this data, even with interpolated lines, but
calculations like "A-B" will always yield '#N/A' for the
example above since either A or B is undefined.
Filling
When the "Fill" option is enabled, the previous value of a
channel will be repeated, filling what used to end up as
"#N/A" in the original data:
Time |
A |
B |
3/22/2000 17:02:28.700986000 |
0.0718241 |
#N/A |
3/22/2000 17:02:28.701046000 |
0.0718241 |
-0.0860064 |
3/22/2000 17:02:37.400964000 |
0.0543581 |
-0.0860064 |
3/22/2000 17:02:37.510961000 |
0.0543581 |
-0.111776 |
3/22/2000 17:02:39.410965000 |
0.139948 |
-0.111776 |
... |
|
|
The remaining '#N/A' entries are caused by special conditions,
e.g. a disconnected channel. An initial undefined value appears
because the filling mechanism starts only after the channel has a
valid value.
To remind you that these time stamps are not the exact ones from the
archive, a comment is added to the header of the exported data. (A
similar remark is added for the following, time-stamp-changing
operations)
Linear Interpolation
With linear interpolation, time stamps will be chosen with a fixed
period as specified in the "Interpolate" field. The values
are then interpolated from the raw values:
Time |
A |
B |
3/22/2000 17:02:28.700986000 |
0.0718241 |
#N/A |
3/22/2000 17:02:28.701046000 |
#N/A |
-0.0860064 |
3/22/2000 17:02:30.000000000 |
0.0692162 |
-0.089806 |
3/22/2000 17:02:32.000000000 |
0.065201 |
-0.0956562 |
3/22/2000 17:02:34.000000000 |
0.0611858 |
-0.101506 |
3/22/2000 17:02:36.000000000 |
0.0571706 |
-0.107357 |
Again some undefined values remain initially and whenever special
conditions don't allow interpolation.