打印

谁能说说PID算法不?

[复制链接]
4067|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jack.king|  楼主 | 2007-6-8 08:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jack.king|  楼主 | 2007-6-8 08:43 | 只看该作者

继续

  请问 PID算法主要在程序里面怎么体现啊!我学过但是还是有点搞不清楚

使用特权

评论回复
板凳
老黄头| | 2007-6-8 09:29 | 只看该作者

比例,积分, 微分

以温度控制为例:

 比例 --  温差大,输出大.

 积分 --  被控温度在设定值附近时,确定是比设定值高一点还是,低一点.并 
          微调输出.

 微分 --  被控温度有突然变化(如加料,石英舟推入等),快速增加输出,使温度
          快速恢复.

使用特权

评论回复
地板
jack.king|  楼主 | 2007-6-8 09:39 | 只看该作者

继续请教

       
     那在程序设计的时候要注意些什么不?

使用特权

评论回复
5
xzhenggen| | 2007-6-8 10:55 | 只看该作者

我也正需要弄这种东西不知如何下手。

使用特权

评论回复
6
gyt| | 2007-6-8 11:19 | 只看该作者

网上找一下

如果原来没有做过这一方面的项目,建议先到网上找一下现成的方案看看,模仿就可以了:)

使用特权

评论回复
7
dreambird| | 2007-6-8 13:09 | 只看该作者

是不是还没搞懂控制原理

首先,你需要闭环反馈控制,如果是开环就不用了
还是举个例子吧,比如调节PWM的占空比来控制开关管,当开的时间长,输出的电压就大,开的时间短,输出的电压就小,你的目标是要把输出控制在Vo,由于输入电压可能是变化的,所以你不能将PWM设为固定的值来达到输出固定,那样是开环控制,只适合输入变化细小的情况。你得作个检测电路来检测输出电压,再根据这个检测电压来设定你得输出给定Vg,设误差E=Vg-Vo,你可以用K*E来与一个三角波比较得到PWM的占空比-即开关时间,这就是比例控制,另外两个就不用说了,如何用这个E来控制PWM,你还有很多其他的方法,比如神经,模糊等等
如何在输入电压变化较快,较大的情况下保持输出电压的相对稳定就是你的目标啦,例如,比例K太小会跟不上输入变化,比例K太大有可能冲过头,就看各位的水平了
这里是个简单的例子,还有个前提就是你的系统是可控的。

使用特权

评论回复
8
pcbomb| | 2007-6-8 13:22 | 只看该作者

cxjr.21ic.org,搜索pid,你会看到不少东西

日志标题 作者 日期 评论 
标准的PID处理例程 pcbomb 4-5 0 
PID参数如何设定调节 cxjr 3-30 0 
尼柯尔斯法PID参数整定 cxjr 3-6 0 
比较典型的PID处理程序 cxjr 11-28 0 
PID控制C源程序 cxjr 4-26 8 
典型的PID处理程序(C51) cxjr 4-26 0 
积分分离PID控制算法程序 cxjr 4-26 0 
增量式PID控制算法程序 cxjr 4-26 2 
比较典型的PID处理程序 cxjr 4-26 0 
标准的PID处理例程 cxjr 4-26 0 
PID控制——简而优秀 cxjr 3-22 0 
PID参数如何设定调节 cxjr 1-16 3 
PID的参数调整口诀 cxjr 10-6 1 
PID概述 cxjr 9-27 0 

使用特权

评论回复
9
jack.king|  楼主 | 2007-6-8 17:40 | 只看该作者

谢谢了

  


       我是做关于温度方面的控制.他们说用PID算法,
   是不是在程序的流程框图中加入PID的算法啊?

使用特权

评论回复
10
dreambird| | 2007-6-8 18:38 | 只看该作者

你是在做理论还是实际的东西

你先说说你打算怎么控制温度,这个先搞清楚再问。

使用特权

评论回复
11
yewuyi| | 2007-6-8 19:05 | 只看该作者

8楼给出的就差不多了

使用特权

评论回复
12
jack.king|  楼主 | 2007-6-8 19:39 | 只看该作者

RE

OK
   我回努力学习的
  我是实际工业现场的控制
  不是理论

使用特权

评论回复
13
mohanwei| | 2007-6-8 21:23 | 只看该作者

那也要先懂理论啊……说是PID谁都能调,其实也没那么简单

如果你想要满意的话。

看看自控原理,开头就是。

使用特权

