1 介绍(Introduction)
本文档是 AUTOSAR应用接口(Application Interfaces)的一部分,描述了可在 AUTOSAR 项目中使用的应用设计模式。这些模式描述了处理常见汽车应用问题的可重用解决方案,例如传感器读取、设定值仲裁、信号转发等。
1.1 文档约定(Document conventions)
本文档遵循"四人帮"(Gang of Four,GoF)模式描述格式:
- 问题(Problem):描述要解决的问题;
- 适用性(Applicability):描述何时应用此模式;
- 解决方案(Solution):详细描述模式结构;
- 命名(Naming):约定使用的端口/数据类型名称;
- 示例(Example):具体的应用场景;
- 已知用法(Known Uses):业界已知的应用;
- 相关模式(Related Patterns):与其他模式的关系。
1.2 需求追溯(Requirements Tracing)
本文档不包含独立的需求,但每种模式都隐含了对应用接口建模的需求。
2 关于模式(About Patterns)
2.1 模式类型(Types of Pattern)
本文档涵盖两类模式:
- 架构模式(Architectural Patterns):描述系统结构;
- 设计模式(Design Patterns):描述特定问题的解决方案。
2.2 模式描述(Describing Patterns)
每个模式使用统一的描述模板,包括:
- 模式名称和目标;
- 使用场景;
- 解决方案(UML 图 + 端口/数据类型定义);
- 实施注意事项。
3 传感器与执行器模式(Sensor and Actuator Pattern)
3.1 问题(Problem)
汽车 ECU 需要与各种传感器和执行器交互。这些传感器/执行器通常由硬件抽象层处理,但应用软件需要一致的方式来:
- 读取物理量(如温度、压力);
- 控制执行器(如电机、阀门);
- 处理故障和诊断。
3.2 又称(Also Known As)
此模式也称为"传感器/执行器抽象模式"或"硬件抽象模式"。
3.3 适用性(Applicability)
适用于所有需要访问物理量或控制物理设备的 SW-C。
3.4 解决方案(Solution)
传感器与执行器模式定义了一组标准端口接口,用于 SW-C 与物理设备交互:
图:传感器/执行器模式结构应用 SW-C │ │ (通过标准化端口) ▼ [传感器/执行器 SW-C] │ ▼ 硬件抽象层 → 硬件
关键设计要点:
- 提供方(Provider):传感器 SW-C 提供物理量的值;
- 消费方(Consumer):应用 SW-C 消费传感器值;
- 控制接口:执行器 SW-C 提供执行器控制接口;
- 错误接口:可选地提供错误状态接口。
3.5 命名(Naming)
标准化的端口与数据类型命名约定:
- 提供物理量的 SW-C 名称:
<PhysicalQuantity>_Provider; - 消费物理量的 SW-C 名称:
<PhysicalQuantity>_Consumer; - 数据类型:
<PhysicalQuantity>_T(如EngineSpeed_T); - 单位属性:
<PhysicalQuantity>_Unit(如rpm、kPa)。
3.6 示例(Example)
3.6.1 节气门(Throttle Valve)
典型电控节气门系统:
- 输入:加速踏板位置;
- 控制逻辑:发动机控制 SW-C;
- 输出:节气门开度;
- 反馈:节气门实际位置传感器。
3.6.2 涡轮增压器(Turbo Charger)
单级涡轮增压控制:
- 输入:发动机转速、增压压力;
- 输出:涡轮增压器控制信号(占空比);
- 约束:最大增压压力限制。
3.6.3 多级/多组涡轮增压器(Turbo Charger with Stages and Banks)
高级涡轮增压系统,包含多个涡轮和级数。
3.6.4 无反馈环执行器(Actuator without Feedback Loop)
开环控制(如简单加热元件)。
3.6.5 标准传感器(Standard Sensor)
典型物理量传感器:
- 模拟传感器:连续值;
- 数字传感器:离散值;
- 智能传感器:内置信号处理。
3.6.6 环境温度标准传感器(Standard Sensor for Environment Temperature)
环境温度测量:
- 传感器位置:多个候选位置;
- 数据选择:取中值或平均值;
- 故障处理:坏值过滤。
3.6.7 分发设备抽象(Distributing Device Abstraction)
将单个物理设备的访问分发到多个软件客户端。
3.7 示例代码与模型(Sample Code and Model)
本节提供示例 AUTOSAR XML 模型片段和 C 代码,演示传感器/执行器模式的应用。
3.8 已知用法(Known Uses)
该模式已在多家 OEM 的发动机控制、变速箱控制、车身控制系统中应用。
3.9 相关模式(Related Patterns)
与以下模式相关:
- 仲裁模式(见第 4 章);
- 分发设备抽象模式。
3.10 应注意的反模式(Anti-Patterns One Should be Aware of)
常见反模式:
- 绕过硬件抽象层直接访问硬件;
- 在多个 SW-C 中重复物理量处理逻辑;
- 忽略单位转换;
- 缺乏故障检测机制。
3.11 进一步阅读(Further Readings)
- AUTOSAR 应用接口用户指南(
AUTOSAR_EXP_AIUserGuide); - AUTOSAR 测量、标定与诊断文档(
AUTOSAR_TR_AIMeasurementCalibrationDiagnostics)。
4 多个请求者或提供者之间的仲裁(Arbitration between several requesters or providers)
4.1 问题(Problem)
当多个请求者对同一执行器发出不同设定值请求,或多个提供者提供不同估计值时,需要确定采用哪一个值。
典型场景:
- 多个 SW-C 请求不同的发动机扭矩(自适应巡航、牵引力控制);
- 多个传感器提供同一物理量的估计值(如多个温度传感器)。
4.2 适用性(Applicability)
适用于任何需要协调多个请求者或多个提供者的场景。
4.3 解决方案(Solution)
引入仲裁器 SW-C(Arbitrator SW-C),作为所有请求者和执行器之间的中介:
图:仲裁模式结构
多个 Requester SW-C
│ (Request)
▼
[Arbitrator SW-C]
│ (Consolidated Request)
▼
Actuator SW-C
或
多个 Provider SW-C
│ (Estimate)
▼
[Arbitrator SW-C]
│ (Consolidated Estimate)
▼
Consumer SW-C
仲裁策略包括:
- 最小值(Min):取所有请求中的最小值(保守策略);
- 最大值(Max):取所有请求中的最大值;
- 优先级(Priority):基于优先级的抢占;
- 平均值(Average):取所有值的算术平均;
- 中值(Median):取所有值的中值;
- 加权平均(Weighted Average):基于权重的加权平均。
4.4 示例(Example)
4.4.1 多个设定值请求者(Several Setpoint Requesters)
多个功能请求不同的发动机扭矩:
- 自适应巡航控制(ACC):请求基于前车距离的扭矩;
- 牵引力控制(TC):请求基于车轮打滑的扭矩限制;
- 驾驶员加速请求:基于踏板位置的扭矩。
仲裁器根据优先级(通常 ACC > TC > Driver)和最小值策略输出最终扭矩请求。
4.4.2 多个合并值的提供者(Several Providers of Consolidated Values)
多个子系统提供车辆状态信息:
- ESC(电子稳定控制)提供车辆横摆角速度;
- ADAS(高级驾驶辅助)提供预测的横摆角速度;
- 传感器融合提供校准的横摆角速度。
仲裁器选择最可靠的值。
4.4.3 多个估计值的提供者(Several Providers of Estimated Values)
多个算法估计同一物理量:
- 不同滤波算法估计车速;
- 基于 GPS 的车速估计;
- 基于轮速的车速估计。
仲裁器选择最可信的估计。
4.5 示例代码与模型(Sample Code and Model)
本节提供仲裁器的示例 XML 模型与 C 代码。
4.6 已知用法(Known Uses)
该模式已在多家 OEM 的扭矩管理、车辆状态估计等系统中应用。
4.7 相关模式(Related Patterns)
与传感器/执行器模式(见第 3 章)配合使用。
A 变更历史(Change History)
A.1 AUTOSAR R4.3.0 变更历史
- 添加约束;
- 变更约束;
- 删除约束;
- 添加规范项;
- 变更规范项;
- 删除规范项。
具体内容详见原文第 41 页。
A.2 AUTOSAR R4.2.2 变更历史
包括:通用化仲裁模式(三个示例:多个设定值请求者、多个估计值提供者、多个合并值提供者)、对信号定义的重新考量、为智能执行器和无反馈环执行器定制模式等。
A.3 AUTOSAR R4.2.1 变更历史
首次发布本文档。涵盖的模式:
- 传感器与执行器模式;
- 多个设定值请求者仲裁模式。
B 引用类表(Mentioned Class Tables)
附录提供了本模式使用的元模型类的定义,包括 ApplicationDataType、SenderReceiverInterface、ClientServerInterface 等。具体详见原文第 43 页。