收藏 分享(赏)

带pid算法的程序2.doc

上传人:11xg27ws 文档编号:8721576 上传时间:2019-07-09 格式:DOC 页数:35 大小:64KB
下载 相关 举报
带pid算法的程序2.doc_第1页
第1页 / 共35页
带pid算法的程序2.doc_第2页
第2页 / 共35页
带pid算法的程序2.doc_第3页
第3页 / 共35页
带pid算法的程序2.doc_第4页
第4页 / 共35页
带pid算法的程序2.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、带 pid 算法的程序 2PID 算法温控 C 语言1. PID 调试步骤 没有一种控制算法比 PID 调节规律更有效、更方便的了。现在一些时髦点的调节器基本源自 PID。甚至可以这样说:PID 调节器是其它控制调节算法的妈。 为什么 PID 应用如此广泛、又长久不衰? 因为 PID 解决了自动控制理论所要解决的最基本问题,既系统的稳定性、快速性和准确性。调节 PID 的参数,可实现在系统稳定的前提下,兼顾系统的带载能力和抗扰能力,同时,在 PID 调节器中引入积分项,系统增加了一个零积点,使之成为一阶或一阶以上的系统,这样系统阶跃响应的稳态误差就为零。 由于自动控制系统被控对象的千差万别,P

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

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

4、 Ti 为当前值的 150%180%。积分时间常数 Ti 调试完成。 c.确定积分时间常数 Td 积分时间常数 Td 一般不用设定,为 0 即可。若要设定,与确定 P和 Ti 的方法相同,取不振荡时的 30%。 d.系统空载、带载联调,再对 PID 参数进行微调,直至满足要求。 2.PID 控制简介 目前工业自动化水平已成为衡量各行各业现代化水平的一个重要标志。同时,控制理论的发展也经历了古典控制理论、现代控制理论和智能控制理论三个阶段。智能控制的典型实例是模糊全自动洗衣机等。自动控制系统可分为开环控制系统和闭环控制系统。一个控制系统包括控制器、传感器、变送器、执行机构、输入输出接口。控制器的

5、输出经过输出接口、执行机构,加到被控系统上;控制系统的被控量,经过传感器,变送器,通过输入接口送到控制器。不同的控制系统,其传感器、变送器、执行机构是不一样的。比如压力控制系统要采用压力传感器。电加热控制系统的传感器是温度传感器。目前,PID 控制及其控制器或智能 PID 控制器(仪表)已经很多,产品已在工程实际中得到了广泛的应用,有各种各样的 PID控制器产品,各大公司均开发了具有 PID 参数自整定功能的智能调节器(intelligent regulator),其中 PID 控制器参数的自动调整是通过智能化调整或自校正、自适应算法来实现。有利用 PID 控制实现的压力、温度、流量、液位控制

6、器,能实现 PID 控制功能的可编程控制器(PLC),还有可实现 PID 控制的 PC 系统等等。 可编程控制器(PLC) 是利用其闭环控制模块来实现 PID 控制,而可编程控制器(PLC)可以直接与 ControlNet 相连,如 Rockwell 的 PLC-5 等。还有可以实现 PID 控制功能的控制器,如 Rockwell 的 Logix 产品系列,它可以直接与 ControlNet 相连,利用网络来实现其远程控制功能。 1、开环控制系统 开环控制系统(open-loop control system)是指被控对象的输出(被控制量)对控制器(controller)的输出没有影响。在这种

7、控制系统中,不依赖将被控量反送回来以形成任何闭环回路。 2、闭环控制系统 闭环控制系统(closed-loop control system)的特点是系统被控对象的输出(被控制量)会反送回来影响控制器的输出,形成一个或多个闭环。闭环控制系统有正反馈和负反馈,若反馈信号与系统给定值信号相反,则称为负反馈( Negative Feedback),若极性相同,则称为正反馈,一般闭环控制系统均采用负反馈,又称负反馈控制系统。闭环控制系统的例子很多。比如人就是一个具有负反馈的闭环控制系统,眼睛便是传感器,充当反馈,人体系统能通过不断的修正最后作出各种正确的动作。如果没有眼睛,就没有了反馈回路,也就成了一

