PID控制原理讲解0001_第1页
PID控制原理讲解0001_第2页
PID控制原理讲解0001_第3页
PID控制原理讲解0001_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PID 控制原理讲解经常有人问有关 PID 的用法,看一些有关单片及应用的书上都有关于 PID 的应用 原理,但是面对具体的问题就不知道如何应用了, 主要的问题是里面所用到的参 数以及计算结果需要进行什么? 经常有人问有关 PID 的用法, 看一些有关单片及应用的书上都有关于 PID 的应用原理, 但 是面对具体的问题就不知道如何应用了, 主要的问题是里面所用到的参数以及计算结果需要进行 什么处理, 通过什么样的换算才能具体的应用于实际, 另外在计算方法上也存在着数值计算的算 法问题,今天我在这里例举温度控中的 PID 部分,希望能够把 PID 的具体应用说明白。一般书上提供的计算公式中的几个

2、名词:1. ? 直接计算法和增量算法,这里的所谓增量算法就是相对于标准算法的相邻两次运算之差,得到的 结果是增量,也就是说,在上一次的控制量的基础上需要增加(负值意味着减少)控制量,例如 对于可控硅电机调速系统,就是可控硅的触发相位还需要提前(或迟后) 的量,对于温度控制就 是需要增加 (或减少) 加热比例, 根据具体的应用适当选择采用哪一种算法, 但基本的控制方法、 原理是完全一样的,直接计算得到的是当前需要的控制量,相邻两次控制量的差就是增量;2. ? 基本偏差 e(t), 表示当前测量值与设定目标间的差,设定目标是被减数,结果可以是正或负,正 数表示还没有达到,负数表示已经超过了设定值。

3、这是面向比例项用的变动数据。3. ?累计偏差 艺(e)= e(t)+e(t-1)+e(t-2)+e(1),这是我们每一次测量到的偏差值的总和,这是代数和,考虑到他的正负符号的运算的,这是面向积分项用的一个变动数据。4. ? 基本偏差的相对偏差e(t)-e(t-1) ,用本次的基本偏差减去上一次的基本偏差,用于考察当前控制的对象的趋势,作为快速反应的重要依据,这是面向微分项的一个变动数据。5. ? 三个基本参数: Kp, Ki , Kd. 这是做好一个控制器的关键常数,分别称为比例常数、积分常数和微分常数, 不同的控制对象他们需要选择不同的数值, 还需要经过现场调试才能获得较好的效果。6. ?

