beautypg.com

86 do, 87 loop – Campbell Scientific CR10X Measurement and Control System User Manual

Page 184

background image

SECTION 12. PROGRAM CONTROL INSTRUCTIONS

12-2

While 96, 97, or 98 is being executed as a
result of the respective port going high, that port
interrupt is disabled (i.e., the subroutine must be
completed before the port going high will have
any effect).

NOTE: If Control Ports 6, 7, or 8 are used
for pulse measurements or interrupt
subroutines, the CR10X will not go into the
quiescent power state (0.7 mA), if any of
Control Ports 6, 7, or 8 is high.

CAUTION: Control Port 6 cannot be used
as a pulse input or interrupt subroutine
while using any of the following instructions:
serial I/O (Instruction 15), SDI-12
(Instructions 105 and 106), and SDM
instructions (Instructions 100-102 or 107).
Error E33 will be displayed, at compile, if
the above instructions are used together.

PARAM.

DATA

NUMBER

TYPE

DESCRIPTION

01:

2

Subroutine number
(1-9, 79-99)

*** 86 DO ***

FUNCTION
This Instruction unconditionally executes the
specified command.

PARAM.

DATA

NUMBER

TYPE

DESCRIPTION

01:

2

Command (Table 12-2)

*** 87 LOOP ***

FUNCTION
Instructions included between the Loop
Instruction and the End Instruction (95) are
repeated the number of times specified by the
iteration count (Parameter 2), or until an Exit
Loop command (31,32) is executed by a
Program Control Instruction within the Loop. If
0 is entered for the count, the loop is repeated
until an Exit Loop command is executed.

The first parameter, delay, controls how
frequently passes through the loop are made.
Its units are multiples of the table execution
interval. A delay of 0 means that there is no
delay between passes through the loop. Each

time the table is executed all iterations of the
loop will be completed and execution will pass
on to the following instructions. If the delay is 5,
every fifth time that the execution interval
comes up, one pass through the loop is made;
only those instructions in the loop will be
executed and other portions of the table are not
executed in the interim. When a loop with delay
is executed, the next execution starts at the
loop, skipping over any previous and following
instructions in the table.

When a fixed number of iterations are
executed, the time spent in the loop is equal to
the product of the execution interval, delay, and
the number of iterations. For example, a loop
with a delay of 1 and a count of 5 will take 5
seconds if the execution interval is 1 second.
When the loop is first entered, one pass through
the loop is made, then the CR10X delays until
the next execution interval and makes the
second pass through the loop. After making the
fifth pass through the loop, there is the fifth
delay, after which execution passes to the
instruction following the END instruction which
goes with the loop.

While in a loop with delay, the table will not be
initiated at each execution interval. (However,
the overrun decimals will not be displayed.)
Some consequences of this are: The Output
Flag will not be automatically cleared between
passes through the loop. Because Table 2
cannot interrupt Table 1, Table 2 will not be
executed while Table 1 is in a loop with delay.
Table 1 will not interrupt Table 2 in the middle of
an output array. Thus, if the Output Flag is set
in Table 2 prior to entering the loop or within the
loop, the flag must be specifically cleared before
the end of the pass if Table 1 is to be executed.

Input locations for Processing Instructions within
a loop can be entered as Indexed locations. An
Indexed location causes the input location to be
incremented by 1 with each pass through the
loop. (The Index counter is added to the
location number in the program table.) Input
locations which are not indexed will remain
constant.

To specify an Indexed location, depress the C
key at some point while keying in the digits for
the input location and before entering the
location with the A key. Two dashes, --, appear
in the two right most characters of the display,
indicating the entry is Indexed.