PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。
P值设大后, OP输出是增大的。
1、比例P控制
比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。
2、积分I控制
为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
3、微分D控制
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。
解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
扩展资料:
PID的用途:
PID用途广泛、使用灵活,已有系列化产品,使用中只需设定三个参数(Kp,Ti和Td)即可。在很多情况下,并不一定需要全部三个单元,可以取其中的一到两个单元,但比例控制单元是必不可少的。
首先,PID应用范围广。虽然很多工业过程是非线性或时变的,但通过对其简化可以变成基本线性和动态特性不随时间变化的系统,这样PID就可控制了。
其次,PID参数较易整定。也就是,PID参数Kp,Ti和Td可以根据过程的动态特性及时整定。如果过程的动态特性变化,例如可能由负载的变化引起系统动态特性变化,PID参数就可以重新整定。
第三,PID控制器在实践中也不断的得到改进
PID在控制非线性、时变、耦合及参数和结构不确定的复杂过程时,工作得不是太好。最重要的是,如果PID控制器不能控制复杂过程,无论怎么调参数都没用。
虽然有这些缺点,但简单的PID控制器有时却是最好的控制器。
参考资料来源:百度百科—PID控制
在pid运算中,输入输出之间通过什么来量化呢?
比如输入的温度偏差ek范围是0~200摄氏度,输出要求在0~1之间,增量式pid运算是直接对温度偏差数据进行计算,得到的结果不会是在0~1之间的,那么结果△u应该做什么样的量化处理使之范围在0~1之间呢?求dx介绍下。
ps:下面是网上找的别人的经验介绍,有点似懂非懂的感觉
具体应用中的数值量化处理:
上面只是控制算法的数学方法,似乎有点抽象,在具体的控制项目中怎样对应呢?也就是具体的量化问题。下面举一个在温度控制中的处理方法。
对于加温的温度控制可以采用调节供电电压或在一定的时间循环周期内的供电时间比例来调节加温控制温度,一般以调节加温时间比例比较简单,也是控制上比较常用的方法。调压法控制的原理是通过可控硅的处罚相位角达到对电压的调节,这个电压是指有效电压,直观上就是对一个正弦波形的前边切掉一块,用不同的切割位置以保留剩余的面积。为了叙述方便,我们还是采用控制时间比例的办法:我们设定一个标准的加温周期,例如2分钟,我们就在这个两分钟周期内对输出进行控制,也就是说在这个2分钟内加温多少时间,全速加温就是连续整个周期(2分钟)都加温,当然停止加温就是完全不输出,根据我们的计算可以让加温时间在0-2分钟内变化,比如计算所得我们在这一个周期内应该加温1分30秒,经过两分钟以后再测量被加温物体的温度,通过计算我们应该加温1分28秒,等等等等,这里除了加温以外的时间就是不加温,等等下一个周期到来,再进行实际测量计算下一周期我们的输出量,周而复始,不断地修正我们的输出量,以达到对温度有效控制。
为了对应我们的程序处理上的方便,我们在程序内部一般并不是用时分秒来计算的,通常我们会使用系统的一个定时器用于系统全部时钟,例如显示刷新、键盘扫描等,相对于计算来说,我们的控制周期比较长,所以我们可以对2分钟进行细分,例如我们用每分钟进行100等分,则两分钟就是200等分,用于我们的温度控制,这样的输出比例的变化已经足够了,我们可以有200个输出等级了。取200的另一个好处是,对应于我们的8位单片机刚好可以在一个字节内进行运算,程序简单运算速度快。当需要改变我们的定时周期时,有些不同的加热对象,例如较大热惯性的加热对象时,可能2分钟周期太短了,我们可以通过修改基本定时常数的办法来实现,而保持我们的200等分不变。我们对2分钟进行200等分,算一下他的每一个基本单位的具体时间?
To=60*2/200=0.6s=600ms
这对于单片机来说太长了,因为如果我让我的定时器做到这么慢的定时周期就干不了别的事了,为了显示、键盘等的处理一般我们定时在5-10ms,所以就需要另外设定一个变量tTempl在每一个定时中断发生时对tTempl 计数。例如我的系统定时器的定时常数对应于10ms,则设定tTempl在达到60的时候才确认是达到600ms了,才作为一个基本的输出时间单位。对应于总周期的修改,我们的200等分可以不用修改,而只要修改我们的变量tTempl的判断边界就可以了,例如对应于2分钟时是60,则在3分钟为周期时边界改为90就行了,定下了我们的基本控制时间分辨率以后,我们的计算就可以不用改变了。当然,根据您的具体对象也可以修改这个等分数,我这里只是作为一个举例:例如200等分。
温控仪器不离开测温器件,无论用什么测温器件(传感器),对于控制上来说,首先需要将测到的值换算为温度数据,一般我们国内都采用摄氏度℃,工业上使用的测温器件一般都是非线性的器件,经过放大、A/D转换所得到的电压数据与温度呈非线性关系,存在着微小的差异,一般采用电压值表的办法获得实际温度,这个表格是以每一个温度点上的电压值来表述的,由于我们的单片机rom的大小限制,这个表格也不可能做得很细,基本上以度作为间隔,也就是说直接查表只能获得度为单位的温度值,而实际测量的温度可能是介于T与T+1度之间,在PID控制计算上,这样的分辨率是不够的,所以我们还需要进一步获得具体的温度精确数据,一般采用将T与T+1之间的电压差和AD实际值(mv)进行定分比分点的办法(更精确的是采用二次插值计算法)获得温度的精确数值,也就是获得小数部分。如果能够做到1/10度的温度分辨率精度就可以基本满足控制运算要求了,所以我们可以用定点数的办法处理。不采用浮点数是因为单片机的运算速度不适合用浮点数,定点数处理,就是将温度的内部运算单位放大10倍,在用于显示的时候再除以10也就是固定显示一个小数点位置。如果想让我们的控制做的更好,还可以再提高温度的内部精度,例如精确到1/100度,这也是现在高级温控仪采用的精度,但在通常情况下这个精度似乎有点过剩。
PID的三个基本参数 Kp,Ki,Kd,一般由试验确定,根据我们的实际工作对象去初步确定,然后在实际运行过程中进行调节,以达到相对理想的效果,为了达到比较好的控制效果,这三个参数一般不采用整数,但同时为了减轻单片机的运算量,通常采用2的整倍数放大的办法确定这些参数,在运算结果中再除以2的整倍数,因为单片机运算中可以用移位来完成,速度比较快,常用的是8倍或16倍放大,注意这三个参数采用相同的放大比例。编程的过程中自己从头到尾要清楚我的参数是经过放大了的,就不会忘记对运算结果还原。
通过怎样的运算来获得2-200加温比例数据呢?很简单,为了说明这个问题,我们先假定只考虑最简单的比例控制算法,假定我们的控制范围是在200度,则设定温度与实践温度的差的最大值就是200(度),我们就用他去输出,这时的参数Kp=1,当我们为了提高加热速度,而使受控制的区域缩小,例如只控制50度范围,如目标温度设定为230,我们控制的范围就在180-230范围内,这时的差值不够200,我们就把计算得到的数字乘以4就得到0-200的数据了,假定当前实测温度为222,则230-222=8再乘以4算得32,这就作为我们的输出比例数据。当然我们这里还没有考虑超温的情况,计算产生了负数。这一部分将作为我们控制输出的基本量,上面的计算是对应于Kp=4DE ,再加入微分和积分项,这时我们的Kp可以基本保持不变。Kp在这里基本确立了我们的起始控制点到目标值之间的控制范围,微分和积分项在这里只是作为附加部分,基本不影响控制范围。当温度突然下降一度时,我们希望补上多少比例区进行下一轮的加热呢?这就是微分系数:早我经过这么久的控制,目标温度还是低了一点,我希望用多少的比例去弥补这个长期欠温呢?这就是积分常数,我想你已经大概已经确定了这些数据了。一句话,比例常数决定我们参与在目标点以前真正控制的范围,Kp=基本时间总周期/控制范围。Ki,Kd是您希望的反应对策速度,看你有没有耐心去逐步达到稳定点,过激了会起反作用的,过于胆小怕事是达不到预期目标的。
最后,在计算结果交付于输出之前,还需要进行一些修正,例如当计算结果大于200时按200输出,计算结果小于零时按零输出。
P代表比例运算、I代表积分运算、D代表微分运算。
所以你把P值设大后,OP输出当然是增大了。