8、个开环控制系统。另例,当一台真正的全自动洗衣机具有能连续检查衣物是否洗净,并在洗净之后能自动切断电源,它就是一个闭环控制系统。 3、阶跃响应 阶跃响应是指将一个阶跃输入(step function)加到系统上时,系统的输出。稳态误差是指系统的响应进入稳态后,系统的期望输出与实际输出之差。控制系统的性能可以用稳、准、快三个字来描述。稳是指系统的稳定性(stability),一个系统要能正常工作,首先必须是稳定的,从阶跃响应上看应该是收敛的;准是指控制系统的准确性、控制精度,通常用稳态误差来(Steady-state error)描述,它表示系统输出稳态值与期望值之差;快是指控制系统响应的快速性,

9、通常用上升时间来定量描述。 4、PID 控制的原理和特点 在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称 PID 控制,又称 PID 调节。PID 控制器问世至今已有近 70 年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用 PID 控制技术最为方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID 控制技术。PID 控制,实际中也有 PI

10、和 PD 控制。PID 控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。 比例(P)控制 比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error) 。 积分(I)控制 在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error) 。为了消除稳态误差,在控制器中必须引入“积分项” 。积分项对误差取决于时间的积分,随着时间的增加,积

11、分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 微分(D)控制 在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前” ,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项

12、的作用仅是放大误差的幅值,而目前需要增加的是“微分项” ,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。 5、PID 控制器的参数整定 PID 控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定 PID 控制器的比例系数、积分时间和微分时间的大小。PID 控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必

13、可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID 控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行 PID 控制器参数的整定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作;(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大

14、系数和临界振荡周期;(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=40100%,T=660s。 4. PID 常用口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积分时间往下降 曲线波动周期长,积分时间再加长 曲线振

15、荡频率快,先把微分降下来 动差大来波动慢。微分时间应加长 理想曲线两个波,前高后低 4 比 1 一看二调多分析,调节质量不会低#include#include#include#includestruct PID unsigned int SetPoint; / 设定目标 Desired Valueunsigned int Proportion; / 比例常数 Proportional Constunsigned int Integral; / 积分常数 Integral Constunsigned int Derivative; / 微分常数 Derivative Constunsigned

16、int LastError; / Error-1unsigned int PrevError; / Error-2unsigned int SumError; / Sums of Errors;struct PID spid; / PID Control Structureunsigned int rout; / PID 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

17、=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; unsigned char i;unsigned char j=0;unsigned int s;/*延时子程序,延时时间以 12M 晶振为准,延时时间为 30ustime*/void delay(unsigned char time)unsigned char m,n;for(n=0;ni; /*移位操作,

18、将本次要写的位移到最低位*/temp=tempwrite_bit(temp); /*向总线写该位*/delay(7); /*延时 120us 后*/ TR0=1;EA=1;/*读一位数据子程序*/unsigned char read_bit()unsigned char 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

19、 *pp)memset ( pp,0,sizeof(struct PID);/*=PID 计算部分=*/unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )unsigned int dError,Error;Error = pp-SetPoint - NextPoint; / 偏差pp-SumError += Error; / 积分dError = pp-LastError - pp-PrevError; / 当前微分pp-PrevError = pp-LastError;pp-LastError = Error;retu

20、rn (pp-Proportion * Error / 比例项+ pp-Integral * pp-SumEror / 积分项+ pp-Derivative * dError); / 微分项/*温度比较处理子程序*/compare_temper()unsigned char i;if(set_tempertemper)if(set_temper-temper1) high_time=100;low_time=0;elsefor(i=0;i0)high_time=0;low_time=100;elsefor(i=0;i1;if(m=1)data1=1;elsedata1=0;_nop_();cl

21、k=1;_nop_();/*显示子程序功能:将占空比温度转化为单个字符,显示占空比和测得到的温度*/void display()unsigned char code number=0xfc,0x60,0xda,0xf2,0x66,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;elsedisp_num0=0x60;k=k%100;disp_num1=numberk/10;disp_num2=numberk%10

22、;k=temper;k=k%100;disp_num3=numberk/10;disp_num4=numberk%10+1;disp_num5=numbers/10;disp_1(disp_num);/*主程序*/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 Structurespid.Proportion = 10; / Set PID Coefficients

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报