已经知道模型怎么求PID的三个参数

问题遇到的现象和发生背景

已知模型怎么求PID三个参数,随便讲下步骤和方法,看了一些资料没有看懂,

img

img

img

你起码先把图片发的清除一点啊。另外你书上的图片顺序应该是3、1、2吧。
实际就是根据阶跃响应发现被控对象的温度达到阶跃目标值的63%的时间是100s,这个63%的时间就叫时间常数,一般来讲,要达到目标值差不多要5个时间常数的时间。
有了这个之后,一般的,用时间常数的1/10的时间来进行控制就行了,所以取控制周期为1/10*100s=10s。
而在采样的时候,传感器经常有信号噪声,为了消除噪声影响就要进行采样率波。在这里它用的是均值滤波(本质上就是用一段时间的平均值来代替某一采样点的真值),而才平均值是需要时间的,并且平均值要采的越多越准,在这里它采用了10次平均(热电偶这样的低频的10次足够了,激光干涉仪这样的高频信号则一般是200次),由此在一个控制周期里要采样10次,而一个周期是10s,所以采样是1s一采。
被控目标的滞后时间是根据试验测出的,这里是1.2分,也就是72秒。根据N=τ/T,算出N=72。这里N=τ/T来自NT=τ,即之后时间要是采样时间的整数倍(规定)。
K=5,这个K实际上是个比例增益,这里是题目给定的。这个K值越大,系统相应越快,但过大容易震荡。

PID参数不是算出来的,是一步一步调出来的,而且调的PID参数不一定是最好的,但只要符合精度要求就可以,可以参考我的博客内容,
1、PLC应用关于自动化控制中离散PID模型的理论分析,https://blog.csdn.net/qq_19979629/article/details/123380138
2、Codesys使用ST语言实现离散PID模型的仿真(非自带PID模型),https://blog.csdn.net/qq_19979629/article/details/123451333

按我的理解PID调参是调出来的,不是算出来的,你有了模型,然后就根据经验先给一些参数,然后根据现象逐项调整就行了吧,这里借用一下流传已久的调参口诀:
参数整定找最佳,从小到大顺序查,
先是比例后积分,最后再把微分加,
曲线振荡很频繁,比例度盘要放大,
曲线漂浮绕大湾,比例度盘往小扳,
曲线偏离回复慢,积分时间往下降,
曲线波动周期长,积分时间再加长,
曲线振荡频率快,先把微分降下来,
动差大来波动慢,微分时间应加长,
理想曲线两个波,前高后低4比1。

按我参加过电赛控制组的经验,PID这些需要咱们人为去调P,I,D三个参数,或者你说已经知道模型了,但你这个模型只是一个大致原理,想通过搭建模型来弄出PID是需要你自己输入公式在matlab求解P,I,D三个未知数
但我个人建议不要这样,因为这种模型你只能使用一次,下次别的项目遇到PID你又要重新搞

可以参考一下

https://www.21ic.com/article/879744.html

https://blog.csdn.net/h_kingone/article/details/72529191?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-6.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-6.pc_feed_download_top3ask

https://wk.baidu.com/view/dc44cf087075a417866fb84ae45c3b3567ecddc6
PID参数解析+调参经验笔记

在最前⾯推荐⼀个⼤佬的讲解,真的很浅显易懂,建议先看了解⼤概PID:

ps:2022/1/2更新pid通俗理解:

out_speed = perr+dnow_speed;//pid最核⼼算法

运动员参加100⽶跑步,假设这个⼈可以瞬间提速,但是⽆法瞬间减速到0

起点:0⽶

终点:100⽶

p=0.5,i=0,d=0

起跑时:

运动员在d=0,终点在100,此时100-d=100

out_speed =1000.5=50,所以起跑时运动员速度最⼤,每秒50⽶

⼀秒后:

运动员到d=50⽶位置,此时距离终点err=100-d=50

out_speed =500.5=25

两秒后:

运动员跑到50+25=75⽶的位置,距离终点err=100-75=25

out_speed =250.5=12.5

