AUTOSAR进阶图解==>AUTOSAR_SWS_V2XFacilities

发布于:2025-07-07 ⋅ 阅读:(19) ⋅ 点赞:(0)

AUTOSAR V2X Facilities详解

AUTOSAR Vehicle-to-X Facilities模块架构与实现详解

目录


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模块是现代智能交通系统中实现车辆间通信、车路协同等功能的基础软件模块,对提高道路安全性、交通效率和驾驶体验具有重要作用。


网站公告

今日签到

点亮在社区的每一天
去签到