1. 联合仿真入门
在工程实践中,我们经常遇到这样的场景:一个机械臂需要精确跟踪轨迹,一台无人机需要稳定悬停,一辆电动汽车需要平顺加速。这些系统的共同特点是——它们既有物理本体(机械结构、电机、传动、热流、流体等),又有控制器(PID、状态反馈、MPC等)。如果只仿真控制器而忽略物理对象的真实动态,或者只仿真物理模型而不考虑控制器的离散采样与延迟,结果往往与实际相差甚远。Simulink 的联合仿真正是为了解决这一问题:让物理模型与控制器在同一个仿真环境中协同运行,互相交换信号,逼近真实系统的行为。
什么是联合仿真
联合仿真(Co-Simulation)在 Simulink 语境下,通常指将物理建模工具(如 Simscape、Simscape Multibody、SimDriveline)搭建的物理对象模型,与控制算法模型(如 Simulink 原生模块、Stateflow、MATLAB Function)连接起来,在同一个求解器框架下同步推进。物理模型负责描述质量、刚度、阻尼、摩擦、惯量、电压、电流、压力、流量等物理量的动态关系;控制器则根据传感器反馈计算执行器指令。两者通过信号线交换数据:控制器输出力/力矩/电压,物理模型返回位移/速度/电流等状态。
需要区分的是,Simulink 中的“联合仿真”有时也指 Simulink 与外部软件(如 Adams、AMESim、CarSim)的协同,但本章聚焦于Simulink 内部物理模型与控制器的联合,这是后续所有章节的基础。
工作流程
一个典型的联合仿真流程包含以下关键环节:
- 明确物理对象与接口:确定被控对象的物理域(机械平移、旋转、电气、液压等),以及控制器需要读取的状态量和输出的控制量。
- 搭建物理模型:使用 Simscape 等工具建立质量-弹簧-阻尼、电机、传动等模型,设置真实参数(质量、刚度、阻尼系数、额定电压等)。
- 设计控制器:在 Simulink 中搭建 PID、状态反馈或其他控制算法,确定采样周期、输出限幅、抗积分饱和等细节。
- 连接与求解器配置:将控制器输出接入物理模型执行器端口,物理模型状态输出接入控制器反馈端口;选择合适求解器(如 ode23t、ode15s)和步长。
- 运行与结果分析:观察响应曲线、控制量、误差、执行器饱和等,判断是否满足超调、调节时间、稳态误差等指标。
这个流程不是单向的,通常需要反复迭代:调整控制器参数、修改物理模型参数、甚至重新选择求解器。
典型应用场景
联合仿真广泛应用于:
- 机电伺服系统:电机+减速器+负载+位置/速度控制器。
- 车辆动力学:悬架、制动、驱动系统与整车控制器。
- 机器人关节:刚柔耦合机械臂与关节力矩控制器。
- 航空航天:飞行器气动/结构模型与飞控系统。
- 能源系统:风力发电机传动链与变桨距控制器。
这些场景的共同点是:物理对象具有连续动态,控制器具有离散采样和计算延迟,两者必须同步仿真才能暴露真实问题,如采样延迟导致的相位滞后、执行器饱和引起的积分饱和、物理参数摄动对稳定性的影响。
初体验:质量-弹簧-阻尼系统与PID控制器
下面以一个经典的单自由度质量-弹簧-阻尼系统为例,完成一次完整的联合仿真初体验。系统参数如下(示例假设值):质量 m = 1.0 kg,阻尼系数 c = 0.5 N·s/m,弹簧刚度 k = 2.0 N/m。控制目标:让质量块从初始位置 0 移动到目标位置 1.0 m,并保持稳定。
物理模型方程:m·ẍ + c·ẋ + k·x = F(t),其中 F 为控制器输出的驱动力。控制器采用 PID,误差 e = xref − x,输出 F = Kp·e + Ki·∫e dt + Kd·de/dt。初始参数可设为 Kp = 20,Ki = 5,Kd = 2,采样周期 Ts = 0.01 s。
在 Simulink 中,物理模型可用 Simscape 的 Mass、Translational Spring、Translational Damper 模块搭建,控制器用 PID Controller 模块,两者通过力信号和位置信号连接。求解器建议选用 ode23t 或 ode15s,因为 Simscape 模型通常包含刚性方程。运行仿真后,观察位置响应曲线:如果超调过大,增大 Kd 或减小 Kp;如果稳态误差不为零,增大 Ki;如果响应太慢,增大 Kp。同时注意控制力是否超过合理范围(例如 ±50 N),若饱和则需调整参数或增加抗饱和逻辑。
联合仿真信号流与数据交换
为了更直观地理解联合仿真的数据流,下面用一张 SVG 图展示质量-弹簧-阻尼系统与 PID 控制器的信号连接关系、物理量传递方向以及关键参数。
上图展示了联合仿真的核心结构:PID 控制器接收参考输入 xref 和物理模型反馈的位置 x,计算误差 e,输出控制力 F;物理模型根据 F 和自身参数(m、c、k)计算新的位置和速度,再反馈给控制器。求解器负责同步推进两个部分的仿真时间,确保数据交换的时序正确。结果观察环节则用于评估控制性能。
关键注意事项
在联合仿真中,有几个容易出错的点需要特别注意:
- 求解器选择:Simscape 物理模型通常包含刚性方程,建议使用 ode23t 或 ode15s,避免使用 ode45 导致仿真极慢或失败。
- 采样周期与步长:控制器采样周期 Ts 应小于物理模型最快动态的时间常数,通常取 1/10 到 1/20。本例中系统自然频率约 1.4 rad/s,Ts = 0.01 s 足够。
- 单位一致性:Simscape 模块默认使用 SI 单位,务必检查所有参数单位统一,避免出现 1000 倍量级错误。
- 初始条件:物理模型的初始位置、速度应与控制器初始状态匹配,否则仿真开始瞬间会出现冲击。
- 代数环:如果控制器输出直接依赖物理模型输出且无延迟,可能形成代数环,需加入单位延迟或使用 Simscape 的求解器配置解决。