BeginProg
Scan(1,Sec,10,0)'<<<<Buffers added
SubScan(5,mSec,190)'<<<<Interval, Units, and Count determine speed and number of measurements
VoltSe(BurstSE(),8,mV2_5,1,False,100,250,1.0,0)
CallTable BurstSETable
NextSubScan
NextScan
Many variations of this basic code can be programmed to achieve other burst rates and duty
cycles.
The SubScan() / NextSubScan instruction pair introduce additional complexities.
The SubScan() / NextSubScan Details
(p. 231), introduces some of these. Caution
dictates that a specific configuration be thoroughly tested before deployment.
Generally, faster rates require measurement of fewer inputs. When testing a
program, monitoring the SkippedScan
(p. 628), BuffDepth (p. 612), and
MaxBuffDepth
(p. 620) registers in the CR1000 Status table may give insight into
the use of buffer resources. Bear in mind that when the number of Scan() /
NextScan buffers is exceeded, a skipped scan, and so a missed-data event, will
occur.
7.9.14.2.1 Measurements from 101 to 600 Hz 2
• The number of Counts (loops) of a sub-scan is limited to 65535
• Sub-scans exist only within the Scan() / NextScan structure with the Scan()
interval set large enough to allow a sub-scan to run to completion of its
counts.
• Sub-scan interval (i) multiplied by the number of sub-scans (n) equals a
measure time fraction (MT
1
), a part of "measure time", which measure time is
represented in the MeasureTime register in table Status Table Fields and
Descriptions
(p. 603). The EndScan instruction occupies an additional 100 µs
of measure time, so the interval of the main scan has to be ≥ 100 µs plus
measure time outside the SubScan() / EndSubScan construct, plus the time
sub-scans consume.
• Because the task sequencer controls sub-scans, it is not finished until all sub-
scans and any following tasks are complete. Therefore, processing does not
start until sub-scans are complete and the task sequencer has set the delay for
the start of the next main scan. So, one Scan() / NextScan buffer holds all
the raw measurements inside (and outside) the sub-scan; that is, all the
measurements made in a single main scan. For example, one execution of the
following code sequence stores 30000 measurements in one buffer:
Scan(40,Sec,3,0) 'Scan(interval, units, buffers, count)
SubScan(2,mSec,10000)
VoltSe(Measurement(),3,mV5000,1,False,150,250,1.0,0)
CallTable All4
NextSubScan
NextScan
Note Measure time in the previous code is 300 µs + 19 ms, so a Scan() interval
less than 20 ms will flag a compile error.
• Sub scans have the advantage of going at a rate faster than 100 Hz. But
measurements that can run at an integral 100 Hz have an advantage as
232