pid算法c语言写法

pid算法c语言写法

ID:13077523

大小:36.50 KB

页数:4页

时间:2018-07-20

pid算法c语言写法_第1页
pid算法c语言写法_第2页
pid算法c语言写法_第3页
pid算法c语言写法_第4页
资源描述:

《pid算法c语言写法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这是一个PID算法的C语言实现程序:"double sensor (void),void actuator(double rDelta,double LastrDelta )各函数的功能及语句的作用, 以及主函数里的变量j和数值a[]的设置的作用,以及for循环语句的作用,"望大家再分享的同时,给份详细注释,在线等待,大家帮助大家,^_^.#include #include typedef struct PID {          /*K1=实际放大倍数,T1=实际积分时间,T2=实际微分时间,T=采样周期*/    double  SetPoi

2、nt;     /*定义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->T

3、1 + 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;                            /*微分系数*/   

4、     Err = pp->SetPoint-NextPoint;                    /*当前误差*/     Ud = pp->T2 / ((Kd * pp->T) + pp->T2) * Ud1+ Kd * (pp->T2 + pp->T) / (Kd * pp->T + pp->T2) * Err - Kd * pp->T2 / (Kd * pp->T + pp->T2) *pp->Err1;   /*微分作用*/    Ui = Ui1 + pp->K1 * (pp->T / pp->T1) * Ud;         /*积分作用*/         U

5、p = pp->K1 * Ud;                                  /*比例作用*/     Ud1=Ud;                                          /*UD1=ud(k-1),ui1=ui(k-1)*/     Ui1=Ui;return (Ud + Up + Ui);                               /*y(k)*/}void PIDInit (PID *pp){    memset ( pp,0,sizeof(PID));                   }/*double 

6、sensor (void)                                      {    return 1.0;}*/                                                    /*输入口*/ void actuator(double rDelta,double LastrDelta )             /*输出口*/ {  double n;                                                  n=rDelta-LastrDelta;                

7、                   /*y(k)-y(k-1)*/   LastrDelta=rDelta;                                   printf ("%f",n);  }void main(void)                        { int j,a[]={15,14,12.5,10.5,5.5,6.7,9.5,11.3,9.6,10.2,10.035,9.2356,10.23

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。