3. 直流电机转速-电流双变量孪生模型构建
双变量耦合模型的结构与信号流
直流电机的数字孪生体需要同时跟踪两个状态量:电枢电流 i 与转子角速度 ω。二者通过电磁转矩 Te = Kt·i 与反电动势 e = Ke·ω 双向耦合,因此不能拆成两个独立的一阶模型分别辨识,必须联立求解。
电气侧方程(电枢回路):
di/dt = (U - R·i - Ke·ω) / L
机械侧方程(转子动力学):
dω/dt = (Kt·i - B·ω - TL) / J
其中 U 为实测电枢电压,TL 为负载转矩,R、L 为电枢电阻与电感,J、B 为转动惯量与粘性阻尼系数,Kt、Ke 在 SI 单位制下数值相等(Kt = Ke = K)。
数值求解与实测数据接入
采用四阶龙格-库塔法对上述耦合方程组进行定步长积分。以下 Python 代码实现完整的双变量孪生模型,并接入实测电压序列与负载转矩序列,输出仿真转速与电流,最后与实测值计算动态偏差。
import numpy as np
# ---- 电机参数(示例值,需根据实际电机铭牌或辨识获得)----
R = 1.2 # 电枢电阻 (Ohm)
L = 0.005 # 电枢电感 (H)
K = 0.052 # 转矩常数 = 反电动势常数 (N·m/A = V·s/rad)
J = 2.1e-5 # 转动惯量 (kg·m^2)
B = 1.5e-6 # 粘性阻尼系数 (N·m·s/rad)
# ---- 仿真设置 ----
h = 1e-4 # 积分步长 (s)
T = 0.5 # 仿真总时长 (s)
N = int(T / h)
t = np.arange(N) * h
# ---- 实测输入序列(示例:阶跃电压 + 阶跃负载)----
U_meas = np.where(t < 0.1, 0.0, 12.0) # 0.1s 时突加 12V
TL_meas = np.where(t < 0.3, 0.0, 0.008) # 0.3s 时突加 8mN·m 负载
# ---- 状态导数函数 ----
def derivatives(i, w, U, TL):
di = (U - R * i - K * w) / L
dw = (K * i - B * w - TL) / J
return di, dw
# ---- RK4 主循环 ----
i = np.zeros(N)
w = np.zeros(N)
i[0], w[0] = 0.0, 0.0
for k in range(N - 1):
U_k, TL_k = U_meas[k], TL_meas[k]
k1_i, k1_w = derivatives(i[k], w[k], U_k, TL_k)
k2_i, k2_w = derivatives(i[k] + 0.5*h*k1_i, w[k] + 0.5*h*k1_w, U_k, TL_k)
k3_i, k3_w = derivatives(i[k] + 0.5*h*k2_i, w[k] + 0.5*h*k2_w, U_k, TL_k)
k4_i, k4_w = derivatives(i[k] + h*k3_i, w[k] + h*k3_w, U_k, TL_k)
i[k+1] = i[k] + (h/6.0) * (k1_i + 2*k2_i + 2*k3_i + k4_i)
w[k+1] = w[k] + (h/6.0) * (k1_w + 2*k2_w + 2*k3_w + k4_w)
# ---- 与实测值对比(此处用仿真值加噪声模拟实测,实际应替换为真实采集数据)----
np.random.seed(42)
i_meas = i + np.random.normal(0, 0.02, N) # 电流实测(含噪声)
w_meas = w + np.random.normal(0, 1.5, N) # 转速实测(含噪声)
# ---- 动态偏差指标 ----
err_i = i - i_meas
err_w = w - w_meas
rmse_i = np.sqrt(np.mean(err_i**2))
rmse_w = np.sqrt(np.mean(err_w**2))
max_i = np.max(np.abs(err_i))
max_w = np.max(np.abs(err_w))
print(f"电流 RMSE = {rmse_i:.4f} A, 最大偏差 = {max_i:.4f} A")
print(f"转速 RMSE = {rmse_w:.4f} rad/s, 最大偏差 = {max_w:.4f} rad/s")
结果判读与偏差分析
运行上述代码后,重点关注两个时间节点:t=0.1s 电压突加时电流的上升速率与峰值,以及 t=0.3s 负载突加时转速的跌落幅度与恢复时间。若电流 RMSE 明显大于转速 RMSE,通常说明电枢电感 L 或电阻 R 的给定值与实际不符;若转速在负载突加后恢复过慢,则应检查 J 与 B 的取值。
| 观察量 | 物理含义 | 偏差偏大时的排查方向 |
|---|---|---|
| 电流上升沿斜率 | 电气时间常数 τe = L/R | L 偏大或 R 偏小 |
| 电流稳态值 | 稳态时 i ≈ (U − K·ω)/R | R 或 K 不准确 |
| 转速跌落深度 | 负载转矩对转速的瞬时影响 | J 偏小或 TL 接入时刻不同步 |
| 转速恢复时间 | 机械时间常数 τm = J·R/(K² + B·R) | J、B 或 K 需重新辨识 |
若实测数据采样周期大于积分步长
h,应对实测输入做零阶保持或线性插值,避免因输入更新不及时引入额外偏差。