zoukankan      html  css  js  c++  java
  • PID控制算法的C语言实现二 PID算法的离散化

    上一节中,我论述了PID算法的基本形式,并对其控制过程的实现有了一个简要的说明,通过上一节的总结,基本已经可以明白PID控制的过程。这一节中先继续上一节内容补充说明一下。 

       1.说明一下反馈控制的原理,通过上一节的框图不难看出,PID控制其实是对偏差的控制过程

      

     2.如果偏差为0,则比例环节不起作用,只有存在偏差时,比例环节才起作用。   

     

     3.积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差。 

      

     4.而微分信号则反应了偏差信号的变化规律,或者说是变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的快速性。 

       好了,关于PID的基本说明就补充到这里,下面将对PID连续系统离散化,从而方便在处理器上实现。下面把连续状态的公式再贴一下:

    假设采样间隔为T,则在第K T时刻: 

    偏差err(K)=rin(K)-rout(K); 

    积分环节用加和的形式表示,即err(K)+err(K+1)+„„

    微分环节用斜率的形式表示,即[err(K)-err(K-1)]/T; 

    从而形成如下PID离散表示形式:

    至于说KpKiKd三个参数的具体表达式,我想可以轻松的推出了,这里节省时间,不再详细表示了。

     

    其实到这里为止,PID的基本离散表示形式已经出来了。目前的这种表述形式属于位置型PID另外一种表述方式为增量式PID,由U上述表达式可以轻易得到:

    这就是离散化PID的增量式表示方式,由公式可以看出,增量式的表达结果和最近三次的偏差有关,这样就大大提高了系统的稳定性。需要注意的是最终的输出结果应该为 

           

        u(K)+增量调节值

     

    PID的离散化过程基本思路就是这样,下面是将离散化的公式转换成为C语言,从而实现微控制器的控制作用。

     

     

  • 相关阅读:
    while和do while习题
    Flexigrid折行显示问题
    【Cocos2d-x游戏引擎开发笔记(25)】XML解析
    ruby简单的基本 6
    原因好消息: PSP游戏自己主动算法设计(两)
    《约会专家》拖车【约会宝典】总结
    C++在stack的deque实现
    hdu 4869
    SQL Server 2008杀数据库连接
    BestCoder-Round#33
  • 原文地址:https://www.cnblogs.com/wyuzl/p/6515728.html
Copyright © 2011-2022 走看看