zoukankan      html  css  js  c++  java
  • 一个简单的PID控制算法

    回校后要进行校电子设计竞赛,把以前做过的温控系统PID算法重温下。

    比例(P)、积分(I)、微分(D)控制算法各有作用:
    比例,反应系统的基本(当前)偏差e(t),系数大,可以加快调节,减小误差,但过大的比例使系统稳定性下降,甚至造成系统不稳定;
    积分,反应系统的累计偏差,使系统消除稳态误差,提高无差度,因为有误差,积分调节就进行,直至无误差;
    微分,反映系统偏差信号的变化率e(t)-e(t-1),具有预见性,能预见偏差变化的趋势,产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是微分对噪声干扰有放大作用,加强微分对系统抗干扰不利。积分和微分都不能单独起作用,必须与比例控制配合。

    以温控系统为例:

    比例调节,还没有加热到预定温度,就继续增加占空比,误差越大占空比增加的越厉害。微分调节,当实际温度越来越离目标温度近的时候,微分调节会拉下占空 比,避免冲过目标温度。积分调节,当温度稳定在目标温度之上一小点时,比例调节和微分调节无效,积分误差越来越大,进行积分调节,消除稳态误差。

    void SetPID(double p,i,d)
    {
        Kp = p;
        Ki = i * 10.0;
        Kd = d / 10.0;
    }
    void PIDCompute()
    {
        double error;
        double sumerror;      
        double derror;
        double lasterror = 27.0;
        error = settemp - temp;  //设定温度 - 当前温度
        sumerror += error;
        derror = error - lasterror;
        output = Kp * error + Ki * sumerror + Ki * derror;
        lasterror = error;
    }

    编程时只是设定它们的大概数值,在系统运行时通过反复调试来确定最佳值。

    程序开始时:SetPID(44.5,0.7,0.1);

    在单片机中断里每秒执行 PIDCompute() 一次。我的程序每秒钟采集一次当前温度,调节一次占空比。

  • 相关阅读:
    IT零起点转FICO学习路线
    Consuming a Web Service in ABAP
    SAP月末结账步骤
    sap dialog Screen Sequences
    ABAP:区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN
    查询abap 程式应用到系统表table
    SAP压缩excel并发送mail案例
    ABAP PARAMETERS 参数
    DQL、DML、DDL、DCL 概念与区别
    OLE Excel 、Word 转换 pdf 文件
  • 原文地址:https://www.cnblogs.com/ht-beyond/p/4292066.html
Copyright © 2011-2022 走看看