可以预测,运动员越接近终点,速度越⼩,开始时候速度最⼤,快速到终点,相⽐全程匀速10⽶每秒的速度跑,可以⽐较⼀下的值pid算法在相应速度和效率上的优势

p=0.5,i=0,d=0.1

起跑时:

运动员在d=0,终点在100,此时100-d=100

out_speed =1000.5+0=50

所以起跑时运动员速度最⼤,每秒50⽶

⼀秒后:

运动员到d=50⽶位置,此时距离终点err=100-d=50

out_speed =500.5+0.1(-50)=20

两秒后:

运动员跑到d=50+20=70⽶的位置,距离终点err=100-d=30

out_speed =200.5+0.1(-20)=10.5

可以推测,d的存在会让运动员刹车能⼒更强!也就是在牺牲速度的情况下,增加了稳定性,到了终点能马上刹住,不超出终点,就好⽐在运动员⾝后栓了根绳⼦,跑得越快,绳⼦往后拉的⼒⽓越⼤,辅助运动员刹车。

仔细观察可以发现⼀秒后和两秒后的now_speed分别为和(-50)和(-20),

(-50) = err-lasterr=50-100

(-20)= err -lasterr=30-50=-20

因此你会发现,now_speed也就是⽹上⼤多数⽂章讲pid时提到的微分,再通俗点说就是err-lasterr和now_speed成⽐例,可以等效替换,得到如下式⼦

out_speed = perr+d(err-lasterr);//pid最核⼼算法

注意:这⾥的系统输出的是速度,如果输出的是⾓度同样能控制,也⼀样都适⽤,变量名字换⼀下,pd重新调⼀下就好了,上⾯两个式⼦将会依次对照下⾯2个式⼦,可以⾃⼰结合着理解

out_Angle = perr+dnow_Angle_speed;//now_Angle_speed是⾓速度,单位为rad/s

out_Angle = perr+d(err-lasterr);//pid最核⼼算法

⼀般pd控制的系统就⾜够百分之80的系统⽤了

什么是PID

快速(P)、准确(I)、稳定(D)

P:Proportion(⽐例),就是输⼊偏差乘以⼀个常数。

I :Integral(积分),就是对输⼊偏差进⾏积分运算。

D:Derivative(微分),对输⼊偏差进⾏微分运算。

(输⼊偏差=读出的被控制对象的值-设定值。⽐如说我要把温度控制在26度,但是现在我从温度传感器上读出温度为28度。则这个26度就是”设定值“,28度就是“读出的被控制对象的值”。)

1稳定性(P和I降低系统稳定性,D提⾼系统稳定性):在平衡状态下,系统受到某个⼲扰后,经过⼀段时间其被控量可以达到某⼀稳定状态;

2 准确性(P和I提⾼稳态精度,D⽆作⽤):系统处于稳态时,其稳态误差;

3快速性(P和D提⾼响应速度,I降低响应速度):系统对动态响应的要求。⼀般由过渡时间的长短来衡量。

公式

其中KP为⽐例增益;

TI为积分时间常数;

TD为微分时间常数;

u(t)为控制量(控制器输出);

e(t)为被控量与给定值的偏差。

(具体参数定义不理解可以参照最上⽅链接)

各个参数对性能影响

1.随着⽐例系数Kp

.随着⽐例系数Kp的增加,超调量增⼤(震荡变严重),系统响应速度加快,

2.积分时间常数Ti对控制性能的影响

积分作⽤的强弱取决于积分常数Ti。Ti越⼩,积分作⽤就越强,反之

Ti⼤则积分作⽤弱。积分控制的主要作⽤是改善系统的稳态性能,消除

系统的稳态误差 (关于稳态误差可参考本⽂最上⾯那个链接)。当系统存在控制误差时,积分控制就进⾏,直⾄⽆差,积分调节停⽌,积分控制输出⼀常值。

加⼊积分控制可使得系统的相对稳定性变差。Ti值的减⼩可能导致

系统的超调量增⼤,Ti值的增⼤可能使得系统响应趋于稳态值的速度减

