编辑推荐: |
本文主要介绍了
AUTOSAR 通信服务的架构与原理相关内容。 希望对您的学习有所帮助。
本文来自于微信公众号谈思实验室,由火龙果软件Linda编辑、推荐。 |
|
01通信服务组成部分
为了简化车内ECU的通信服务,AUTOSAR基于汽车通信协议(如CAN,LIN以及FlexRay等)定义了一个由多个模块组成的通信协议栈,如图
1.1所示。

图 1.1 COM通信栈示意图
在通信协议栈中,位于服务层的有通信层(以下简称Com)、诊断通信层(以下简称Dcm)、路由层(以下简称PduR)、协议数据单元复用层(以下简称IpduM)以及总线相关的传输层(以下简称Tp,包括CanTp、LinTp以及FlexRayTp);位于ECU抽象层的是总线相关的接口层(以下简称If,包括CanIf、LinIf以及FlexRayIf);位于微控制器抽象层的是总线相关的驱动层(包括Can、Lin以及FlexRay)和收发器层(CanTrcv、LinTrcv以及FrTrcv)。
1.1Com模块
Com 模块作为应用程序的数据交互枢纽,为其提供基于信号的数据服务接口,并依据信号预定义的发送类型,精准地发送报文。
在应对应用程序的复杂数据类型时,Com 模块展现出独特优势。以结构体为例,因其数据量大且需保证整体发送的原子性,难以在单个信号中封装或拆分至多个信号。对此,Com
模块创新性地引入了信号组概念,有效解决了此类复杂数据的传输问题。
此外,Com 模块还配备了一系列附加服务接口,可用于检测报文的发送、接收状态,以及判断报文是否超时,确保数据传输的可靠性。
对于具备多个通信通道的 ECU,Com 模块提供了信号网关功能,实现了不同通信总线之间的信号路由,保障了系统内的高效通信。
1.2 Dcm模块
Dcm模块根据ISO 14229-1(Unified diagnostic services即UDS)实现诊断通信。诊断请求分为两块:一部分被直接送往Dcm模块(包括诊断会话的管理,读取故障码,重启ECU等);另一部分通过配置的端口转发到对应的软件组件(读,写,数据标志控制,例程执行等)。
1.3 IpduM模块
IpduM 模块承担着支持协议数据单元(PDU)多重使用的职责。为此,PDU 拥有一个专有部分的值(多路网关),其作用类似于编程语言中变量记录或联合体的标签元素,用于界定
PDU 其余部分的语义内容。在接收端,由 PduR 将多路 PDU 提交给 IpduM 以实现多重使用;在发送端,PDU
先从 Com 提交至 PduR,接着 PduR 再把该 PDU 提交给 IPduM 用于多重使用,随后
IpduM 将多路的 PDU 返回给 PduR,最后经 PduR 把多路的 PDU 转发至相应的目的地。
1.4 PduR模块
PduR模块主要提供两方面的服务。第一个方面是承上启下衔接上层和下层:发送时派发从高层模块的PDU到低层模块;接收时派发从底层模块如If或者TP接收的PDU给高层模块(COM,PduR)。第二个方面是通信网络中的网关功能。其中网关功能有两种:从一个接口层到另外一个相同或者不同总线类型的接口层;从一个TP到另外一个相同或者不同总线类型的TP层。其中路由协议是基于一个静态的路由表和PDU
ID的概念。
1.5 总线相关的TP模块
TP 模块的核心职能在于对大协议数据单元进行拆包与组包操作。在 AUTOSAR 架构中,其主要是为了助力
DCM 的诊断数据处理,且 TP 与总线紧密相关。其中,CanTp 遵循 ISO 标准 15765-5,负责管理发送方的数据打包以及接收方的数据解包工作;LinTp
承担着在发送节点把大数据分割成 Lin 帧,并在接收节点将 Lin 帧组合还原的任务;FlexRayTp
则负责在发送节点把大数据分割成 FlexRay 帧,同时在接收节点将 FlexRay 帧组合还原。此外,TP
模块还需对数据流进行控制,并对报文丢失、重发和顺序错误等错误检测工作负责。
1.6 总线相关的If模块
If 模块借助驱动层基于帧的服务,向上方提供 PDU 的发送与接收服务。与此同时,If 模块通过实现
PDU 和硬件缓冲区的映射,来达成硬件缓冲区的复用功能。每一类 If 模块能够处理同一种总线的不同类型通信控制器驱动模块。倘若一个
ECU 支持 CAN 和 FlexRay 总线,那么最多会运用两类 If 模块,分别对 CAN 和
FlexRay(Fr)进行抽象管理。当然,If 模块同样会为多种不同的收发器驱动模块提供支持,这一点和其对多种驱动模块的支持情况类似。
1.7 总线相关的Driver模块
驱动模块(Can、Lin以及Fr)提供了对应接口层的基础,通过简化通信控制器的帧的发送和接收行为向上层提供服务。驱动模块被设计为处理同一种总线类型的一类通信控制器。因此,如果一个ECU包含两种类型的CAN控制器,就需要两个CAN
Driver模块。
1.8 总线相关的Trcv模块
Trcv模块即收发器层(CanTrcv、LinTrcv以及FrTrcv)提供了对应接口层的基础,负责控制外部收发器的运行状态,包括唤醒和休眠功能。收发器层被设计为处理同一种总线类型的一类外部收发器。因此,如果一个ECU包含两种类型的外部CAN收发器,就需要两个CANTrcv模块。
02通信服务关键技术
2.1 分层模型机制
AUTOSAR 通信协议栈借鉴了 OSI 的 7 层模型概念。如图 2.1 所示,在其分层模型里,下层(第
N-1 层)为上层(第 N 层)提供服务,且仅同层之间会进行数据单元(简称 SDU)的交互。不过,AUTOSAR
通信协议栈与 OSI 分层模型存在主要差异:在 OSI 7 层模型中,每一层的 PDU 的协议控制部分,也就是图
2.1 中的协议控制信息(简称 PCI)是动态添加的,而在 AUTOSAR 通信协议栈中,该协议控制部分则是通过静态配置来实现的。

