1. 推进控制器PID结构辨识与整定目标设定

为什么整定前必须先做结构辨识

推进转速环的PID整定不是"试参数",而是"按对象特性配参数"。给定船舶推进电机与螺旋桨负载后,真正决定闭环动态的是从控制器输出(转矩/电流指令)到转速之间的等效惯性环节。螺旋桨负载转矩随转速近似二次增长(\(T_L \approx K_Q \omega^2\)),在工作点附近线性化后表现为一个附加阻尼,因此推进轴系在低速段常呈明显一阶惯性,在包含电机电磁时间常数与轴系扭振时则需用二阶(或一阶+延迟)描述。辨识的目的就是拿到增益 \(K\)、时间常数 \(T\)(或 \(T_1,T_2\))与纯延迟 \(\tau\),再据此反推可实现的带宽与超调目标。

给定对象与辨识方法

设推进电机采用转矩闭环(电流环已整定为近似1:5以上带宽比),则从转速指令侧看,被控对象可写为:

  • 一阶模型:\(G(s)=\dfrac{K}{Ts+1}e^{-\tau s}\),其中 \(K\) 为转速/转矩指令稳态增益(rpm per N·m 或 rad/s per N·m),\(T\) 为机电时间常数。
  • 二阶模型:\(G(s)=\dfrac{K}{(T_1 s+1)(T_2 s+1)}e^{-\tau s}\),\(T_1\) 为机电主导时间常数,\(T_2\) 为电磁或轴系次要时间常数。

工程上最稳妥的辨识手段是阶跃响应两点法:在稳定工作点施加小幅度转矩指令阶跃(例如额定转矩的5%~10%,避免螺旋桨进入强非线性区),记录转速响应,读取达到稳态值28.3%与63.2%的时间 \(t_{0.283}\)、\(t_{0.632}\)。对一阶+延迟模型有:

T = 1.5 * (t_0.632 - t_0.283)
tau = t_0.632 - T
K = Δn_ss / ΔT_cmd

若响应出现明显S形拐点或二次斜率变化,则用二阶拟合:先由拐点切线法估出 \(\tau\),再用 \(t_{0.632}/T\) 与 \(T_2/T_1\) 的查表关系分离两个时间常数。下面给出一个可直接运行的辨识脚本(Python,仅依赖标准库),输入为实测或仿真采样序列。

import math

def identify_first_order(t, y, u_step, y0=None):
    """两点法辨识 K/(Ts+1)e^(-tau s)"""
    y0 = y[0] if y0 is None else y0
    yss = y[-1]
    dn = yss - y0
    K = dn / u_step
    t283 = t632 = None
    for i in range(1, len(y)):
        f = (y[i] - y0) / dn
        if t283 is None and f >= 0.283:
            t283 = t[i]
        if t632 is None and f >= 0.632:
            t632 = t[i]
            break
    T = 1.5 * (t632 - t283)
    tau = t632 - T
    return {"K": K, "T": T, "tau": max(tau, 0.0), "yss": yss}

# 示例:仿真采样(dt=0.02s,转矩阶跃 200 N·m,稳态转速上升 30 rpm)
dt = 0.02
t = [i * dt for i in range(400)]
K_true, T_true, tau_true = 0.15, 1.2, 0.08
u_step = 200.0
y = []
for ti in t:
    td = ti - tau_true
    if td <= 0:
        y.append(0.0)
    else:
        y.append(K_true * u_step * (1 - math.exp(-td / T_true)))
res = identify_first_order(t, y, u_step)
print(res)

该示例的预期输出约为 {'K': 0.15, 'T': 1.2, 'tau': 0.08, ...},说明两点法在无噪声条件下能准确还原参数;实际数据需先做滑动平均滤波再辨识。

由辨识参数反推整定目标

拿到 \(K,T,\tau\) 后,整定目标不应凭感觉设定,而应按可实现性约束给出。对一阶+延迟对象,PI闭环的相位裕度约束给出带宽上限的近似关系:目标穿越频率 \(\omega_c\) 应满足 \(\omega_c \tau + \arctan(\omega_c T) \le 60°\)(留约60°相位裕度)。据此可先算出一个保守带宽,再结合螺旋桨负载的二次阻尼特性下调。

辨识结果推导目标设定值(示例)依据
K=0.15 rpm/(N·m),T=1.2 s,τ=0.08 s目标带宽 ωc0.8~1.0 rad/s相位裕度≥60°,且低于轴系扭振一阶频率的1/5
同上转速阶跃超调≤5%避免螺旋桨推力突变引起轴系冲击
同上抗扰恢复时间≤8 s(恢复到±2%带内)约6~8倍主导时间常数,兼顾海况扰动抑制

注意:带宽目标必须与执行机构能力匹配。若电流环带宽仅约5 rad/s,则转速环目标带宽不应超过1 rad/s,否则电流环动态会被激发成振荡。抗扰恢复时间则用负载转矩阶跃(模拟螺旋桨进水/出水)来验证,而不是用转速指令阶跃。

阶跃试验输入 转矩指令阶跃 ΔT = 200 N·m(5%~10%额定) 工作点:低速稳定段 采样 dt = 0.02 s 推进轴系等效对象 G(s)=K·e^(−τs)/(Ts+1) 螺旋桨负载 T_L≈K_Q·ω² 工作点线性化附加阻尼 (含电流环等效延迟) 两点法辨识结果 K = Δn_ss / ΔT = 0.15 rpm/(N·m) T = 1.5(t₀.₆₃₂ − t₀.₂₈₃) = 1.2 s τ = t₀.₆₃₂ − T = 0.08 s (S形拐点→改用二阶拟合) 相位裕度约束:ω_c·τ + arctan(ω_c·T) ≤ 60° → 目标带宽 ω_c ≈ 0.8~1.0 rad/s 同时要求 ω_c ≤ 电流环带宽/5,且 ≤ 轴系扭振一阶频率/5 目标① 带宽 ω_c = 0.8~1.0 rad/s 穿越频率处相位裕度≥60° 验证:开环Bode图 判据:幅值穿越斜率−20dB/dec 目标② 超调量 转速阶跃超调 ≤ 5% 避免推力突变冲击轴系 验证:转速指令阶跃仿真 判据:峰值−稳态 ≤ 0.05·Δn 目标③ 抗扰恢复 负载阶跃后恢复 ≤ 8 s 恢复到±2%转速带内 验证:螺旋桨负载阶跃仿真 判据:|n−n_ref|≤0.02·n_ref

目标设定的三条硬约束

  1. 带宽不能超过执行链能力:转速环带宽应低于电流环带宽的1/5,否则电流环延迟会吃掉相位裕度,表现为转速振荡而非快速响应。
  2. 超调目标要服从机械约束:螺旋桨推力与转速近似二次关系,5%转速超调对应约10%推力超调,轴系与齿轮箱的扭矩冲击需在此范围内评估。
  3. 抗扰恢复时间用负载阶跃验证:用转速指令阶跃验证跟踪性能,用负载转矩阶跃(模拟进水/出水、系泊突变)验证抗扰性能,两者不可混用同一组指标。
辨识试验的阶跃幅度建议取额定转矩的5%~10%,并在低速稳定工作点进行;幅度过大时螺旋桨进入强非线性区,两点法得到的 K 会偏大,导致后续整定偏激进。
若阶跃响应出现明显二次拐点或持续等幅振荡,说明一阶模型不成立,应改用二阶模型或先排查电流环、轴系扭振与传感器滤波延迟,不要强行用一阶参数整定。