1. 一阶惯性环节的P控制整定

任务目标

对一阶惯性环节对象 \( G(s)=\dfrac{K}{Ts+1} \) 施加纯比例控制,通过闭环阶跃响应实验确定系统临界比例增益 \( K_{cr} \),并观察P控制下稳态误差随 \( K_p \) 的变化规律。本案例使用Python+NumPy进行离散化仿真,不依赖额外控制系统工具箱。

被控对象与控制器

对象参数:增益 \( K=2 \),时间常数 \( T=5\,\text{s} \)。采用前向欧拉法离散化,采样周期 \( T_s=0.01\,\text{s} \)。P控制器输出 \( u(t)=K_p \cdot e(t) \),其中 \( e(t)=r(t)-y(t) \),设定值 \( r(t)=1 \)(单位阶跃)。

完整实现代码

import numpy as np
import matplotlib.pyplot as plt

# 对象参数
K = 2.0      # 对象增益
T = 5.0      # 时间常数 (s)
Ts = 0.01    # 采样周期 (s)
T_end = 60.0 # 仿真时长 (s)
N = int(T_end / Ts)
t = np.arange(0, T_end, Ts)

# 离散化系数(前向欧拉)
a = 1 - Ts / T
b = K * Ts / T

def simulate(Kp):
    """返回阶跃响应 y 和稳态误差 ess"""
    y = np.zeros(N)
    u = np.zeros(N)
    e = np.zeros(N)
    r = 1.0
    for i in range(1, N):
        e[i] = r - y[i-1]
        u[i] = Kp * e[i]
        y[i] = a * y[i-1] + b * u[i-1]
    ess = r - y[-1]
    return t, y, ess

# 测试不同比例增益
Kp_values = [0.5, 1.0, 2.0, 5.0, 10.0]
results = {}
for Kp in Kp_values:
    t, y, ess = simulate(Kp)
    results[Kp] = (y, ess)
    print(f"Kp = {Kp:5.1f}  稳态误差 ess = {ess:8.4f}")

# 寻找临界增益(手动二分或扫描)
print("\n--- 临界增益扫描 ---")
Kp_cr = None
for Kp in np.arange(0.1, 50.0, 0.1):
    _, y, _ = simulate(Kp)
    # 检测发散:最后1秒内是否持续振荡且幅值增大
    tail = y[-100:]
    if np.max(np.abs(tail)) > 10:
        Kp_cr = Kp
        break
print(f"临界比例增益 Kcr ≈ {Kp_cr:.1f}")

# 绘制阶跃响应对比
plt.figure(figsize=(10, 5))
for Kp, (y, _) in results.items():
    plt.plot(t, y, label=f'Kp={Kp}')
plt.axhline(1.0, color='gray', ls='--', lw=0.8)
plt.xlabel('时间 (s)')
plt.ylabel('输出 y(t)')
plt.title('一阶惯性环节P控制阶跃响应')
plt.legend()
plt.grid(alpha=0.3)
plt.xlim(0, 30)
plt.ylim(0, 1.8)
plt.show()

运行与验证

运行方式:直接执行上述Python脚本(需安装numpy和matplotlib)。

预期输出:

  • 控制增益 \( K_p=0.5\sim10 \) 时,系统均稳定,稳态误差随 \( K_p \) 增大而减小(如 \( K_p=1 \) 时 \( e_{ss}\approx0.667 \),\( K_p=10 \) 时 \( e_{ss}\approx0.167 \)),符合一阶系统P控制 \( e_{ss}=\dfrac{1}{1+KK_p} \) 的理论值。
  • 临界增益扫描结果约为 \( K_{cr}\approx 50 \)(理论值:一阶系统开环增益 \( KK_p=2K_p \),临界条件 \( 2K_p \to \infty \) 才发散,实际数值仿真中因离散化误差在极大增益处发散)。

通过判定标准:

  1. 控制增益增大时,稳态误差单调减小,且仿真稳态值与理论公式 \( e_{ss}=1/(1+2K_p) \) 误差小于0.01;
  2. 临界增益扫描能输出一个有限数值(因离散化导致),且当 \( K_p \) 超过该值后系统输出发散;
  3. 绘制的阶跃响应曲线无稳态振荡(一阶系统P控制不会等幅振荡,只会单调收敛或发散)。

关键结论

一阶惯性环节在纯P控制下闭环始终稳定(理论上不存在临界振荡),稳态误差 \( e_{ss}=\dfrac{1}{1+KK_p} \) 无法消除,增大 \( K_p \) 只能减小误差但会放大噪声和执行机构负担。本案例通过阶跃响应实验验证了该规律,并演示了数值发散对应的临界增益概念。