AUTOSAR进阶图解==>AUTOSAR_SWS_V2XFacilities
AUTOSAR V2X Facilities详解
AUTOSAR Vehicle-to-X Facilities模块架构与实现详解
目录
- 1. 架构概述
- 1.1 AUTOSAR V2X Facilities架构图
- 1.2 合作感知(CA)服务功能架构
- 1.3 分散环境通知(DEN)服务功能架构
- 2. 总结
1. 架构概述
AUTOSAR中的Vehicle-2-X Facilities (V2xFac)模块是Vehicle-2-X协议栈的关键组成部分。它与V2X Basic Transport (V2xBtp)、V2X GeoNetworking (V2xGn)、V2X Management (V2xM)以及通信驱动层一起构成了完整的V2X协议栈。V2xFac模块设计为硬件无关的基础软件模块,依赖于上层V2X应用服务和底层V2xBtp模块。
1.1 AUTOSAR V2X Facilities架构图
架构元素解释
组件 V2xFac:
- 职责: V2X设施层的核心模块,提供各种基本服务,支持V2X消息处理
- 功能点:
- 提供合作感知(CA)、分散环境通知(DEN)、车辆到基础设施信息(IVI)等基础服务
- 管理各种V2X消息的编码、解码和处理
- 连接应用层与网络传输层,促进数据交换
组件 V2xBtp:
- 职责: 提供基本传输协议服务,处理V2X消息的传输
- 功能点:
- 提供传输层接口
- 负责数据包的分段和重组
- 管理传输层端口
组件 V2xGn:
- 职责: 实现地理网络功能,支持基于位置的消息路由
- 功能点:
- 提供地理区域寻址
- 实现多跳通信
- 支持基于位置的路由策略
组件 V2xM:
- 职责: 管理整个V2X协议栈的运行状态
- 功能点:
- 协调各层模块的初始化和去初始化
- 监控和管理V2X协议栈的状态
- 处理错误和异常情况
层 应用层:
- 范围: V2X应用和服务
- 包含模块: V2X应用程序、位置服务(POTI)、车辆数据提供者(VDP)
层 V2X Facilities层:
- 范围: V2X消息处理和服务支持
- 包含模块: V2xFac及其提供的基本服务
层 V2X网络层:
- 范围: V2X通信的网络功能
- 包含模块: V2xBtp、V2xGn
层 通信驱动层:
- 范围: 硬件相关的通信驱动
- 包含模块: 通信驱动
代码示例
/* AUTOSAR V2X Facilities模块的初始化函数 */
Std_ReturnType V2xFac_Init(const V2xFac_ConfigType* ConfigPtr)
{Std_ReturnType returnValue = E_OK;/* 参数检查 */if (ConfigPtr == NULL){return E_NOT_OK;}/* 初始化V2xFac内部变量 */V2xFac_State = V2XFAC_STATE_UNINIT;/* 初始化各个服务模块 */returnValue = V2xFac_CA_Init(&(ConfigPtr->CaConfig));if (returnValue != E_OK){return returnValue;}returnValue = V2xFac_DEN_Init(&(ConfigPtr->DenConfig));if (returnValue != E_OK){return returnValue;}/* 初始化其他服务,如IVI、RLT、TLM等 *//* ... *//* 设置模块状态为已初始化 */V2xFac_State = V2XFAC_STATE_INIT;return E_OK;
}
1.2 合作感知(CA)服务功能架构
合作感知服务元素解释
组件 CAM传输管理:
- 职责: 负责协作感知消息(CAM)的生成和发送
- 功能点:
- 基于车辆动态生成CAM消息
- 根据状态变化调整发送频率,范围1Hz至10Hz
- 管理CAM消息的生命周期
- 确定何时触发CAM消息的产生和发送
组件 CAM接收管理:
- 职责: 处理从其他ITS站接收的CAM消息
- 功能点:
- 接收和处理传入的CAM消息
- 将解码后的CAM消息转发给应用层
- 管理接收到的CAM消息数据
组件 CAM频率管理:
- 职责: 控制CAM消息的发送频率
- 功能点:
- 实现基于车辆状态改变的发送频率控制算法
- 基于以下参数调整发送频率:
- 位置变化 > 4m
- 航向变化 > 4°
- 速度变化 > 0.5m/s
组件 CAM编码器和解码器:
- 职责: 负责CAM消息的编码和解码
- 功能点:
- CAM消息的ASN.1编码和解码
- 验证CAM消息的有效性
- 解析CAM消息的各个字段
接口 V2X应用到CA服务:
- 提供的服务: 允许应用触发CAM消息的生成和接收CAM通知
- 调用方式: 通过标准AUTOSAR接口
接口 车辆数据提供者(VDP)和位置服务(POTI):
- 提供的服务: 向CA服务提供车辆状态数据和位置信息
- 调用方式: 通过标准AUTOSAR接口
代码示例
/* CAM传输管理的触发函数 */
Std_ReturnType V2xFac_CAM_TriggerTransmission(void)
{Std_ReturnType result = E_OK;V2xFac_CAM_DataType camData;boolean sendCAM = FALSE;/* 检查是否满足发送条件 */sendCAM = V2xFac_CAM_CheckTriggerConditions();if (sendCAM == TRUE){/* 从VDP获取车辆数据 */result = V2xFac_CAM_GetVehicleData(&camData);if (result != E_OK){return result;}/* 从POTI获取位置数据 */result = V2xFac_CAM_GetPositionData(&camData);if (result != E_OK){return result;}/* 编码CAM消息 */result = V2xFac_CAM_Encode(&camData);if (result != E_OK){return result;}/* 通过BTP发送CAM */result = V2xBtp_Transmit(V2XFAC_CAM_PORT, &camData.encodedData);/* 更新频率管理状态 */V2xFac_CAM_UpdateFrequencyState();}return result;
}/* CAM接收回调函数 */
void V2xFac_CAM_RxIndication(const V2xBtp_RxIndicationType* RxIndicationPtr)
{V2xFac_CAM_DataType camData;Std_ReturnType result;if (RxIndicationPtr == NULL){return;}/* 解码接收到的CAM消息 */result = V2xFac_CAM_Decode(RxIndicationPtr->data, &camData);if (result != E_OK){return;}/* 通知应用层 */V2xApplRxIndication_CAM(&camData);
}
1.3 分散环境通知(DEN)服务功能架构
分散环境通知服务元素解释
组件 DENM传输管理:
- 职责: 处理分散环境通知消息(DENM)的生成和发送
- 功能点:
- 处理应用触发的事件
- 创建与管理DENM消息
- 设置事件类型和持续时间
- 管理消息有效期和更新
组件 DENM接收管理:
- 职责: 处理接收到的DENM消息
- 功能点:
- 接收和解码DENM消息
- 将消息转发给应用层
- 管理已接收消息的存储和引用
组件 DENM重复机制:
- 职责: 负责DENM消息的重复发送策略
- 功能点:
- 根据事件类型设置重复策略
- 在指定时间间隔重复发送DENM
- 对关键事件提高重发频率
- 支持消息更新和终止
组件 Keep Alive转发:
- 职责: 维持关键DENM消息的传播
- 功能点:
- 接收并转发相关DENM
- 维持关键信息传播
- 扩大消息覆盖范围
- 防止消息在网络中丢失
接口 V2X应用到DEN服务:
- 提供的服务: 允许应用触发DENM消息的生成和接收DENM通知
- 调用方式: 通过标准AUTOSAR接口
接口 位置服务(POTI)到DEN服务:
- 提供的服务: 向DEN服务提供位置信息
- 调用方式: 通过标准AUTOSAR接口
代码示例
/* 应用触发DENM消息函数 */
Std_ReturnType V2xFac_DENM_TriggerEvent(const V2xFac_DENM_EventType* EventPtr)
{Std_ReturnType result = E_OK;V2xFac_DENM_DataType denmData;if (EventPtr == NULL){return E_NOT_OK;}/* 初始化DENM数据结构 */V2xFac_DENM_InitData(&denmData, EventPtr);/* 从POTI获取位置数据 */result = V2xFac_DENM_GetPositionData(&denmData);if (result != E_OK){return result;}/* 编码DENM消息 */result = V2xFac_DENM_Encode(&denmData);if (result != E_OK){return result;}/* 通过BTP发送DENM */result = V2xBtp_Transmit(V2XFAC_DENM_PORT, &denmData.encodedData);/* 如果需要重复发送,设置重复参数 */if (EventPtr->repetitionEnabled == TRUE){result = V2xFac_DENM_SetupRepetition(EventPtr->actionId, EventPtr->repetitionInterval, EventPtr->repetitionDuration);}return result;
}/* DENM重复发送处理函数 */
void V2xFac_DENM_ProcessRepetition(void)
{uint8 i;/* 遍历所有活动的重复事件 */for (i = 0; i < V2XFAC_DENM_MAX_REPETITION_EVENTS; i++){if (V2xFac_DENM_RepetitionEvents[i].active == TRUE){/* 检查是否到达重复时间 */if (V2xFac_DENM_CheckRepetitionTime(&V2xFac_DENM_RepetitionEvents[i])){/* 重新发送DENM */V2xFac_DENM_ResendMessage(&V2xFac_DENM_RepetitionEvents[i]);/* 更新下一次重复时间 */V2xFac_DENM_UpdateRepetitionTime(&V2xFac_DENM_RepetitionEvents[i]);/* 检查重复持续时间是否到期 */if (V2xFac_DENM_CheckRepetitionExpiry(&V2xFac_DENM_RepetitionEvents[i])){V2xFac_DENM_RepetitionEvents[i].active = FALSE;}}}}
}
2. 总结
AUTOSAR V2X Facilities模块是Vehicle-to-X通信中关键的中间层组件,它实现了多种基本服务以支持车辆与其他实体之间的通信。主要特点包括:
- 模块化架构:清晰划分为不同的服务组件,如CA、DEN、IVI等
- 标准兼容性:符合ETSI和AUTOSAR标准规范
- 服务丰富:提供合作感知、环境通知等多种V2X通信服务
- 灵活配置:支持根据不同应用场景和需求进行配置
- 多层协作:与上层应用和下层传输层密切协作,确保数据的有效传输
V2X Facilities模块是现代智能交通系统中实现车辆间通信、车路协同等功能的基础软件模块,对提高道路安全性、交通效率和驾驶体验具有重要作用。