3. 直流电机驱动惯性负载的机电联合仿真
机电耦合建模思路
直流电机驱动惯性负载的核心在于电气方程与机械方程通过两个变量耦合:反电动势 e = Ke·ω 把转速反馈到电气侧,电磁转矩 T = Kt·i 把电流传递到机械侧。仿真时把这两条通路同时求解,才能看到启动电流的峰值与转速上升之间的相互制约。
- 电气回路:
u = R·i + L·di/dt + Ke·ω - 机械转子:
J·dω/dt = Kt·i − B·ω − TL - 耦合量:反电动势
Ke·ω(电气侧受机械影响)、电磁转矩Kt·i(机械侧受电气影响)
仿真实现与关键代码
下面用 Python 对上述耦合方程做数值积分(四阶 Runge–Kutta),状态量为 [i, ω]。代码自洽可运行,直接复制即可复现启动曲线。
import numpy as np
import matplotlib.pyplot as plt
# 电机与负载参数(教学示例)
R, L = 1.2, 5e-3 # 电枢电阻/电感
Ke, Kt = 0.05, 0.05 # 反电动势常数 / 转矩常数
J, B = 0.02, 0.005 # 转动惯量 / 粘性阻尼
TL = 0.1 # 恒值负载转矩
u = 24.0 # 阶跃端电压
def deriv(state):
i, w = state
di = (u - R*i - Ke*w) / L # 电气方程
dw = (Kt*i - B*w - TL) / J # 机械方程
return np.array([di, dw])
def rk4(state, dt):
k1 = deriv(state)
k2 = deriv(state + 0.5*dt*k1)
k3 = deriv(state + 0.5*dt*k2)
k4 = deriv(state + dt*k3)
return state + dt/6*(k1 + 2*k2 + 2*k3 + k4)
dt, T = 1e-4, 0.5
n = int(T/dt)
t = np.linspace(0, T, n)
y = np.zeros((n, 2))
y[0] = [0.0, 0.0] # 初始:静止、无电流
for k in range(n-1):
y[k+1] = rk4(y[k], dt)
i_hist, w_hist = y[:,0], y[:,1]
# 稳态校验
w_ss = (u - R*TL/Kt) / Ke
print(f"稳态转速 ω_ss ≈ {w_ss:.2f} rad/s")
print(f"堵转电流 i_stall = {u/R:.2f} A")
print(f"仿真末值 ω = {w_hist[-1]:.2f} rad/s, i = {i_hist[-1]:.4f} A")
plt.figure(figsize=(9,4))
plt.subplot(1,2,1); plt.plot(t, i_hist, color='#ef4444')
plt.xlabel('t / s'); plt.ylabel('i / A'); plt.title('启动电流')
plt.subplot(1,2,2); plt.plot(t, w_hist, color='#10b981')
plt.xlabel('t / s'); plt.ylabel('ω / (rad/s)'); plt.title('转速响应')
plt.tight_layout(); plt.show()
结果判读与反电动势作用验证
运行后应观察到:电流在 t=0 瞬间跳升至接近堵转值(约 20 A),随后随转速上升而快速回落;转速呈指数式上升,最终趋于稳态值。这正是反电动势的负反馈作用——转速越高,Ke·ω 越大,电枢回路净电压越小,电流被自动压制。
| 观察量 | 预期现象 | 物理含义 |
|---|---|---|
| i(0⁺) | ≈ u/R = 20 A | 启动瞬间 ω=0,无反电动势,电流仅受电阻限制 |
| i(t) 衰减 | 快速下降至稳态小电流 | 反电动势随 ω 增大而抵消端电压 |
| ω(t) 上升 | 先快后慢,趋于 ω_ss | 电磁转矩与负载/阻尼平衡 |
| ω_ss 校验 | ≈ (24−1.2×0.1/0.05)/0.05 = 432 rad/s | 稳态时 di/dt=0、dω/dt=0 联立求解 |
若把
Ke 改为 0(人为去掉反电动势),会看到电流几乎不衰减、转速线性上升直至失控——这直观验证了反电动势对动态特性的稳定作用。数值积分步长需满足
dt < L/R(本例 5e-3/1.2 ≈ 4.2 ms),否则电气快动态会失真。若用固定步长求解器,建议 dt ≤ 1e-4 s。