3. Simulink基础
在PreScan与Simulink联合仿真工程中,PreScan负责场景构建、传感器建模与车辆动力学接口,而Simulink承担控制算法、信号处理与仿真调度的核心角色。理解Simulink的建模环境、模块库组织、信号处理机制、子系统封装以及模型配置方法,是打通联合仿真链路的基础。本节将围绕这五个方面展开,帮助读者建立清晰的建模认知。
一、Simulink建模环境与求解器机制
Simulink采用图形化框图建模方式,模型由模块、信号线和求解器配置三要素构成。打开Simulink后,核心操作区域包括:模型画布、库浏览器(Library Browser)、模型资源管理器(Model Explorer)和配置参数对话框。模型画布用于拖放模块与连线;库浏览器提供分类模块检索;模型资源管理器用于查看和批量修改模型中的变量、信号与参数对象。
求解器决定仿真推进方式。定步长求解器(如ode4、ode8)适合与PreScan联合仿真,因为PreScan通常要求固定通信步长;变步长求解器(如ode45)适合纯Simulink离线验证。联合仿真时,建议将求解器类型设为Fixed-step,步长与PreScan仿真步长保持一致,例如0.001s或0.01s,避免因步长不匹配导致数据交换错位。
联合仿真求解器配置建议:
Solver: Fixed-step
Solver details: ode4 (Runge-Kutta)
Fixed-step size: 0.001 s
Simulation time: 与PreScan场景时长一致
二、常用模块库与PreScan联合仿真模块
Simulink模块库按功能划分为连续、离散、数学运算、信号路由、信号源、接收器、子系统等类别。在PreScan联合仿真中,最常用的模块包括:
- Sources:Constant、Signal Generator、From Workspace,用于生成测试激励或读取PreScan输出。
- Sinks:Scope、To Workspace、Display,用于观测和记录仿真结果。
- Math Operations:Gain、Sum、Product、Saturation,用于控制律计算与限幅。
- Signal Routing:Mux、Demux、Bus Creator、Bus Selector,用于信号打包与拆分。
- Discrete:Unit Delay、Zero-Order Hold,用于离散控制与采样保持。
- PreScan专用模块:PreScan Scenario、PreScan Sensor、PreScan Actor等,通过S-Function与PreScan仿真内核通信。
需要特别注意的是,PreScan模块通常以S-Function形式封装,其输入输出端口数量与场景中配置的传感器、执行器数量直接相关。修改PreScan场景后,必须重新生成Simulink接口模型,否则会出现端口不匹配错误。
三、信号处理:数据类型、总线与采样
Simulink信号具有数据类型、维度、采样时间和复杂度四个属性。联合仿真中常见的数据类型包括double、single、int32、boolean。PreScan输出的传感器信号通常为double或single,而控制算法内部可能使用boolean进行逻辑判断。若类型不匹配,Simulink会报错或自动插入转换模块,影响仿真效率。
总线(Bus)是组织多路信号的有效手段。当PreScan输出包含多个目标信息(如距离、速度、角度)时,使用Bus Creator将信号打包为总线,再通过Bus Selector在控制算法中按需提取,可以显著减少连线复杂度。总线信号还可以保存为Bus Object,便于在多个模型间复用。
信号处理建议:在PreScan输出与Simulink控制算法之间插入Signal Specification模块,显式声明数据类型、维度和采样时间,避免隐式转换带来的性能损耗和调试困难。
四、子系统与模型封装
子系统(Subsystem)用于将功能相关的模块组织为层级结构,提升模型可读性和复用性。Simulink提供两种创建方式:手动框选模块后创建子系统,或使用Subsystem模块预先定义接口。对于联合仿真工程,建议按功能划分子系统,例如:
- 传感器接口子系统:接收PreScan传感器输出,进行坐标变换和滤波。
- 决策控制子系统:实现纵向/横向控制算法。
- 执行器接口子系统:将控制量转换为PreScan车辆动力学输入。
- 数据记录子系统:将关键信号输出到Workspace或文件。
进一步可使用Mask(封装)为子系统定义参数对话框,将增益、阈值等参数暴露给用户,避免直接修改内部模块。封装后的子系统在联合仿真中尤其有用,因为不同场景可能需要调整控制参数,而封装接口可以保持模型结构不变。
五、模型配置与联合仿真参数
模型配置参数(Configuration Parameters)是联合仿真成功的关键。除求解器设置外,还需关注以下配置项:
| 配置项 | 推荐设置 | 说明 |
|---|---|---|
| Solver Type | Fixed-step | 与PreScan步长同步 |
| Fixed-step size | 0.001 s | 根据场景精度调整 |
| Stop time | 与场景时长一致 | 避免提前终止 |
| Data Import/Export | 勾选Time、States、Outputs | 便于结果分析 |
| Code Generation | 按需配置 | 联合仿真通常不需要 |
| Diagnostics | 将类型不匹配设为Error | 提前发现接口问题 |
此外,PreScan联合仿真通常通过MATLAB的PreScan启动脚本自动加载Simulink模型。此时需要确保模型路径已添加到MATLAB搜索路径,且模型配置中的“Simulation target”与PreScan编译选项一致。若使用PreScan的“Compile”功能,Simulink模型会被编译为可执行文件,此时需检查编译器配置是否正确。
常见误区:许多初学者在联合仿真时直接使用默认变步长求解器,导致PreScan与Simulink数据交换频率不一致,出现信号延迟或仿真崩溃。务必在首次联合仿真前检查求解器类型和步长设置。
六、联合仿真信号链示意
下图展示了PreScan与Simulink联合仿真中的典型信号链:PreScan场景输出传感器数据,经Simulink接口模块进入控制算法,控制量再返回PreScan车辆动力学模型,形成闭环。
该信号链体现了联合仿真的核心逻辑:PreScan提供环境与车辆状态,Simulink完成感知信号处理与控制决策,执行量返回PreScan驱动车辆运动,形成闭环。理解这一链路后,读者可以更有针对性地配置模块库、组织子系统并设置求解器参数,从而构建稳定高效的联合仿真工程。