4、标准的直接计算法公式:Pout(t)=Kp*e(t)+Ki* 艺 e(t)+Kd*(e(t)-e(t-1);上一次的计算值:Pout(t-1)=Kp*e(t-1)+Ki* 艺 e(t-1)+Kd*(e(t-1)-e(t-2);两式相减得到增量法计算公式:Pdlt=Kp*(e(t)-e(t-1)+Ki*艺 e(t)+Kd*(e(t)-2*e(t-1)+e(t-2);*这里我们对 艺项的表示应该是对 e(i)从1到t全部总和,但为了打字的简便就记作艺e(t).三个基本参数 Kp, Ki , Kd. 在实际控制中的作用: ?比例调节作用: 是按比例反应系统的偏差, 系统一旦出现了偏差, 比例调节立即

5、产生调节作用用 以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降, 甚至造成系统的不稳定。积分调节作用: 是使系统消除稳态误差, 提高无差度。 因为有误差, 积分调节就进行, 甚至无差, 积分调节停止,积分调节输出一常值。积分作用的强弱取决于积分时间常数Ti , Ti 越小,积分作用就越强。反之 Ti 大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积 分作用常与另两种调节规律结合,组成 PI 调节器或 PID 调节器。 ? 微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能遇见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形

6、成之前,已被微分调节作用消除。因此, 可以改善系统的动态性能。在微分时间选择合适情况下。 可以减少超调,减少调节时间。 微分作用对噪声干 扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。具体应用中的数值量化处理: ?上面只是控制算法的数学方法,似乎有点抽象,在具体的控制项目中怎样对应呢?也就是 具体的量化问题。下面举一个在温度控制中的处理方法。对于加温的温度控制可以采用调节供电电压或在一定的时间循环周期内的供电时间比例来 调节加温控制温度, 一般以调节

7、加温时间比例比较简单,也是控制上比较常用的方法。 调压法控制的原理是通过可控硅的处罚相位角达到对电压的调节,这个电压是指有效电压, 直观上就是对一个正弦波形的前边切掉一块, 用不同的切割位置以保留剩余的面积。 为了叙述方便, 我们还是 采用控制时间比例的办法: 我们设定一个标准的加温周期, 例如 2 分钟, 我们就在这个两分钟周 期内对输出进行控制,也就是说在这个 2 分钟内加温多少时间,全速加温就是连续整个周期( 2 分钟) 都加温, 当然停止加温就是完全不输出, 根据我们的计算可以让加温时间在 0-2 分钟内变 化,比如计算所得我们在这一个周期内应该加温 1 分 30 秒,经过两分钟以后再

8、测量被加温物体 的温度,通过计算我们应该加温 1 分 28 秒,等等等等,这里除了加温以外的时间就是不加温, 等等下一个周期到来, 再进行实际测量计算下一周期我们的输出量, 周而复始, 不断地修正我们 的输出量,以达到对温度有效控制。为了对应我们的程序处理上的方便,我们在程序内部一般并不是用时分秒来计算的,通常 我们会使用系统的一个定时器用于系统全部时钟, 例如显示刷新、 键盘扫描等, 相对于计算来说, 我们的控制周期比较长, 所以我们可以对 2分钟进行细分, 例如我们用每分钟进行 100等分, 则 两分钟就是 200 等分,用于我们的温度控制,这样的输出比例的变化已经足够了,我们可以有 20

9、0 个输出等级了。取 200 的另一个好处是,对应于我们的 8 位单片机刚好可以在一个字节内进 行运算,程序简单运算速度快。当需要改变我们的定时周期时, 有些不同的加热对象, 例如较大 热惯性的加热对象时,可能 2 分钟周期太短了,我们可以通过修改基本定时常数的办法来实现, 而保持我们的 200 等分不变。 我们对 2 分钟进行 200 等分, 算一下他的每一个基本单位的具体时 间?To=60*2/200=0.6s=600ms这对于单片机来说太长了,因为如果我让我的定时器做到这么慢的定时周期就干不了别的 事了,为了显示、键盘等的处理一般我们定时在 5-10ms ,所以就需要另外设定一个变量 t

10、Templ 在每一个定时中断发生时对tTempI计数。例如我的系统定时器的定时常数对应于10ms,则设定tTempI在达到60的时候才确认是达到 600ms 了,才作为一个基本的输岀时间单位。对应于总周 期的修改, 我们的 200 等分可以不用修改, 而只要修改我们的变量 tTempI 的判断边界就可以了, 例如对应于 2分钟时是 60,则在 3分钟为周期时边界改为 90就行了,定下了我们的基本控制时 间分辨率以后, 我们的计算就可以不用改变了。 当然,根据您的具体对象也可以修改这个等分数, 我这里只是作为一个举例:例如 200 等分。温控仪器不离开测温器件,无论用什么测温器件(传感器),对于

11、控制上来说,首先需要将测到的值换算为温度数据,一般我们国内都采用摄氏度C,工业上使用的测温器件一般都是非线性的器件,经过放大、 A/D 转换所得到的电压数据与温度呈非线性关系,存在着微小的差异, 一般采用电压值表的办法获得实际温度, 这个表格是以每一个温度点上的电压值来表述的,由于我们的单片机 rom 的大小限制, 这个表格也不可能做得很细, 基本上以度作为间隔, 也就是说直 接查表只能获得度为单位的温度值,而实际测量的温度可能是介于T与T+1度之间,在PID控制计算上, 这样的分辨率是不够的, 所以我们还需要进一步获得具体的温度精确数据,一般采用将T与T+1之间的电压差和 AD实际值(mv)

12、进行定分比分点的办法(更精确的是采用二次插值计 算法)获得温度的精确数值,也就是获得小数部分。如果能够做到1/10 度的温度分辨率精度就可以基本满足控制运算要求了, 所以我们可以用定点数的办法处理。不采用浮点数是因为单片机的运算速度不适合用浮点数,定点数处理,就是将温度的内部运算单位放大 10 倍,在用于显示 的时候再除以 10 也就是固定显示一个小数点位置。如果想让我们的控制做的更好,还可以再提 高温度的内部精度, 例如精确到 1/100 度, 这也是现在高级温控仪采用的精度,但在通常情况下这个精度似乎有点过剩。PID的三个基本参数 Kp , Ki , Kd, 般由试验确定,根据我们的实际工

13、作对象去初步确定, 然后在实际运行过程中进行调节, 以达到相对理想的效果, 为了达到比较好的控制效果, 这三个 参数一般不采用整数, 但同时为了减轻单片机的运算量, 通常采用 2 的整倍数放大的办法确定这 些参数,在运算结果中再除以 2 的整倍数,因为单片机运算中可以用移位来完成,速度比较快, 常用的是 8倍或 16 倍放大,注意这三个参数采用相同的放大比例。编程的过程中自己从头到尾 要清楚我的参数是经过放大了的,就不会忘记对运算结果还原。通过怎样的运算来获得 2-200 加温比例数据呢?很简单,为了说明这个问题,我们先假定 只考虑最简单的比例控制算法, 假定我们的控制范围是在 200 度,则

14、设定温度与实践温度的差的 最大值就是200 (度),我们就用去他去输岀,这时的参数Kp=1,当我们为了提高加热速度,而使受控制的区域缩小,例如只控制 50 度范围,如目标温度设定为230,我们控制的范围就在180-230 范围内, 这时的差值不够 200,我们就把计算得到的数字乘以 4 就得到 0-200 的数据了, 假定当前实测温度为 222,则230-222=8 再乘以 4算得 32,这就作为我们的输岀比例数据。 当然 我们这里还没有考虑超温的情况, 计算产生了负数。 这一部分将作为我们控制输岀的基本量, 上 面的计算是对应于 Kp=4DE,再加入微分和积分项,这时我们的Kp可以基本保持不

15、变。Kp在这里基本确立了我们的起始控制点到目标值之间的控制范围,微分和积分项在这里只是作为附加部 分,基本不影响控制范围。 当温度突然下降一度时, 我们希望补上多少比例区进行下一轮的加热 呢?这就是微分系数: 早我经过这么久的控制, 目标温度还是低了一点, 我希望用多少的比例去 弥补这个长期欠温呢?这就是积分常数, 我想你已经大概已经确定了这些数据了。 一句话, 比例 常数决定我们参与在目标点以前真正控制的范围,Kp=S本时间总周期/控制范围。Ki,Kd是您希望的反应对策速度, 看你有没有耐心去逐步达到稳定点, 过激了会起反作用的, 过于胆小怕事是 达不到预期目标的。最后,在计算结果交付于输岀

16、之前,还需要进行一些修正,例如当计算结果大于200 时按200 输岀,计算结果小于零时按零输岀。 ?处理上的一些常用方法为了提高测温的 准确性, 往往需要进行多次测温。 然后剔除测得结果中的最大值和最小值。 把剩余值的数值相加在计算平均值, 这样比较有利于抗干扰, 或者由于其他原因引起的测量值波 动,初期的处理是很必要的。 测温工作和 PID 计算一般安排在上一个输岀周期的最后阶段就提前 进行的最后阶段就提前进行, 测温次数一般在 7-13 次,去掉最大最下数以后保留 5-11 次用于运 算,均值运算的累加部分将安排在每一次测温以后逐步进行,不会过多占用系统时间。 只有系统的时间允许,尽可能的

17、测多几次,所得到的结果也会相对精确点。运算将会占用很长的时间,这是相对于我们的一个基本定时周期来讲的,一个系统定时周 期内我们的系统还要处理很多事情,例如显示的刷新、键盘的扫描、键盘码的处理执行等等,如果我们的运算占用很多时间的话那么就会岀现一个系统定时周期内完不成的情况。所以如果您的系统仅仅是一台温控仪的话, 就可以将运算部分放到主程序中进行, 而常规的刷新扫描之类的才 放在定时中断里处理, 这样编制的主程序就非常清晰明了, 这是比较理想的情况。 如果温度控制 仅仅作为您的系统中的一部分小插曲, 那就需要认真考虑程序的布局了, 主程序有更重要的任务 要处理, 温度控制运算部分就只能委托系统定

18、时器来承担了,时间不够用怎么办?假定我们的定时周期是10ms,显示刷新部分要用1ms,键盘扫描处理要 1ms,PID运算要2ms (假定),留给主程序的时间可能不够了,我们就 需要对我们的 PID 运算进行任务的分割,把运算分成几个部 分进行,每一次进入运算程序只计算其中的一小部分,经过N次的调才完成一个完整的PID运算,这样就不会影响整个系统的运作了, 这里面需要细细的推敲、 分割, 这是面对一个较大系统的一 般处理方法, 对其他任务也可以采用分割的办法进行细化,例如对显示刷新, 现在液晶屏用得比较多,环境的干扰,数据的变化都会引起花屏或反应迟钝,而刷新需要占用很长的时间,我们也可以采用分片

19、刷新的办法处理,把每次刷新所占用的时间减到最短。PID 的输出部分可以放到系统定时中断里处理,这部分占用的时间不长,可以随带完成。前面我们讲到将时间作 200 等分记作 Tset ,这就是将一个约定时间 200 级不同的输出时间 比例,通过我们的计算得到一个介于 0-200 之间的数 Tout ,然后每次在我们的 PID 基本定时时 间中对这个 Tout 减 1,当等分计数器 Tset 也达到零时进行下一轮控制循环, 重新计算 Tout 。这 样我们就完成一个控制比例 Tout/200 ,这个 Tout 是计算获得的原始数据。运算中往往出现数据溢出的情况,所以一般在运算中都要求对数据强制转换成

20、 int 型,注 意需要考虑符号,另外,对有些参数如积分项的累加数过大时会起反作用,使调节失灵,或者引 起大幅震荡,为此我们对这一项引入一个数值最大界限,当结果超出约定界限时,不再增加(或 减少) 。加温的整个过程没有必要全程 PID 控制,一般可以在设定目标值前一个温度区域才进行 PID 控制,例如,设定目标温度为 300度,则我们可以在 250 度以前全速加温,当达到 250 以后 才开始计算 PID 并予以控制, 这样可以加快加温速度又不影响温度控制。 在不产生过大的过冲的 情况下, 尽可能把起控点抬高, 有利于后面控制部分的进一步细化。 在进入控制之前我们的积分 项纪录数据为零。对于用

21、调压法控制输出时,由于正弦波相对于延时导通的相位角输出的电压有效值是非线 性的, 而且三角函数计算也很费时, 所以建议用查表法处理, 同样可以采用查表加插值获得移向 数据, 其他的计算方法和用继电器比例输出法是一样的。硬件上还需要做一个比较精确的过零负脉冲电路, 让脉冲发生于过零点以前, 这样我们就可以在过零以前先关闭输出, 脉冲宽度越窄越 好,至少这个脉冲宽度不能大于1ms过零脉冲的识别也需要一点小小的处理,防止假脉冲混入,防止电网干扰,这是软件上的问题。参数的设定与调整这是 PID 最困难的部分,编程时只设定他们的大概数值,然后通过反复的调试才能找到相 对比较理想的参数值。 面向不同的控制

22、对象参数都不同, 所以我们无法提供参考数值, 但是我们 可以根据这些参数在整个 PID 过程中的作用原理,来讨论我们的对策。1. 加温很迅速就达到目标值,但是温度过冲很大:1. 比例系数太大,致使在未达到设定温度前加温比例过高;2. 微分系数小,致使对对象反应不敏感;2. 加温经常达不到目标值,小于目标值的时间较多:1. 比例系数过小,加温比例不够;2. 积分系数过小,对恒偏差补偿不足;3. 基本上能够在控制目标上,但上下偏差偏大,经常波动:1. 微分系数过小,对及时变化反应不够快,反映措施不力;2. 积分系数过大,使微分反应被淹没钝化;4. 受工作环境影响较大,在稍有变动时就会引起温度的波动

23、:1. 微分系数过小,对及时变化反应不够快,不能及时反映;2. 设定的基本定时周期过长,不能及时得到修正;选择一个合适的时间常数很重要,要根据我们的输出单位采用什么器件来确定,如果是采 用可控硅的, 则可设定时间常数的范围就很自由, 如果采用继电器的则过于频繁的开关会影响继 电器的使用寿命,所以就不太适合采用较短周期。一般的周期设定范围为 1-10 分钟较为合适。为了调试方便,起码在调试阶段您必须编制一个可以对参数进行随时修改和记忆的接口, 否则你会很辛苦,老是在现场与办公室之间来回跑。关于自整定问题: 在通用仪表行业用得比较多,因为他们的工作对象是不确定的,而不同的对象所使用的参 数是千变万化的, 所以无法为用户设定参数。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论