pdf版本的下载地址: 过程控制课程设计-单回路控制系统参数整定(访问密码:3834)
过程控制课程设计-单回路控制系统参数整定
单回路控制系统整定方法的学习与实践
参数整定要求
- 通过整定选择合适的参数,首先要保证系统稳定,这时最基本的要求
- 在热工生产过程中,通常要求控制系统有一定稳定裕度,即要求过程有一定的衰减比,一般为4:1~10:1
- 在保证稳定的前提下,要求控制过程有一定的快速性和准确性.所谓快速性就是要求控制系统的动态偏差(余差)尽量的小,而快速性就是要求控制过程的时间尽可能地短.
常用整定方法
理论计算方法
理论计算整定法
当闭环特征方程为二阶时,可以通过理论计算求出各参数与衰减比的对应关系
如上图: 被控对象的传递函数为
G
(
s
)
=
25
(
4
s
+
1
)
(
20
s
+
1
)
G(s)=\frac{25}{(4s+1)(20s+1)}
G(s)=(4s+1)(20s+1)25,采用比例控制器为
G
c
(
s
)
=
1
δ
G_c(s)=\frac{1}{\delta}
Gc(s)=δ1,求解合适的比例带
δ
\delta
δ值,使得系统衰减比为4:1;
解: 易求得系统闭环传递函数为
G
c
(
s
)
G
(
s
)
1
+
G
c
(
s
)
G
(
s
)
=
1
δ
25
(
4
s
+
1
)
(
20
s
+
1
)
1
+
1
δ
25
(
4
s
+
1
)
(
20
s
+
1
)
=
25
δ
(
4
s
+
1
)
(
20
s
+
1
)
+
25
\frac{G_c(s)G(s)}{1+G_c(s)G(s)}=\frac{\frac{1}{\delta} \frac{25}{(4s+1)(20s+1)}}{1+\frac{1}{\delta} \frac{25}{(4s+1)(20s+1)}}=\frac{25}{\delta (4s+1)(20s+1) + 25}
1+Gc(s)G(s)Gc(s)G(s)=1+δ1(4s+1)(20s+1)25δ1(4s+1)(20s+1)25=δ(4s+1)(20s+1)+2525
已知衰减率
φ
\varphi
φ为
φ
=
1
−
e
−
2
π
α
ω
\varphi = 1- e^{-2 \pi \frac{\alpha}{\omega}}
φ=1−e−2πωα
系统闭环特征方程为
s
1
,
2
=
−
24
±
2
4
2
−
320
(
1
+
25
δ
)
160
=
−
α
+
j
ω
s_{1,2} = \frac{-24 \pm \sqrt{24^2 - 320(1+\frac{25}{\delta})}}{160} = -\alpha + j \omega
s1,2=160−24±242−320(1+δ25)=−α+jω
则
α
=
24
160
\alpha=\frac{24}{160}
α=16024,
ω
=
1
160
320
(
1
+
25
δ
)
−
2
4
2
\omega=\frac{1}{160}\sqrt{320(1+\frac{25}{\delta})-24^2}
ω=1601320(1+δ25)−242,将其代入上式可得比例带
δ
\delta
δ为
δ
=
0.665
=
66.5
%
\delta = 0.665 = 66.5\%
δ=0.665=66.5%
工程整定方法
经验法(试凑法)
试凑法的整定步骤如下所述:
- 先采用比例作用,设置积分时间 T 1 = ∞ T_1=\infty T1=∞,微分时间 T D = 0 T_D=0 TD=0,根据经验设置比例带 δ \delta δ,将系统投入闭环运行,稳定后做阶跃扰动试验,改变比例带 δ \delta δ值,使被调量的阶跃响应曲线出现4:1衰减震荡,记录此时的比例带 δ \delta δ.
- 比例积分作用: 在1)的基础上,首先将 δ \delta δ增大10%~20%,做阶跃扰动试验,然后将积分时间 T i T_i Ti由大到小的变化,直到得到4:1衰减曲线为止.先增加比例带的原因是加入积分后,系统稳定性,比原来单纯比例调节时要降低,增加 δ \delta δ补偿加积分作用后而引起得稳定性的降低.
- 积分时间保持不变,加入比例带,观察控制过程有无改善,如有改善则继续调整,直到满意为止.否则,将原比例带减小一些,再调整积分时间,力求改善控制过程.如此反复试凑,直到找到满意的比例带和积分时间为止.
- 最后再加入微分作用,将微分时间
T
D
T_D
TD由小到大的调整.观察每次实验过程,直到满意为止.
根据上述思路,写出代码如下:
% 返回pid参数为[kp, ti, td]的闭环控制系统的回路方程
function gg = getLoop([kp, ti, td])
% 构建方程
g = tf(25, conv([4 1], [20 1])); % 开环系统
gc_p = tf(kp, 1); % p控制
gc_i = tf(kp, [ti 0]); % i控制
gc_d = tf([kp*td 0], 1); % d控制
gc = parallel(parallel(gc_p, gc_i), gc_d); % pid控制器
gg = feedback(series(g, gc), 1); % 总控制系统
end
% 计算pid参数为[kp, ti, td]的闭环控制系统的阶跃响应衰减比
function delta = getDelta([kp, ti, td])
% 得到控制系统阶跃响应曲线
gg = getLoop([kp, ti, td]);
Y = step(gg);
% 计算衰减比
V = findpeaks(Y);
delta = (V(1)-Y(end))/(V(2)-Y(end));
end
% 主函数
% 初始化pid参数
kp=1; ti=1e32; td=0;
% 定义状态值,方便debug
status = 0; % 状态: 0-未整定,1-整定好p,2-整定好i,3-整定好d,整定完成
% 整定p, 调整衰减比接近4:1
while getDelta([kp, ti, td])>4
% getDelta([kp, ti, td])
kp = kp*1.01; % kp增大,衰减比减小
end
status = 1
% 整定i, 调整衰减比接近4:1
kp = kp * 0.9; % 减小kp,补偿引入积分作用造成的稳定性下降
while getDelta([kp, ti, td])>4
% getDelta([kp, ti, td])
ti = ti*0.9;
end
status = 2
% 整定d, 调整衰减比接近4:1
kp = kp * 0.9; % 减小kp,补偿引入积分作用造成的稳定性下降
while getDelta([kp, ti, td])>4
td
getDelta([kp, ti, td])
td = td*1.1;
end
status = 3
下图体现了四步整定之后,闭环控制系统的阶跃响应曲线:
由图中曲线可知,每一步整定完成之后,闭环控制系统的准确性和快速性都略有上升.
临界比例带法(边界稳定法)
临界比例带法的应用较为广泛,将控制器设置为纯比例作用,将系统自动投入运行并将比例带由大到小进行改变,直到产生等幅振荡为止,此时控制系统处于边界稳定状态,记录下此刻的比例带 δ c r \delta _{cr} δcr和振荡周期 T c r T_{cr} Tcr,然后根据下表中的经验公式进行计算,算出控制器的各个参数.
控制规律 | δ \delta δ | T i T_i Ti | T d T_d Td |
---|---|---|---|
P | 2 δ c r \delta _{cr} δcr | - | - |
PI | 2.2 δ c r \delta _{cr} δcr | 0.85 T c r T_{cr} Tcr | - |
PID | 1.7 δ c r \delta _{cr} δcr | 0.5 T c r T_{cr} Tcr | 0.125 T c r T_{cr} Tcr |
具体步骤如下所述:
- 将控制器的积分时间置于最大,即 T 1 = ∞ T_1 = \infty T1=∞,微分时间 T D = 0 T_D = 0 TD=0,比例带 δ \delta δ置于一个较大的数值
- 将控制系统投入闭环运行,待系统稳定之后,逐步减小比例带,直到系统出现等幅振荡,记录此时的比例带 δ c r \delta _{cr} δcr和振荡周期 T c r T_{cr} Tcr
- 将比例带
δ
c
r
\delta _{cr}
δcr和振荡周期
T
c
r
T_{cr}
Tcr代入上表,计算控制系统各个参数.
根据上述步骤写出代码如下:
% 初始pid参数
kp=1; ti=1e32; td=1e-32;
getDelta([kp, ti, td])
% step(getLoop([kp, ti, td]))
% 整定p, 调整衰减比接近1:1
if getDelta([kp, ti, td]) > 1
while getDelta([kp, ti, td]) > 1
getDelta([kp, ti, td])
kp = kp*1.01; % kp增大,衰减比减小
end
elseif getDelta([kp, ti, td]) < 1
while getDelta([kp, ti, td]) < 1
% getDelta([kp, ti, td])
kp = kp*0.99; % kp增大,衰减比减小
end
end
% 计算临界比例带
[Y, T] = step(getLoop([kp, ti, td]));
[pks, locs] = findpeaks(Y);
tcr = T(locs(2))-T(locs(1));
% 计算对应的三种控制参数
% history(1, :) = [kp, ti, td];
% history(2, :) = [kp/2, 1e32, 1e-32];
% history(3, :) = [kp/2.2, 0.85*tcr, 1e-32];
history(4, :) = [kp/1.7, 0.5*tcr, 0.125*tcr];
% 绘制图片
% step(getLoop(history(2, :))); hold on;
% step(getLoop(history(3, :))); hold on;
step(getLoop(history(1, :))); hold on;
step(getLoop(history(4, :))); hold on;
legend('initial respond','respond after setting pid')
我们仍对上边的系统进行整定,我们先将系统比例带设置由大到小,直到系统等幅振荡.此时闭环系统阶跃响应如下:
因为我们是模拟实际情况查找比例带,而不是由公式对临界比例带进行计算,因此此时系统的衰减比实际上为0.9992,而非1. 代入上边表格数据时,我发现了一个bug,按照上面表格进行计算,闭环系统采用p控制
,pi控制
都会导致系统闭环不稳定,而采用pid控制
能使系统闭环稳定.整定后的系统的快速性大为改善,然而其准确性略有下降.
衰减曲线法
如果在生产过程中不允许出现等幅振荡,则只能退而求其次,采用衰减曲线法.我们只能退而求其次,选择衰减曲线法,将上边方法中的等幅振荡过程改为4:1震荡过程.其具体步骤与上边临界比例带法类似如下:
- 设置控制器的积分时间 T i = ∞ T_i = \infty Ti=∞,微分时间 T D = 0 T_D=0 TD=0,比例带 δ \delta δ置于较大的数值
- 将系统投入闭环运行,待数值稳定之后,做阶跃扰动试验,观察控制过程,若过渡时间衰减率 φ \varphi φ大于要求的数值,则应逐步减小比例带值,直到系统过度曲线出现 φ = 0.75 \varphi=0.75 φ=0.75或 φ = 0.9 \varphi=0.9 φ=0.9为止.记录此时的比例带 δ s \delta_s δs,在 φ = 0.75 \varphi=0.75 φ=0.75时的衰减曲线上求取衰减周期 T s T_s Ts,或在 φ = 0.9 \varphi=0.9 φ=0.9的衰减曲线上求取上升时间 t r t_r tr
- 将比例带
δ
\delta
δ和振荡周期
T
T
T代入上表,计算控制系统各个参数
φ \varphi φ 控制规律 δ \delta δ T I T_I TI T D T_D TD φ \varphi φ 控制规律 δ \delta δ T I T_I TI T D T_D TD 0.75 P δ s \delta_s δs - - 0.9 P δ s \delta_s δs - - 0.75 PI 1.2 δ s 1.2 \delta_s 1.2δs 0.5 T s 0.5T_s 0.5Ts - 0.9 PI 1.2 δ s 1.2\delta_s 1.2δs 2 t r 2t_r 2tr - 0.75 PID 0.8 δ s 0.8\delta_s 0.8δs 0.3 T s 0.3T_s 0.3Ts 0.1 T s 0.1T_s 0.1Ts 0.9 PID 0.8 δ s 0.8 \delta_s 0.8δs 1.2 t r 1.2t_r 1.2tr 0.4 t r 0.4t_r 0.4tr
对于衰减率 φ = 0.75 \varphi=0.75 φ=0.75的情况,其实现代码如下:
% 初始pid参数
kp=1; ti=1e32; td=1e-32;
history(1, :) = [kp, ti, td]; % 记录初始值
% 整定p, 调整衰减比接近4:1
if getDelta([kp, ti, td])>4
while getDelta([kp, ti, td])>4
% getDelta([kp, ti, td])
kp = kp*1.01; % kp增大,衰减比减小
end
elseif getDelta([kp, ti, td])<4
while getDelta([kp, ti, td])<4
% getDelta([kp, ti, td])
kp = kp*0.99; % kp增大,衰减比减小
end
end
% 计算临界比例带
[Y, T] = step(getLoop([kp, ti, td]));
[pks, locs] = findpeaks(Y);
ts = T(locs(2))-T(locs(1));
% 记录不同比值
history(2, :) = [kp, 1e32, 1e-32]; % p控制
history(3, :) = [kp/1.2, 0.5*ts, 1e-32] % pi控制
history(4, :) = [kp/0.8, 0.3*ts, 0.1*ts] % pid控制
% 绘图
step(getLoop(history(1, :))); hold on;
step(getLoop(history(2, :))); hold on;
step(getLoop(history(3, :))); hold on;
step(getLoop(history(4, :))); hold on;
legend('initial respond','respond after setting p','respond after setting pi','respond after setting pid')
将所得到的结果绘制在坐标轴上,得到图像如下. 由此可见,在引入积分控制后,控制系统的准确度有所下降.但加入pid控制
之后,总体的控制效果比初始情况大为改善.
对于衰减率
φ
=
0.9
\varphi=0.9
φ=0.9的情况下,其实现代码如下:
% 初始pid参数
kp=1; ti=1e32; td=1e-32;
history(1, :) = [kp, ti, td]; % 初始值
% 整定p, 调整衰减比接近10:1
if getDelta([kp, ti, td])>10
while getDelta([kp, ti, td])>10
% getDelta([kp, ti, td])
kp = kp*1.01; % kp增大,衰减比减小
end
elseif getDelta([kp, ti, td])<10
while getDelta([kp, ti, td])<10
% getDelta([kp, ti, td])
kp = kp*0.99; % kp增大,衰减比减小
end
end
% 计算临界比例带
[Y, T] = step(getLoop([kp, ti, td]));
[pks, locs] = findpeaks(Y);
tr = T(locs(1));
% 记录不同比值
history(2, :) = [kp, 1e32, 1e-32]; % p控制
history(3, :) = [kp/1.2, 2*tr, 1e-32] % pi控制
history(4, :) = [kp/0.8, 1.2*tr, 0.4*tr] % pid控制
step(getLoop(history(1, :))); hold on;
step(getLoop(history(2, :))); hold on;
step(getLoop(history(3, :))); hold on;
step(getLoop(history(4, :))); hold on;
legend('initial respond','respond after setting p','respond after setting pi','respond after setting pid')
将所得到的结果绘制在坐标轴上,得到图像如下. 我们得到的结果与衰减率
φ
=
0.75
\varphi=0.75
φ=0.75的情况类似,得到结论: 在引入积分控制后,控制系统的准确度有所下降.但加入pid控制
之后,总体的控制效果比初始情况大为改善.
响应曲线法(动态特性参数法)
前面三种方法都是针对系统的闭环特性进行整定,而响应曲线法是根据系统的开环状态下,通过阶跃扰动试验得到pid控制的各种参数.
下面是响应曲线法的执行步骤:
- 给对象一个阶跃输入,记录其输出.
- 判断对象是否有自平衡能力:
- 若对象由自平衡能力,过响应曲线拐点P作切线交稳态值渐近线
y
(
∞
)
y(\infty)
y(∞)于A点,交时间轴于C点,过直线段上任意一点A作时间垂线并交于B点,则
τ = 0 C , T = C B , ε = A B T \tau = 0C, T=CB, \varepsilon = \frac{AB}{T} τ=0C,T=CB,ε=TAB - 若对象无自平衡能力,做响应曲线渐近线交时间轴于C,过直线段上任一点A做时间垂线并交于B,则
τ = 0 C , ε = A B C B \tau=0C, \varepsilon = \frac{AB}{CB} τ=0C,ε=CBAB
- 若对象由自平衡能力,过响应曲线拐点P作切线交稳态值渐近线
y
(
∞
)
y(\infty)
y(∞)于A点,交时间轴于C点,过直线段上任意一点A作时间垂线并交于B点,则
- 查下表,确定控制器的整定参数
控制规律 δ \delta δ T I T_I TI T D T_D TD P ε τ \varepsilon \tau ετ - - PI 1.2 ε τ 1.2 \varepsilon \tau 1.2ετ 3.3 τ 3.3 \tau 3.3τ - PID 0.8 ε τ 0.8 \varepsilon \tau 0.8ετ 2 τ 2 \tau 2τ 0.5 τ 0.5 \tau 0.5τ
根据上述步骤,我们写出代码如下:
% 初始化开环系统
g = tf(25, [80 24 1]);
[Y, T] = step(g);
% 寻找拐点P及其斜率
[val, minindex] = min(diff(Y, 2));
PX = T(minindex)
PY = val;
k = (Y(minindex+1) - Y(minindex))/(T(minindex+1) - T(minindex));
% 找到点C
CX = PX - PY/k;
CY = 0;
AY = Y(end);
AX = PX + (AY - PY) / k;
% 计算 tau,epsilon
tau = CX;
epsilon = AY / (AX - CX);
% 记录pid参数
history(1, :) = [1, 1e32, 1e-32]; % 不加pid控制
history(2, :) = [epsilon*tau, 1e32, 1e-32]; % p控制
history(3, :) = [epsilon*tau, 3.3*tau, 1e-32]; % pi控制
history(4, :) = [epsilon*tau, 2*tau, 0.5*tau]; % pid控制
step(getLoop(history(1, :))); hold on;
step(getLoop(history(2, :))); hold on;
step(getLoop(history(3, :))); hold on;
step(getLoop(history(4, :))); hold on;
legend('initial respond','respond after setting p','respond after setting pi','respond after setting pid');
执行上述代码,我们得到结果如下:
由上图可见,p控制,pi控制的效果并不是很好,但是引入pid控制之后,系统的动态特性大为改善,这时因为我们所选的被控对象的惯性较大.
各种整定方法的总结与比较
下面对四种工程整定方法做出总结并加以比较,在本次实验中,我们共使用了四种整定方法:
- 经验法: 花费时间长,难以总结出一般规律
- 临界比例带法: 方法简单且易用,但是实际情况下难以实现,且整定后的系统容易发生不稳定振荡.
- 衰减曲线法: 衰减曲线法作为临界比例带法的改进,方法较简单,且在实际情况下有条件实现,但是在实际整定过程中难以实现完美的4:1衰减模型
- 响应曲线法: 简单省时,可以直接通过开环特性整定闭环系统,但是计算误差较大.
在实际的编程中,我们发现各种程序的运行效率由高到低如下: 响应曲线法>临界比例带法>衰减曲线法>经验法.经验法中因为需要大量试凑,所以程序的运行时间实在太长,且我这个小破电脑还动不动死机.
在临界比例带正定方法的实现过程中,我们遗憾地发现出现了系统不稳定,因此我们在这里对pid控制方法的稳定想加以总结: - P控制: 比例控制的放大系数
K
p
K_p
Kp的大小应适当.
- 若 K p K_p Kp过小,则控制通道难以屏蔽干扰通道的效果,使得总体上的控制效果较差.
- 若 K p K_p Kp过大,则系统容易出现不稳定震荡.
- PI控制: 引入积分控制,控制系统的稳定性会下降.因此我们在试凑法中整定 T i T_i Ti之前要适当增加比例带 δ \delta δ.
- PID控制: 引入微分控制后,系统的稳定性增加,因此可以适当降低比例带 δ \delta δ.
单回路整定系统软件的开发
创建图形界面
在开环传递函数
面板定义被控系统的开环传递函数,num
和den
分别为被控系统的分子和分母,点击set
向程序注入开环传递函数,点击draw
绘制不使用pid调节器时闭环系统的阶跃响应曲线. 系统的开环传递函数可以在程序运行时随时更改.
编写后台函数
后台函数分别是整定方法
面板五个按钮的回调函数,它们都是由第一部分实现各个控制系统整定方法修改而成.
其中main
为程序主界面,shicoufa
为使用试凑法整定控制系统,linjiebilidaifa
为使用临界比例带法整定控制系统,shuaijianquxianfa75percentage
为使用衰减曲线法(
φ
=
75
%
\varphi=75\%
φ=75%)整定控制系统,shuaijianquxianfa90percentage
为使用衰减曲线法(
φ
=
90
%
\varphi=90\%
φ=90%)整定控制系统,xiangyingquxianfa
为使用响应曲线法整定控制系统
总结与展望
在本次实验中,我系统学习了如何使用MATLAB整定控制系统,同时也学会了如何进行MATLAB的GUI程序开发.
但是本次实验还存在两个不足:
- 没能对经典的控制系统进行更加深入的修改,例如使用临界比例带法整定控制系统参数时,经典解法计算出的
p控制
和pid控制
系统闭环不稳定,而我没能成功地更精细修改参数使之稳定 - 程序运行时间过长,没能进行更细致的优化.
在今后的学习生活中,我会更加注重实践,将书本知识与实践结合起来,加深对知识的掌握.
MATLAB源代码(含GUI界面)以及排版后的word课设报告的下载地址: 单回路PID控制参数的整定_火电厂热工自动控制的课程设计
pdf版本的下载地址: 过程控制课程设计-单回路控制系统参数整定(访问密码:3834)