2. 推进电机三相电流有效值与不平衡度计算

任务对象与判据

本节处理的是推进变频器输出侧三相电流录波通道(典型命名如 IM_U、IM_V、IM_W,或 M1_IA/IB/IC)。目标是在稳态工况窗口内计算三相电流有效值、负序分量与不平衡度,并与试航验收限值比较。工程上常用对称分量法:由三相瞬时值构造复相量,提取正序与负序分量,不平衡度按 K = |I₂| / |I₁| × 100% 计算(负序与正序之比)。

关键前提有三点:一是三相通道必须来自同一采样时刻、同一时间基准(例1已核对);二是必须截取稳态段,避免启停、负载突变、变频器限流等瞬态污染;三是有效值计算需覆盖整数个基波周期,否则会引入截断误差。下面给出可直接运行的 Python 实现。

计算实现

采用 numpy + pandas 读取录波 CSV,按时间戳切片稳态窗口,用滑动窗口做整周期有效值,再用对称分量法求负序与不平衡度。示例数据为教学构造,用于验证算法正确性,不代表真实试航结果。

import numpy as np
import pandas as pd

# ---------- 1. 读取录波数据(示例:教学构造数据) ----------
def load_waveform(csv_path, t_col="time_s",
                  ia="IM_U", ib="IM_V", ic="IM_W"):
    df = pd.read_csv(csv_path)
    df = df[[t_col, ia, ib, ic]].dropna().sort_values(t_col)
    t = df[t_col].to_numpy()
    i = np.vstack([df[ia], df[ib], df[ic]]).T  # (N, 3)
    return t, i

# ---------- 2. 截取稳态窗口 ----------
def steady_window(t, i, t0, t1, f0=50.0, cycles=10):
    """在 [t0, t1] 内取整数个基波周期,返回窗口内数据"""
    mask = (t >= t0) & (t <= t1)
    tw, iw = t[mask], i[mask]
    if len(tw) < 2:
        raise ValueError("稳态窗口内数据不足")
    fs = 1.0 / np.median(np.diff(tw))
    n_per_cycle = int(round(fs / f0))
    n_use = n_per_cycle * cycles
    if len(tw) < n_use:
        raise ValueError(f"窗口长度不足 {cycles} 个周期")
    return tw[:n_use], iw[:n_use], fs

# ---------- 3. 三相有效值与对称分量 ----------
def phase_rms_and_unbalance(iw, f0=50.0, fs=None):
    # 三相有效值(整周期,均方根)
    rms = np.sqrt(np.mean(iw**2, axis=0))          # [Ia, Ib, Ic]

    # 构造复相量:用整周期 DFT 提取基波相量
    n = iw.shape[0]
    k = np.arange(n)
    ref = np.exp(-1j * 2 * np.pi * f0 * k / fs)     # 基波参考
    phasor = (2.0 / n) * (iw.T @ ref)               # 每相基波复相量

    # 对称分量:a = e^{j120°}
    a = np.exp(1j * 2 * np.pi / 3)
    Ia, Ib, Ic = phasor
    I1 = (Ia + a * Ib + a**2 * Ic) / 3.0            # 正序
    I2 = (Ia + a**2 * Ib + a * Ic) / 3.0            # 负序
    I0 = (Ia + Ib + Ic) / 3.0                       # 零序(三相三线制应≈0)

    unbalance = abs(I2) / abs(I1) * 100.0           # 不平衡度 %
    return rms, abs(I1), abs(I2), abs(I0), unbalance

# ---------- 4. 主流程 ----------
if __name__ == "__main__":
    # 教学示例:构造 50 Hz、采样率 5 kHz、含 3% 负序的三相电流
    fs, f0, T = 5000.0, 50.0, 2.0
    t = np.arange(0, T, 1/fs)
    I1_amp, I2_amp = 100.0, 3.0
    a = np.exp(1j * 2 * np.pi / 3)
    ph = [0, -2*np.pi/3, 2*np.pi/3]
    i = np.zeros((len(t), 3))
    for k, p in enumerate(ph):
        i[:, k] = (I1_amp*np.cos(2*np.pi*f0*t + p)
                   + I2_amp*np.cos(2*np.pi*f0*t - p))  # 负序反相序

    tw, iw, fs_est = steady_window(t, i, 0.5, 1.5, f0=f0, cycles=10)
    rms, I1, I2, I0, K = phase_rms_and_unbalance(iw, f0=f0, fs=fs_est)

    print(f"采样率估计: {fs_est:.1f} Hz")
    print(f"三相有效值: Ia={rms[0]:.2f} A, Ib={rms[1]:.2f} A, Ic={rms[2]:.2f} A")
    print(f"正序={I1:.2f} A, 负序={I2:.2f} A, 零序={I0:.2f} A")
    print(f"不平衡度 K = {K:.2f} %")
    # 验收判据示例:K ≤ 5% 合格
    print("判定:", "合格" if K <= 5.0 else "超限")

运行后应得到接近 K ≈ 3.0% 的结果(构造值),说明算法能正确还原负序比例。若把 I2_amp 改为 6 A,则 K ≈ 6%,判定为超限,可用于验证判据分支。

结果判读与验收对照

下表给出典型判读逻辑。限值需以本项目试航大纲/合同技术规格书为准,此处 5% 仅为教学示例阈值。

指标计算式示例值判读
三相有效值√(mean(i²))Ia=100.1 A, Ib=99.8 A, Ic=100.3 A相间偏差小
正序 I₁对称分量100.0 A基准分量
负序 I₂对称分量3.0 A反映不对称
不平衡度 K|I₂|/|I₁|×100%3.0%≤5% 合格
零序 I₀对称分量≈0 A三线制应接近 0
若零序分量明显不为零,优先排查通道接线、CT 极性或是否存在中性线电流,而不是直接判定电机故障。
稳态窗口必须避开变频器输出频率切换点与负载突变点;窗口内频率漂移会导致 DFT 相量泄漏,使不平衡度虚高。
录波通道 IM_U / IM_V / IM_W 同一时间基准 采样率 fs 基波 f₀ = 50 Hz 稳态窗口截取 避开启停/负载突变 取整数个基波周期 N = n_per_cycle × 10 窗口 [t0, t1] 对称分量计算 RMS = √(mean(i²)) I₁ = (Ia + aIb + a²Ic)/3 I₂ = (Ia + a²Ib + aIc)/3 K = |I₂|/|I₁| × 100% 验收判据 K ≤ 5% (示例阈值) I₀ ≈ 0 相间偏差小 三相电流波形(示意) Ia Ib Ic 结果判读 K ≤ 5% → 合格 K > 5% → 超限 记录 I₁/I₂/I₀ 与窗口 排查接线/CT/负载 注:示例阈值 5% 仅用于教学,实际限值以试航大纲/技术规格书为准 零序 I₀ 明显不为零时,优先排查通道接线与 CT 极性

快速执行清单

  • 确认三相通道同源、同时间基准、无缺失(承接例1的通道映射表)。
  • 截取稳态窗口,长度覆盖整数个基波周期(建议 ≥10 周期)。
  • 计算三相 RMS、正序 I₁、负序 I₂、零序 I₀ 与不平衡度 K。
  • 对照验收限值判定;超限时先查接线/CT 极性,再查负载不对称。
  • 记录窗口起止时间、采样率、f₀ 与计算结果,便于复现与追溯。