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)