1 参考资料(References)
本文档引用的关键文档包括 AUTOSAR 元模型规范、SW-C 模板、标准化模板等。
2 范围(Scope)
本文档为 AUTOSAR 软件组件(SW-C)和系统(System)的建模提供指南,涵盖:
- 建模规则;
- 命名约定;
- 模型元素的重用;
- 模型层与实现层的映射;
- 关键字的使用;
- 各种模型元素的命名细节。
3 如何阅读本文档(How to read this document)
3.1 约定(Conventions used)
本文档中的规则以编号列表形式呈现,每条规则说明特定的建模要求。
3.2 缩略语与缩写(Acronyms and Abbreviations)
| 缩略语 | 说明 |
|---|---|
| SW-C | Software Component(软件组件) |
| RTE | Runtime Environment(运行时环境) |
| ECU | Electronic Control Unit(电子控制单元) |
| AR | AUTOSAR |
| CompuMethod | Computation Method(计算方法) |
4 需求追溯(Requirements traceability)
本文档的建模规则与 AUTOSAR_RS_Features 和 AUTOSAR_RS_SWCModeling 中的需求追溯关系见原文 11–13 页。
5 建模规则(Modeling Rules)
5.1 模型元素的重用(Reuse of model element)
5.1.1 一个接口用于多个端口(Reuse of one interface for multiple ports)
同一个 SenderReceiverInterface 可被多个 PortPrototype 使用,前提是这些端口属于同一个 SW-C 类型或相关的 SW-C 类型。这避免了重复定义相同的接口。
5.1.2 一个数据类型用于多个接口(Reuse of one data type for multiple interfaces)
同一个 ApplicationDataType 可被多个接口使用,例如同一物理量(如 EngineSpeed)在不同 SW-C 间传递时使用相同的数据类型。
5.2 使用多个 ComponentPrototype
当需要多实例化一个 SW-C 类型时,可定义多个 SwComponentPrototype。每个原型应当具有唯一的名称,例如:
ABS_FrontLeft、ABS_FrontRight、ABS_RearLeft、ABS_RearRight。
5.3 集群化(Clustering)
通过集群化(Clustering)将相关的 SW-C 组合在一起,以简化系统结构。
5.3.1 通过 Sender-Receiver 接口的集群化
集群内的 SW-C 通过统一的 SenderReceiverInterface 进行通信。
5.4 未来可扩展性(Future extensibility)
建模应当考虑未来扩展,例如:
- 使用通用接口(Generic Interface);
- 提供可选端口;
- 使用蓝图(Blueprint)模式。
6 AUTOSAR 模型元素的命名约定(Naming Convention for AUTOSAR Model Elements)
6.1 长名称的通用规则(General Rules for Long Names)
长名称(Long Names)应当:
- 使用英语;
- 描述元素的用途;
- 可包含空格;
- 长度无硬性限制(但应合理);
- 用于文档、显示等场景。
6.2 短名称的通用规则(General Rules for Short Names)
短名称(Short Names)应当:
- 使用 ASCII 字符;
- 不包含空格;
- 遵循 CamelCase 风格;
- 长度限制为 128 字符(参见
RS_SWMG_00014); - 用于代码生成、引用等场景。
6.3 模型层与实现层的关系(Relation between Model Level and the Implementation Level)
6.3.1 长度限制(Length Restrictions)
RTE 生成的代码中名称长度受 C 语言标识符限制(通常 31 字符,部分编译器支持 63 字符)。AUTOSAR 模型名称应当在转换后满足 C 标识符限制。
6.3.2 数据类型(Data Types)
模型层的数据类型应当映射到 RTE/BSW 可识别的 C 数据类型。
6.3.3 RTE 名称映射规则(RTE rules of name mapping)
RTE 将 AUTOSAR 模型中的名称映射为 C 标识符。映射规则包括:
- 前缀添加:例如
Rte_Call_<Port>_<Operation>(); - 大小写处理:RTE 可能将名称转换为大写或小写;
- 特殊字符处理:下划线保留,空格替换为下划线。
6.3.4 组件与端口(Components and Ports)
SW-C 与端口的命名应当满足:
- 唯一性;
- 语义清晰;
- 代码可生成。
6.3.5 Sender-Receiver 接口与数据元素(Sender-Receiver Interfaces and Data Elements)
Sender-Receiver 接口与数据元素的命名应当:
- 使用有意义的物理量名称;
- 避免过长的名称;
- 保持跨 SW-C 一致性。
6.3.6 Client-Server 接口、操作与参数(Client-Server Interfaces, Operations, and Arguments)
Client-Server 接口的命名应当:
- 操作名使用动词形式(如
SetSpeed、GetTemperature); - 参数名使用名词形式;
- 返回值通过 out 参数表达。
6.4 关键字的使用(Usage of Keywords)
6.4.1 关键字组合语义规则(Keyword Composition Semantic Rules)
关键字(Keyword)通过特定规则组合成名称:
- 数量限定符(Quantity Qualifier):
NoOf、NumOf; - 单位(Unit):
Nm、Rpm、DegC; - 物理量(Physical Quantity):
EngN、VehSpd; - 数据类型后缀:
_T(如uint8_T)。
6.5 模型元素(Model Elements)
6.5.1 ARPackage (AR-PACKAGE)
ARPackage 是 AUTOSAR 中组织模型元素的包。命名规则:
- 使用大写字母;
- 使用下划线分隔单词;
- 具有语义(如
AUTOSAR_Platform、AUTOSAR_BswModule)。
6.5.2 SenderReceiverInterface (SENDER-RECEIVER-INTERFACE)
Sender-Receiver 接口命名应当:
- 以物理量或信息名命名;
- 使用 PascalCase(如
EngineSpeed_I)。
6.5.3 VariableDataPrototype (VARIABLE-DATA-PROTOTYPE)
变量数据原型命名应当:
- 表示其含义(如
RpmMeas表示测量的 RPM); - 包含单位(如
EngN_RpmMeas); - 使用 CamelCase。
6.5.4 ApplicationDataType
应用数据类型命名应当:
- 对于原始类型:以
_T结尾(如uint8_T); - 对于记录类型:以物理量名命名(如
EngineData_T); - 对于数组类型:以元素类型名 +
_Array结尾。
6.5.5 CompuMethod (COMPU-METHOD)
计算方法命名应当:
- 表示从原始值到物理值的转换;
- 对于线性转换:
<物理量>_Linear; - 对于非线性转换:
<物理量>_NonLinear; - 对于标识转换:
<物理量>_Identical。
6.5.6 SwComponentType (COMPOSITION-SW-COMPONENT-TYPE)
SW-C 类型命名应当:
- 使用有意义的名称(如
EngineManagement); - 组合类型以
Composition结尾(如VehicleComposition); - 原子类型无特定后缀。
6.5.7 System (SYSTEM)
系统(System)是 ECU 集合的根,命名应当使用项目特定的名称(如 VehicleSystem)。
6.5.8 SwComponentPrototype (SW-COMPONENT-PROTOTYPE)
SW-C 原型(实例)命名应当:
- 唯一性(即使在同一 Composition 内);
- 语义清晰;
- 对于多实例化,包含区分后缀(如
_Left、_Right)。
6.5.9 PortPrototype (P-PORT-PROTOTYPE, R-PORT-PROTOTYPE)
端口原型命名应当:
- 表示其用途(如
VehicleSpeed、ThrottlePosition); - 在同一 SW-C 内唯一;
- 使用 CamelCase。
6.5.10 Units (UNIT)
单位(Unit)命名应当:
- 使用 SI 标准缩写(如
m、s、kg); - 对于复合单位,使用乘积或除法表示(如
m/s、km/h); - 显示名称可使用 Unicode(如
°C)。
6.5.11 物理维度(Physical Dimensions)
物理维度(如长度、时间、质量)通过 PhysicalDimension 表示,使用 7 个基本维度的指数表示(如 m/s^2)。
6.5.12 枚举(Enumerations)
枚举数据类型命名应当:
- 使用领域术语(如
VehicleMode、GearPosition); - 字面量使用全大写加下划线;
- 每个枚举应当有明确的基本类型(
uint8等)。
6.5.13 ClientServerInterface (CLIENT-SERVER-INTERFACE)
Client-Server 接口命名应当:
- 使用服务名(如
DiagnosticService_I); - 操作使用动词短语;
- 接口名以
_I结尾(可选)。
6.5.14 ParameterInterface (PARAMETER-INTERFACE)
参数接口命名应当:
- 表示参数集合(如
EngineCalibrationParams_I); - 每个参数为单独的
ParameterDataPrototype。
6.5.15 ParameterDataPrototype (PARAMETER-DATA-PROTOTYPE)
参数数据原型命名应当:
- 表示标定参数(如
MaxTorqueLimit); - 使用 CamelCase;
- 可包含单位信息。