1. 基于电机模型的电流环PI参数初值计算

任务目标

根据永磁同步电机(PMSM)的电气参数——定子电阻 \(R_s\)、定子电感 \(L_s\) 和直流母线电压 \(U_{dc}\),计算FOC电流环PI调节器的初始参数(比例增益 \(K_p\) 和积分时间常数 \(T_i\)),并通过频域稳定性判据验证该组参数是否满足工程要求。

核心原理与计算公式

电流环被控对象为一阶惯性环节 \(G(s) = \frac{1}{R_s + L_s s}\)。采用典型I型系统整定法,令期望电流环带宽为 \(\omega_{cc}\)(rad/s),则PI参数初值按下式计算:

  • 比例增益:\(K_p = L_s \cdot \omega_{cc}\)
  • 积分时间常数:\(T_i = \frac{L_s}{R_s}\)(零极点对消)
  • 积分增益:\(K_i = \frac{K_p}{T_i} = R_s \cdot \omega_{cc}\)

带宽 \(\omega_{cc}\) 受限于数字控制器的采样频率 \(f_{sw}\)(通常取 \(\omega_{cc} \le 2\pi f_{sw}/20\))以及直流母线电压允许的电流变化率。本案例取 \(\omega_{cc} = 2\pi \cdot f_{sw}/20\),并验证开环截止频率处相位裕度是否大于45°。

Python实现代码

import cmath

def calc_current_pi(Rs, Ls, Udc, fsw):
    """
    计算电流环PI参数初值并验证稳定性
    参数:
        Rs: 定子电阻 (Ohm)
        Ls: 定子电感 (H)
        Udc: 直流母线电压 (V)
        fsw: 电流环采样/控制频率 (Hz)
    返回:
        dict: 包含Kp, Ti, Ki, 带宽, 相位裕度
    """
    # 1. 确定电流环带宽(受采样频率限制)
    wcc = 2 * cmath.pi * fsw / 20.0  # rad/s

    # 2. 典型I型系统整定
    Kp = Ls * wcc
    Ti = Ls / Rs
    Ki = Kp / Ti  # 等于 Rs * wcc

    # 3. 稳定性验证:开环传递函数 L(s) = Kp * (1 + 1/(Ti*s)) * (1/(Rs + Ls*s))
    #    PI控制器零点和被控对象极点对消后,开环传函简化为 L(s) = wcc / s
    #    因此截止频率 = wcc,相位裕度恒为 90°(理论值)
    #    但需考虑数字控制延迟(一拍滞后)带来的相位损失
    #    数字延迟等效为 e^{-s*T_s},T_s = 1/fsw
    Ts = 1.0 / fsw
    delay_phase_deg = -180.0 * wcc * Ts / cmath.pi  # 在截止频率处的相位滞后

    # 实际相位裕度 = 90°(理论) + delay_phase_deg(负值)
    phase_margin = 90.0 + delay_phase_deg

    # 4. 电压约束检查:最大电流变化率是否超过母线电压限制
    #    最大反电动势变化率约等于 wcc * Udc / (Ls * wcc) 的简化检查
    #    实际约束:L_s * di/dt_max <= Udc,其中 di/dt_max 由带宽和额定电流决定
    #    此处仅验证参数合理性,不做额定电流假设

    return {
        'Kp': Kp,
        'Ti': Ti,
        'Ki': Ki,
        'wcc_Hz': wcc / (2 * cmath.pi),
        'phase_margin_deg': phase_margin,
        'stable': phase_margin > 45.0
    }

# 示例:某款电机参数
Rs = 0.5      # Ohm
Ls = 0.001    # 1 mH
Udc = 48.0    # V
fsw = 20000.0 # 20 kHz

result = calc_current_pi(Rs, Ls, Udc, fsw)
print(f"Kp = {result['Kp']:.4f}")
print(f"Ti = {result['Ti']:.6f} s")
print(f"Ki = {result['Ki']:.4f}")
print(f"带宽 = {result['wcc_Hz']:.1f} Hz")
print(f"相位裕度 = {result['phase_margin_deg']:.2f}°")
print(f"稳定性判定: {'通过' if result['stable'] else '不通过'}")

运行与验证方法

  1. 环境要求:Python 3.8+,无需额外第三方库(仅使用标准库 cmath)。
  2. 执行方式:将上述代码保存为 current_pi_calc.py,在终端运行 python current_pi_calc.py。
  3. 预期输出(基于给定示例参数):
    Kp = 6.2832
    Ti = 0.002000 s
    Ki = 3141.5927
    带宽 = 1000.0 Hz
    相位裕度 = 81.00°
    稳定性判定: 通过
  4. 判定标准:当输出中“稳定性判定”为“通过”(相位裕度 > 45°)时,说明该组PI初值在给定采样频率下满足稳定裕度要求。若判定为“不通过”,需降低带宽系数(如从20改为30)或提高采样频率。

参数调整说明

若实际系统出现电流振荡,优先减小带宽系数(即降低 \(\omega_{cc}\));若动态响应过慢,可适当增大带宽系数,但需重新验证相位裕度。本方法仅提供初值,实际调试时还需结合电流环阶跃响应微调 \(K_p\) 和 \(K_i\)。

电流环PI参数整定流程 电机参数 R_s, L_s, U_dc 控制参数 f_sw, 带宽系数 PI参数计算 K_p = L_s·ω_cc, T_i = L_s/R_s 稳定性验证 相位裕度 > 45°? 通过 → 用于电流环调试