评论回复
14
dreambird| | 2007-6-8 22:02 | 只看该作者

光搞理论会让人很晕,先不要看太多书

个人觉得过程应该是:初级理论->工程实践->理论深化

使用特权

评论回复
15
jack.king|  楼主 | 2007-6-8 23:56 | 只看该作者

re

   


      需要加什么外部知识不?

使用特权

评论回复
16
gyt| | 2007-6-9 11:09 | 只看该作者

8楼

把8楼的**看一下,也就**不离十了:)

使用特权

评论回复
17
liqimcu| | 2007-6-9 11:16 | 只看该作者

关注中。。。

使用特权

评论回复
18
joyce8848| | 2007-6-18 10:25 | 只看该作者

这个问题我来回答

PID调节即比例、积分、微分调节,是连续控制系统中技术最成熟、应用最广泛的一种调节控制方式。其表达式为:
 
式中    u-调节器输出信号
        e-偏差信号(给定值与采样值的差)
        K-调节器的比例系数
        Ti-调节器的积分时间
        Td-调节器的微分时间
在计算机控制系统中,为实现数字控制,须对上式进行离散化处理:用数字形式的差分方程替代连续系统的微分方程。设系统的采样周期是T,在t=iT时刻进行采样,有:
                            e=ei
 
 
式中的    ei为根据本次采样值得到的偏差,而ei-1为根据上次采样值得到的偏差。由以上四式可得位置式PID控制算式:
ui=K[ei+ + (ei-ei-1)]
按该式计算,要计算累加项(第二项),不仅麻烦,且为保存历次偏差值要占用很多内存单元,仍很不方便。为此,再作进一步处理。
据递推原理,得ui-1的表达式为:
ui-1=K[ei-1+  + (ei-1-ei-2)]
故                   Δui=ui-ui-1=K[(ei-ei-1)+ ei+ (ei-2ei-1+ei-2)]
该式称为增量式PID控制算式,式中Δui是在第i-1次输出基础上的增加(或减少)量。这种算法在在生产实际中更为常用。
经简化,上式又可演变为:
Δui=KP(ei-ei-1)+KIei+KD[(ei-ei-1)-(ei-1-ei-2)]
式中  KP=K
      KI=K 
      KD=K 
因K、TI、TD、T都是常数,可知KP、KI、KD也都是常数。至此,似乎PID控制算法的程序设计已不复杂,只要将给定值与每次经中值滤波、数据处理后得到的检测值相减,得到偏差ei,再与上次偏差ei-1(初值设为0)相减,得到ei-ei-1; 又通过上次偏差ei-1与前次偏差ei-2(初值也设为0)相减,得到ei-1-ei-2。有了ei、ei-ei-1、ei-1-ei-2及KP、KI,便可计算得Δui,再由Δui与ui-1相加得到ui。但,ei、ei-ei-1、ei-1-ei-2均可为正,可为负,给计算带来很**烦。
算法程序还是比较容易理解的:
       MOV    A,    5CH                       ;取给定值
              CLR     C
              SUBB    A,    4CH                      ;求给定值和采样值的差ei
              JNC     PID1
              CPL     A
              ADD    A,    #01H
              SETB    30H
              SJMP    PID2
PID1:         CLR     30H
PID2:         MOV    6BH,    A
              MOV    R1,    6BH
              MOV    C,    30H
              MOV    20H,    C
              MOV    R2,    6CH
              MOV    C,    31H
              MOV    21H,    C
              LCALL    DJF
              MOV    6EH,    R3
              MOV    C,    22H
              MOV    33H,    C
              MOV    R1,    6CH
              MOV    C,    31H
              MOV    20H,    C
              MOV    R2,    6DH
              MOV    C,    32H
              MOV    21H,    C
              LCALL    DJF
              MOV    6FH,    R3
              MOV    C,    22H
              MOV    34H,    C
              MOV    R1,    6EH
              MOV    C,    33H
              MOV    20H,    C
              MOV    R2,    6FH
              MOV    C,    34H
              MOV    21H,    C
              LCALL    DJF
              MOV    70H,    R3
              MOV    C,    22H
              MOV    35H,    C
              MOV    A,    6BH
              MOV    B,    6EH
              MUL    AB
              MOV    71H,    B
              MOV    72H,    A
              MOV    A,    69H
              MOV    B,    6BH
              MUL    AB
              MOV    73H,    B
              MOV    74H,    A
              MOV    A,    6AH
              MOV    B,    70H
              MUL    AB
              MOV    75H,    B
              MOV    76H,    A
              MOV    R1,    71H
              MOV    R2,    72H
              MOV    C,    33H
              MOV    23H,    C
              MOV    R3,    73H
              MOV    R4,    74H
              MOV    C,    30H
              MOV    24H,    C
              LCALL    SJF
              MOV    77H,    R5
              MOV    78H,    R6
              MOV    C,      25H
              MOV    36H,    C
              MOV    R1,    77H
              MOV    R2,    78H
              MOV    C,     36H
              MOV    23H,    C
              MOV    R3,    75H
              MOV    R4,    76H
              MOV    C,     35H
              MOV    24H,    C
              LCALL    SJF
              MOV    79H,    R5
              MOV    7AH,    R6
              MOV    C,     25H
              MOV    37H,    C
              MOV    R1,    7DH
              MOV    R2,    7EH
              CLR        23H
              MOV    R3,    79H
              MOV    R4,    7AH
              MOV    C,     37H
              MOV    24H,     C
              LCALL      SJF
              JNB    25H,    PID3
              MOV    7BH,    #00H
              MOV    7CH,    #00H
              SJMP    PID4
