• 196查看
  • 0回复

[Autosar] AUTOSAR 通信栈模块功能分析

[复制链接]


该用户从未签到

发表于 26-4-2024 22:29:47 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


一、CanIF模块

CanIf模块位于MCAL层(CAN Driver)和上层通信服务层(如 CAN Network Management, CAN Transport Protocol 等)的中间,其充当 CAN Driver 和上层通信服务层的接口层。所以它位于BSW层中的ECU抽象层,为了让上层软件与ECU硬件设计无关。

CAN Interface 模块主要功能如下:

    初始化

    发送请求服务

    发送确认服务

    接收指示服务

    Controller 模式控制服务

    Transceiver 模式控制服务

    PDU channel mode 控制服务


二、CanNM模块

NM(网络管理)就是为了帮ECU省电,在介绍CanNm模块之前,首先需要搞清楚CanNm模块和NM模块的关系。Nm 模块位于 AUTOSAR 的通信服务层,对上与ComM 交互,对下控制各总线网络管理模块,为 ComM 提供统一的网络管理功能,同时当开启网络协同功能时,协调各总线网络管理模块之间的状态关系。CanNm模块其实只是CAN总线上的NM,而LIN, FlexRay也有其对应的NM,大家都大同小异,都实现着一模一样的目的,所以对于CanNm模块和NM模块的关系,说得再简单点,NM模块是一个经理,CanNm模块是真正打工人,那么站在NM之上的ComM模块则是老板了,ComM模块后面会介绍到,这里不多说。

CanNm 模块主要功能如下:

    初始化 

    网络管理报文发送  

    网络管理报文接收处理  

    同步睡眠和唤醒功能  

    向应用层提供网络上节点信息  

    降低总线负载机制


三、CanSM模块

CanSM和上面的CanNm是两兄弟,都是基于interface层,对上则服务于ComM服务。只不过两兄弟所实现的功能不一样,在具体介绍CanSM模块之前,得先搞清楚状态管理是个什么玩意。首先这里管理的状态其实是对应其总线的通信状态,所以CanSM模块管理的就是CAN总线的通信状态,而这里的通信状态则包含能不能发送报文,能不能接收报文,总线上有没有错误等。

CanSM提供的主要功能主要有:
1. 总线模式切换
2. Busoff 恢复管理
3. 切换波特率
4. 唤醒确认管理

四、ComM模块

前面已经分别介绍了干活两兄弟NM模块和SM模块,NM模块主要负责的是基于总线报文管理ECU休眠,SM模块则是控制总线通信状态,这两兄弟其实都是实际执行者,ComM模块则是真正的总线管理者,用户只要对ComM模块告知自己想要的通信模式,ComM模块则会直接协调NM和SM两兄弟直接干活以达到用户想要的通信模式。

ComM 模块位于 AUTOSAR 的系统服务层,透过 RTE 与用户(这里的用户指的是可以对ComM模块下达请求的模块,可以是BswM,SWC, Runables等)直接交互。向下控制各总线状态管理器和网络管理器(SM 和 Nm),为用户提供统一的通信管理功能,同时协调SM 和 Nm 之间的状态关系。

AUTOSAR 通信栈模块功能分析w1.jpg

ComM 模块主要功能如下:

1. 初始化

2. 用户或 DCM 请求通信模式

3. 通知应用通信模式切换

4. 限制通道或 ECU 的通信功能

5. 与 EcuM 的唤醒功能协同、与 BswM 控制通信协同

6. 控制各通道的总线状态

7. 请求或释放网络管理服务

四、PduR模块

前面对Communication Stack的通信管理理部分介绍清楚了,接下来就来看看Communication Stack中负责通信数据的部分了,第一就不得不说一个最核心的模块,那就是负责消息分发的PduR模块。

首先介绍一个在Communication Stack中出现频率很高的词I-PDU, 全称为Interaction Layer Protocol Data Unit, 意思就是交互PDU,可以理解成是软件协议层面上的一个完整性消息。

PduR即为PDU Router,看一看它在Communication Stack架构中的位置:

AUTOSAR 通信栈模块功能分析w2.jpg

PduR 模块位于 AUTOSAR 的通信服务的核心位置, 作为上层模块与下层接口模块或传输层模块传输 I-PDU 的桥梁。说的简单一点就是个内部消息路由器,当PduR 收到底层传输层或者interface抽象层传输的 I-PDU后,将其传输到对应的服务模块,而上层服务模块需要发送 I-PDU时,PduR模块则会将消息传输到相应的传输层或者interface抽象层。

通信模块根据其在 AUTOSAR 架构中的位置和传输 I-PDU时的角色,可以分为三类:上层模块、下层接口模块和下层传输层模块。

上层模块位于 PduR 上层,一般包括 Com、 Dcm 和 Cdd。

下层接口模块位于 PduR 下层,一般包括 CanIf、 LinIf、 SoAdIf、 FrIf、 CddIf 等。

下层传输层模块同样位于 PduR 下层,一般包括 CanTp、 LinTp、 SoAdTp、 DoIPTp、FrTp 和 CddTp 等。

