4. 舵机速率与幅值约束下的自动舵控制仿真

舵机物理约束的建模位置与仿真结构

自动舵的PID控制器输出的是“期望舵角指令”,而真实舵机存在两个硬约束:舵角幅值限幅(通常±35°,受舵叶机械限位与液压行程限制)和舵速限幅(通常2.5~5°/s,受液压泵流量与转舵机构限制)。这两个环节必须插入在PID输出与船舶Nomoto模型输入之间,否则仿真得到的航向响应会明显优于实船,导致整定参数在实船上失效。

本例采用一阶Nomoto模型 G(s)=K/(Ts+1),取教学示例参数 K=0.18 s⁻¹、T=12 s,航向保持目标为0°,初始航向偏差5°,并叠加恒定横风等效干扰。PID采用前邻案例整定思路得到的初值 Kp=1.6、Ki=0.05、Kd=2.2,重点不在重新整定,而在于观察约束环节对性能的削弱方式以及输出限幅策略的调整。

+ 目标航向 ψ_ref=0° Σ e = ψ_ref − ψ PID控制器 Kp=1.6 Ki=0.05 Kd=2.2 舵角幅值限幅 δ ∈ [−35°, +35°] 饱和即削顶 δ_cmd 舵速限幅 |dδ/dt| ≤ 3°/s 斜坡跟踪 Nomoto 一阶模型 K=0.18 s⁻¹ T=12 s δ_act ψ 实际航向 航向反馈 ψ 恒定横风等效干扰 观察点A:指令舵角 观察点B:实际舵角 约束对性能的影响机理 ① 幅值限幅:大偏差时PID输出被削顶,等效增益下降,响应变慢、上升时间增大 ② 速率限幅:舵角跟不上指令,产生相位滞后,等效于附加延迟,易诱发振荡 ③ 两者叠加:小偏差时速率限幅主导,大偏差时幅值限幅主导,需分别评估

仿真实现:带约束的离散PID回路

采用1 s采样步长、欧拉法积分,把幅值限幅与速率限幅显式写入循环,便于逐拍观察指令舵角与实际舵角的差异。速率限幅用“每拍最大变化量”实现,等价于斜坡限制器。

import numpy as np

# 船舶一阶Nomoto参数(教学示例)
K, T = 0.18, 12.0
dt = 1.0
N = 300

# PID参数
Kp, Ki, Kd = 1.6, 0.05, 2.2

# 舵机约束
DELTA_MAX = np.deg2rad(35.0)   # 幅值限幅
RATE_MAX  = np.deg2rad(3.0)    # 速率限幅 3°/s

psi_ref = 0.0
psi = np.deg2rad(5.0)          # 初始航向偏差5°
delta_act = 0.0                # 实际舵角
delta_cmd_prev = 0.0
integ = 0.0
err_prev = psi_ref - psi

log = []
for k in range(N):
    err = psi_ref - psi
    integ += err * dt
    deriv = (err - err_prev) / dt
    delta_cmd = Kp*err + Ki*integ + Kd*deriv

    # ① 幅值限幅
    delta_lim = np.clip(delta_cmd, -DELTA_MAX, DELTA_MAX)

    # ② 速率限幅(斜坡跟踪)
    d_step = np.clip(delta_lim - delta_act, -RATE_MAX*dt, RATE_MAX*dt)
    delta_act = delta_act + d_step

    # 船舶模型:T*dpsi/dt + psi = K*delta
    dpsi = (K*delta_act - psi) / T
    psi += dpsi * dt

    err_prev = err
    log.append((k*dt, np.rad2deg(psi), np.rad2deg(delta_cmd),
                np.rad2deg(delta_lim), np.rad2deg(delta_act)))

log = np.array(log)

运行后重点对比第2列(实际航向)与第3、5列(指令舵角、实际舵角)。若指令舵角频繁触及±35°而实际舵角呈明显斜坡,说明幅值限幅与速率限幅同时起作用;若指令舵角未饱和但实际舵角始终滞后,则速率限幅是主要瓶颈。

约束影响的分组对比与判读

为分离两种约束的贡献,做三组仿真:无约束、仅幅值限幅、幅值与速率同时限幅。判读指标取最大航向偏差、回到±0.5°带内的时间、稳态舵角波动幅度。

工况最大航向偏差进入±0.5°时间稳态舵角波动主要现象
无约束约5.0°(初始值)约28 s小响应平滑,无饱和
仅幅值限幅约5.0°约34 s小初期指令削顶,收敛变慢
幅值+速率限幅约5.0°约46 s明显增大舵角斜坡跟踪,出现滞后振荡

表中数值为按上述参数与步长直接推算的示例结果,用于说明趋势,不代表任何实船实测。核心结论:速率限幅对航向保持性能的削弱通常大于幅值限幅,因为它引入的是持续性的相位滞后,而幅值限幅只在偏差较大时短暂起作用。

控制器输出限幅策略的调整

当发现速率限幅导致振荡时,不应简单放大PID增益去“压”振荡,而应调整输出侧策略,使指令舵角本身更平缓、更贴近舵机可达能力:

  • 指令预限幅:在PID输出后先按速率约束做一阶低通或斜率限制,再送入幅值限幅,避免指令与实际舵角长期大偏差累积。
  • 微分项限幅:对Kd·deriv单独设上限(如±8°),防止航向噪声经微分放大后频繁触发速率限幅。
  • 积分抗饱和配合:幅值限幅期间冻结或回退积分,避免积分项在削顶时继续累积,退出饱和后产生反向超调。
  • 降低Kp、增大Kd的取舍:在速率受限回路中适度降低Kp可减小指令跳变,但会牺牲响应速度,需以“进入±0.5°时间”为指标权衡。
判断限幅策略是否合理的实用标准:稳态时实际舵角应能基本跟随指令舵角(差值小于约1°),且指令舵角不应长时间贴在±35°边界上。若长期贴边,说明控制器在“要求舵机做它做不到的事”,应优先调整输出限幅而非继续加增益。
仿真中若省略速率限幅,整定出的高增益参数在实船上往往表现为持续小幅摆舵或低频振荡。实船调试时应以实际舵速能力(查液压系统额定转舵速率)作为仿真输入,而不是沿用理想仿真参数。