1. 倾转机构动力学建模基础
任务说明
本案例针对eVTOL倾转机构中的典型单通道倾转单元,建立可用于后续控制策略仿真的简化动力学模型。模型包含直流无刷电机电枢动态、减速器扭矩放大与摩擦损失、倾转臂负载转动惯量三部分,输出以倾转角度为状态变量的二阶微分方程,并给出可直接用于数值仿真的Python实现。
模型建立
设倾转臂绕转轴的转动惯量为\(J_L\),减速器减速比为\(N\)(\(N>1\)),电机转子惯量折算到负载侧后,等效总惯量为:
\[ J_{eq} = J_L + N^2 J_m \]
电机电枢回路方程为:
\[ L_a \frac{di_a}{dt} + R_a i_a + K_e \dot{\theta}_m = V_a \]
其中\(\theta_m = N \theta\)为电机轴转角,\(\theta\)为倾转臂输出角。电机电磁转矩\(T_m = K_t i_a\),经减速器后输出轴扭矩为:
\[ T_{out} = N T_m - T_f \]
\(T_f\)为减速器等效摩擦扭矩(含库仑与粘性项)。负载侧转动方程为:
\[ J_{eq} \ddot{\theta} + B_{eq} \dot{\theta} + T_g(\theta) = T_{out} \]
其中\(B_{eq}\)为折算到负载侧的粘性阻尼系数,\(T_g(\theta)\)为重力矩(倾转臂偏离水平位置时产生)。将上述方程联立,取状态变量\([x_1, x_2, x_3] = [\theta, \dot{\theta}, i_a]\),得到状态空间模型。
Python实现
import numpy as np
from scipy.integrate import solve_ivp
# 模型参数(单位:SI)
params = {
'J_L': 0.8, # 倾转臂转动惯量 kg·m²
'J_m': 0.0002, # 电机转子惯量 kg·m²
'N': 50, # 减速比
'R_a': 0.5, # 电枢电阻 Ω
'L_a': 0.001, # 电枢电感 H
'K_t': 0.05, # 扭矩常数 N·m/A
'K_e': 0.05, # 反电动势常数 V·s/rad
'B_eq': 0.01, # 等效粘性阻尼 N·m·s/rad
'T_f': 0.5, # 库仑摩擦扭矩 N·m
'm_arm': 3.0, # 倾转臂质量 kg
'g': 9.81,
'L_cg': 0.25 # 质心到转轴距离 m
}
def gravity_torque(theta):
"""重力矩:theta=0为水平位置"""
return params['m_arm'] * params['g'] * params['L_cg'] * np.cos(theta)
def dynamics(t, x, V_a):
theta, omega, i_a = x
N = params['N']
J_eq = params['J_L'] + N**2 * params['J_m']
# 电机电枢电流动态
di_a = (V_a - params['R_a']*i_a - params['K_e']*N*omega) / params['L_a']
# 电机电磁转矩
T_m = params['K_t'] * i_a
# 输出轴扭矩(含摩擦)
T_out = N * T_m - params['T_f'] * np.sign(omega) - params['B_eq']*omega
# 负载角加速度
domega = (T_out - gravity_torque(theta)) / J_eq
return [omega, domega, di_a]
# 仿真参数
t_span = (0, 5.0)
t_eval = np.linspace(0, 5.0, 1000)
x0 = [0.0, 0.0, 0.0] # 初始角度0rad,静止
# 阶跃电压输入:0-1s为0V,1s后为12V
def V_input(t):
return 12.0 if t >= 1.0 else 0.0
# 数值积分
sol = solve_ivp(lambda t, x: dynamics(t, x, V_input(t)),
t_span, x0, t_eval=t_eval, method='RK45')
# 提取结果
theta = sol.y[0]
omega = sol.y[1]
i_a = sol.y[2]
time = sol.t
模型验证方法
运行上述代码后,通过以下观测点验证模型正确性:
- 静态平衡验证:将电压设为0,初始角度设为0.2 rad,观察倾转臂应在重力矩作用下回到水平位置(θ→0)并因阻尼而停止;
- 阶跃响应验证:施加12V阶跃电压后,倾转角度应持续增大(电机驱动倾转),电流先上升后随反电动势增大而回落;
- 单位一致性检查:确认\(J_{eq}\)量纲为kg·m²,\(T_{out}\)量纲为N·m,角加速度量纲为rad/s²。
判定标准:若在零输入下倾转角最终稳定在0 rad(误差<0.01 rad),且阶跃输入下角度单调增加、电流曲线无发散振荡,则模型通过验证,可用于后续控制策略仿真。
落地与运行说明
本案例代码为独立Python脚本,依赖numpy和scipy。将代码保存为tilt_dynamics.py后,在Python 3.8+环境中执行python tilt_dynamics.py即可完成仿真。代码运行后变量theta、omega、i_a保存了完整时间序列,可直接用于绘图或作为后续控制律设计的被控对象模型。模型参数集中于params字典,便于后续案例调整参数进行控制策略对比。