图 2.1 PDU、SDU以及PCI在分层模型中的使用
2.2 通信路径分配机制
基于信号的通信路径如图 2.2所示,发送路径由Com模块启动,经过PduR进行路由,派发到对应总线的接口模块,最后由对应的总线驱动模块把信号发送到总线上;接收路径反之。

图 2.2 基于信号的通信路径
Dcm的诊断信息通信路径如图 2.3所示。发送路径由Dcm模块启动,经过PduR进行路由,派发到对应总线的TP模块,经过Tp的拆包功能经对应总线的接口层发送到驱动模块,最后由对应的总线驱动模块把信号发送到总线上;接收路径反之。

图 2.3 Dcm诊断信息通信路径示意图
PDU的网关路径如图 2.4所示。第一种网关路径是不同总线的接口层之间的,先由驱动接收到帧,经接口层提交给PduR模块,然后PduR模块根据之前配置的网关路径转发给另一种总线的接口层,接口层提交给目标总线的驱动层,最后由驱动层把PDU发布到总线上。另外一种网关路径是不同总线的TP层之间的,和第一种相比是在路径中增加了TP节点,同时也多了拆包组包的消耗。

图 2.4 PDU的网关路径示意图
PDU广播路径如图 2.5所示。多播路径由Com模块启动,根据PduR对这个PDU的配置,使用多条路径进行路由,之后派发到对应总线的接口模块,最后由对应的总线驱动模块把信号发送到总线上,从而达到多播效果。

图 2.5 PDU多播路径示意图
2.3 PDU ID映射机制
在通信协议栈的每一层,PDU 均具备一个全局的识别号(简称全局 ID)以及一个本地的识别号(简称本地
ID)。其中,全局 ID 由 ECU 配置(简称 EcuC)进行全局分配,且一条通信路径上的 PDU
的全局 ID 是相同的。为便于本层对 PDU 进行管理,会采用本地 ID 连续的机制,为每个 PDU
赋予一个本地 ID。
当通信协议栈中上层使用下层服务时,会先依据 PDU 在自身层的本地 ID,查找到该 PDU 的全局
ID,接着根据这个全局 ID,查找该 PDU 在下层对应的本地 ID,最后依据所得到的本地 ID 来调用下层服务。
而通信协议栈的下层在使用上层服务时,会先根据 PDU 在自身层的本地 ID,查找到该 PDU 的全局
ID,随后依据这个全局 ID,查找该 PDU 在上层对应的本地 ID,最终根据获取到的本地 ID 来回调上层。
2.4 消息数据提供的方式
为实现对不同总线通信的兼容,AUTOSAR 提供了两种数据供给模式。参照图 2.6,其一为直接数据提供方式,此方式主要适用于
CAN 通信场景,在调用传输函数时需附带待发送的数据;其二是基于触发的数据提供方式,该方式适用于 Lin
或 Fr 通信,在传输数据前,先对要发送的数据进行缓冲处理,而后依据底层机制,例如 Lin 或 Fr
的静态周期性调度表,来触发缓冲数据的传输操作。

图 2.6 两种数据提供方式的对比示意图
2.5 消息的过滤机制
COM模块应在发送端和接收端为每个消息计算过滤条件。接收端会丢弃没有通过过滤机制的消息。虽然发送端不丢弃消息,但消息的过滤条件可以被用作消息的发送条件。提供的过滤算法如表
2.1所示。

表 2.1 消息过滤算法
2.6 传输性质和发送模式
传输性质是消息的性质,发送模式是PDU的性质。传输性质和发送模式的的结合情况如表 2.2所示。

表 2.2 传输性质和发送模式的结合
从消息层面剖析,若将消息配置为触发性质,在正常情况下,它会致使装载该消息的 PDU 立即发送。不过,倘若对应的
PDU 发送模式设定为周期性或者不可发送状态,那么即便消息是触发性质的,PDU 也不会立即发送。而当消息被配置为等待性质时,它不会促使与之对应的
PDU 进行立即传输。
从 PDU 的视角来看,对于处于直接 N 次模式的 PDU,只有触发性质的消息才能够让它被传输 N
次;对于属于非发送模式的 PDU,唯有通过明确地调用触发发送服务,才能够实现自身的传输;对于周期模式的
PDU,会依照预先配置好的周期,周期性地进行发送;至于混合模式的 PDU,其兼具周期模式和直接 N
次模式的特点,是这两种模式的叠加组合。
在对每个 PDU 进行配置时,可设定两种发送模式,这两种模式分别与 PDU 的发送模式选择结果(以下简称
TMS)为 TRUE 或 FALSE 的情形相对应。其中,TMS 的计算公式由公式(2.1)给出。
即若该 PDU 所关联的任意一个消息的传输模式条件(以下简称 TMC)为 TRUE,那么此 PDU
的 TMS 结果即为 TRUE;反之,若所有关联消息的 TMC 均不为 TRUE,则该 PDU 的
TMS 结果为 FALSE。这里的 TMC 作为一个消息的发送条件,其依据的是消息的过滤结果。
PDU 的 TMS 计算流程如图 2.7 所示,首先对信号的 TMC 进行计算,接着更新 PDU
中的信号,最后依据公式(2.1)计算得出 TMS 的结果。

图 2.7 PDU的TMS的计算过程
|