为自适应巡航控制软件组件编写函数
此示例展示了如何在 System Composer™ 中设计自适应巡航控制系统:
从构成软件组件和函数的角度捕捉系统架构。
使用自定义属性指定哪些函数对于保持车辆的预期速度至关重要。
使用 Simulink® 实现函数的行为。
自适应巡航控制架构
自适应巡航控制系统 (ACC) 是一种根据道路状况自动调节车辆速度的控制系统。与常规巡航控制类似,驾驶员为车辆设定一个目标速度。此外,自适应巡航控制系统可在前方车道内有其他车辆以更慢速度行驶时,自动减缓车辆速度。
ACC 算法要求车辆了解道路的弯曲度、相对距离以及前车速度。有关 ACC 算法和整个系统的更多信息,请参阅Adaptive Cruise Control with Sensor Fusion (Automated Driving Toolbox)。系统软件从雷达传感器和摄像头中检索检测数据,这些数据由传感器融合组件融合,以实现更准确的检测。检测数据被提供给多目标跟踪器,以确定领先车辆的相对距离和速度。然后,这些状态和车辆的纵向速度被提供给控制器组件,以计算应用于车辆的加速度,以保持安全距离。
编写组件和接口
首先,创建自适应巡航控制软件的架构。要打开一个新的软件架构模型,请使用此命令。
systemcomposer.createModel('ACCSoftwareCompositionScratch', 'SoftwareArchitecture', true);
该系统由一个 SensorFusion 组件、一个 MultiObjectTracking 组件、一个 Controller 组件和一个用于监控的 TrackerLogging 组件组成。

编写组件函数
要指定定义每个组件行为的函数,请打开“函数编辑器”。要打开函数编辑器,在建模选项卡中的设计部分,点击函数编辑器。要创建实现每个组件行为的函数,请选择一个组件,然后使用“添加”按钮。有关使用函数编辑器编写函数的更多信息,请参阅软件架构的函数编写与扩展。
您可以修改内置函数的属性,例如名称、周期或执行顺序。名称和周期属性可以通过编辑表中的相应单元格进行修改。您可以在函数编辑器中通过将函数拖动到所需顺序或选择一个函数并点击向上和向下按钮来指定函数的执行顺序。

向函数添加自定义属性
您可以使用 System Composer 配置文件和构造型应用自定义属性。加载配置文件 ACCSoftwareProfile 并将其导入到合成中。该配置文件包含三个构造型。
FunctionBase是一个构造型,用作所有函数构造型的基准。CriticalFunction构造型适用于对确定输出加速至关重要的函数。NonCriticalFunction构造型适用于对确定输出加速不重要的函数。

通过应用从加载的配置文件中获取的构造型,向函数添加自定义属性。
要打开属性检查器,请选择建模 > 设计 > 属性检查器。
在函数编辑器中,选择
fuse_vision_and_radar。在属性检查器中,选择构造型 > 添加
ACCSoftwareProfile.CriticalFunction以应用构造型。

该构造型指定用于确定输出加速度的函数。在 ACC 软件架构中,除了在 TrackerLogging 组件中定义的函数外,所有函数对确定加速都至关重要。
生成函数代码
自适应巡航控制系统的代码可通过 Embedded Coder® 生成并部署至目标硬件。要生成代码,请执行 slbuild 命令,或按 Ctrl+B 构建模型。
slbuild('ACCSoftwareCompositionScratch');

由于没有组件具有链接行为,因此生成的代码包含软件架构中每个函数的空定义。
实现函数行为
您可以通过创建 Simulink 行为来实现 Simulink 中组件函数的行为。右键点击 SensorFusion 组件,选择 Create Simulink Behavior,或导航至建模 > 组件 > 创建 Simulink 行为。要选择 Simulink 行为的类型,对于类型,请选择 Model Reference: Export-Function 或 Model Reference: Rate-Based。点击确定创建一个链接到 SensorFusion 组件的 SensorFusion 导出函数模型。
有关使用导出函数建模风格的更多信息,请参阅导出函数模型概述。

新模型包含一个输入端口模块,该模块具有一个函数调用输出端口 fuse_vision_and_radar,采样时间为 0.1 秒,如函数编辑器中指定。您可以将输出端口连接到建模该函数行为的函数调用子系统。