慢。

积分控制部分的作⽤主要是⽤来消除静差。那么积分是怎样来消除静差的呢?

⽐例控制只能尽量将Err调节到0,

⽽微分的作⽤是将曲线的斜率控制到0则停⽌对其作⽤,

但斜率为0的时候Err并不⼀定为0。

这个时候我们就需要积分来起作⽤了。

我们知道曲线的积分相当于曲线与x轴围出来的⾯积。如下图,

积分作⽤的⽬的是使红⾊部分的⾯积和蓝⾊部分的⾯积的和为0,

那么即使系统在⽐例控制和微分控制部分已经趋于稳定,

只要Err不为0就会存在静差,只要存在静差那么积分就会对系统产⽣影响,

直到系统的Err值为0 。

那么这样我们的PID控制在理论上就可以达到⼀个⾮常精确的控制效果。

3.微分时间常数Td对控制性能的影响

随着微分时间常数Td的增加,闭环系统响应的响应速度加快,调节

时间减⼩。微分环节的主要作⽤是提⾼系统的响应速度。由于该环节对

误差的导数(即误差变化率发⽣作⽤),它能在误差较⼤的变化趋势时施加

合适的控制。

但是过⼤的Kd值会因为系统造成或者受控对象的⼤时间延迟⽽出现

问题。微分环节对于信号⽆变化或变化缓慢的系统不起作⽤。

作⽤机理:

微分代表error变化斜率,下降时候其为负数;

Err随时间是⼀条斜率⼩于0的曲线,那么在周期时间内,Err越⼤,微分的绝对值越⼤,那么也就对Err的减⼩速度是起到抑制的作⽤的,直到最后斜率为0微分才会停⽌作⽤。

PID作⽤

⽐例控制:能迅速反映误差,从⽽减⼩误差,但⽐例控制不能消除稳态误

差,KP的加⼤会引起系统的不稳定;

积分控制的作⽤是:只要系统存在误差,积分控制作⽤就不断地积累,

输出控制量以消除误差。因此只要有⾜够的时间,积分控制将能完全消

除误差,但是积分作⽤太强会使系统超调加⼤,甚⾄使系统出现振荡;

微分控制:可以减⼩超调量,克服振荡,使系统的稳定性提⾼,同时加快

系统的动态响应速度,减⼩调整时间,从⽽改善系统的动态性能。

位置型控制算法

位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,并与⽬标值进⾏⽐较,得到控制偏差,然后通过对偏差的⽐例、积分、微分进⾏控制,使偏差趋向于零的过程。

代码:

int Position_PID(int Encoder,int Target)

{

static float Bias,Pwm,Integral_bias,Last_Bias;

Bias=Encoder-Target;//计算偏差

Integral_bias+=Bias;//求出偏差的积分

Pwm=Position_KPBias+Position_KIIntegral_bias+Position_KD*(Bias-Last_Bias);

Last_Bias=Bias;//保存上⼀次偏差

return Pwm;//输出

}

假设采样时间间隔为T,则在k时刻:

偏差为e(k);

积分为e(k)+e(k-1)+e(k-2)+…+e(0);

微分为(e(k)-e(k-1))/T;

从⽽公式离散化后如下:

⽐例系数:Kp,

积分系数:Kp*T/Ti,可以⽤Ki表⽰;

微分系数:Kp*Td/T,可以⽤Kd表⽰;

则公式可以写成如下形式:

增量型控制算法

速度闭环控制就是根据单位时间获取的脉冲数(这⾥使⽤了M法测速)测量电机的速度信息,并与⽬标值进⾏⽐较,得到控制偏差,然后通过对偏差的⽐例、积分、微分进⾏控制,使偏差趋向于零的过程。

Pwm+=Kp[e(k)-e(k-1)]+Ki e(k)+Kd[e(k)-2e(k-1)+e(k-2)]

e(k):本次偏差

e(k-1):上⼀次的偏差

e(k-2):上上次的偏差

Pwm代表增量输出

在我们的速度控制闭环系统⾥⾯只使⽤PI控制,因此对PID控制器可简化为以下公式:

