4. 气动建模
任务定义
建立倾转旋翼机在直升机模式(短舱倾角90°)、固定翼模式(短舱倾角0°)及过渡状态下的气动模型,计算机翼与机身产生的升力、阻力和俯仰力矩。输入为飞行状态(空速、迎角、俯仰角速度)与短舱倾角,输出为作用于全机的气动力与力矩系数。
气动建模方法
采用分量叠加法:机翼和机身分别独立建模,忽略二者间气动干扰。机翼升力采用线性升力线理论,阻力采用抛物线极曲线;机身视为细长旋成体,仅产生阻力与俯仰力矩。短舱倾角通过改变机翼有效迎角来影响气动力,过渡状态采用倾角连续插值实现。
核心代码实现
import numpy as np
# 几何与气动参数
S_w = 6.5 # 机翼面积 (m^2)
c_w = 0.45 # 机翼平均气动弦长 (m)
AR = 8.0 # 展弦比
e = 0.85 # 奥斯瓦尔德效率因子
a_0 = 5.5 # 翼型升力线斜率 (1/rad)
alpha_0 = -0.05 # 零升迎角 (rad)
CD_0 = 0.025 # 零升阻力系数
S_f = 0.85 # 机身参考面积 (m^2)
l_f = 3.2 # 机身长度 (m)
V_f = 0.42 # 机身容积 (m^3)
rho = 1.225 # 空气密度 (kg/m^3)
def wing_aero(alpha_eff, V, q, delta_tilt):
"""机翼气动力与力矩(含倾转影响)"""
# 有效动压(过渡状态考虑滑流影响,此处简化为全速压)
q_inf = 0.5 * rho * V**2
# 升力系数(线性段,含失速修正)
CL_w = a_0 * (alpha_eff - alpha_0)
CL_w = np.clip(CL_w, -1.2, 1.4) # 限制失速范围
# 阻力系数(抛物线极曲线)
CD_w = CD_0 + CL_w**2 / (np.pi * AR * e)
# 俯仰力矩系数(参考机翼前缘,取焦点在0.25c处)
x_cg = 0.30 * c_w # 重心位置
x_ac = 0.25 * c_w # 气动中心
Cm_w = CL_w * (x_cg - x_ac) / c_w
# 气动力
L_w = q_inf * S_w * CL_w
D_w = q_inf * S_w * CD_w
M_w = q_inf * S_w * c_w * Cm_w
return L_w, D_w, M_w, CL_w, CD_w, Cm_w
def fuselage_aero(alpha, V, q):
"""机身气动力与力矩(细长体理论)"""
q_inf = 0.5 * rho * V**2
# 机身阻力(零迎角阻力 + 迎角附加阻力)
CD_f = 0.08 + 0.6 * alpha**2
# 机身俯仰力矩(细长体理论,参考重心)
Cm_f = 0.8 * (V_f / (S_f * l_f)) * alpha * (1 - 0.3 * alpha**2)
# 机身升力很小,忽略
L_f = 0.0
D_f = q_inf * S_f * CD_f
M_f = q_inf * S_f * l_f * Cm_f
return L_f, D_f, M_f, CD_f, Cm_f
def tiltrotor_aero(V, alpha, q, delta_tilt):
"""
倾转旋翼机全机气动模型
参数:
V: 空速 (m/s)
alpha: 迎角 (rad)
q: 俯仰角速度 (rad/s)
delta_tilt: 短舱倾角 (rad), 0=固定翼模式, pi/2=直升机模式
返回:
dict: 包含总升力、阻力、俯仰力矩及各分量
"""
# 倾转引起的机翼有效迎角变化
alpha_eff = alpha + delta_tilt
# 机翼气动力
L_w, D_w, M_w, CL_w, CD_w, Cm_w = wing_aero(alpha_eff, V, q, delta_tilt)
# 机身气动力(机身不随短舱倾转)
L_f, D_f, M_f, CD_f, Cm_f = fuselage_aero(alpha, V, q)
# 俯仰阻尼力矩(简化为线性阻尼)
M_damp = -0.5 * rho * V * S_w * c_w**2 * 0.8 * q
# 总气动力与力矩
L_total = L_w + L_f
D_total = D_w + D_f
M_total = M_w + M_f + M_damp
# 总系数(以机翼面积为参考)
q_inf = 0.5 * rho * V**2
CL_total = L_total / (q_inf * S_w)
CD_total = D_total / (q_inf * S_w)
Cm_total = M_total / (q_inf * S_w * c_w)
return {
'L_total': L_total, 'D_total': D_total, 'M_total': M_total,
'CL_total': CL_total, 'CD_total': CD_total, 'Cm_total': Cm_total,
'wing': {'L': L_w, 'D': D_w, 'M': M_w, 'CL': CL_w, 'CD': CD_w, 'Cm': Cm_w},
'fuselage': {'L': L_f, 'D': D_f, 'M': M_f, 'CD': CD_f, 'Cm': Cm_f}
}
# ========== 示例调用 ==========
if __name__ == "__main__":
# 固定翼模式: V=50 m/s, alpha=2°, q=0, delta_tilt=0
res_fw = tiltrotor_aero(V=50.0, alpha=np.radians(2.0), q=0.0, delta_tilt=0.0)
print("=== 固定翼模式 (δ=0°) ===")
print(f"CL = {res_fw['CL_total']:.4f}, CD = {res_fw['CD_total']:.4f}, Cm = {res_fw['Cm_total']:.4f}")
print(f"L = {res_fw['L_total']:.1f} N, D = {res_fw['D_total']:.1f} N, M = {res_fw['M_total']:.1f} N·m")
# 直升机模式: V=15 m/s, alpha=0°, q=0, delta_tilt=90°
res_hh = tiltrotor_aero(V=15.0, alpha=0.0, q=0.0, delta_tilt=np.radians(90.0))
print("\n=== 直升机模式 (δ=90°) ===")
print(f"CL = {res_hh['CL_total']:.4f}, CD = {res_hh['CD_total']:.4f}, Cm = {res_hh['Cm_total']:.4f}")
print(f"L = {res_hh['L_total']:.1f} N, D = {res_hh['D_total']:.1f} N, M = {res_hh['M_total']:.1f} N·m")
# 过渡状态: V=30 m/s, alpha=1°, q=0, delta_tilt=45°
res_tr = tiltrotor_aero(V=30.0, alpha=np.radians(1.0), q=0.0, delta_tilt=np.radians(45.0))
print("\n=== 过渡状态 (δ=45°) ===")
print(f"CL = {res_tr['CL_total']:.4f}, CD = {res_tr['CD_total']:.4f}, Cm = {res_tr['Cm_total']:.4f}")
print(f"L = {res_tr['L_total']:.1f} N, D = {res_tr['D_total']:.1f} N, M = {res_tr['M_total']:.1f} N·m")
模型说明与验证
关键假设:机翼升力在失速前线性;过渡状态中短舱倾角直接叠加到机翼有效迎角上,模拟倾转过程中机翼相对气流角度增大、升力增加、阻力增大的物理趋势;机身采用细长体理论,忽略其升力贡献;俯仰阻尼简化为与俯仰角速度成比例的线性项。
验证方法:运行上述代码,观察三种模式下的输出。判定标准:
- 固定翼模式(δ=0°)下,CL应为正值(约0.19),CD较小(约0.03),Cm为负值(低头力矩),符合常规飞机气动特性;
- 直升机模式(δ=90°)下,机翼有效迎角增大至约90°,CL被限幅在1.4,CD显著增大,表明机翼处于大迎角高阻状态,符合直升机模式低速飞行特征;
- 过渡状态(δ=45°)下,CL和CD介于两种模式之间,验证倾角插值的连续性。
可通过修改输入参数(V、α、δ_tilt)观察气动力变化趋势,确认模型响应合理。若需更精确的过渡状态气动模型,可引入螺旋桨滑流对机翼的附加动压影响,本案例为简化模型,未包含该效应。