关于PID的一些笔记

  PID​的​基本​理念​是​读​取​传感器的值,​根据​计算​比例、​积分、​微分​响应​得出​期望​的​​输出,​将​三​个​值​相加​计算​输出。

1、控制系统

关于PID的一些笔记

  闭环系统如图。以温度控制距离,设定温度100度,这时传感器采到温度80度,经过控制算法后的输出将控制外设打开加热,整个系统的温度将会上升。采到温度高于设定温度同理。这样就形成了一个闭环的控制系统。

2、PID术语

比例​响应
​  比例​模​块​取决​于​设定​值​和​过程​变量​之间​的​差​值。​称为“误差”。比例​增益决定​了​输出​响应​对​误差​信号​的​比例。例如,​误差​为​10,​比例​增益​为​5​时,​比例​响应​为​50。​一般​而言,​提高​比例​增益​会​增加​控制​系统​响应​的​速度。但是​如果​比例​增益​太大,​过程​变量​会​有​振荡。如果​继续​增加Kc,​系统​振荡​会​越来越​大,​以至于​超出​控制,​使得​系统​变得​不​稳定。

积分​响应
​  积分​模​块​将​一段​时间​内的​误差​相加。 即使是​一个​很小​的​误差,​也​会​让​积分​响应​缓慢​增加。积分​响应​会​根据​时间​持续​增加,​除非​误差​为​0。​积分​响应​的​目的​在于​将​稳定​状态​的​误差​保持​在​0。稳定​状态​误差​是​过程​变量​和​设定​值​之间​的​差​值。当​积分​操作​满足​了​控制器​的​条件,​而​控制器​还​未​将​误差​保持​在​0​时,​会​产生​积分​饱和​的​结果。

微分​响应
​  微分​模​块​在​过程​变量​迅速​增大​时​停止​输出。微分​响应​与​过程​变量​变化​的​速度​之间​成​比例​关系。增加微分​时间​(Td)会​使​控制​系统​对​误差​的​反应​更加​剧烈,​会​增加​整个​控制​系统​的​响应​时间。大​多数​实用​控制​系统​使用​非常​小​的​微分​时间​(Td),​因为​微分​响应​对​过程​变量​的​噪声​特别​敏感。如​传感器​反馈​信号​中有​噪声​或​控制​循环​速率​太低,​微分​响应​会​使​控制​系统​变得​不​稳定。

  再配个图就是

关于PID的一些笔记

3、程序实现 

  增量式PID的计算公式是下面这个:

    关于PID的一些笔记

  算法的关键部分如下:

void PID_Handle(struct _PID *pp)
{
    int err1,err2;
    int Pout, Iout, Dout;
    int pidOutTemp;
    int Out;

    pp->En = pp->setTemp - pp->currTemp;            
    err1 = pp->En - pp->En_1;                
    err2 = pp->En - 2 * pp->En_1 + pp->En_2; 

    Pout = pp->Kp * err1;      //比例                 
    Iout = pp->Ti * pp->En;    //积分                      
    Dout = pp->Td * err2;      //微分                      

    pidOutTemp = Pout + Iout + Dout;   
    Out = pp->Dout + pidOutTemp;
    if (Out > MAX_TIME) 
    {
        Out = MAX_TIME;
    }
    else if (Out < MIN_TIME)
    {
        Out = MIN_TIME;
    }

    pp->Dout = Out;
    pp->En_2 = pp->En_1;
    pp->En_1 = pp->En;
}

  对结构体的定义如下:

struct _PID
{
    int currTemp;     //当前温度
    int setTemp;      //设定温度

    int En;           //当前误差
    int En_1;         //上次误差
    int En_2;         //上上次误差

    int Kp;          
    int Ti;          
    int Td;          

    int Dout;      
};

  都用了整型是为了计算更加快速,在输入之前,有对实际采集温度进行1位小数的保留。其他的想到了再编辑吧,准备再去试试位置式的PID。

 

 

上一篇:VMware Workstation 14.1.8 Player下载链接


下一篇:论文笔记---A Deep Nonnegative Matrix Factorization Approach via Autoencoder for Nonlinear Fault Detectio