Pwm+=Kp[e(k)-e(k-1)]+Ki e(k)

代码实现

int Incremental_PI(int Encoder,int Target)

{

static float Bias,Pwm,Last_bias;

Bias=Encoder-Target;//计算偏差

Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias;//增量式PI控制器

Last_bias=Bias;//保存上⼀次偏差

return Pwm;//增量输出

}

增量式控制算法的优点

(1) 增量算法不需要做累加,控制量增量的确定仅与最近⼏次误差采

样值有关,计算误差或计算精度问题,对控制量的计算影响较⼩。⽽位

置算法要⽤到过去的误差的累加值,容易产⽣⼤的累加误差。

(2)增量式算法得出的是控制量的增量,例如阀门控制中、只输出阀

门开度的变化部分,误动作影响⼩,必要时通过逻辑判断限制或禁⽌本

次输出,不会严重影响系统的⼯作。⽽位置算法的输出是控制量的全量

输出,误动作影响⼤。

(3) 采⽤增量算法,易于实现⼿动到⾃动的⽆冲击切换。

(4) 利⽤增量算法,也很容易得出位置算法u(k)= u(k-1)+△u(k)

如何调节pid三个参数(重点)

PID算法具有三⼤特性:

① 稳定性

② 快速性

③ 准确性

其实有时候并不⼀定都得⽤上

⽐如⾃动停车系统或者⾃动蓄⽔系统只需要⽤到1和3

刹车时⽤到123等等

接下来会举例说明

概念须知:

最⼤超调量:是响应曲线的最⼤峰值与稳态值的差,是评估系统稳定性的⼀个重要指标;

上升时间:是指响应曲线从原始⼯作状态出发,第⼀次到达输出稳态值所需的时间,是评估系统快速性的⼀个重要指标;

静差:是被控量的稳定值与给定值之差,⼀般⽤于衡量系统的准确性,

接下来我们需要调整KP,KI,KD的数值以达到最⾼效率

KP=500,KI=0,KD=0.响应曲线如图

特点:⽐例控制较⼤,出现了震荡

需要加⼊微分d控制抑制

积分控制为零,但是没有静差,因为⽐例控制较强

(注意:经测试⽐例系数过⼤之后可减少静差出现)

KP=50,KI=0,KD=0.响应曲线如图

特点:⽐例控制kp减⼩,⽆震荡,响应变慢了

⽆积分控制且⽐例控制较弱时,会出现静差(积分减少静差)

KP=500,KI=0,KD=400.响应曲线如图

特点:

1.在⽐例控制较强的情况下,加⼊⽐较⼤的微分控制,震动次数较⼩。

2.微分控制较⼤,响应变慢

KP=120,KI=0.1,KD=500.响应曲线如图

特点:

⽬标:控制电机转90°,需要严格控制超调量、和静差。但是对响应速度⽆要求。

1.因为响应速度⽆要求,⼀般⽐例控制应该给⼩⼀点。

2.加⼤系统的阻尼防⽌超调,也就是微分参数尽量⼤。

3.另外因为⽐例参数较⼩,应该加⼊积分控制减⼩静差。

ps:2022/1/2更新pid调参过程(个⼈经验):

⽹上很多调参⼝诀,可以借鉴,我这⾥简单根据⾃⼰的经验理⼀遍过程

float X_PI(int Target_X){

static int err=0,last_err =0;

float out_put;

err=x_mid-Target_X;//计算偏差物体在右边 640-700 = -

out_put=sjx_p/1000err+sjx_d/1000(err - last_err);//Pd控制器

last_err = err;

return out_put;//输出

}

pid算法总结成⼀句代码就是第五句代码,

注意,代码中/1000指的是吧kp扩⼤1000倍,因为这⾥kp太⼩了,放⼤好调⼀点

经过2年的项⽬积累总结pid调参步骤如下:

1.将p和i和d设置为全局变量,然后调试时候⽤debug会事半功倍

2.⼀般先把i和d设为0

