***************************************************************************\
WWW_PL※CJS_COM-PLC-技.术_网
PID FunctionWW.W_PLC※JS_C,OM-PL,C-技.术_网
plcjs.技.术_网
This program has been written by the Technical Support Staff at Z-World inW1WW_P4LCJS_COM-PLC-技.术_网
response to several customer requests. As such, it has NOT had the testing andWW.W_PLC※JS_C,OM-PL,C-技.术_网
validation procedures which our "standard" software products have. It is beingplcjs.技.术_网
made available as a sample. There is no warranty, implied or otherwise.WWW_PL※CJS_COM-PLC-技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
The PID (Proportional Integral Derivative) function is used in mainlyWW.W_PLCJS_COM-PLC-技.术_网
control applications. PIDCalc performs one iteration of the PIDWW.W_PLCJS_COM-PLC-技.术_网
algorithm.P.L.C.技.术.网——可编程控制器技术门户
WWW_PLCJS_COM-PLC-技.术_网
While the PID function works, main is just a dummy program showingWW.W_PLCJS_COM-PLC-技.术_网
a typical usage.WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
\***************************************************************************/WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW.PLCJS.COM——可编程控制器技术门户
typedef struct PIDWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
{WWW.PLCJS.COM——可编程控制器技术门户
double SetPoint; // Desired ValueWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
P.L.C.技.术.网——可编程控制器技术门户
double Proportion; // Proportional ConstW1WW_P4LCJS_COM-PLC-技.术_网
double Integral; // Integral ConstWW.W_PLCJS_COM-PLC-技.术_网
double Derivative; // Derivative ConstWWW.PLCJS.COM——可编程控制器技术门户
plcjs.技.术_网
double LastError; // Error[-1]WWcW_PLCJS_COM-PLC-技.术_网
double PrevError; // Error[-2]WWW_PL※CJS_COM-PLC-技.术_网
double SumError; // Sums of ErrorsWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
} PID;WW.W_PLCJS_COM-PLC-技.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
/*=========================================================================*\WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
Perform One PID IterationWWW_PLCJS_COM-PLC-技.术_网
\*=========================================================================*/P.L.C.技.术.网——可编程控制器技术门户
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
double PIDCalc ( PID *pp, double NextPoint )WWW_PLC※JS_COM-PmLC-技.术_网
WWW_PLCJS_COM-PLC-技.术_网
{ double dError, Error;WWW_PLCJS_COM-PLC-技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
pp->SumError += (Error = pp->SetPoint - NextPoint);——可——编——程——控-制-器-技——术——门——户
dError = pp->LastError - pp->PrevError;P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
pp->PrevError = pp->LastError;WWW_P※LCJS_COM-PLC-)技.术_网
pp->LastError = Error;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
return ( pp->Proportion * ErrorWW.W_PLCJS_COM-PLC-技.术_网