VXi VT1529A/B 사용자 설명서

다운로드
페이지 529
192 Creating and Running Algorithms  
Reading CVT elements
An application program reads one or more CVT elements by executing the 
SCPI command [SENSe:]DATA:CVT? (@<element_list>), where 
<element_list> specifies one or more individual elements and/or a range of 
contiguous elements. The following example command will help to explain 
the <element_list> syntax.
DATA:CVT? (@10,20,30:33,40:43,330)
Return elements 10, 20, 30-33, 
40-43, and element 330.
Individual element numbers are isolated by commas. A contiguous range of 
elements is specified by: <starting element>colon<ending element>.
Writing values to the FIFO
The FIFO, as the name implies, is a First-In-First-Out buffer. It can buffer 
up to 65,024 values. This capability allows an algorithm to send a 
continuous stream of data values related in time by their position in the 
buffer. This can be thought of as an electronic strip-chart recorder. Each 
value is sent to the FIFO by executing the Algorithm Language intrinsic 
statement  writefifo(<expression>). The following in an example algorithm 
statement:
writefifo(O124);  /* send output channel 24's value to the FIFO */
Since the actual algorithm execution rate can be determined (see 
“Programming the Trigger Timer” on page 131), the time relationship of 
readings in the FIFO is very deterministic.
Reading values from the FIFO
For a discussion on reading values from the FIFO, see “Reading Running 
Algorithm Values” on page 134
.
Writing values to the FIFO and CVT
The writeboth(<expression>,<cvt_element>) statement sends the value of 
<expression> both to the FIFO and to a <cvt_element>. Reading these 
values is done the same way as mentioned for writefifo() and writecvt().
Setting a VXIbus
Interrupt
The algorithm language provides the function interrupt() to force a VXIbus 
interrupt. This interrupt() function can be used to set bit 11 of the 
STATus:OPERation register from within an algorithm. This bit could then 
be enabled to generate an SRQ to the controller (see 
“STATus:OPERation:ENABle” on page 382 an“*SRE” on page 404). 
The following example algorithm code tests an input channel value and sets 
an interrupt if it is higher or lower than set limits.
static float upper_limit = 1.2, lower_limit = 0.2;
if( I124 > upper_limit || I124 < lower_limit ) interrupt();