Turning Point Analysis with dataTaker Data Loggers
Flexible dataTaker Systems Let You Monitor Almost Any Value
CHESTERLAND OH - Turning Point Analysis is a method of data compression for arbitrary waveforms. The incoming waveform is sampled at speed and analyzed in real time to identify the turning points (Maxima and Minima) of the waveform, and the value and time of the turning point are also logged to memory for later recovery. The Applications Specialists at CAS DataLoggers have put together this tutorial to examine this subject in detail, including a simple method of noise rejection (dead banding) for dataTaker DT800 and DT500 data loggers.
Applications:
Turning Point Analysis can be used in a large number of applications where a waveform needs to be monitored. Typical examples include but are not limited to:
· Cyclic fatigue monitoring of structures
· Wave height monitoring of coastal structures / shore erosion
· Tank level monitoring
· Air condition monitoring
· Pressure fluctuations in pipes
· Temperature controller monitoring
Algorithm:
The incoming waveform is sampled and the current data point (n) is compared with the
previous data point (n-1). If the difference between the two samples is positive, then the signal is rising (a=1), and if negative, then the signal is falling (a=-1).
By comparing the difference of a-1 to a when the signal is rising or falling, a-1 - a = 0. At the next reading after a maxima turning point, the difference of a-1 - a = 2 and for a minima a-1 - 2 = -2, thus not only giving a clear indication of n-1 being a turning point but also indicating if a maxima or minima. This technique can also be applied to drawing an envelope around a waveform.
If n > n-1 then a = 1 (Indicates a rising signal)
If n < n-1 then a = -1 (Indicates a falling signal)
If (a-1)-a < 0 > then n-1 is a valid turning point
In the dataTaker data logger code, this is represented by the command lines:
1CV(DF,=5CV,W)
6CV(DF,=6CV,W)=-1x(5CV<0)+(5CV>0)
The amount of data compression is the ratio of the twice the signal frequency to the sample rate. I.e. for a 2 Hz signal and 200 Hz sample rate, the compression ratio is 200 / (2x2) = 50:1. This has a great impact on storage capacity, data efficiency and maximum sampling duration.
Noise Rejection:
The turning point algorithm is very sensitive and is quite capable of extracting white noise on a system as actual turning points. This is particularly noticeable when there is a very low frequency or static signal.
To reduce the extraction of noise as turning points, a dead band is applied around the last valid turning point. If a turning point is detected that has a value inside the range of the last valid turning point +/- the noise rejection level, then that point is rejected. If the value is outside the range, then the data point is considered to be valid and is recorded.
While this noise rejection method is simple and effective in most cases, it does
occasionally pick up interim points as turning points. These interim points can be easily identified and removed in post-processing. Other noise rejection routines will be evaluated and may be included at a later stage.
DT800 Code:
BEGIN"TP"
· Turning Point Analysis Routine for DT800
· This code logs the turning points of any waveform.
· The time of turning is recorded logged in 4CV.
· Notes: 4CV holds the time since midnight in seconds,
· this limits the time accuracy to 2 decimal places.
Known Issues:
· The noise reduction is primitive and in some instances
· will record false turning points.
· These only happens on occasion and these points can
be removed by post processing.
7CV(W)=10 '7CV hold the dead band for noise rejection
· Any turning points less that the current turning point +/- 7CV will be rejected.
8..9CV(W)=0
· Minimum noise level and Maximum noise level respectively.
10CV(W)=0
· Holds last turning point. Used for noise rejection.
· Schedule A is where the turning points are actually logged.
· Note: The X schedule must be before the fast schedule.
RAX LOGONA
2CV("TP ~mV",FF7)
4CV("Time ~Sec",FF7)
· Schedule B detects the turning point
RB,FAST
2CV(W)=1CV Shift register for reading
4CV(W)=3CV Shift register for time
1V(=1CV,GL20V,W) Read Current value (Note: Gain lock to suit)
T(=3CV,W) Read current time
1CV(DF,=5CV,W) Read difference between readings
· This Boolean in the next bit of code returns 1 if the current reading is greater than
the last (Rising 'signal) and returns -1 if the current reading is less than the last
(Falling signal)
· By taking the difference (DF) 6CV holds 2 for a maxima turning point or -2 for a minima turning point.
6CV(DF,=6CV,W)=-1x(5CV<0)+(5CV>0)
· Calculate Lower noise tolerance.
8CV(W)=10CV-7CV
· Calculate Upper noise tolerance.
9CV(W)=10CV+7CV
· Then check for turning point and noise then save turning point if valid.
IF(6CV<>-0.5,0.5)AND If a turning point AND
IF(1CV<>8CV,9CV){[10CV=2CV XA]} If the current signal is outside the noise dead band THEN
Record new turning point and Log turning point data
END
TN-0015-A0 Page 5 of 6 19 February 2004
DT500 Code:
BEGIN
· Turning Point Analysis Routine for DT500
· This code logs the turning points of any waveform.
· The time of turning is recorded logged in 4CV.
· Notes: 4CV holds the time since midnight in seconds,
· this limits the time accuracy to 2 decimal places.
Known Issues:
· The noise reduction is primitive and in some instances will record false turning points.
· These only happens on occasion and these points can be removed by post processing.
7CV(W)=10 7CV hold the dead band for noise rejection
· Any turning points less that the current turning point +/- 7CV will be rejected.
8..9CV(W)=0 Minimum noise level and Maximum noise level respectively.
10CV(W)=0 Holds last turning point. Used for noise rejection.
· Schedule A detects the turning point
RA
2CV(W)=1CV Shift register for reading
4CV(W)=3CV Shift register for time
1V(=1CV,GL20V,W) Read Current value (Note: Gain lock to suit)
T(=3CV,W) Read current time
1CV(DF,=5CV,W) Read difference between readings
· This Boolean in the next bit of code returns 1 if the current reading is greater than the last
· (Rising signal) and returns -1 if the current reading is less than the last (Falling signal)
· By taking the difference (DF) 6CV holds 2 for a maxima turning point or -2 for a minima turning point.
6CV(DF,=6CV,W)=-1x(5CV<0)+(5CV>0)
· Calculate Lower noise tolerance.
8CV(W)=10CV-7CV
· Calculate Upper noise tolerance.
9CV(W)=10CV+7CV
· Record turning point data
RX LOGONX
2CV("TP",FF5)
4CV("Time",FF5)
RZ
· Then check for turning point and noise then save turning point if valid.
ALARM1(6CV<>-0.5,0.5)AND If a turning point AND
ALARM2(1CV<>8CV,9CV)"[10CV=2CV X]" If the current signal is outside the noise dead
· band THEN Record new turning point and Log
· turning point data
END
For more information on the new Series 3 dataTaker dataloggers which measure nearly any physical value, or to find the ideal solution for your application-specific needs, contact a CAS Data Logger Applications Specialist at (800) 956-4437 or visit the website at www.DataLoggerInc.com.
Contact Information:
CAS DataLoggers, Inc.
12628 Chillicothe Road
Chesterland, Ohio 44026
(440) 729-2570
(800) 956-4437
sales@dataloggerinc.com
www.dataloggerinc.com