C语言中PID算法的主程序及其实现
发布时间
阅读量:
阅读量
#include typedef struct PID { /K1=实际放大倍数,T1=实际积分时间,T2=实际微分时间,T=采样周期/
double SetPoint; /定义PID结构体/
double K1;
double T1;
double T2;
double T;
double Err1; /前一时刻误差,E(K-1)/
} PID;
double PIDCalc( PID *pp, double NextPoint,double Ud1,double Ui1) /*PID计算
*/
{
double Ti,Td,Kp,Ki,Kd,Ud,Up,Ui,Err;
Ti = pp->T1 + pp->T2; /积分时间/
Td = (pp->T1 * pp->T2) / (pp->T1 + pp->T2); /微分时间/
Kp = pp->K1 * ((pp->T1 + pp->T2) / pp->T1); /比例系数/
Ki =pp->T / Ti * Kp; /积分系数/
Kd = Td / pp->T * Kp; /微分系数/
Err = pp->SetPoint-NextPoint; /当前误差/
Ud = pp->T2 / ((Kd * pp->T) + pp->T2) * Ud1+ Kd *
全部评论 (0)
还没有任何评论哟~
