当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/581561.html

相关文章:

  • Hadoop MapReduce 入门
  • Hadoop高可用集群搭建
  • k8s-服务发布基础
  • 小菜狗的云计算之旅,学习了解rsync+sersync实现数据实时同步(详细操作步骤)
  • 【Linux网络编程】Socket - UDP
  • 儿童趣味记忆配对游戏
  • 【CSS-15】深入理解CSS transition-duration:掌握过渡动画的时长控制
  • Java的各种各样的生命周期——思考历程
  • 字符函数和字符串函数(下)- 暴力匹配算法
  • ASP.NET Web Pages 安装使用教程
  • 随机森林算法详解:Bagging思想的代表算法
  • 【大模型入门】访问GPT_API实战案例
  • 8.2.1+8.2.2插入排序
  • 企业智脑:智能营销新纪元——自动化品牌建设与智能化营销的技术革命
  • 【Linux操作系统 | 第12篇】Linux磁盘分区
  • Dubbo 3.x源码(31)—Dubbo消息的编码解码
  • 我的LeetCode刷题指南:链表部分
  • 微服务基础:Spring Cloud Alibaba 组件有哪些?
  • 云原生 Serverless 架构下的智能弹性伸缩与成本优化实践
  • java easyExce 动态表头列数不固定
  • vue3 当前页面方法暴露
  • 0704-0706上海,又聚上了
  • 《前端路由重构:解锁多语言交互的底层逻辑》
  • 【Zotero】Zotero无法正常启动解决方案
  • 深度解析命令模式:将请求封装为对象的设计智慧
  • Flink ClickHouse 连接器数据写入源码深度解析
  • Gin Web 层集成 Viper 配置文件和 Zap 日志文件指南(下)
  • LoRaWAN的设备类型有哪几种?
  • 条件渲染 v-show与v-if
  • CICD[软件安装]:ubuntu安装jenkins