VXi VT1529A/B 사용자 설명서

다운로드
페이지 529
500 Example PID Algorithm Listings  
PIDC Algorithm
PIDC is very similar to PIDB with the addition of extended history mode. 
See comments in source code below.
PIDC Source Listing
/********************************************************************************************/
/*  PID_C
*/
/********************************************************************************************/
/*  I/O Channels
*/
/*  Must be defined by the user
*/
/*                  
*/
/* inchan - Input channel name      
*/
/* outchan - Output channel name             
*/
/* alarmchan  - Alarm channel name          
*/
/*                      
*/
/********************************************************************************************/
/*                    
*/
/********************************************************************************************/
/* PID algorithm for VT1422A controller module.  This algorithm is called */
/* once per scan trigger by main().  It performs Proportional,
*/
Integral      
*/
/* and Derivative control.                                                   
*/
/*                                                                           
*/
/*                                                                           
*/
/* The output is derived from the following equations:  
*/
/*                                                                           
*/
/* PID_out = P_out + I_out + D_out + SD_out         
*/
/* P_out = Error * P_factor                            
*/
/* I_out = I_out + (Error * I_factor)      
*/
/* D_out = ((PV_old - PV) * D_factor) 
*/
/* SD_out = (Setpoint - Setpoint_old) * SD_factor 
*/
/* Error = Setpoint - PV           
*/
/*
*/
/* where:                                   
*/
/*   Setpoint is the desired value of the process variable (user supplied)   */
/*   PV is the process variable measured on the input channel
*/
/*   PID_out is the algorithm result sent to the output channel
*/
/*   P_factor, I_factor, D_factor and SD_factor are the PID constants
*/
/*  (user supplied)
*/
/*
*/
/*  Alarms may be generated when either the ProcessVariable or the
*/
/*  error exceeds user supplied limits.
*/
/*  The alarm condition will cause an interrupt to the host computer,
*/
/*  set the (user-specified) alarm channel output to one (1) and set a bit */
/*  in the Status variable to one (1).
*/
/*  The interrupt is edge-sensitive. ( It will be asserted only
*/
/* on the transition into the alarm state.)  The alarm channel digital
*/
/* output will persist for the duration of all alarm conditions.  The
*/
/* Status word bits will also persist for the alarm duration.  No user
*/
/* intervention is required to clear the alarm outputs.
*/
/* */
/* This version provides for limiting (or clipping) of the Integral,
*/
/* Derivative, Setpoint Derivative and output to user specified limits.
*/
/* The Status Variable indicates when terms are being clipped.
*/
/*
*/
/* Manual control is activated when the user sets the Man_state variable */
/* to a non-zero value.  The output will be held at its last value.  The
*/
/* user can change the output by changing the Man_out variable.  User */
/* initiated changes in Man_out will cause the output to slew to the
*/
/* Man_out value at a rate of Man_inc per scan trigger.
*/
/*
*/
/* Manual control causes the Setpoint to continually change to match
*/
/* the Process Variable and the Integral term to be constantly updated
*/
/* to the output value such that a return to automatic control will
*/
/* be bumpless and will use the current Process Variable value as the
*/
/* new setpoint.
*/
/* The Status variable indicates when the Manual control mode is active. */
/*
*/