Vector AutoSar解读:COM

  1. 功能描述

如下features是支持的,参考标准文档Table 3-1 Supported AUTOSARstandard conform features

Generalfunctionality

信号和信号组的开箱和包装

无尽转换

标志扩展

初始化和反初始化服务

信号失效机制

信号状态信息(更新位)

信号接收滤波

信号网关

大型数据类型

动态长度信号

Communication Modes

信号传输特性

I-PDU传输模式

为一个特定的I-PDU选择传输模式

复制信号传输请求

Handling of I-PDUs

开始/停止I-PDU group

最小延迟定时器

Deadline Monitoring

接收截止时间监控

发送截止时间监控

Callouts

I-PDU 标注

如下features是不支持的,参考标注文档Table 3-2 Not Supported AUTOSARStandard Conform Features

Generalfunctionality

数据序列控制

通信保护

以下Signal Type是支持的:

„ boolean

„ uint8

„ uint16

„ uint32

„ uint64

„ sint8

„ sint16

„ sint32

„ sint64

„ uint8[n]

„ Float32

„ Float64

对于有符号和无符号整数,根据信号和目标系统的端序提供端序转换。有符号信号的支持是基于B补码的。

不透明的数据类型被解释为无符号整数,并且不执行字节序转换。应用目标系统特定的字节顺序。

Signal Processing

每个PDU有一个参数ComIPduSignalProcessing, 这个参数有两种值: IMMEDIATE、DEFERRED。

  • IMMEDIATE: 通知功能在Com_TxConfirmation 或 Com_RxIndication 函数里调用;IMMEDIATE 的发送时在下次调用Com_MainFunctionTx 时触发;

  • DEFERRED: 通知功能是在任务级Com_MainFunctionRx 或 Com_MainFunctionTx 函数里调用;DEFERRED I-PDU里包含的所有信号值在任务级Com_MainFuncitonRx 函数里更新。

Transmission of a Signal

上层通过APICom_SendSignal来要求发送一个signal。在执行可选参数检查后,COM 过呢更新新值到I-PDU里,检查这个signal请求是不是direct transmission。如果是,会设置一个标志,在COM的传输周期主函数里检查。

在Com_MainFunctionTx中处理I-PDU的传输模式。这意味着到底层的实际传输请求总是与上层解耦。在传输模式中,处理器处理循环传输和直接传输。

下面显示了两种传输模式的传输流程:

Transmission of a Signal Group

AUTOSAR COM提供信号组以一致地发送多个信号。映射到信号组的信号被称为组信号,并且应该彼此有关系。为了确保组信号值的一致性,对于每个信号组提供了阴影缓冲器。

要请求传输具有多个组信号的信号组,必须遵循以下API调用序列:

Transmission ModeSelector

AUTOSAR COM允许为每个I-PDU配置两种不同的传输模式(ComTxModeTrue和ComTxModeFalse)。I-PDU的传输模式仅使用以下信号的滤波器状态来选择在特定时间点有效映射到该I-PDU。如果映射到特定I-PDU的任何信号的滤波器评估为TRUE,则该I-PDU为以传输模式TRUE传输。当映射到该I-PDU的所有信号的滤波器评估为FALSE时,传输模式FALSE用于该I-PDU。如果映射到特定I-PDU的所有信号都没有分配滤波器,则传输模式评估为TRUE并且永远不会改变。

由于调用Com_SendSignal或通信_发送信号组。导致更改的信号或组信号的值已经以新的传输模式进行传输。在基于阵列的SignalGroup的情况下,由于调用Com_SendSignalGroupArray。基于数组的SignalGroup的值以新的传输模式传输引起的改变。

通过传输模式切换到直接/N次传输模式直接/N次将在考虑最小延迟时间的情况下启动到底层的传输,即使变速器模式开关是由一个带有PENDING转换的信号触发的所有物通过传输模式切换到循环或混合传输模式,新的循环将从对底层的传输请求开始延迟时间。

如果当前传输模式配置为NONE,COM将永远不会启动传输到底层。

Explicit Transmission Mode StateSwitch

通过调用API Com_SwitchIpduTxMode , TX I-PDU的传输模式配置能隐式被切换。

如果要求的传输模式与当前激活的模式不一样,这个新传输模式会立即激活。

对于新的传输模式PERIODIC或MIXED,传输周期从传输请求开始,考虑最小延迟时间和TxModeTimeOffset,并重新启动周期时间的计时器。

对于新的传输模式DIRECT或NONE,API调用不会触发Tx I-PDU的传输。

Transmit Signal Filters

每个传输Signal都可以可选地指定signal filter。传输signal的filter只用于传输模式选择,不用于值的过滤。

下面的filter是支持:

„ F_Always (TRUE)

„ F_Never (FALSE)

„ F_MaskedNewDiffersMaskedOld ((new_value&mask) != (old_value&mask))

„ F_MaskedNewEqualsX ((new_value&mask) == x)

„ F_MaskedNewDiffersX ((new_value&mask) != x)

„ F_MaskedNewIsOutside ((new_value<min) || (max<new_value))

„ F_MaskedNewIsWithin ((min<=new_value) && (new_value<=max))

The values for mask, x, min andmax can be configured for each filter.

Minimum Send Distance of an I-PDU

在COM规范中,定义了一种可选机制,通过引入I-PDU的最小发送距离来实现总线负载的定界。这一概念也在Tx主功能中进行了处理。

下图显示了混合传输模式的示例。请注意,由于最小发送距离,可以延迟循环传输,但是不修改基本周期。直接变速器由实心红色箭头绘制。

Minimum SendDistance only for Direct Send Triggers

如果参数ComEnableMDTForCyclicTransmission设置为false,则最小延迟只有基于事件的传输才会考虑时间,该传输可以由

Com_InvalidateSignal()、Com_InvvalidateSignalGroup()、Com_SendSignal()、Com_SendSignalGroup()、Comp_SendSignalGroupArray()或Com_TriggerIPDUSend()。

下图显示了循环传输不会结束最小延迟时间。一基于事件的传输是在循环传输之后直接触发的,尽管最小延迟尚未过去。相比之下,紧接着是基于第二个事件传输请求被延迟配置的最小延迟时间作为第一个事件基于传输已重新加载延迟计数器。

TransmissionDeadline Monitoring

对于Tx I-PDU,提供最后期限监测机制来检测较低层的传输机制中的故障。

支持两种不同的变体:

„ 正常模式:如果COM触发I-PDU的传输,则会观察到I-PDU的发送请求和下一次Tx确认(COM_TxConfirmation())之间的时间。例如,发送请求由Com_SendSignal()、Com_TriggerIPduSend()或循环触发器给出。

„ 无模式:对于由总线接口的时间表(例如LIN时间表)触发的I-PDU,观察两个连续Tx确认(Com_TxConfirmation())之间的时间。“无模式”适用于Tx I-PDU,两种传输模式均配置为无。每当在传输确认时启动并重新加载I-PDU的相应I-PDU组。然而,例如Com_TriggerIPduSend()给出的触发器事件也会启动计时器,如果它还没有运行的话。

“正常模式”的传输截止时间监控如下图所示。

每次写入信号或信号组时,如果尚未写入,则会启动超时计时器跑步如果超时时间(配置参数ComTimeout)在接收到下一个Tx确认,I-PDU的所有配置的超时通知功能被调用。

在“无模式”中,超时计时器最初由相应I-PDU组的启动启动,每次收到Tx确认时都会重新启动。下图说明了这种行为。

Replication ofSignal Transmission Requests

AUTOSAR COM提供了一个可选功能,用于将传输请求复制到用于上层的一个发送请求的下层。如果属性ComTxModeNumberOfRepetitions配置为大于“0”对于传输模式DIRECT或MIXED,COM触发Tx I-PDU循环,可配置ComTxModeRepetitionPeriodFactor长达'n+在上层的发送请求之后调用该I-PDU的1’确认。下图举例说明了具有重复的“n=2”复制的这种行为周期因子“td”配置为“2”。

由于复制是Tx I-PDU的属性,具有传输属性“TRIGGERED”或“TRIGGRED_ON_CHANGE”的映射信号或信号组的每个发送请求都会引发Tx I-PDU.的复制。为了启用对每个信号的复制控制,引入了以下传输属性:

„ ‘TRIGGERED_WITHOUT_REPETITION’

„ ‘TRIGGERED_ON_CHANGE_WITHOUT_REPETITION’

Reception of a Signal

为了接收信号,上层使用API Com_ReceiveSignal。此服务传递包含在信号的最新I-PDU中的信号值。

由于信号处理上下文取决于相应的Rx I PDU的配置,因此最新的信号值可能直到下一次调用Com_MainFunctionRx。信号的接收过程通常与I PDU的接收异步。然而,可以在接收通知中调用Com_ReceiveSignal回调。

如果发生超时并且Rx数据超时操作设置为REPLACE,则对Com_ReceiveSignal的调用始终返回最后接收的信号值或初始值,即使相应的I-PDU组已停止。

Reception of a Signal Group

AUTOSAR COM提供信号组以一致地接收多个信号。映射到信号组的信号被称为组信号,并且应该彼此有关系。为了确保组信号值的一致性,为每个信号组提供阴影缓冲器。

由于信号处理上下文取决于相应Rx I-PDU的配置,因此最新的信号组值可能直到下一次调用Com_MainfunctionRx时才可用。

要接收具有多个组信号的信号组的值,必须遵循以下API调用序列:

Dynamic DLC

COM评估从下层给出的SDU的实际接收DLC接口,以支持接收具有可变长度的RxI-PDU。

区分了两种情况:

„ 实际接收到的DLC大于或等于静态配置的

„ 仅处理具有静态配置的PDU长度的SDU有效载荷数据。

„ 正常信号处理。

„ 实际接收到的DLC小于静态配置的DLC

„ 仅处理具有实际接收到的PDU长度的SDU有效载荷数据。

„ 仅处理完全接收到的信号或信号组。

这会影响:

„ Rx指示通知

„ Rx滤波器

„ 处方失效

„ 信号路由

„ 如果配置的更新位未包含在实际接收的有效载荷中,则信号为如同设置了更新位一样进行处理。

Signal Gateway

信号网关允许将信号和信号组从Rx I-PDU路由到一个或多个Tx I-PDU。为了减少中断运行时间,在任务级别执行信号路由在Com_MainFunctionRouteSignals()中。

由于COM可以单独访问信号,因此可以在路由时更改I-PDU的信号布局。此外,可以改变路由信号的字节对齐,并指定Tx信号和I-PDU的任何可用传输特性

COM 状态

COM 模块有下面状态:

  • COM_UNINT: 模块没有初始化

  • COM_INITp 模块已初始化,可以被使用

通过API Com_GetStatus获取状态:

I-PDU 状态

每个I-PDU有两个状态:activated、deactivated

一个I-PDU要被激活,必须至少它属于的一个I-PDU group是active。由此,为了被激活,每个I-PDU必须属于一个I-PDU是actived。

没有包含在I-PDU group里的I-PDU被认为是active。

Reception Deadline Monitoring States

当并且仅当I-PDU包含在启用了接收截止日期监视的I-PDU组中时,启用I-PDU的接收截止日期监测。否则,I-PDU的接收截止日期监视被禁用。

Main Functions

Main Function

描述

Com_MainFunctionRx

此功能执行以下接收处理

>接收截止日期监控

>延迟信号处理

必须以与配置的Rx时基相同的周期时间循环调用此函数。

Com_MainFunctionTx

此功能执行以下传输处理

>I-PDU的传输

>传输截止时间监控

>延迟传输通知

必须以与配置的Tx时基相同的周期时间循环调用此函数。

Com_MainFunctionRouteSignals

此功能执行信号网关功能。

请注意,Tx I-PDU的传输从不直接由该功能触发。因此,Com_MainFunctionTx()对于完整的信号路由是必要的。

必须以与配置的Gw时基相同的循环时间循环调用此函数。

API: COM 提供的服务:

Com_Init..........................................................................................

Com_InitMemory..............................................................................

Com_DeInit......................................................................................

Com_IpduGroupControl...................................................................

Com_ReceptionDMControl..............................................................

Com_IpduGroupStart.......................................................................

Com_IpduGroupStop.......................................................................

Com_EnableReceptionDM...............................................................

Com_DisableReceptionDM..............................................................

Com_GetConfigurationId.................................................................

Com_GetStatus...............................................................................

Com_GetVersionInfo........................................................................

Com_TriggerIPDUSend...................................................................

Com_TriggerIPDUSendWithMetaData.............................................

Com_ClearIpduGroupVector............................................................

Com_SetIpduGroup.........................................................................

Com_ReceiveDynSignal..................................................................

Com_ReceiveSignalGroup...............................................................

Com_ReceiveSignalGroupArray......................................................

Com_InvalidateSignal......................................................................

Com_InvalidateSignalGroup............................................................

Com_SwitchIpduTxMode.................................................................

Com_SendDynSignal.......................................................................

Com_SendSignal.............................................................................

Com_SendSignalGroup...................................................................

Com_SendSignalGroupArray...........................................................

Com_MainFunctionRx......................................................................

Com_MainFunctionTx......................................................................

Com_MainFunctionRouteSignals.....................................................

Com_ReceiveSignal.........................................................................

Com_ReceiveShadowSignal............................................................

Com_UpdateShadowSignal.............................................................

Com_InvalidateShadowSignal.........................................................

API: COM 提供的回调函数

Com_RxIndication............................................................................

Com_TxConfirmation.......................................................................

Com_TriggerTransmit......................................................................

Com_TpTxConfirmation...................................................................

Com_CopyTxData...........................................................................

Com_TpRxIndication........................................................................

Com_StartOfReception

Com_CopyRxData

API: COM 提供的配置接口

IndicationNotification

ConfirmationNotification

RxTimeout Notification

TxTimeout Notification

ErrorNotification

InvalidNotification

猜你喜欢

转载自blog.csdn.net/NMR0574/article/details/129664681
今日推荐