Campbell Scientific CR800 and CR850 Measurement and Control Systems User Manual
Page 180

Section 7. Installation
180
Alternate Start Measurement Command (Cv)
The SDIRecorder() aCv (not C!) command facilitates using the SDI-12 standard
Start Concurrent command (aCv!) without the back-to-back measurement
sequence normal to the CR800 implementation of aCv!.
Consider an application wherein four SDI-12 temperature sensors need to be near-
simultaneously measured at a 5 minute interval within a program that scans every
5 seconds. The sensors requires 95 seconds to respond with data after a
measurement request. Complicating the application is the need for minimum
power usage, so the sensors must power down after each measurement.
This application provides a focal point for considering several measurement
strategies. The simplest measurement is to issue a M! measurement command to
each sensor as follows:
Public
BatteryVolt
Public
Temp1, Temp2, Temp3, Temp4
BeginProg
Scan
(5,Sec,0,0)
'Non-SDI-12 measurements here
SDI12Recorder
(Temp1,1,0,"M!",1.0,0)
SDI12Recorder
(Temp2,1,1,"M!",1.0,0)
SDI12Recorder
(Temp3,1,2,"M!",1.0,0)
SDI12Recorder
(Temp4,1,3,"M!",1.0,0)
NextScan
EndProg
However, the code sequence has three problems:
1. It does not allow measurement of non-SDI-12 sensors at the required
frequency.
2. It does not achieve required 5-minute sample rate because each
SDI12Recorder() instruction will take about 95 s to complete before the next
SDI12Recorder() instruction begins, resulting is a real scan rate of about 6.5
minutes.
3. There is a 95-second time skew between each sensor measurements.
Problem 1 can be remedied by putting the SDI-12 measurements in a
SlowSequence scan. Doing so allows the SDI-12 routine to run its course
without affecting measurement of other sensors, as follows:
Public
BatteryVolt
Public
Temp(4)
BeginProg
Scan
(5,Sec,0,0)
'Non-SDI-12 measurements here
NextScan
SlowSequence
Scan
(5,Min,0,0)
SDI12Recorder
(Temp(1),1,0,"M!",1.0,0)
SDI12Recorder
(Temp(2),1,1,"M!",1.0,0)