而PduR模块则是连接这些模块的枢纽,位于上层模块和下层模块之间,充当一个终极消息中转站。

PduR 模块主要功能如下:


    接收下层模块(接口模块、传输层模块)

    I-PDU并传递给上层模块

    发送上层模块 I-PDU到低层模块

    接收接口层 I-PDU并传递给其他接口层模块

    接收传输层 I-PDU并传递给其他传输层模


五、COM模块

    首先的了解一下AUTOSAT面向信号的通信理念,什么个意思呢?这里的信号可以理解成是应用层关心的实际值,比方说电压值,电流值,转速等,这些都是信号,应用层接收和发送信号的时候,它只需要调用相关信号的接口函数触发动作即可,至于这些信号值是通过哪种方式传送和哪种协议解析,应用层根本不关心,这就是AUTOSAR面向信号的通信理念。为了在软件中实现这个理念,Com模块在这其中起着至关重要的作用。

     Com 模块位于 RTE 和 PDUR 的中间,其充当 RTE 和 PDUR 通信服务层的接口层,其主要功能就是负责为上层提供各种信号的接收和传送,说得简单点一点,就是把很多信号打包成PDU(这里的PDU则是软件协议层面上的一条消息,映射到硬件上,可能是一帧或者几帧,这取决于软件协议组包的方式,比如说TCP\IP协议栈的组包),然后往各种总线上送,或者从各种总线上接收到PDU后解包成信号提供给上层。但是众所周知,AUTOSAR就是会把简单的东西搞得及其得复杂,所以Com里面又有一大堆新玩意。

Com 模块主要功能如下:

    提供基于信号的发送机制;

    提供不同的发送方式(例如:周期、事件);

    对报文发送超时进行监测与处理;

    提供发送状态通知机制;

    提供基于信号的发送接口函数。

    提供基于信号的接收机制;

    对报文接收超时进行监测与处理;

    提供接收状态通知机制;

    提供基于信号的接收接口函数。

    支持信号路由功能;

    支持信号滤波功能;

    支持长报文(TP)传输;

    支持动态信号收发


六、Dcm 模块

Dcm 模块为诊断服务提供标准的函数接口,在控制器产品开发、制造和售后服务期间,用户可以通过外部诊断工具访问 Dcm 模块实现对控制器进行刷新、故障诊断等操作,Dcm是AUTOSAR架构对UDS协议的具体实现。Dcm模块是PduR模块的上层模块,当PduR接收到下层传输模块的UDS PDU后,就会将其路由发送到Dcm模块,同理,PduR模块也会将Dcm模块下发的PDU路由到对应的传输层模块。

为实现 Dcm 功能,AUTOSAR 规范根据诊断服务执行的过程,将 Dcm 模块分为 3个子模块,分别是:

    DSL(Diagnostic Session Layer)实现诊断数据的接收和发送、管理诊断时间参数、管理诊断会话状态和安全等级;

    DSD(Diagnostic Service Dispatcher)检查诊断服务是否支持、管理从 DSP 子模块得到的诊断响应;

    DSP(Diagnostic Service Processing)执行诊断服务处理。


七、CANTP模块

  CanTp 模块在 AUTOSAR 架构中位于 CanIf 和 PduR 模块之间,参考 ISO 15765 标准,实现通信双方之间的基于 ISO 15765 协议的 CAN 通信功能,即实现了UDS on CAN的网络层,接收来自CanIf传来的诊断报文后对其进行单帧多帧处理,然后将PDU传输给PduR模块。

CanTp模块的主要功能有:

    收发单帧和多帧报文,对多帧报文进行解包和组包;

    控制数据流;

    检测报文收发过程中的各类错误,并向上层报告;

    支持多连接通道。


八、CanTsyn模块

时间同步有啥用呢?就拿现在的ADAS来说,域控制器需要融合雷达,摄像头等传感器的数据,然后进行算法融合所有传感器的数据后最终才能进行判断和执行,这个时候就存在一个问题,因为传感器数据并不都是来源于同一个ECU,所以就需要一个手段来保证域控融合的所有传感器数据都是产自同一时刻,所以传感器在向域控制器发送传感数据时都需要加上一个时间戳,所以让车上所有的ECU里面的时间戳都保证一模一样就成了必要的事情。而CanTsyn模块就是基于CAN总线的时间同步方案,所以它的功能也是非常的简单,就是接收一些时间同步报文,然后根据报文中包含的时间信息获取当前时间。

九、StbM模块

上面介绍了一下基于CAN总线负责时间同步的CanTsyn模块模块,那么稍微介绍一下它的老板StbM模块

StbM(Synchronized Time Base Manager)模块负责抽象基于不同传输介质的AUTOSAR时间同步协议,为整个软件系统来提供时间同步之后的全局时间戳。

StbM 模块主要功能如下:

    提供同步时间;

    管理同步时间的状态;

    时间路由。


StbM 模块在AUTOSAR架构中与其他模块的交互情况如下图所示:

AUTOSAR 通信栈模块功能分析w3.jpg

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 27-12-2024 11:27 , Processed in 0.344881 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.