搜索
bottom↓
楼主: summarize

PID算法实现(c 语言)(来自老外)

  [复制链接]

出0入0汤圆

发表于 2013-12-14 23:39:21 | 显示全部楼层
多谢楼主,学习下

出0入0汤圆

发表于 2013-12-14 23:57:43 | 显示全部楼层
收藏,以后看看

出0入0汤圆

发表于 2013-12-15 09:25:19 | 显示全部楼层
谢楼主分享

出0入0汤圆

发表于 2013-12-15 19:46:34 | 显示全部楼层
正找这方面资料,收藏了

出0入0汤圆

发表于 2013-12-15 21:22:23 | 显示全部楼层
位置式PID

出0入0汤圆

发表于 2013-12-15 21:30:00 | 显示全部楼层
感谢,下载学习了。。。

出0入0汤圆

发表于 2013-12-15 22:02:47 | 显示全部楼层
这个做好很难的说

出0入0汤圆

发表于 2013-12-16 09:01:59 | 显示全部楼层
哎     PID只用过最简单的公式   

出0入0汤圆

发表于 2013-12-16 09:58:13 | 显示全部楼层
好好学学

出0入0汤圆

发表于 2013-12-16 10:16:32 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2013-12-31 16:24:54 | 显示全部楼层
想改成增量式PID,有同行没,呵呵

出0入0汤圆

发表于 2014-1-1 09:29:42 | 显示全部楼层
学习,谢谢楼主

出0入0汤圆

发表于 2014-1-1 09:52:23 | 显示全部楼层
mark谢谢

出0入0汤圆

发表于 2014-1-1 10:52:50 来自手机 | 显示全部楼层
标记一下,谢谢

出0入0汤圆

发表于 2014-1-1 18:36:48 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2014-1-2 08:52:46 | 显示全部楼层
没有玩过pid,收藏 学下一下

出0入0汤圆

发表于 2014-1-2 10:35:56 | 显示全部楼层
学习中,参考一下国外的程序。

出0入8汤圆

发表于 2014-1-2 11:17:50 | 显示全部楼层
学习下,有待深入研究~~~谢谢分享~

出40入42汤圆

发表于 2014-3-4 14:07:25 | 显示全部楼层
准备整这个,多谢楼主了。

出0入0汤圆

发表于 2014-3-4 14:22:19 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2014-3-4 15:38:11 | 显示全部楼层
看看有什么不一样的呀~~~~~~~~~~~

出0入0汤圆

发表于 2014-3-4 16:37:43 | 显示全部楼层
这个要顶,很好资料,感谢楼主分享,收藏咧!

出0入0汤圆

发表于 2014-3-13 13:22:06 | 显示全部楼层
不错,谢谢楼主!!

出0入0汤圆

发表于 2014-3-13 22:14:37 | 显示全部楼层
先看看                     

出0入0汤圆

发表于 2014-3-14 12:34:57 | 显示全部楼层
这个要好好学下

出0入0汤圆

发表于 2014-3-16 21:02:27 | 显示全部楼层
学习了!!!

出0入0汤圆

发表于 2014-3-17 21:52:47 | 显示全部楼层
记录下,也许用的着。

出0入0汤圆

发表于 2014-3-17 21:56:40 | 显示全部楼层
标记,收藏下

出0入0汤圆

发表于 2014-3-17 22:04:14 | 显示全部楼层
mark                     

出0入0汤圆

发表于 2014-3-17 22:16:01 | 显示全部楼层
大同小异,平时用的跟这差不多

出0入0汤圆

发表于 2014-3-18 22:32:18 | 显示全部楼层
学习学习!

出0入0汤圆

发表于 2014-3-18 23:40:59 | 显示全部楼层
好东西,,感谢楼主

出0入0汤圆

发表于 2014-4-6 21:39:55 | 显示全部楼层
用GCC运行了,但是不太明白意思。

出0入0汤圆

发表于 2014-4-6 22:56:02 来自手机 | 显示全部楼层
标记!正要用到

出0入0汤圆

发表于 2014-4-6 23:08:02 | 显示全部楼层
收藏了,谢谢              

出0入0汤圆

发表于 2014-4-7 01:01:53 | 显示全部楼层
学习一下,以后会用的着

出0入10汤圆

发表于 2014-4-7 13:28:14 | 显示全部楼层
mark                                   

出0入0汤圆

发表于 2014-4-7 14:31:45 | 显示全部楼层
好资料, 收藏了!

出0入0汤圆

发表于 2014-4-7 15:52:59 | 显示全部楼层
nice哦,
学习下

出0入0汤圆

发表于 2014-4-8 20:18:18 | 显示全部楼层
我下载了代码,在gcc下运行,没效果!   不知道是我哪里搞错了。最后稳定的值飘天上去了。

出0入0汤圆

 楼主| 发表于 2014-4-8 20:21:09 | 显示全部楼层
