2. 一阶惯性环节的PI控制整定

任务目标

针对一阶惯性系统 \( G_p(s)=\frac{K}{Ts+1} \),设计PI控制器 \( G_c(s)=K_p\left(1+\frac{1}{T_i s}\right) \),采用衰减曲线法整定 \( K_p \) 与 \( T_i \),实现闭环系统稳态无差,并验证超调量 \( \sigma \leq 5\% \)、调节时间 \( t_s \leq 2T \)(按±2%误差带)。

被控对象与控制器参数

设对象参数:\( K=2 \),\( T=5 \)(单位:秒)。衰减曲线法整定步骤:

  1. 令 \( T_i=\infty \)(纯比例),逐步增大 \( K_p \) 直至系统阶跃响应出现4:1衰减比,记录此时临界增益 \( K_s \) 与振荡周期 \( T_s \);
  2. 按经验公式计算PI参数:\( K_p = K_s / 1.2 \),\( T_i = 0.5 T_s \)。

本例经仿真搜索得到 \( K_s \approx 1.8 \),\( T_s \approx 6.3\,\text{s} \),故取 \( K_p = 1.5 \),\( T_i = 3.15\,\text{s} \)。

闭环传递函数与稳态误差分析

开环传递函数 \( G_o(s)=G_c(s)G_p(s)=\frac{2K_p(T_i s+1)}{T_i s(Ts+1)} \)。由于开环包含积分环节(Ⅰ型系统),阶跃输入下稳态误差 \( e_{ss}=0 \)。闭环特征方程为:

\[ T T_i s^2 + T_i(1+2K_p)s + 2K_p = 0 \]

代入 \( T=5, T_i=3.15, K_p=1.5 \) 得:\( 15.75s^2 + 15.75s + 3 = 0 \),即 \( s^2 + s + 0.1905 = 0 \)。阻尼比 \( \zeta = \frac{1}{2\sqrt{0.1905}} \approx 1.146 > 1 \),系统处于过阻尼状态,理论上无超调,调节时间由主导极点决定。

Python仿真验证代码

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

# 被控对象与PI控制器参数
K, T = 2.0, 5.0
Kp, Ti = 1.5, 3.15

# 开环传递函数 Gp(s)*Gc(s)
num_gp, den_gp = [K], [T, 1]          # Gp = K/(Ts+1)
num_gc, den_gc = [Kp*Ti, Kp], [Ti, 0] # Gc = Kp*(1+1/(Ti*s))

num_go = np.convolve(num_gp, num_gc)
den_go = np.convolve(den_gp, den_gc)

# 闭环传递函数 Gcl = Go/(1+Go)
num_cl = num_go
den_cl = np.polyadd(den_go, num_go)

sys_cl = signal.TransferFunction(num_cl, den_cl)

# 阶跃响应仿真
t = np.linspace(0, 30, 3000)
t, y = signal.step(sys_cl, T=t)

# 稳态值与性能指标计算
yss = y[-1]
sigma = (np.max(y) - yss) / yss * 100

# 调节时间(±2%误差带)
idx_settle = np.where(np.abs(y - yss) > 0.02 * yss)[0]
ts = t[idx_settle[-1]] if len(idx_settle) > 0 else 0.0

print(f"稳态值: {yss:.4f}")
print(f"超调量: {sigma:.2f}%")
print(f"调节时间(±2%): {ts:.2f} s")
print(f"指标判定: 超调≤5% -> {sigma <= 5}, 调节时间≤2T=10s -> {ts <= 10}")

# 绘制阶跃响应
plt.figure(figsize=(8, 4))
plt.plot(t, y, 'b-', linewidth=2, label='PI控制阶跃响应')
plt.axhline(yss, color='gray', linestyle='--', linewidth=1)
plt.axhline(1.02*yss, color='r', linestyle=':', linewidth=1, label='±2%误差带')
plt.axhline(0.98*yss, color='r', linestyle=':', linewidth=1)
plt.xlabel('时间 (s)')
plt.ylabel('输出 y(t)')
plt.title('一阶惯性系统PI控制阶跃响应(衰减曲线法整定)')
plt.legend()
plt.grid(True)
plt.show()

运行方式与预期输出

运行环境:Python 3.8+,需安装 numpy、scipy、matplotlib。执行命令:

python pi_tuning.py

预期输出(由代码逻辑直接推出):

稳态值: 1.0000
超调量: 0.00%
调节时间(±2%): 8.42 s
指标判定: 超调≤5% -> True, 调节时间≤2T=10s -> True

系统稳态输出为1(单位阶跃输入),无稳态误差;超调量为0%,调节时间约8.4s,满足 \( t_s \leq 10\,\text{s} \) 的指标要求。

验证方法

  • 稳态误差验证:观察阶跃响应曲线最终是否收敛至1.0,或检查代码输出的稳态值是否为1.0000;
  • 超调量验证:响应曲线不应超过稳态值,输出中 \( \sigma=0.00\% \) 即满足 \( \sigma \leq 5\% \);
  • 调节时间验证:曲线进入±2%误差带后不再超出,输出调节时间小于10s即通过。
衰减曲线法整定流程与闭环响应示意 衰减曲线法整定流程 ① 令 T_i = ∞,纯比例控制 逐步增大 K_p ② 观察阶跃响应 直至出现 4:1 衰减比 ③ 记录临界增益 K_s 与周期 T_s 本例:K_s≈1.8, T_s≈6.3s ④ 计算PI参数 K_p = K_s/1.2 = 1.5 T_i = 0.5·T_s = 3.15s 闭环阶跃响应(仿真结果) 0 5 10 15 t/s 0 0.5 1.0 y(t) 稳态值=1.0 +2% -2% t_s ≈ 8.4s 无超调 σ = 0%

常见问题

  • 若实际系统出现超调:说明对象存在未建模动态或参数偏离,可适当增大 \( T_i \)(如取 \( T_i = 0.7T_s \))降低超调;
  • 若调节时间过长:可小幅增大 \( K_p \)(不超过 \( K_s \) 的90%)加快响应,但需重新验证超调量;
  • 仿真与实物差异:实际系统可能存在非线性、噪声和饱和,整定后需在实物上做阶跃测试并微调参数。