书签 分享 收藏 举报 版权申诉 / 24
上传文档赚钱

类型带pid算法的程序2.doc

  • 上传人(卖家):淡淡的紫竹语嫣
  • 文档编号:542516
  • 上传时间:2020-05-23
  • 格式:DOC
  • 页数:24
  • 大小:66KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《带pid算法的程序2.doc》由用户(淡淡的紫竹语嫣)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    pid 算法 程序
    资源描述:

    1、PID 算法温控 C 语言 默认分类 2009-12-30 10:17:39 阅读 110 评论 0 字号:大中小 订 阅 PID 算法温控 C 语言 1. PID 调试步骤 没有一种控制算法比 PID 调节规律更有效、更方便的了。现在一些时髦点的调节器基本源自 PID。甚至可以这样说:PID 调节器是其它控制调节算法的妈。 为什么 PID 应用如此广泛、又长久不衰? 因为 PID 解决了自动控制理论所要解决的最基本问题,既系统的稳定性、快速性和准确性。 调节 PID 的参数,可实现在系统稳定的前提下,兼顾系统的带载能力和抗扰能力,同时,在 PID 调节器中引入积分项,系统增加了一个零积点,使

    2、之成为一阶或一阶以上的系统,这样 系统阶跃响应的稳态误差就为零。 由于自动控制系统被控对象的千差万别,PID 的参数也必须随之变化,以满足系统的性能要 求。这就给使用者带来相当的麻烦,特别是对初学者。下面简单介绍一下调试 PID 参数的一 般步骤: 1负反馈 自动控制理论也被称为负反馈控制理论。首先检查系统接线,确定系统的反馈为负反馈。例 如电机调速系统,输入信号为正,要求电机正转时,反馈信号也为正(PID 算法时,误差=输 入-反馈) ,同时电机转速越高,反馈信号越大。其余系统同此方法。 2PID 调试一般原则 a.在输出不振荡时,增大比例增益 P。 b.在输出不振荡时,减小积分时间常数 T

    3、i。 c.在输出不振荡时,增大微分时间常数 Td。 3一般步骤 a.确定比例增益 P 确定比例增益 P 时,首先去掉 PID 的积分项和微分项,一般是令 Ti=0、Td=0(具体见 PID 的参数设定说明) ,使 PID 为纯比例调节。输入设定为系统允许的最大值的 60%70%,由 0 逐 渐加大比例增益 P,直至系统出现振荡;再反过来,从此时的比例增益 P 逐渐减小,直至系 统振荡消失,记录此时的比例增益 P,设定 PID 的比例增益 P 为当前值的 60%70%。比例增益 P 调试完成。 b.确定积分时间常数 Ti 比例增益 P 确定后,设定一个较大的积分时间常数 Ti 的初值,然后逐渐减

    4、小 Ti,直至系统 出现振荡,之后在反过来,逐渐加大 Ti,直至系统振荡消失。记录此时的 Ti,设定 PID 的积 分时间常数 Ti 为当前值的 150%180%。积分时间常数 Ti 调试完成。 c.确定积分时间常数 Td 积分时间常数 Td 一般不用设定,为 0 即可。若要设定,与确定 P 和 Ti 的方法相同,取不振 荡时的 30%。 d.系统空载、带载联调,再对 PID 参数进行微调,直至满足要求。 2.PID 控制简介 目前工业自动化水平已成为衡量各行各业现代化水平的一个重要标志。同时,控制理论的发 展也经历了古典控制理论、现代控制理论和智能控制理论三个阶段。智能控制的典型实例是 模糊

    5、全自动洗衣机等。自动控制系统可分为开环控制系统和闭环控制系统。一个控制系统包 括控制器、传感器、变送器、执行机构、输入输出接口。控制器的输出经过输出接口、执行 机构,加到被控系统上;控制系统的被控量,经过传感器,变送器,通过输入接口送到控制 器。不同的控制系统,其传感器、变送器、执行机构是不一样的。比如压力控制系统要采用 压力传感器。电加热控制系统的传感器是温度传感器。目前,PID 控制及其控制器或智能 PID 控制器(仪表)已经很多,产品已在工程实际中得到了广泛的应用,有各种各样的 PID 控制 器产品, 各大公司均开发了具有PID参数自整定功能的智能调节器(intelligent regu

    6、lator), 其中 PID 控制器参数的自动调整是通过智能化调整或自校正、 自适应算法来实现。 有利用 PID 控制实现的压力、温度、流量、液位控制器,能实现 PID 控制功能的可编程控制器(PLC),还 有可实现 PID 控制的 PC 系统等等。 可编程控制器(PLC) 是利用其闭环控制模块来实现 PID 控制,而可编程控制器(PLC)可以直接与 ControlNet 相连,如 Rockwell 的 PLC-5 等。还有可 以实现 PID 控制功能的控制器,如 Rockwell 的 Logix 产品系列,它可以直接与 ControlNet 相连,利用网络来实现其远程控制功能。 1、开环控制

    7、系统 开环控制系统(open-loop control system)是指被控对象的输出(被控制量)对控制器 (controller)的输出没有影响。在这种控制系统中,不依赖将被控量反送回来以形成任何闭 环回路。 2、闭环控制系统 闭环控制系统(closed-loop control system)的特点是系统被控对象的输出(被控制量)会反 送回来影响控制器的输出,形成一个或多个闭环。闭环控制系统有正反馈和负反馈,若反馈 信号与系统给定值信号相反,则称为负反馈( Negative Feedback),若极性相同,则称为正 反馈,一般闭环控制系统均采用负反馈,又称负反馈控制系统。闭环控制系统的例

    8、子很多。 比如人就是一个具有负反馈的闭环控制系统,眼睛便是传感器,充当反馈,人体系统能通过 不断的修正最后作出各种正确的动作。如果没有眼睛,就没有了反馈回路,也就成了一个开 环控制系统。另例,当一台真正的全自动洗衣机具有能连续检查衣物是否洗净,并在洗净之 后能自动切断电源,它就是一个闭环控制系统。 3、阶跃响应 阶跃响应是指将一个阶跃输入(step function)加到系统上时,系统的输出。稳态误差是指 系统的响应进入稳态后,系统的期望输出与实际输出之差。控制系统的性能可以用稳、准、 快三个字来描述。稳是指系统的稳定性(stability),一个系统要能正常工作,首先必须是稳 定的,从阶跃响

    9、应上看应该是收敛的;准是指控制系统的准确性、控制精度,通常用稳态误 差来(Steady-state error)描述,它表示系统输出稳态值与期望值之差;快是指控制系统响 应的快速性,通常用上升时间来定量描述。 4、PID 控制的原理和特点 在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称 PID 控制, 又称 PID 调节。PID 控制器问世至今已有近 70 年历史,它以其结构简单、稳定性好、工作可 靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或 得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须 依靠经验和

    10、现场调试来确定,这时应用 PID 控制技术最为方便。即当我们不完全了解一个系 统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用 PID 控制技术。PID 控制,实际中也有 PI 和 PD 控制。PID 控制器就是根据系统的误差,利用比例、积分、微分 计算出控制量进行控制的。 比例(P)控制 比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比 例控制时系统输出存在稳态误差(Steady-state error) 。 积分(I)控制 在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如 果在进入稳态后存在稳态误差,则称这个控

    11、制系统是有稳态误差的或简称有差系统(System with Steady-state Error) 。为了消除稳态误差,在控制器中必须引入“积分项” 。积分项对 误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也 会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。 因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 微分(D)控制 在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动 控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性 组件(环节)或有滞后(d

    12、elay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。 解决的办法是使抑制误差的作用的变化“超前” ,即在误差接近零时,抑制误差的作用就应该 是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差 的幅值,而目前需要增加的是“微分项” ,它能预测误差变化的趋势,这样,具有比例+微分 的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严 重超调。 所以对有较大惯性或滞后的被控对象, 比例+微分(PD)控制器能改善系统在调节过程 中的动态特性。 5、PID 控制器的参数整定 PID 控制器的参数整定是控制系统设计的核心内容。它是根据被

    13、控过程的特性确定 PID 控制 器的比例系数、积分时间和微分时间的大小。PID 控制器参数整定的方法很多,概括起来有 两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参 数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二 是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于 掌握,在工程实际中被广泛采用。PID 控制器参数的工程整定方法,主要有临界比例法、反 应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式 对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要

    14、在实际运行中 进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行 PID 控制器参数的整 定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作;(2)仅加入比例控制环节, 直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;(3) 在一定的控制度下通过公式计算得到 PID 控制器的参数。 3.PID 控制器参数的工程整定,各种调节系统中 PID 参数经验数据以下可参照: 温度 T: P=2060%,T=180600s,D=3-180s 压力 P: P=3070%,T=24180s, 液位 L: P=2080%,T=60300s, 流量 L: P=401

    15、00%,T=660s。 4. PID 常用口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积分时间往下降 曲线波动周期长,积分时间再加长 曲线振荡频率快,先把微分降下来 动差大来波动慢。微分时间应加长 理想曲线两个波,前高后低 4 比 1 一看二调多分析,调节质量不会低 #include #include #include #include struct PID unsigned int SetPoint; / 设定目标 Desired Value unsigned int Proporti

    16、on; / 比例常数 Proportional Const unsigned int Integral; / 积分常数 Integral Const unsigned int Derivative; / 微分常数 Derivative Const unsigned int LastError; / Error-1 unsigned int PrevError; / Error-2 unsigned int SumError; / Sums of Errors ; struct PID spid; / PID Control Structure unsigned int rout; / PID

    17、Response (Output) unsigned int rin; / PID Feedback (Input) sbit data1=P10; sbit clk=P11; sbit plus=P20; sbit subs=P21; sbit stop=P22; sbit output=P34; sbit DQ=P33; unsigned char flag,flag_1=0; unsigned char high_time,low_time,count=0;/占空比调节参数 unsigned char set_temper=35; unsigned char temper; unsign

    18、ed char i; unsigned char j=0; unsigned int s; /* 延时子程序,延时时间以 12M 晶振为准,延时时间为 30ustime */ void delay(unsigned char time) unsigned char m,n; for(n=0;ni; /*移位操作,将本次要写的位移到最低位*/ temp=temp write_bit(temp); /*向总线写该位*/ delay(7); /*延时 120us 后*/ / TR0=1; EA=1; /* 读一位数据子程序 */ unsigned char read_bit() unsigned c

    19、har i,value_bit; EA=0; DQ=0; /*拉低 DQ,开始读时序*/ _nop_(); _nop_(); DQ=1; /*释放总线*/ for(i=0;i4; temper=i|j; /*获取的温度放在 temper 中*/ /*= = Initialize PID Structure = =*/ void PIDInit (struct PID *pp) memset ( pp,0,sizeof(struct PID); /*= = PID 计算部分 = =*/ unsigned int PIDCalc( struct PID *pp, unsigned int Next

    20、Point ) unsigned int 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-SumEror / 积分项 + pp-Derivative * dError); / 微分项 /*

    21、 温度比较处理子程序 */ compare_temper() unsigned char i; if(set_tempertemper) if(set_temper-temper1) high_time=100; low_time=0; else for(i=0;i1; if(m=1) data1=1; else data1=0; _nop_(); clk=1; _nop_(); /* 显示子程序 功能:将占空比温度转化为单个字符,显示占空比和测得到的温度 */ void display() unsigned char code number=0xfc,0x60,0xda,0xf2,0x66,

    22、0xb6,0xbe,0xe0,0xfe,0xf6; unsigned char disp_num6; unsigned int k,k1; k=high_time; k=k%1000; k1=k/100; if(k1=0) disp_num0=0; else disp_num0=0x60; k=k%100; disp_num1=numberk/10; disp_num2=numberk%10; k=temper; k=k%100; disp_num3=numberk/10; disp_num4=numberk%10+1; disp_num5=numbers/10; disp_1(disp_nu

    23、m); /* 主程序 */ main() unsigned char z; unsigned char a,b,flag_2=1,count1=0; unsigned char phil=2,0xce,0x6e,0x60,0x1c,2; TMOD=0x21; TH0=0x2f; TL0=0x40; SCON=0x50; PCON=0x00; TH1=0xfd; TL1=0xfd; PS=1; EA=1; EX1=0; ET0=1; ES=1; TR0=1; TR1=1; high_time=50; low_time=50; PIDInit ( / Initialize Structure sp

    24、id.Proportion = 10; / Set PID Coefficients spid.Integral = 8; spid.Derivative =6; spid.SetPoint = 100; / Set PID Setpoint while(1) if(plus=0) EA=0; for(a=0;a30) display(); count1=0; compare_temper(); TR0=0; z=1; while(1) EA=0; if(stop=0) for(a=0;a5;a+) for(b=0;b102;b+) if(stop=0) disp_1(phil); / break; EA=1;

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:带pid算法的程序2.doc
    链接地址:https://www.163wenku.com/p-542516.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库