数字PID算法

发布者:chaxue1987最新更新时间:2016-07-01 来源: eefocus关键字:数字  PID算法 手机看文章 扫描二维码
随时随地手机看文章

/*====================================================================================================
    这是从网上找来的一个比较典型的PID处理程序,在使用单片机作为控制cpu时,请稍作简化,具体的PID
参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,
而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可
大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余
数补偿。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。
=====================================================================================================*/
#include
#include
/*====================================================================================================
    PID Function
    
    The PID (比例、积分、微分) function is used in mainly
    control applications. PIDCalc performs one iteration of the PID
    algorithm.

    While the PID function works, main is just a dummy program showing
    a typical usage.
=====================================================================================================*/

typedef struct PID {

        double  SetPoint;           //  设定目标 Desired Value

        double  Proportion;         //  比例常数 Proportional Const
        double  Integral;           //  积分常数 Integral Const
        double  Derivative;         //  微分常数 Derivative Const

        double  LastError;          //  Error[-1]
        double  PrevError;          //  Error[-2]
        double  SumError;           //  Sums of Errors

} PID;

/*====================================================================================================
   PID计算部分
=====================================================================================================*/

double PIDCalc( PID *pp, double NextPoint )
{
    double  dError,
            Error;

        Error = pp->SetPoint -  NextPoint;          // 偏差
        pp->SumError += Error;                      // 积分
        dError = pp->LastError - pp->PrevError;     // 当前微分
        pp->PrevError = pp->LastError;
        pp->LastError = Error;
        return (pp->Proportion * Error              // 比例项
            +   pp->Integral * pp->SumError         // 积分项
            +   pp->Derivative * dError             // 微分项
        );
}

/*====================================================================================================
   Initialize PID Structure
=====================================================================================================*/

void PIDInit (PID *pp)
{
    memset ( pp,0,sizeof(PID));
}

/*====================================================================================================
    Main Program
=====================================================================================================*/

double sensor (void)                    //  Dummy Sensor Function
{
    return 100.0;
}

void actuator(double rDelta)            //  Dummy Actuator Function
{}

void main(void)
{
    PID         sPID;                   //  PID Control Structure
    double      rOut;                   //  PID Response (Output)
    double      rIn;                    //  PID Feedback (Input)

    PIDInit ( &sPID );                  //  Initialize Structure
    sPID.Proportion = 0.5;              //  Set PID Coefficients
    sPID.Integral   = 0.5;
    sPID.Derivative = 0.0;
    sPID.SetPoint   = 100.0;            //  Set PID Setpoint

    for (;;) {                          //  Mock Up of PID Processing

        rIn = sensor ();                //  Read Input
        rOut = PIDCalc ( &sPID,rIn );   //  Perform PID Interation
        actuator ( rOut );              //  Effect Needed Changes
    }
}

关键字:数字  PID算法 引用地址:数字PID算法

上一篇:F020在线升级程序
下一篇:当主函数与中断函数共享变量问题

推荐阅读最新更新时间:2024-03-16 14:59

数字一体机普及在即 标准统一成核心点
  随着有线数字电视整体转换的步伐加快、全国有线数字电视网络覆盖率不断提高,各大彩电厂商纷纷制定计划并针对有线数字电视市场推出有线数字一体机产品;但是,由于“小卡”在不同的运营商之间难以通用,导致数字一体机市场受到一定程度的制约,运营商与彩电终端厂商之间也一直苦于无法建立紧密耦合的产业合作模式,整个数字电视产业的“端到端”水平始终在低水平的层次上徘徊。   事实上,从全球数字新媒体的发展看,通过产业链紧密合作、实现端到端的无缝数字媒体应用总趋势十分明显。比如,正大张旗鼓推广3G的国内外电信运营商,均采取了手机、上网本等终端定制策略,实现3G宽带无线模块的终端内置,从而拉动数据增值业务.       TCL作为国内率先推出全