兄弟会十戒之首 发表于 2014-4-8 20:18
我下载了代码,在gcc下运行,没效果!   不知道是我哪里搞错了。最后稳定的值飘天上去了。 ...

这代码是很容易明白思路的,我实际用时也只是仿照思路自己重写或利用部分代码,所以这完整的代码我也没有测试过,不过你可以断点调试单步运行看看。

出0入0汤圆

发表于 2014-4-8 20:21:35 | 显示全部楼层
而且这代码风格,太一般了,scanf和printf乱乱的。

出0入0汤圆

发表于 2014-4-8 22:00:20 | 显示全部楼层
记号      

出0入0汤圆

发表于 2014-4-8 22:56:49 | 显示全部楼层
好东西,马上就要用到了

出0入0汤圆

发表于 2014-4-9 09:22:57 | 显示全部楼层
值得学习学习 MARK

出0入0汤圆

发表于 2014-4-9 09:40:38 | 显示全部楼层
不错,收藏

出0入0汤圆

发表于 2014-4-9 09:56:48 | 显示全部楼层
标记,值得学习

出0入0汤圆

发表于 2014-4-9 14:38:25 | 显示全部楼层
mark!!学习学习

出0入0汤圆

发表于 2014-4-9 16:57:12 | 显示全部楼层
学习了,谢楼主

出0入0汤圆

发表于 2014-4-9 18:25:56 | 显示全部楼层
pid的学习

出0入0汤圆

发表于 2014-4-9 21:46:37 | 显示全部楼层
好资料,mark

出0入0汤圆

发表于 2014-4-11 14:43:33 | 显示全部楼层
mark~~~~~~~

出0入0汤圆

发表于 2014-4-11 16:25:30 | 显示全部楼层
MARK.....好东西

出0入0汤圆

发表于 2014-4-11 21:12:04 | 显示全部楼层
标记一下pid

出0入0汤圆

发表于 2014-4-11 21:19:31 | 显示全部楼层
markmarkmarkmark

出0入0汤圆

发表于 2014-4-12 21:12:29 | 显示全部楼层
好东西顶

出0入0汤圆

发表于 2014-4-12 21:44:13 | 显示全部楼层
表示感谢

出0入0汤圆

发表于 2014-4-13 11:21:44 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2014-4-13 11:32:32 | 显示全部楼层
学习一下

出200入0汤圆

发表于 2014-4-13 11:42:46 来自手机 | 显示全部楼层
收藏,学习

出0入0汤圆

发表于 2014-4-21 17:56:20 | 显示全部楼层
这个必须顶啊 谢谢楼主分享

出0入0汤圆

发表于 2014-5-6 14:07:12 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-5-6 15:59:20 | 显示全部楼层
谢谢楼主分享,目前只学过理论

出0入0汤圆

发表于 2014-5-6 20:14:47 | 显示全部楼层
感谢分享,下来看看。

出0入0汤圆

发表于 2014-5-18 14:21:48 | 显示全部楼层
标记了。

出0入0汤圆

发表于 2014-5-18 16:19:54 | 显示全部楼层
谢谢分享                                    

出0入0汤圆

发表于 2014-6-13 17:33:10 | 显示全部楼层
好资料,谢谢分享!

出0入0汤圆

发表于 2014-6-16 12:29:29 | 显示全部楼层
对于低端单片机个人认为还是用全局变量比较快,不需要指针跳转

出60入0汤圆

发表于 2014-6-18 11:29:46 来自手机 | 显示全部楼层
标记学习,电机控制的时候有用

出0入0汤圆

发表于 2014-6-18 11:40:30 | 显示全部楼层
好资料啊~学习收藏了

出0入0汤圆

发表于 2014-6-19 17:52:43 | 显示全部楼层
多谢楼主,支持一个。

出0入0汤圆

发表于 2014-6-20 00:35:58 | 显示全部楼层
mark!mark!!

出0入0汤圆

发表于 2014-6-20 09:40:26 | 显示全部楼层
mark,以后可能用到

出0入0汤圆

发表于 2014-7-10 16:09:24 | 显示全部楼层
先收藏起来,慢慢再看

出0入0汤圆

发表于 2014-7-10 21:15:25 | 显示全部楼层
谢谢楼主分享,先收藏了,有空研究研究!

出0入0汤圆

发表于 2014-7-10 23:03:12 | 显示全部楼层
学习了,谢谢楼主

出0入0汤圆

发表于 2014-7-18 17:13:43 | 显示全部楼层
MARK,需要修改下载文件的后缀名,比贴出来的详细些

出0入0汤圆

发表于 2014-7-20 21:27:13 | 显示全部楼层
mark,正好在做PID

出0入0汤圆

发表于 2014-7-21 10:03:03 | 显示全部楼层
标记,谢谢分享

出0入0汤圆

发表于 2014-7-21 11:01:59 | 显示全部楼层
学习,谢谢!!!

