AUTOSAR-COMM篇

1 概述

       通信管理器模块(COM管理器,ComM)是基本软件(BSW)的一个组成部分。它是一个资源管理器,它封装了对底层通信服务的控制。

     通过调用API接口它可以实现对Can通道开启和关闭,控制Can报文收发。简化了对用户的总线通信堆栈的使用,简化的网络管理处理。

2 状态机

COMM状态机,它由三个主要状态组成,表示每个通道的通信能力的抽象状态。

   . COMM_NO_COMMUNICATION
   . COMM_SILENT_COMMUNICATION 
    . COMM_FULL_COMMUNICATION

2.1 COMM_UNINIT

      在初始化COMM之前,它将保持在此状态。无法使用COMM功能。

2.2 COMM_NO_COMMUNICATION

       状态COMM_NO_COMMUNICATION表示COMM的最低状态。在此状态内,没有可用的通信能力。该状态由下面描述的两个子态组成。

  2.2.1 COMM_NO_COM_NO_PENDING_REQUEST

        此状态是COMM初始化后的默认状态,以下条件可触发状态跳转:

1)用户请求调用COMM_FULL_COMMUNICATION(调用ComM_RequestComMode函数)

2)一个活动的诊断会话的DCM通知

3)来自ECUM或NM的被动唤醒指示(调用ComM_EcuM_WakeUpIndication函数)

2.2.2 COMM_NO_COM_REQUEST_PENDING

       COMM一直处于这种状态,直到允许使用ComM_CommunicationAllowed(TRUE)指示的方式对通道进行通信为止。

2.3 COMM_SILENT_COMMUNICATION

        COMM使用此状态来支持网络管理的睡眠过程。该状态表示网络的准备总线休眠阶段。如果网络管理触发休眠进程并变为准备总线休眠模式,则COMM将变为此状态。

此状态下的活动取决于已配置的COMM NM变体:

状态保持跳转COMM_FULL_COM_NETWORK_REQUESTED 条件:

1)NM Variant FULL and PASSIVE :FULL_COMM请求或者NM模块总线正常模式Network指示

状态保持跳转COMM_NO_COM_NO_PENDING_REQUEST条件:

1)NM Variant FULL and PASSIVE :NM模块总线BusSleep睡眠模式指示

2)   NM Variant LIGHT:配置了Nm Light Silent Timeout不为0,时间超时。

2.4 COMM_FULL_COMMUNICATION

       状态COMM_FULL_COMMUNICATION表示COMM的最高状态。在此状态下,通信能力是可用的。该状态由下面描述的两个子态组成。

2.4.1 COMM_FULL_COM_NETWORK_REQUESTED

此状态下的活动取决于已配置的COMM NM变体:

状态保持条件:

1)NM Variant FULL:网络管理设置为“正常运行”状态。
2)NM Variant NONE:COMM处于这种状态。通信是通过ECU复位或关闭来完成的
3) NM Variant LINSLAVE:COMM一直处于此状态,直到所有用户都请求不进行通信为止。
状态跳转到COMM_FULL_COM_READY_SLEEP条件:
 1) NM Variant FULL or LIGHT:所有用户都请求没有通信,或DCM表示没有活动的诊断会话。
 2) NM Variant PASSIVE :  COMM直接进入COMM_FULL_COM_READY_SLEEP状态
 3) NM Variant LIGHT:最小Full Com Mode timer 超时

2.4.2 COMM_FULL_COM_READY_SLEEP

此状态下的活动取决于已配置的COMM NM变体:

状态保持条件:

1)NM Variant FULL and PASSIVE :网络管理被设置为就绪睡眠状态。

状态跳转COMM_FULL_COM_NETWORK_REQUESTED条件:

 1)NM Variant FULL or LIGHT:用户都请求FULL_COM

状态跳转 COMM_SILENT_COMMUNICATION条件:

1)NM Variant FULL and PASSIVE :NM模块准备总线睡眠Prepare BusSleep模式指示

2)   NM Variant LIGHT:配置了Nm Light Silent Timeout不为0,时间超时。

3 主动及被动唤醒过程中COMM状态跳转

3.1 主动唤醒COMM状态跳转

1)ECU上电,进入COMM_UNINIT状态。

2)BswM初始化过程调用ComM_Init() ,进入COMM_NO_COM_REQUEST_PENDING状态

3)用户根据需求调用ComM_RequestComMode请求FULL_COMM,进入COMM_NO_COM_REQUEST_PENDING状态

4)设置Can通道CommunicationAllowed == TRUE,此开关一般在BswM进行配置打开。进入COMM_FULL_COM_NETWORK_REQUESTED

5)正常工作过程一直停留在COMM_FULL_COM_NETWORK_REQUESTED状态

3.2 被动唤醒COMM状态跳转

1)ECU上电,进入COMM_UNINIT状态。

2)BswM初始化过程调用ComM_Init() ,进入COMM_NO_COM_REQUEST_PENDING状态

3)EcuM收到有效唤醒报文,调用ComM_EcuM_WakeUpIndication进入COMM_NO_COM_REQUEST_PENDING状态

4)设置Can通道CommunicationAllowed == TRUE,此开关一般在BswM进行配置打开。进入COMM_FULL_COM_NETWORK_REQUESTED

5)正常工作过程一直停留COMM_FULL_COM_READY_SLEEP状态

3.2 休眠过程COMM状态跳转

1)准备下电休眠时,用户通过ComM_RequestComMode请求NO_COMM,进入COMM_FULL_COM_READY_SLEEP状态

2)在COMM_FULL_COM_READY_SLEEP状态收到NM模块Prepare Bus Sleep Mode 通知,进入COMM_SILENT_COMMUNICATION 状态

3)在COMM_SILENT_COMMUNICATION 状态收到 Bus Sleep Mode 通知,进入COMM_NO_COM_NO_PENDING_REQUEST状态

  • 14
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值