打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CP AUTOSAR ComM 详解

前言

在上一篇中已经对AutoSAR中模式管理NvM做了详细的介绍,这篇主要介绍的是AutoSAR中整个通信的管理模块ComM。 

所有内容可在《搞一下汽车电子》公众号后台回复 '搞一下汽车电子' 或查看菜单栏。

一、ComM功能介绍

ComM是基本软件(BSW)服务层的一个组件。它是一个资源管理器,封装了对底层通信服务的控制,同时也会为APP层提供通信服务相关的接口,用于APP与ComM层的交互。

ComM控制与通信有关的基本软件模块,通信模块收集来自通信请求者的总线通信访问请求并协调总线通信访问请求,可以根据应用程序的通信需求协调不同网络以及局部网络间的通信对通信具有使能和禁用控制,主要功能概述为下面几方面:

为用户简化总线通信栈的使用,简化的网络管理处理。

协调一个ECU上多个独立软件组件的总线通信栈(允许发送和接收信号)的可用性(请求“通信模式”,通信模块就会打开/关闭相应信道的通信能力)。

提供API来禁止发送信号,以防止ECU(主动)唤醒通信总线。

通过为每个通道实现通道状态机来控制ECU的多个通信总线通道。

在AutoSAR架构中和ComM模块的交互模块如下:

每个模块和ComM的主要交互功能如下:

RTE:每个用户都可以请求通信模式。RTE传播用户向通信模块发出请求,并将来自ComM的通知告诉APP。

EcuM:负责验证唤醒事件。通信的允许也受EcuM的状态模式控制。

BswM:配置Com相关的Action和Rules,从而控制相关的通信,同时通信状态的改变也会报告给BswM,在EcuM Flex下,BswM也会将Com允许通信的功能告诉ComM。

NvM:负责处理与ComM相关的Nv Data操作。

xxxSM:包括了具体的通信媒介的状态管理,如CanSM、LINSM、EthSM、FrSM等,控制实际的总线状态,ComM请求xxxSM进行相关的状态转换,并传递到总线上。

NM:同步整个Ecu总线的开关。DCM:执行和诊断相关的ComM请求。

Com:通过Com信号区分PNC的状态信息。

DET:用于在开发中追溯ComM开发相关的错误。

二、ComM中的PNC

ComM主要是对通信协议栈进行服务控制的模块,在通信网络中和通信控制密切相关的功能主要会结合网络管理进行控制和使用,ComM模块对网络管理中每一个PNC(partial network cluster)实现了一个状态控制,能够请求和释放一个PNC的网络通信进行通信的控制。

在CAN和FR通信模式下,ComM的User会根据需要在主动唤醒模式下将NM报文中的UserData中对应的Bit设置为1,如果不请求特定的PNC,那么将该Bit设置为0,同时xxxNM模块会将对应的Bit通过COM中信号传递到ComM模块。每个PNC的状态切换如下所示:

其中,EIRA(External and Internal Request Array)表示来自的外部对本地节点网络的唤醒相关的设置数组,ERA(External Request Array)表示的是外部的唤醒状态设置相关的数组,一般用于网关相关的功能。两者的关系如下:

系统上电后整个PNC的状态在COMM_PNC_NO_COMMUNICATION。在PNC状态切换过程中如果是主动唤醒节点直接请求FULL通信,或者是网关节点控制的节点在收到网关下的ERA数组的相关状态位,直接从COMM_PNC_NO_COMMUNICATION进入到COMM_PNC_REQUESTED阶段。

如果是被动唤醒的节点,则根据接收到唤醒报文中的PNC位状态切换到COMM_PNC_READY_SLEEP或者COMM_PNC_PREPARE_SLEEP。其中PNC位设置一般在NM的报文中体现,而开发者只需根据相应的NM报文的UserData中对应的PNC位操作即可。

而COMM_PNC_FULL_COMMUNICATION内部的三个子状态的切换也是根据该节电的是否能被动唤醒功能进行内部的状态切换,主要体现是主动唤醒下需要Request Full相关的操作以及NM报文中对应的UserData中相关的PNC位进行转换的。

三、ComM中的通信节点状态切换

在ComM中除了在PNC功能下使用的状态转换外,还针对每一个通道提供了一个通用的状态机。对于每一个通道都可以根据实际的情况选择该通道的NM使用情况,ComM提供了以下几种和网络管理相关的配置选项:

FULL:采用AUTOSAR  NM,同时支持LIN的 NM和J1939的NM。

PASSIVE:采用AUTOSAR NM ,但是ECU不允许保持总线的Awake状态,ComM忽略来自User和DCM的通信请求。

LIGHT:不适用AUTOSAR NM,但是定义一个超时可以实现网络的Shutdown同步,超时时间可以配置在参数( ComMNmLightTimeout )中。NONE:不适用AUTOSAR NM,不会进行Shutdown同步。一旦通道请求COMM_FULL_COMMUNICATION mode,便不会从该模式退出. 通信的禁用通过power off或者reset实现,ComM忽略APP的禁用通信请求(COMM_NO_COMMUNICATION )。

对于每一个通道都有一个通用的状态机,如下所示:

系统上电后进入到COMM_NO_COMMUNICATION,表示ComM通信的Lowest状态,在该状态下具有下面两个子状态:

COMM_NO_COM_NO_PENDING_REQUEST

COMM_NO_COM_REQUEST_PENDING

COMM_FULL_COMMUNICATION表示ComM通信的Highest状态,在该状态下总线可以进行正常的数据通信在该状态下具有下面两个子状态:COMM_FULL_COM_NETWORK_REQUESTED和COMM_FULL_COM_READY_SLEEP。

下面分别对每个状态进行详细的说明:

COMM_NO_COM_NO_PENDING_REQUEST

该状态是在初始化完成ComM后的状态,该状态下总线不能进行任何的通信活动,需要请求通信进入到Full Communication才可以,主要来自于

① 用户请求User Request;

② DCM Notification需要激活对应的通道;

③ 来自于EcuM或者NM的Passive WakeUp通知。

COMM_NO_COM_REQUEST_PENDING

该状态下等待Communication  Allowed的触发信号,如果Allowed请求发生才能将通信模式转换为Full模式下,进行数据通信,如果没有Allowed的使能,则对Communication的FULL请求将不会被执行。

COMM_SILENT_COMMUNICATION

该状态主要用于支持NM的Sleep流程处理,是NM状态机的Prepare Sleep阶段,只有在NM进入到prepare Sleep模式下该状态才进入。

User不能请求该模式的进入,该状态支持NM为FULL、Passive下的CAN、ETH模式以及LIGHT模式下的CAN模式,同时LIGHT下配置超时时间,ETH下不支持LIGHT模式。该模式的退出条件主要有:NM报文接收;NM请求Sleep;FULL Communication请求;DCM激活。

COMM_FULL_COM_NETWORK_REQUESTED

该状态是进行正常的数据通信,模式的保持主要是DCM激活、FULL Communication请求并取消Light的计数(LIGHT模式);FullCom计数器一直运行(FULL、LIGHT模式),主要和NM的四个状态密切关联:

FULL:通信正常进行,在NO通信请求、No DCM激活或者Full Mode的计数超时后离开该模式。

Passive:直接进入到COMM_FULL_COM_READY_SLEEP。

LIGHT:NO通信请求、No DCM激活或者Full Mode的计数超时后离开该模式。

NONE:退出通信仅仅发生在Power Off或者Reset。

COMM_FULL_COM _READY_SLEEP

该状态激活主要和NM的四个状态密切关联:

FULL和Passive:NM进入到Ready Sleep阶段,NM触发Sleep流程;FULL  Communication请求或者DCM激活相应的通道。

LIGHT:Timeout计数大约0;计数超时,FULL Communication请求或者DCM激活相应的通道。

NONE:不适用该模式。

四、ComM和APP的交互

ComM除了和底层通信、模式管理、通信协议栈的模块有很强的交互外(在实际的开发中一般通过工具配置实现),集成或者开发工程师还要关注和APP的接口,而这些接口一般会和客户的实际应用需求密切相关。下面主要介绍下几个常用的ComM和APP的交互接口:

Client Server Interface

这一类接口主要是ComM作为Server端,而APP的SWC作为Client使用。在使用的时候APP的SWC一般通过Mapping的形式实现,主要包括:

ComM_UserRequest:内部提供了四个服务函数,主要功能为:User请求Communication为FULL还是NO模式;得到当前的Com模式;得到最大支持的Com模式;得到请求的模式。

ComM_ECUModeLimitation:内部同样提供了四种服务函数,主要功能包括:是否限制ECU对NO Communication的使用;返回拒绝进入Full Communication的Counter;复位/禁用Full Communication Counter;设置ECU Group的等级,主要是是否支持WakeUp激活以及NO Communication

ComM_ChannelWakeUp:内部包含两个操作:对WakeUp功能的关闭使能控制;返回当前通道的禁用状态(主要指WakeUp)ComM_ChannelLimitation:内部包含两个操作:对No Communication功能的关闭使能控制;返回当前通道的禁用状态(主要指No Communication )。

Mode Switch Interface

模式切换接口是AutoSAR中使用的一种比较特殊的接口,主要用在和模式管理密切相关的模块,ComM中只有ComM_CurrentMode属于该类接口,主要用于通知当前的通信模式。

Sender Receiver Interface

ComM中提供了一个SR接口ComM_CurrentChannelRequest,主要用于SWC请求激活或者禁用Com请求。

对于每个接口详细的使用方式可以参考AutoSAR中ComM的相关技术文档。由于ComM内容与AutoSAR的网络管理存在很强的关联,该篇只是对ComM和网络管理部分内容作了介绍,下一篇文章将会对AutoSAR的网络管理进行详细的描述。

本期分享就到这里,欢迎大家一起交流学习,如果有不合理的地方也请大家指正,愿和大家一起学习进步,一步步做好汽车电子软件开发。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存
猜你喜欢
类似文章
Autosar网络管理:Bus Sleep模式下,如何接收网络管理报文?
AUTOSAR网络管理 【转自smartsar】
车载以太网网络管理之UdpNm
基于CAN的AutoSAR网络管理知识要点
浅析PREEvision中AUTOSAR NM开发
车载诊断之Session(会话模式)汇总
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服