首页 上一页 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 )

{&



浪费青春

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 95回
  • 年度积分:0
  • 历史总积分:124
  • 注册:2004年6月01日
发表于:2005-12-15 11:20:00
1楼
找PID的C程序控制好久了,今天终于找到了,谢谢激情如火!

拉拉拉

  • 精华:0帖
  • 求助:0帖
  • 帖子:15帖 | 75回
  • 年度积分:0
  • 历史总积分:189
  • 注册:2001年8月12日
发表于:2006-01-12 13:24:00
2楼
非常不错!

王黎明

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:9
  • 注册:2006年2月14日
发表于:2006-02-16 10:18:00
3楼
THANK YOU !太好了!

楚留香

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 980回
  • 年度积分:0
  • 历史总积分:1556
  • 注册:2003年3月21日
发表于:2006-03-17 17:32:00
4楼
非常感谢

非礼勿言

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 90回
  • 年度积分:0
  • 历史总积分:231
  • 注册:2004年2月06日
发表于:2006-03-25 16:42:00
5楼
真的很好,谢谢。

游牧人

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 119回
  • 年度积分:0
  • 历史总积分:198
  • 注册:2003年10月30日
发表于:2006-04-07 11:05:00
6楼
thanks~!!!!

ablessna

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 10回
  • 年度积分:0
  • 历史总积分:65
  • 注册:2006年3月27日
发表于:2006-04-07 16:57:00
7楼
谢谢你的帮助!!!!!!!!

zlcwc

  • 精华:6帖
  • 求助:0帖
  • 帖子:52帖 | 160回
  • 年度积分:0
  • 历史总积分:2066
  • 注册:2003年12月26日
发表于:2006-11-10 01:41:00
8楼
支持,顶下。

刘正刚

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 216回
  • 年度积分:0
  • 历史总积分:237
  • 注册:2006年11月10日
发表于:2006-11-12 14:46:00
9楼
支持。

欠费停机

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 114回
  • 年度积分:0
  • 历史总积分:211
  • 注册:2006年8月06日
发表于:2006-11-12 21:23:00
10楼
谢谢

新学徒工

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 134回
  • 年度积分:0
  • 历史总积分:198
  • 注册:2004年2月16日
发表于:2006-12-08 17:28:00
11楼
收下,激情如火的帖子就是好.老大就是老大.

horizon

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2006年12月14日
发表于:2006-12-16 01:24:00
12楼
赏过. 谢分享....

杜秋水

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 187回
  • 年度积分:0
  • 历史总积分:296
  • 注册:2006年10月20日
发表于:2007-01-06 01:02:00
13楼
谢谢
学习中

勃龙工控

  • 精华:2帖
  • 求助:0帖
  • 帖子:45帖 | 2857回
  • 年度积分:0
  • 历史总积分:6383
  • 注册:2004年4月03日
发表于:2007-01-06 01:57:00
14楼
看来我得学习C语言了

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:346帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2007-01-06 08:45:00
15楼
 看来我得学习C语言了!
                 如果需要的话!

电工小明

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 21回
  • 年度积分:0
  • 历史总积分:73
  • 注册:2006年12月28日
发表于:2007-01-06 16:13:00
16楼
C语言很好上手!!建议没学过的学学

wenjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:27帖 | 629回
  • 年度积分:0
  • 历史总积分:733
  • 注册:2005年2月21日
发表于:2007-01-06 16:19:00
17楼
真的很容易上手吗?

云竹

  • 精华:0帖
  • 求助:1帖
  • 帖子:17帖 | 326回
  • 年度积分:0
  • 历史总积分:500
  • 注册:2008年1月30日
发表于:2008-03-19 14:33:00
18楼
谢谢

yjd159

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 312回
  • 年度积分:0
  • 历史总积分:417
  • 注册:2007年3月03日
发表于:2008-03-25 14:01:00
19楼
古老,经典的增量形PID控制

用PLC实现起来更加简单,连循环都省了

lz的这个程序不能在实际中使用的,因为它缺少积分时间,运行一段时间后会出现数据溢出的问题

huangyoufu

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 1083回
  • 年度积分:0
  • 历史总积分:1224
  • 注册:2006年9月23日
发表于:2008-03-26 11:32:00
20楼
 真的很好,谢谢。

热门招聘
相关主题

官方公众号

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