一、什么是 COVESA VSS?
COVESA VSS(Vehicle Signal Specification,车辆信号规范)是由COVESA(Connected Vehicle Systems Alliance,互联车辆系统联盟,原 GENIVI 联盟)制定的一套开源、标准化、面向车辆的数据模型规范。它旨在为车辆中所有的信号、属性、传感器和执行器状态提供一套统一、语义清晰、与硬件无关的描述方式。
https://covesa.global/wp-content/uploads/2024/09/COVESA-Vehicle-Signal-Specification-Enabling-Ecosystems_20240105-cn.pdf
COVESA 是一个由汽车制造商、供应商和技术公司组成的全球性联盟,致力于推动车载软件和互联汽车技术的标准化
二、VSS 的核心设计思想
1. 树形命名空间(Tree-like Namespace)
VSS 将所有车辆信号组织成一颗树形结构,采用类似文件系统的路径方式来唯一标识每个信号。例如:
Vehicle.Cabin.Door.Row1.DriverSide.IsOpen Vehicle.Powertrain.CombustionEngine.EngineSpeed Vehicle.ADAS.CruiseControl.SpeedSet这种结构的优势在于:
直观易读:通过路径名即可理解信号的语义和所属领域。
层次分明:按功能域(车身、动力、座舱、ADAS 等)自然划分。
可扩展:允许在标准分支下添加自定义子节点。
2. 与硬件解耦的抽象层
VSS 定义的是逻辑信号而非物理信号。例如:
不关心“CAN 总线 ID 0x123 的第 2 位”这样的底层细节。
只关心“驾驶员侧车门是否打开”这个功能语义。
这种抽象使得上层应用开发者无需了解底层总线协议(CAN、LIN、FlexRay、Ethernet 等)和硬件布局,极大降低了开发复杂度。
3. 自带元数据(Rich Metadata)
每个 VSS 信号都附带丰富的元数据定义,包括:
| 元数据属性 | 说明 | 示例 |
|---|---|---|
| 数据类型 | 信号值的数据类型 | boolean、float、int32、string |
| 单位 | 物理单位 | km/h、°C、Pa、% |
| 描述 | 语义说明 | "发动机转速,单位为转/分钟" |
| 最小值/最大值 | 有效范围 | 0~8000 |
| 允许值 | 枚举值列表 | ["Off", "On", "AUTO"] |
| 节点类型 | 分支或叶子节点 | branch、sensor、actuator、attribute |
| 目标数据类型 | 针对传感器的原始数据类型 | UINT8、SINT16等 |
三、VSS 标准库与扩展机制
标准库(covesa_vss_standard)
COVESA 官方维护了一套核心 VSS 标准库,覆盖了绝大多数常见车辆信号,包括:
Vehicle.Cabin:座舱相关(车门、车窗、座椅、空调、灯光等)
Vehicle.Powertrain:动力总成(发动机、电池、电机、变速箱等)
Vehicle.ADAS:高级驾驶辅助(巡航控制、碰撞预警、车道保持等)
Vehicle.Connectivity:网络连接(Wi-Fi、蓝牙、蜂窝信号等)
Vehicle.OBD:车载诊断相关
Vehicle.Chassis:底盘(刹车、转向、悬架等)
自定义扩展(Customer/Project Specific)
汽车厂商或项目方可以在标准库基础上添加自定义分支,满足特定需求。例如:
Vehicle.Customer.XYZ.Battery.ThermalManagementState Vehicle.Customer.XYZ.Interior.AmbientLightColor
这种“标准继承 + 自定义覆盖”的机制,既保证了跨平台的通用性,又保留了差异化定制的灵活性。
四、VSS 的载体格式
VSS 规范通常以.vspec文件(VSS Specification 的缩写)的形式存储,这是一种人类可读的文本格式。示例如下:
# VSS 信号定义示例 Vehicle.Cabin.Door.Row1.DriverSide.IsOpen: datatype: boolean type: sensor description: "驾驶员侧车门是否打开,true=打开,false=关闭" Vehicle.Powertrain.CombustionEngine.EngineSpeed: datatype: float unit: rpm min: 0 max: 8000 type: sensor description: "当前发动机转速" Vehicle.ADAS.CruiseControl.SpeedSet: datatype: float unit: km/h min: 0 max: 250 type: actuator description: "巡航控制设定的目标速度"
工具链(如 RAD 中的 VSS Editor)可以解析这些.vspec文件,生成代码、文档或配置供下游使用。
五、VSS 在 RAD 平台中的落地
在 RAD 平台中,VSS 扮演了核心数据契约的角色,具体体现在:
数据模型来源:RAD 的应用和服务基于 VSS 定义的数据模型进行开发和通信。
映射桥梁:VSS 作为中间抽象层,将底层 CAN/LIN 等物理信号映射为统一的逻辑信号,供 Databroker 路由分发。
跨平台可移植:基于 VSS 开发的应用,无需修改即可部署到不同车型或硬件平台上(前提是底层映射已完成)。
工具链支持:RAD 提供的 VSS Mapping Tool 和 VSS Editor 支持开发者可视化地查看、编辑和验证 VSS 模型及其与底层信号的映射关系。
下图示意了 VSS 在数据流中的桥梁位置:
[车辆硬件传感器] → CAN/LIN 原始信号 → VSS 映射层 → VSS 抽象信号 → Databroker → [上层服务/应用]
六、VSS 的核心价值总结
| 价值维度 | 说明 |
|---|---|
| 标准化 | 统一的数据模型,降低生态协作成本 |
| 抽象化 | 屏蔽硬件差异,应用与车辆平台解耦 |
| 可扩展 | 支持厂商自定义信号,灵活性高 |
| 工具友好 | 基于文本文件,易于版本管理和自动化工具集成 |
| 语义自描述 | 包含丰富的元数据,便于理解和维护 |
| 跨域复用 | 同一信号定义可用于多个领域(开发、测试、诊断、数据分析) |
七、延伸信息
官方资源:COVESA VSS GitHub 仓库提供了完整的标准库、工具和文档。
版本演进:VSS 仍在持续演进,已从早期的信号定义逐渐扩展到支持更复杂的面向服务的数据模型。
与其他标准的关系:VSS 可与 SOME/IP、DDS、gRPC 等通信协议配合使用,并不绑定特定传输层。
COVESA