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