[家用电子]
关于FLIR红外成像数字万用表介绍
前阵子,#程序员都爱格子衫#的话题上了热搜,引发网友们的吐槽围观,讨论人群迅速漫延到了各路技术男。相对于程序员的人人格子衫,万用表、测温仪、钳形表、湿度仪等测试测量仪器便是我们工程师的标配了,尤其是采用IGM红外成像引导测量技术的仪器,更是工程师日常工作的好帮手。 IGM红外成像引导测量技术是指在传统的测试测量产品上,采用FLIR Lepton®热成像传感器,让问题可视化,可以精确定位有待进一步测量观察的可疑位置。(本项技术菲力尔公司已申请专利) 常规设备的维护巡检和维修,是我们工程师日常工作的一部分。FLIR 推出的IGM红外成像引导测量技术,它可以直观引导你发现肉眼无法察觉的热问题,帮助准确了解故障排查的核心关键,避免
[测试测量]
关于FLIR红外成像<font color='red'>数字</font>万用表介绍
基于FPGA的同步测周期高精度数字频率计的设计
摘 要:本文介绍了一种同步测周期计数器的设计,并基于该计数器设计了一个高精度的数字频率计。文中给出了计数器的VHDL编码,并对频率计的FPGA实现进行了仿真验证,给出了测试结果。 在现代数字电路设计中,采用FPGA结合硬件描述语言VHDL可以设计出各种复杂的时序和逻辑电路,具有设计灵活、可编程、高性能等优点。本文将介绍一种基于FPGA,采用同步测周期的方法来实现宽频段高精度数字频率计的设计。 图1 同步测周期计数器 同步测周期频率计的原理 在数字频率计中,测周期计数器是主要的电路,其功能是:使用标准时钟以被测频率信号的一个周期为时限进行脉冲计数。传统的测周期计数器采用门控计数器来实现,即采用一个同被测频率信号周期宽度相
[模拟电子]
基于FPGA的同步测周期高精度<font color='red'>数字</font>频率计的设计
数字式兆欧表的电路原理图解
数字式一般由直流电压变换器将电池电压转换为直流高压电作为测试电压,这个测试电压施加在被测物上产生的电流经电流电压转换器转换为相应的电压值,然后送入模数转换器变为数字编码,再经微处理器计算处理,由显示器显示出相应的电阻值。数字式兆欧表的电路原理框图如图所示。 图数字式兆欧表的电路原理框图 (1)直流电压变换器。直流电压变换器(dc-dc变换器)将电池电压转换为直流高压作为测试电压,它是数字式兆欧表的关键部分,常见有250v、500v、1000v三种测试电压(也有2500v、5000v等较高测试电压)。数字式兆欧表一般采用脉宽调制(pwm)型集成控制器将电池的直流电压转换为脉宽调制信号,经升压变压器转化为高压脉冲,由倍压整流(二倍
[测试测量]
<font color='red'>数字</font>式兆欧表的电路原理图解
容量扩展技术轻松增加数字存储空间
       数字内容的爆炸式增长大大推动了数字家庭对于以磁盘为基础的存储需求。个人录像机(PVR)或者个人计算机(PC)随机内置的单个驱动器已经不能满足消费者的要求。因此,这就刺激了附加存储器市场的巨大增长:外部驱动器市场从2004年到2005年增长超过149%,而且预计在2005年到2010年之间总体增长会超过263%。容量扩展技术通过实现消费者增加存储的简单化与维护管理单块驱动器的轻松化,解决了外部硬盘盒所面临的挑战,而且也并不需要打开用户的个人计算机或者个人录像机机壳。   数字家庭需要更大的存储容量   数字文件的规模也在变大。从数码相机百万级像素的快速升级,到当今将标准清晰度电视转换为高清晰度电视(HDTV),数字
[嵌入式]
使用数字万用表来检测电子元器件的时候需注意的几点
数字万用表一直是生产线测试工程师、研发工程师和电气维护人员的必备工具。这是因为工程师可以用它来验证各种电子元件的性能,如二极管、晶体管、电阻、电容和其他元件。但对于工程师来说,往往容易忽略一些关键元素,导致测试结果不准确,甚至损坏部件。 下面总结一下电子元器件测试时应注意的一些事项,希望给到大家帮助: 1.当使用万用表测试电阻/熔断/电容/二极管,必须切断电源,放电测量目标完全(特别是电容的目标),以避免电信号的影响和影响的组件测试仪器,确保测试结果的准确性。 2.使用万用表测试线路的通断时,许多工程师会错误地理解,当仪器哔哔声时,线路完全处于路径状态,电阻值几乎为零。 事实上,实际情况是当被测线路的电阻值低于某一
[测试测量]
使用<font color='red'>数字</font>万用表来检测电子元器件的时候需注意的几点
数字功率计WT300E系列产品的功能特点及应用范围
数字功率计WT300E系列产品介绍: WT300E系列数字功率计是久负盛名的横河(Yokogawa)紧凑型功率计的第五代产品。横河的功率计产品在确保能耗标准和电气设备功耗测量的领域中长期扮演至关重要的角色。 WT300E系列包括:WT310E单相输入型;WT310EH单相输入/大电流型;WT332E 2输入单元型;WT333E 3输入单元型,精度为读数的0.1% +量程的0.05%。 WT310E提供的电流测量功能最低到50微安左右,高至26安培RMS,能够轻松支持客户测试自己的产品是否符合能源之星、SPECpower 、IEC62301 / EN50564等标准 ,进行电池和待机功耗等低水平电压测试,使用WT300E系列无疑是这
[测试测量]
IBM数字化医院基础架构解决方案
业务挑战   医院数字化建设是一个庞大而复杂的系统工程,其整体系统由上百个业务子系统组建而成,而这些系统间又有频繁的数据交换和业务联动。   方案简介   本方案的核心是统一的高性能的 SAN 架构,医院的大部分数据都存储在 SAN 的环境中,通过光纤交换机连接不同的数据库服务和应用服务器进行各种业务处理。为支持医院越来越高的业务连续性要求,我们建议在不同于主中心的楼房中建立容灾机房,运用业界成熟的技术实现对存储系统做备份容灾。   下面是数据中心(信息中心)建设中与临床信息系统相关各部分的概述及配置参考。   数据中心系统   采用两台 8路 3.5G 处理器/32G 内存高性能小型机作为数据库服务器主机(支持 16
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved