0
点赞
收藏
分享

微信扫一扫

AUTOSAR IPDUM介绍

Hyggelook 2022-04-25 阅读 273
c语言

概述

IPduM(I-PDU Multiplexer)在AUTOSAR架构中和PduR属于同一层级,顾名思义,IPduM作用是与PduR交互实现I-PDU的复用。

I-PDU多路复用是指使用同一个I-PDU的同一种PCI,其SDU有多个不同的布局。选择字段(selector field)是多路I-PDU中SDU的一部分。它用于区分复用I-PDU的不同布局。

IPduM模块负责将通过IPDU-Router从COM接收到的I-PDU组合成新的、多路复用的I-PDU,再发送到发送方的I-PDU Router。在接收端,它负责解析多路I-PDU的内容,并通过IpduM解析字段的值,为COM提供适当的分离I-DPU。

image-20220325142531361

通俗的理解:一个PDU中的部分区域可以有多种Layout,类似于传统的一个报文可以有多种信号的Layout,实现一个报文传输多种不同Layout信号的作用,以此达到节省报文ID使用等作用。熟悉Vector DBC文件的朋友可能熟悉,类似于其中的信号复用。

Vector DBC中信号复用介绍

如下,我们在定义信号时,可以选择复用类型:

  1. Signal 普通信号,不复用
  2. Multiplexor Signal 作为控制开关的信号
  3. Multiplexed Signal 复用的信号,还需要设置复用值

举例:

【New_X】设置成multiplexor signal

【New_A】设置成multiplexed signal并且multiplex value=0x01

【New_B】设置成multiplexed signal并且multiplex value=0x02

image-20220325140226939

当【New_X】的值为0x01时,【New_A】表示显性

image-20220325140303500

当【New_X】的值为0x02时,【New_B】表示显性

image-20220325140330817

AUTOSAR PDU SDU介绍

PDU:Protocal Data Unit

PDU包含SDU和PCI。在发送方,PDU由上层传递到下层,把传递下来的PDU当做是自己的SDU。

SDU:Service Data Unit

SDU由上层传递到下层,携带请求发送的数据。接收的SDU作为本层PDU的一部分。

PCI:Protocal Control Infomation

该信息用于将SDU从特定协议层的一个实例传递到另一个实例。例如,它包含源和目标信息。PCI在传输端由协议层添加,在接收端再次删除。

图示关系如下

image-20220325141133854

名词解释和缩写

缩写描述
contained I-PDUcontainer PDU包含的I-PDU叫做contained I-PDU
container PDU包含I-PDUs和Headers的PDU
dynamic part根据选择器字段的值,I-PDU的某些部分有不同的布局。这些I-PDU中可以包含不同信号的部分称为动态部分。动态部分不一定是连续的
selector field选择字段是复用I-PDU的一部分,由几个连续的bits组成。其值用来选择复用I-PDU中复用部分的Layout
static part不管选择器字段的值,I-PDU中的某些部分或者信号可能是相同的。这样的部分称为静态部分。静态部分不一定是连续的

IPduM功能介绍

IPduM有两种不同的用法,分别是:

  • I-PDU复用

    I-PDU复用的用法是使用同一个I-PDU ID经过PduR传输或者接收该I-PDU的多个Layout。

  • 多个PDU与Container PDU的映射

    多个PDU到Container映射是指将多个I -PDU收集到一个Container PDU中。举个例子方便大家理解:比如车辆内网关上CAN总线上的ECU要和CANFD总线上的ECU通信,为了节省报文ID以及减小带宽等需求,可以将多个CAN报文打包在一个CANFD报文里。这就是多个PDU与Container PDU的映射应用。

I-PDU复用介绍
复用I-PDU的定义和结构

复用I-PDU由一个静态部分和动态部分组成,其中静态部分(可选)由0到多个signals或者signal groups组成。动态部分由一个选择字段和一个到多个signal或者signal group组成。如下图所示。

动态部分类似于C语言编程中的联合体。根据动态部分的选择字段不同,其layout不同

静态部分和动态部分的位置可以配置,并且可以细分为不同的segments。每一个I-PDU只能包含一个选择字段。选择字段的值规定了动态部分的内容如何被解析。选择字段的长度可以配置为1到16个连续的bits,其起始位置也可以配置

静态部分和动态部分在复用I-PDU中被分配相同的bits位,即两部分含有相同的宽度。

缩短的静态部分

这种结构静态部分和动态部分可以被细分为多个segments。

image-20220325150800514

缩短的动态部分

这种结构不细分静态部分和动态部分。

image-20220325151718604

复用I-PDU的发送

IpudM提供了IpduM_Transmit功能以使PduR模块根据触发条件发起I-PDU的发送。静态部分和动态部分的发送确认可以配置,根据配置两种发送确认都可以生成。

Transmission trigger

IpduM模块通过从PDU Router模块中分离出两个传输请求作为两个单个的COM I-PDU来接收多路传输的I-PDU的静态和动态部分。

发送有以下几种可配置的触发条件:

  • 接收一个静态部分
  • 接收一个动态部分
  • 接收一个静态部分或者一个动态部分
  • 不触发发送(IpduMTxTriggerMode None)
复用I-PDU的接收

PDU Router将多路复用的I-PDU路由到IpduM模块。IpduM模块将多路复用I-PDU的静态部分和动态部分分别路由到各自的目的地。

多个PDU与Container PDU的映射介绍

IpduM支持多个I-PDU与一个Container PDU的映射。Container PDU Layout可以是动态定义的,在包含的I-PDU前面使用header信息;或者静态地不使用header信息,但为Contained I-PDU定义了静态位置。从PduR的层级来看,Container PDU和Contained I-PDU都是PDU。这种方式一般用在网关上,将多个Classic CAN报文映射到一个CANFD报文。

image-20220329085853637

Dynamic Container Layout

这种结构Header放置在I-PDU前面,Header的Size有Short和Full两种格式可以配置

image-20220325163912686

  • IPDUM_HEADERTYPE_SHORT

    24bit ID and 8bit length

  • IPDUM_HEADERTYPE_FULL

    32bit ID and 32bit length

其中的ID和DLC,在CAN通信中就是CAN报文的ID以及DLC。

Static Container Layout

使用static container layout时,container pdu的header size必须配置为IPDUM_HEADERTYPE_NONE。

Transmission

发送的触发有多种不同的方式,如下:

  1. 如果IpduMContainedTxPduTrigger设置为IPDUM_TRIGGER_ALWAYS,当把contained I-PDU添加到container PDU时,Container PDU会被立即触发。

  2. 如果IpduMContainerTxFirstContainedPduTrigger 设置为TRUE,当把第一个contained I-PDU添加container PDU时,IpduM会调用PduR_IpduMTransmit。

  3. 如果contained I-PDU的IpduMContainedTxSendTimeout或者Container PDU的IpduMContainerTxPduSendTimeout配置大于0,IpduM会启动Container PDU的计时器,计时器由IpduMContainerTxSendTimeout和IpduMContainedTxPduSendTimeout中较小的且非0的参数初始化。

  4. 当一个contained I-PDU被添加到container PDU时,如果contained I-PDU的超时时间(IpduMContainedTxPduSendTimeout)小于container PDU的剩余时间,container PDU的发送计时器应该由contained I-PDU的超时时间(IpduMContainedTxPduSendTimeout)更新。

  5. 当配置的Container PDU发送timer超时时,IpduM会调用PduR_IpduMTransmit。

两种方式策略
  • Queueing

    如果一个Container PDU被trigger多次来不及发送,会存储在队列中,等待下一次发送。下一次的发送必须等到上一次发送的TxConfirmation收到。

    image-20220329092653108

  • Triggered Transmission and Last-is-Best 策略

    该方式不会有缓存,新数据会覆盖旧数据,且不会有重复的数据。

    image-20220329092723194

时序图

复用I-PDU的发送以及发送确认

image-20220328133740985

接收复用I-PDU

image-20220328133943755

举报

相关推荐

0 条评论