简述PID算法与PID简单调参实例

先放结论:PID算法是通过在运行过程中不断改变输入来获得稳定的输出。

 

简述PID算法与PID简单调参实例_第1张图片

图中各项意义是:

输入值r(t),输出值c(t),偏差值e(t) = 输出值-输入值

其中Kp为比例系数;T1为积分时间常数;TD表示微分时间常数,得到稳定值的关键是调整好3个参数。

各环节作用:

比例环节:偏差一旦产生(e(t) != 0),立刻产生控制作用(增大或减小输入u(t)),以减小误差。

积分环节:主要是消除静差,T1越大,积分作用越弱,反之越强。

微分环节:反映信号变化速率,以产生早期修正信号。

 

对于离散系统,其微积分值与原始定义不同,u(t)公式也不同:

简述PID算法与PID简单调参实例_第2张图片

对于多次循环的k值而言,对x(2)作用的error_1其实就是error(k-1)

下面通过一个简单的实例(离散系统)来说明PID算法:

#python 3.6.5
import numpy as np
import matplotlib.pyplot as plt
import math

Kp = 0.1
T1 = 0.1
TD = 0.1
ts = 1                  #间隔
y = 0
y0 = 0
y_set = 1               #想要达到的值
P = y_set-y
y1 = []
I = 0
D = 0

for i in range(0,100):
    time = i * ts
    y = Kp*P+T1*I+TD*D
    P = y_set-y
    I = I+P*ts
    D = (P - y0)/ts
    y1.append(y)
    y0 = y              #记录上一次的值,即error(k-1)
    print(y)
    
x1 = np.linspace(0,100,100)

plt.plot(x1,y1)
plt.show()

设置kp=0.1,T1 = 0.1,TD = 0.1,得到如下图:

简述PID算法与PID简单调参实例_第3张图片

可以看到已经获得了预设的目标值。

对于三参的选择,我目前还没有找到什么能一次成功的方式,只有多次测试才能得到准确值

经过反复调试

最终确定Kp = 0.55,T1 = 0.58,TD = 0.20,得到较理想的图像

简述PID算法与PID简单调参实例_第4张图片

 

你可能感兴趣的:(简述PID算法与PID简单调参实例)