4. 位置伺服系统PD控制

任务目标

构建一个位置伺服系统(双积分对象)的PD控制器,通过整定比例增益Kp与微分增益Kd,使系统对单位阶跃位置指令的响应满足:无超调且稳态误差为零。采用Python实现仿真,通过临界阻尼条件确定参数范围,并验证闭环性能。

被控对象与控制器结构

位置伺服系统简化为双积分模型(等效为惯量负载,忽略摩擦):

P(s) = 1 / (J·s²),取 J = 1 kg·m²

PD控制律(位置环+速度内环等效):

C(s) = Kp + Kd·s

闭环传递函数为:

G(s) = (Kp + Kd·s) / (s² + Kd·s + Kp)

特征方程 s² + Kd·s + Kp = 0。无超调条件为阻尼比 ζ ≥ 1,即 Kd ≥ 2√Kp。稳态误差为零由系统I型特性保证(开环含积分环节)。

完整实现代码

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import lti, step

# 系统参数
J = 1.0          # 转动惯量 (kg·m²)
Kp = 100.0       # 比例增益
Kd = 22.0        # 微分增益(满足 Kd ≥ 2√Kp = 20,取22留裕量)

# 闭环传递函数: G(s) = (Kd·s + Kp) / (s² + Kd·s + Kp)
num = [Kd, Kp]
den = [1, Kd, Kp]
sys = lti(num, den)

# 阶跃响应仿真
t_end = 2.0
t = np.linspace(0, t_end, 2000)
t_out, y_out = step(sys, T=t)

# 性能指标计算
final_value = y_out[-1]
overshoot = (np.max(y_out) - final_value) / final_value * 100
# 稳态误差(2%准则)
idx_settle = np.where(np.abs(y_out - final_value) < 0.02 * final_value)[0]
settle_time = t_out[idx_settle[0]] if len(idx_settle) > 0 else None

# 输出结果
print(f"稳态值: {final_value:.4f}")
print(f"超调量: {overshoot:.2f}%")
print(f"2%调节时间: {settle_time:.4f} s" if settle_time else "未达到2%准则")

# 绘制阶跃响应
plt.figure(figsize=(8, 5))
plt.plot(t_out, y_out, 'b-', linewidth=2, label='PD控制响应')
plt.axhline(y=1.0, color='gray', linestyle='--', linewidth=1)
plt.axhline(y=1.02, color='red', linestyle=':', linewidth=1)
plt.axhline(y=0.98, color='red', linestyle=':', linewidth=1)
plt.xlabel('时间 (s)')
plt.ylabel('位置输出')
plt.title(f'位置伺服PD控制阶跃响应 (Kp={Kp}, Kd={Kd})')
plt.legend()
plt.grid(True, alpha=0.3)
plt.xlim([0, t_end])
plt.ylim([0, 1.2])
plt.show()

运行方式与依赖

需要安装:numpy、scipy、matplotlib。运行命令:

pip install numpy scipy matplotlib
python pd_position_control.py

参数整定与验证方法

整定规则:先根据期望响应速度选择Kp(此处取100),再由无超调条件 Kd ≥ 2√Kp 确定Kd下限。取Kd=22(略大于临界值20)可保证无超调同时保留一定快速性。

验证步骤:

  1. 运行代码,观察输出超调量是否为0.00%;
  2. 检查稳态值是否趋近1.0(稳态误差为零);
  3. 观察图形曲线是否单调上升无振荡,且最终收敛到1.0。

通过条件:超调量=0%且稳态值=1.0000(误差<0.1%)。若出现超调,增大Kd;若响应过慢,增大Kp并同步调整Kd。

参数影响验证

将Kd改为15(小于临界值20)重新运行,可观察到约4.5%的超调,验证阻尼条件Kd ≥ 2√Kp的正确性。将Kp改为400并取Kd=40(临界值),系统仍无超调但响应更快,说明整定规则可扩展。

PD参数整定区域图 Kp Kd 0 100 200 300 400 0 20 40 60 超调区域 Kd < 2√Kp 无超调区域 Kd ≥ 2√Kp 临界阻尼线 Kd = 2√Kp (100, 22) (400, 40) 本案例参数点 扩展验证点

图中绿色区域为满足无超调条件的参数组合(Kd ≥ 2√Kp),蓝色点为当前案例参数(Kp=100, Kd=22),紫色点为扩展验证参数(Kp=400, Kd=40),均位于无超调区域内。

常见问题

  • 出现超调:Kd取值小于临界值,增大Kd至满足 Kd ≥ 2√Kp。
  • 稳态误差不为零:检查系统是否包含积分环节(本模型开环含1/s²,I型系统保证阶跃无静差)。若实际系统含摩擦,需在前向通道加入积分项。
  • 响应振荡:Kp过大导致闭环带宽过高,适当降低Kp并同步调整Kd。