Non-Control Algorithms; Data Acquisition Algorithm; Process Monitoring Algorithm - HP VXI 75000 C Series User's And Scpi Programming Manual

Algorithmic closed loop controller
Table of Contents

Advertisement

Non-Control Algorithms

Data Acquisition
Algorithm
Process Monitoring
Algorithm
Chapter 4
/* following line includes global setpoint var, and hard coded input chan */
Error = Cold_setpoint - I109;
if (First_loop)
{
I_out = Error * I_factor;
Error_old = Error;
}
else /* not First trigger */
{
I_out = Error * I_factor + I_out; /* output channel hard coded here */
}
O116 = Error * P_factor + I_out + D_factor * (Error - Error_old);
Error_old = Error;
The HP E1415's Algorithm Language includes intrinsic functions to write
values to the CVT, the FIFO, or both. Using these functions, you can create
algorithms that simply perform a data acquisition function. The following
example shows acquiring eight channels of analog input from SCP position
0, and one channel (8 bits) of digital input from an HP E1533 in SCP
position 2. The results of the acquisition are placed in the CVT and FIFO.
/* Data acquisition to CVT and FIFO */
writeboth( I100, 330 ); /* channel 0 to FIFO, and CVT element 330 */
writeboth( I101, 331 ); /* channel 1 to FIFO, and CVT element 331 */
writeboth( I102, 332 ); /* channel 2 to FIFO, and CVT element 332 */
writeboth( I103, 333 ); /* channel 3 to FIFO, and CVT element 333 */
writeboth( I104, 334 ); /* channel 4 to FIFO, and CVT element 334 */
writeboth( I105, 335 ); /* channel 5 to FIFO, and CVT element 335 */
writeboth( I106, 336 ); /* channel 6 to FIFO, and CVT element 336 */
writeboth( I107, 337 ); /* channel 7 to FIFO, and CVT element 337 */
writeboth( I116, 338 ); /* channel 16 to FIFO, and CVT element 338 */
Using SENS:DATA:FIFO: ... and the SENS:DATA:CVT commands, your
application program can access the data.
Another function the HP E1415 performs well is monitoring input values
and testing them against pre-set limits. If an input value exceeds its limit, the
algorithm can be written to supply an indication of this condition by
changing a CVT value, or even forcing a VXIbus interrupt. The following
example shows acquiring one analog input value from channel 0, and one
HP E1533 digital channel from channel 16, and limit testing them.
/* Limit test inputs , send values to CVT, and force interrupt when exceeded */
static floatExceeded;
static floatMax_chan0, Min_chan0, Max_chan1, Min_chan1;
static floatMax_chan2, Min_chan2, Max_chan3, Min_chan3;
static floatMask_chan16;
if ( First_loop ) Exceeded = 0; /* initialize Exceeded on each INIT */
writecvt( I100, 330); /* write analog value to CVT */
Exceeded = ( ( I100 > Max_chan0 ) || ( I100 < Min_chan0 ) ); /* limit test analog */
writecvt( I101, 331); /* write analog value to CVT */
Exceeded = Exceeded + ( ( I101 > Max_chan1 ) || ( I101 < Min_chan1 ) );
Creating and Running Custom Algorithms
133

Advertisement

Table of Contents
loading

This manual is also suitable for:

Vxi e1415a

Table of Contents