(1)滤波的选择:可以对输入加一个前置滤波器,使得进入控制算法的给定值不突变,而是有一定惯性延迟的缓变量。
(2)系统的动态过程加速:如果被控量继续偏离给定值,则这两项符号相同,而当被控量向给定值方向变化时,则这两项的符号相反。由于这一性质,当被控量接近给定值的时候,反号的比例作用阻碍了积分作用,因而避免了积分超调以及随之带来的振荡,这显然是有利于控制的。但如果被控量远未接近给定值,仅刚开始向给定值变化时,由于比例和积分反向,将会减慢控制过程。
2,PID增量算法的饱和作用及其抑制:在PID增量算法中,由于执行元件本身是机械或物理的积分储存单元,如果给定值发生突变时,由算法的比例部分和微分部分计算出的控制增量可能比较大,如果该值超过了执行元件所允许的最大限度,那么实际上执行的控制增量将时受到限制时的值,多余的部分将丢失,将使系统的动态过程变长,因此,需要采取一定的措施改善这种情况。
首先,熟悉你所用的单片机或其他控制芯片的硬件资源和性能,确定好控制精度,然后将采样值PID通过算法转化为PWM的占空比输出。其实只要写个程序实现PID的计算式即可,PID难的是调参数……例如:signed int PIDCalcOnce(signed int InputValue, signed int Target){
signed int Value
signed int Excursion,DExcursion=Target-InputValue// 偏差I+=Excursion// 积分
if(I>Integral_MAX)I=Integral_MAX
if(I<-Integral_MAX)I=-Integral_MAX//积分上限D=InputValue-OldInputValue// 当前微分
OldInputValue=InputValueValue = Excursion*Px+I*Ix-D*Dx
if(Value>MAX_Adjust)Value=MAX_Adjust
if(Value<-MAX_Adjust)Value=-MAX_Adjust//最大调节限制
return (Value)}只是算法别照搬……增量式的PID自己下去多查查吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)