pid控制算法的最基本认识
pid的控制原理和特点
工程实际中,应用最为广泛调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制主要技术之一。当被控对象结构和参数不能完全掌握,或不到精确数学模型时,控制理论其它技术难以采用时,系统控制器结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象﹐或不能有效测量手段来获系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是系统误差,利用比例、积分、微分计算出控制量进行控制。
比例控制:P
比例控制是最常用的控制手段之一,对于一个对象,我们对它的属性有一个预期的期望(例如:水的温度,电机的转速等等)但是这时我们的实际值与我们的期望值有一定的误差 ,我们会使用比例控制区调节实际值,使其达到我们的期望值。以水的温度举例就是
error_temp=Set_temp-Actual_temp;期望值减去实际值得到一个误差值
Actual_temp(t)=Actual_temp(t-1)+error_temp*P;
根据这个算出的误差值乘以我们的比例控制系数P,然后再加上我们上一次的实际值去得到我们这次比例控制后的实际值,当然了,P的大小需要我们根据实际情况去调,如果P你给定的值太大了,那么我们经过运算得到的实际值就会高于我们的期望值,如果我们给定的P值过小了,那我们运算得到的实际值就会达不到我们的期望值。
比例积分控制 :PI
积分,反应系统的累计偏差,使系统消除稳态误差,提高无差度,因为有误差,积分调节就进行,直至无误差;积分调节的“大方向”是正确的,积分项有减小误差的作用。一直要到系统处于稳定状态,这时误差恒为零,比例部分和微分部分均为零,积分部分才不再变化,并且刚好等于稳态时需要的控制器的输出值,因此积分部分的作用是消除稳态误差,提高控制精度,积分作用一般是必须的,公式一般如下
Actual_temp(t) = P*error_temp + PI∑error_temp(t) +Actual_temp(t-1) ;
大家通过公式可以看到积分项是一个历史误差的累积值,如果我们光用比例控制的话,那么我们通过比例控制虽说能够接近我们的期望值,但是总是还会有一些误差,因为单纯靠P调节,系统稳态后,对于不是特别大的误差没办法调节(误差传入到比例控制里面,输出的结果还是相差这些误差),如果我们加上了PI的话,我们能够根据误差的累计值,去慢慢地趋于我们的期望值,达到消除静态稳差的结果。
比例微分控制:PD
微分,反映系统偏差信号的变化率error(t)-error(t-1),具有预见性,能预见偏差变化的趋势,产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是分对噪声干扰有放大作用,加强微分对系统抗干扰不利。误差的微分就是误差的变化速率,误差变化越快,其微分绝对值越大。误差增大时,其微分为正;误差减小时,其微分为负。控制器输出量的微分部分与误差的微分成正比,反映了被控量变化的趋势。
Actual_temp(t) = Kp*error(t) + Ki∑error(t) + Kd[error(t) – error(t-1)]+Actual_temp(t-1)
即填上PD的pid的基本公式就基本出来了
基础的pid控制一般分为两种 分别是位置式控制pid和增量式控制pid,从名字上我们大概就可以明白他们之间的区别,位置式pid是非递推算法,当有误差时,我们的输出是控制器的增量,也就是说我们的目标是一次就要去达到我们的期望值,优点的话就是说响应速度快,适合用于精度不太高的场合,(比如恩智浦智能车舵机打脚的时候,相对于精度,速度对它明显更重要)但是它也有缺点,运算量大,因为它需要对误差进行累加,也就是下面代码里面pid_control.I的计算.而且控制输出出错的话,它的响应波动会比较大
说完了位置式,接着说增量式pid,增量式pid从某种角度上讲就是两次位置式pid的差值,这样理解,它每次输出的是增量,也就是变化量,所以他的优点我们大概就可以猜想一下啦,比如因为每次输出的是增量,所以控制输出出错的话,对它的影响会小很多,另外的话,仔细观察运算式的同学可以发现,在增量运算的时候,在进行积分环节的时候不需要累加误差,这一点减小了运算量ÿ