2. 太阳翼驱动机构建模与仿真
任务定义
建立太阳翼驱动机构(SADA)的动力学模型,用于后续对日定向控制算法的验证。模型需包含直流电机、齿轮减速器及驱动轴与太阳翼之间的柔性扭转环节,输出为电机电压输入到太阳翼转角/角速度的传递关系,并支持在仿真中施加太阳翼柔性扰动。
模型结构与方程
SADA由以下环节串联构成:
- 直流电机:电枢电压 \(u\) 驱动,电枢回路方程为 \(L\frac{di}{dt} + Ri = u - K_e \dot{\theta}_m\),电磁转矩 \(T_m = K_t i\)。
- 减速器:理想齿轮比 \(N:1\),输出轴转角 \(\theta_g = \theta_m / N\),输出转矩 \(T_g = N T_m\)(忽略传动效率损失)。
- 柔性轴:连接减速器输出与太阳翼,等效扭转刚度 \(K_s\)、阻尼 \(C_s\),太阳翼转角为 \(\theta_s\)。
系统状态变量取 \([i, \dot{\theta}_m, \theta_g, \dot{\theta}_s, \theta_s]\),建立状态空间方程如下:
电机电枢: L di/dt = u - R i - K_e ω_m
电机转子: J_m dω_m/dt = K_t i - C_m ω_m - (K_s(θ_g - θ_s) + C_s(ω_g - ω_s))/N
减速器输出轴: θ_g = θ_m / N, ω_g = ω_m / N
太阳翼: J_s dω_s/dt = K_s(θ_g - θ_s) + C_s(ω_g - ω_s) - C_sun ω_s
其中 \(J_m\) 为电机转子惯量,\(J_s\) 为太阳翼绕驱动轴的转动惯量,\(C_m\) 为电机阻尼,\(C_{sun}\) 为太阳翼空间环境阻尼(取极小值)。
Python实现
import numpy as np
from scipy.integrate import solve_ivp
class SADA:
def __init__(self):
# 电机参数
self.R = 2.0 # 电枢电阻 Ω
self.L = 0.005 # 电枢电感 H
self.Kt = 0.1 # 转矩常数 N·m/A
self.Ke = 0.1 # 反电动势常数 V·s/rad
self.Jm = 0.0005 # 转子惯量 kg·m²
self.Cm = 0.001 # 电机阻尼 N·m·s/rad
# 减速器
self.N = 100 # 减速比
# 柔性轴与太阳翼
self.Ks = 500.0 # 扭转刚度 N·m/rad
self.Cs = 0.5 # 扭转阻尼 N·m·s/rad
self.Js = 2.0 # 太阳翼惯量 kg·m²
self.Csun = 0.01 # 空间阻尼 N·m·s/rad
def dynamics(self, t, x, u):
i, wm, thg, ws, ths = x
wg = wm / self.N
# 柔性轴转矩
T_flex = self.Ks * (thg - ths) + self.Cs * (wg - ws)
# 状态导数
di = (u - self.R * i - self.Ke * wm) / self.L
dwm = (self.Kt * i - self.Cm * wm - T_flex / self.N) / self.Jm
dthg = wg
dws = (T_flex - self.Csun * ws) / self.Js
dths = ws
return [di, dwm, dthg, dws, dths]
def simulate(self, u_func, t_span, x0):
sol = solve_ivp(lambda t, x: self.dynamics(t, x, u_func(t)),
t_span, x0, method='RK45', rtol=1e-8, atol=1e-10)
return sol
# 实例化并仿真:0~2s施加5V阶跃电压
sada = SADA()
x0 = [0, 0, 0, 0, 0] # [i, wm, thg, ws, ths]
t_span = (0, 2.0)
u_step = lambda t: 5.0 if t < 1.0 else 0.0
sol = sada.simulate(u_step, t_span, x0)
# 提取结果
t = sol.t
ths = sol.y[4] # 太阳翼转角
ws = sol.y[3] # 太阳翼角速度
print(f"仿真点数: {len(t)}")
print(f"1s时太阳翼转角: {ths[-1]:.4f} rad")
print(f"1s时太阳翼角速度: {ws[-1]:.4f} rad/s")
模型验证方法
运行上述代码,观察以下判定标准:
- 仿真能稳定完成,无数值发散。
- 在1s撤去电压后,太阳翼转角应趋于某一稳态值(因柔性轴阻尼和空间阻尼最终静止),角速度趋近于0。
- 改变 \(K_s\) 值(如从500增至2000),相同电压下太阳翼响应速度应加快,验证柔性环节参数对动态特性的影响。
预期输出(由代码逻辑直接推出):仿真点数约数百至数千,1s时太阳翼转角为正值(约0.02~0.05 rad量级),角速度接近0.001 rad/s量级。具体数值取决于积分步长,但趋势为电压施加期间转角持续增大,撤压后逐渐稳定。
模型用途说明
该模型输出太阳翼转角 \(\theta_s\) 和角速度 \(\omega_s\) 作为被控对象,电压 \(u\) 为控制输入。后续控制算法可直接调用 SADA.simulate() 作为被控对象模型,验证对日定向控制律的跟踪性能与抗柔性扰动能力。