出0入0汤圆

发表于 2014-7-21 11:13:26 | 显示全部楼层

谢谢分享

出0入0汤圆

发表于 2014-8-29 17:46:31 | 显示全部楼层
收藏,参考谢谢楼主

出0入0汤圆

发表于 2014-8-29 19:59:37 | 显示全部楼层
感谢楼主共享啊

出0入0汤圆

发表于 2014-8-30 10:29:50 | 显示全部楼层
很好的资料!学习了!

出0入0汤圆

发表于 2014-8-31 22:54:59 | 显示全部楼层
肯定能用得着,mark!

出0入0汤圆

发表于 2014-9-1 09:55:42 | 显示全部楼层
好东西,这个收藏了,学习下

出0入0汤圆

发表于 2014-9-7 05:08:08 | 显示全部楼层
很值得学习学习,谢谢楼主分享。

出0入0汤圆

发表于 2014-9-7 10:23:28 | 显示全部楼层
一直想学PID

出0入0汤圆

发表于 2014-9-7 11:16:20 | 显示全部楼层
很好的PID算法资料,顶

出0入0汤圆

发表于 2014-9-7 11:50:44 | 显示全部楼层
pid C语言实现,mark

出0入0汤圆

发表于 2014-9-7 12:22:11 | 显示全部楼层
mark!

出0入0汤圆

发表于 2014-9-7 14:04:46 | 显示全部楼层
最近刚好在学pid,谢谢分享

出0入0汤圆

发表于 2014-9-8 09:05:32 | 显示全部楼层
这个貌似看过,挺好的

出0入0汤圆

发表于 2014-9-9 14:11:32 | 显示全部楼层
很好的程序

出0入0汤圆

发表于 2014-9-9 14:17:59 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2014-9-9 15:01:35 | 显示全部楼层
typedef struct _PID {
    LONG    SetPoint;   //  设定目标 Desired Value

    float   p;          //  比例常数 Proportional Const
    float   i;          //  积分常数 Integral Const
    float   d;          //  微分常数 Derivative Const

    LONG    LastError;  //  Error[-1]
    LONG    PrevError;  //  Error[-2]
    LONG    SumError;   //  Sums of Errors
   
    LONG    LastResult; //  上一次阀值
}PID,*PPID;

#define DEFAULT_PROPORTIONAL_CONST  0.1f
#define DEFAULT_INTEGRAL_CONST      0.01f
#define DEFAULT_DERIVATIVE_CONST    0.0f

/*
    获取此次控制阀值
    LastValue: 上一秒流量值
*/
LONG PidGetResult(PID *pPid,LONG LastValue)
{
    LONG ReadValue;
    LONG dError,Error;
    LONG rDelta;

    ReadValue = LastValue;
    if(LastValue < pPid->SetPoint)                  //比满值小
    {
        if(pPid->LastResult >= pPid->SetPoint)      //上次控制量大于等于满值
            ReadValue = pPid->SetPoint;             //当做此次读数为满值
    }

    Error = pPid->SetPoint - ReadValue;             // 误差
    pPid->SumError += Error;                        // 积分       累计误差    *FIXME*此项是否需要定期清空
    dError = pPid->LastError - pPid->PrevError;     // 当前微分   误差偏差
    pPid->PrevError = pPid->LastError;
    pPid->LastError = Error;
    rDelta = (LONG)(pPid->p * Error     // 比例项  调节速率
            + pPid->i * pPid->SumError  // 积分项  长久的误差影响
            + pPid->d * dError);        // 微分项  一般不设此项

    //计算下一秒控制量
    rDelta += pPid->SetPoint;

    rDelta = rDelta > pPid->SetPoint ? pPid->SetPoint : rDelta;
    rDelta = rDelta < 0 ? 0 : rDelta;

    //保存为上一次控制量
    pPid->LastResult = rDelta;
    return rDelta;
}

/*
    初始化PID数据结构
    TargetValue: 期望阀值
*/
VOID PidInitialize(PID *pPid,LONG TargetValue)
{
    memset(pPid,0,sizeof(PID));
    pPid->SetPoint = TargetValue;
    pPid->LastResult = TargetValue;
    pPid->p = AdvancedTrafficSet.Proportion;
    pPid->i = AdvancedTrafficSet.Integral;
    pPid->d = AdvancedTrafficSet.Derivative;
}

出0入0汤圆

发表于 2014-9-9 15:49:39 | 显示全部楼层
标记,PID算法实现(c 语言)(来自老外)

出0入0汤圆

发表于 2014-9-9 22:56:25 | 显示全部楼层
收藏下载了,以备不时之需

出0入0汤圆

发表于 2014-9-9 23:34:54 | 显示全部楼层
mark备用        

出0入0汤圆

发表于 2014-9-10 06:26:04 | 显示全部楼层
学习了,谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-23 16:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表