PID3:         MOV    7BH,    R5
              MOV    7CH,    R6
PID4:         MOV    6DH,    6CH
              MOV    6CH,    6BH
              MOV    7DH,    7BH
              MOV    7EH,    7CH
              LCALL    DAC
DJF:          JB    20H,    DJF4
              JB    21H,    DJF2
              CLR     C
              MOV    A,    R1
              SUBB    A,    R2
              MOV    R3,    A
              JC     DJF1
              CLR    22H
              RET
DJF1:         MOV    A,    R3
              CPL     A
              ADD    A,    #01H
              MOV    R3,    A
              SETB    22H
              LCALL    DAC
DJF2:         MOV    A,    R1
              ADD    A,    R2
              MOV    R3,    A
              JNC     DJF3
              MOV    R3,    #0FFH
DJF3:         CLR    22H
              RET
DJF4:         JB    21H,    DJF6
              MOV    A,    R1
              ADD    A,    R2
              MOV    R3,    A
              JNC     DJF5
              MOV    R3,    #0FFH
DJF5:         SETB     22H
              LCALL    DAC
DJF6:         CLR     C
              MOV    A,    R2
              SUBB    A,    R1
              MOV    R3,    A
              JC     DJF1
              CLR    22H
              RET
SJF:           JB    23H,    SJF3
              JB     24H,    SJF2
              MOV    A,    R2
              ADD    A,    R4
              MOV    R6,    A
              MOV    A,    R1
              ADDC    A,    R3
              MOV    R5,    A
              JNC     SJF1
              MOV    R5,    #0FFH
              MOV    R6,    #0FFH
SJF1:          CLR     25H
              RET
SJF2:         CLR     C
              MOV    A,    R2
              SUBB    A,    R4
              MOV    R0,    A
              MOV    A,    R1
              SUBB    A,    R3
              MOV    R5,    A
              JC     SJF4
              CLR     25H
              RET
SJF3:         JB    24H,    SJF5
             CLR     C
             MOV    A,    R4
             SUBB    A,    R2
             MOV    R6,    A
             MOV    A,    R3
             SUBB    A,    R1
             MOV    R5,    A
             JC     SJF4
             CLR    25H
             RET
SJF4:        MOV    A,    R6
             CPL     A
            ADD    A,    #01H
            MOV    R6,    A
            MOV    A,    R5
            CPL     A
            ADDC    A,    #00H
            MOV    R5,    A
            SETB     25H
            RET
SJF5:        MOV    A,    R2
            ADD    A,    R4
            MOV    R6,    A
            MOV    A,    R1
            ADDC   A,    R3
            MOV    R5,    A
            JNC     SJF6
            MOV    R5,    #0FFH
            MOV    R6,    #0FFH
SJF6:       SETB     25H
            RET


呵呵,我的毕业设计刚好用到,所以就发上来了,这是我从书上找的,应该没什么错误,我是初学者,以后大家多多交流吧!!!!

使用特权

评论回复
19
joyce8848| | 2007-6-18 10:29 | 只看该作者

请指点

我设计的内容是用单片机控制光照强度,不知道用这种算法可行不??我看许多硕士论文都用的模糊理论,那个我们没学过,也不大好理解。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

488

主题

2158

帖子

1

粉丝