3.慢慢调p,如果发现怎么调都调不好可以尝试p给个负值试试

4.⾸先,先给个很⼩的p值,然后给个稍微⼤⼀点的p值,例如1和200(根据情况⽽定),看看控制的对象有没有明显的效果,表现为p⼩的时候,⼒⽓很⼩可以⽤⼿轻易掰动他,p⼤的时候能感受到明显的阻⼒

5.如果第四部能感受到,那么第五步就是从⼩到⼤给p,你会发现控制对象⼒⽓越来越⼤,当到达⼀定的值时,会发现控制对象开始抖动,这个很正常,因为p太⼤,pid震荡幅度越来越⼤,超调了

6,记录产⽣震荡的p的值为p1,然后往回调,直到停⽌震荡,记录此时震荡的p值位p2

7.最后根据实际情况,p的值应该在80%p2到90%p2之间

8.p调稳定之后,开始加d,⼀般情况下在第7步时,只有p,i和d为0,假如控制对象是电机,空载情况下只要⼀个p就⾜够了,如果这个电机需要带动⼀定重量的物体旋转,会发现只有p会发⽣如下情况:⽤⼒拨动整个结构,会感受到电机给的⼒越来越⼤,继续拨动,直到电机旋转90度,这个时候⼒已经很⼤了,此时放开,让他从90度归位到原来位置,会发现他并不会马上停在0度,⽽是会跑到-10度左右然后弹回来,⼀直震荡,慢慢靠近0

9.如果出现8的情况,这时候慢慢加d,先检验d有没有作⽤,和4的p⼀样,先给个⼩的d再给个稍微⼤的d,d太⼤会震荡,⼀般1和20差不多,如果发现⽤8的⽅法拨动机械,发现机械不会到-10,到-5就往回弹了(⼤概⼀个数字,可能直接就到0度也可能),说明d有效果

10.发现9有效果的话,和p⼀样,慢慢调⼤,重复8的步骤⼀直去拨动电机,看他反弹的情况,如果发现d太⼤已经导致电机抖动了了,就不要再加⼤了,看看这个效果你满不满意,⽤在这个项⽬够不够⽤,⼀般到这⾥是够了

11.如果10的效果还不满意,⽤户需要的是迅速从90度反应到0度,那么可以考虑适当减少p,p减少了,d可以稍微往上抬,就不会像10那样电机抖动了

12:⼀般只有少数类似飞控那⼀类的控制才需要⽤到积分i,笔者还未⽤到i的控制,⼀直以来基本pd控制就可以很稳定

有些数字和符合不清楚,不能精确判断含义,重新拍清楚一点上传。

在整定PID控制器参数时,可以根据控制器的参数与系统动态性能和稳态性能之间的定性关系,用实验的方法来调节控制器的参数。有经验的调试人员一般可以较快地得到较为满意的调试结果。在调试中最重要的问题是在系统性能不能令人满意时,知道应该调节哪一个参数,该参数应该增大还是减小。
为了减少需要整定的参数,首先可以采用PI控制器。为了保证系统的安全,在调试开始时应设置比较保守的参数,例如比例系数不要太大,积分时间不要太小,以避免出现系统不稳定或超调量过大的异常情况。给出一个阶跃给定信号,根据被控量的输出波形可以获得系统性能的信息,例如超调量和调节时间。应根据PID参数与系统性能的关系,反复调节PID的参数。
如果阶跃响应的超调量太大,经过多次振荡才能稳定或者根本不稳定,应减小比例系数、增大积分时间。如果阶跃响应没有超调量,但是被控量上升过于缓慢,过渡过程时间太长,应按相反的方向调整参数。如果消除误差的速度较慢,可以适当减小积分时间,增强积分作用。
反复调节比例系数和积分时间,如果超调量仍然较大,可以加入微分控制,微分时间从0逐渐增大,反复调节控制器的比例、积分和微分部分的参数。
总之,PID参数的调试是一个综合的、各参数互相影响的过程,实际调试过程中的多次尝试是非常重要的,也是必须的。常用的控制方式:P,PI,PD,PID控制算法。