首页 上一页 1 2 下一页 尾页

分享一个PID的C程序代码 点击:7084 | 回复:25



如火

    
  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2005-12-15 10:50:00
楼主
***************************************************************************\
    PID Function

This program has been written by the Technical Support Staff at Z-World in
response to several customer requests.  As such, it has NOT had the testing and
validation procedures which our "standard" software products have.  It is being
made available as a sample.  There is no warranty, implied or otherwise.

    The PID (Proportional Integral Derivative) function is used in mainly
    control applications. PIDCalc performs one iteration of the PID
    algorithm.

    While the PID function works, main is just a dummy program showing
    a typical usage.
\***************************************************************************/

typedef struct PID
{
    double    SetPoint;        // Desired Value

    double    Proportion;        // Proportional Const
    double    Integral;        // Integral Const
    double    Derivative;        // Derivative Const

    double    LastError;        // Error[-1]
    double    PrevError;        // Error[-2]
    double    SumError;        // Sums of Errors
}  PID;

/*=========================================================================*\
    Perform One PID Iteration
\*=========================================================================*/

double PIDCalc ( PID    *pp,   double NextPoint )

{  double    dError, Error;

    pp->SumError += (Error = pp->SetPoint - NextPoint);
    dError = pp->LastError - pp->PrevError;
    pp->PrevError = pp->LastError;
    pp->LastError = Error;
    return    (  pp->Proportion * Error
                    +  pp->Integral * pp->SumError
                    +  pp->Derivative * dError
                );
}

/*=========================================================================*\
    Initialize PID Structure
\*=========================================================================*/

void PIDInit  ( PID *pp )

{&



天下三分明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-03-26 12:26:00
21楼
最近我也是刚开始学自控理论,
自编PID程序的公式用:
    增量式的PID差分方程公式,很简单,加加减减就能搞定;
没学过自控理论,有点难点;

叶宇

  • 精华:0帖
  • 求助:3帖
  • 帖子:3帖 | 19回
  • 年度积分:0
  • 历史总积分:288
  • 注册:2004年10月01日
发表于:2009-10-14 21:03:32
22楼

       学习一下,谢谢

糊涂小书童

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2009年12月12日
发表于:2009-12-12 21:42:18
23楼

哪位有VISUAL  VC++6。0 软件  能否发给我一个  我无胜感激  Laohuang05283@126.com

相信明天

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2009年10月24日
发表于:2010-04-26 00:00:02
24楼
学了C语言真的好上手,我得好好学习!

yuki2009

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2010年5月16日
发表于:2010-05-16 23:06:50
25楼
谢谢啊 初学者很有帮助

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页