0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从CanNM模块分析PN功能

冬至配饺子 来源:开心果 Need Car 作者:开心果 Need Car 2022-08-24 18:03 次阅读

上一篇我们从CanNM模块分析PN功能,本篇接着从ComM模块分析。因为网络管理的PN功能主要由这两个模块控制。不清楚CanNM模块与PN关系的可以参阅前文Autosar网络管理:从CanNM模块看Partial Networking。

对于每一个PNC(partial network cluster)的通信状态,ComM模块都有独立的一套状态机进行管理。当CanNM从CanIf层拿到NM PDU以后,会将User Data部分数据独立拆解出来,通过PDUR、COM,以信号的形式最终送给ComM模块。为什么将User Data部分独立拆解出来?因为User Data部分包含着PNC信息,该信息取决于项目需求:需要多少PNC,就开辟多少User Data空间。也就是说,ComM获取的PNC信息与NM PDU中User Data 一一对应。

使能或是关闭PNC,最终的表现就是允许PNC关联的Node(或者说Channel)通信与否。我们知道应用报文(Com层对应的Pdu)的发送/关闭由BswM管控,如果ECU收到的PNC关联其对应的某个Channel,ComM模块就会进行通信请求(进行状态切换),BswM获取请求信息后,使能或者禁止Com层对应的I-PDU groups通信。

1

ComM对PNC管理

前面我们说PN功能开启需要在CanNM模块打开CanNmPnEnabled参数,而在ComM模块还需要将配置参数

ComMPncSupport

打开。在Autosar中,规定CanNmPnEnabled和ComMPncSupport需要存储在NVM中,以便诊断服务使用,但是在实际的项目开发中,是否这样实现还是需要看具体项目需求。

ComM管理每一个PNC状态的切换,当状态切换时,均需要通过接口BswM_ComM_CurrentPncMode()通知到BswM,以便BswM对Com层的

I-PDU groups

进行通信的管控。ComM在管控每个PNC状态机之前,首先要获取对应Channel的PNC信息,PNC信息通过Com层标准信号接口获取ERA signal或者EIRA signal。如果signal是多字节的,一般会在Com层配置成uint8_n类型。Autosar里规定PNC对应的信号,最大可以包含56个PNC状态位信息,这最大56是如何来的呢?对于一个经典CAN帧,一个PDU中最多携带8 byte有效数据,在CanNM模块中,CBV字节是必须的,而NodeID是可选则,这样在CanNM层级最多可以有7 byte的User Data,因此ComM最多可以管控7*8 = 56个PNC。虽然NodeID在CanNM是可选的,但还是要识别和过滤NM PDU,当NodeID在CanNM可选时,可以依赖xxIf层或者驱动层对NM PDU过滤和识别,驱动层负责将有效ID范围的NM PDU送给xxIf层,xxIf层通过识别ID,负责将该PDU发送给对应的上层,比如:xx_TP层,xx_NM层等。

一直在说ComM通过信号获取对应的PNC信息,这里我们再具体说一下,对ComM来说,获取的是 EIRA 或者 ERA信号,这两个信号独立。可以使用其中一个,也可以均使用,ComM通过Com_ReceiveSignal()接口获取。

ComM既然会接收信号,当然也会将PNC状态信息通过信号发送给对应的通信总线。

ComM模块可以处理EIRA 或者ERA信号的接收,但是发送只能处理EIRA信号。

2

ComM PNC状态机对于每个Partial Network,会对应一个PNC状态机,因为PNC最多可以有56个,因此ComM最多可以管理56个PNC状态机。注意:PNC和ComM层的Channel不是一个概念,ComM的Channel对应具体的物理总线数。

在ComM模块中,

一个Channel可以对应一个PNC,也可以对应多个PNC

ComM管理的PNC状态机包括两大Mode:PNC_FULL_COMMUNICATION、PNC_NO_COMMUNICATION。PNC_FULL_COMMUNICATION模式又包含三个子状态:PNC_PREPARE_SLEEP、PNC_READY_SLEEP、PNC_REQUESTED。

poYBAGMF9tCAZn7_AADpjq0Q9MM654.png

对上图状态行为进行解读:

PNC_NO_COMMUNICATION主状态行为

系统上电时,PNC默认状态即PNC_NO_COMMUNICATION。如果某个PNC进入PNC_NO_COMMUNICATION状态后,没有收到内部或者外部请求,则状态不跳转。(1)

EcuM或者NM模块调用ComM_EcuM_WakeUpIndication()接口,且配置参数ComMSynchronousWakeUp = TRUE

,PNC的状态由PNC_NO_COMMUNICATION切换到PNC_FULL_COMMUNICATION::PNC_PREPARE_SLEEP状态。且该PNC对应的ComMPncPrepareSleepTimer(

ComMPncPrepareSleepTimer

> 0)启动,同时通知到BswM,PNC状态切换。

(2)EcuM模块调用ComM_EcuM_WakeUpIndication()接口,且配置参数ComM_PncWakeUpEnabled = TRUE

,PNC的状态由PNC_NO_COMMUNICATION切换到PNC_FULL_COMMUNICATION::PNC_PREPARE_SLEEP状态。且该PNC对应的ComMPncPrepareSleepTimer启动(ComMPncPrepareSleepTimer

> 0),同时通知到BswM,PNC状态切换。

(3)如果PNC请求信号收到(至少一个bit在EIRA 中置位),PNC的状态由PNC_NO_COMMUNICATION切换到PNC_FULL_COMMUNICATION::PNC_READY_SLEEP 状态。

(4)如果ComMUser调用ComM_RequestComMode()接口请求 FULL_COMMUNICATION,PNC的状态由PNC_NO_COMMUNICATION切换到PNC_FULL_COMMUNICATION::PNC_REQUESTED 状态。

(5)

如果PNC请求信号收到(至少一个bit在ERA 中置位)

,AND

ComMPncGatewayEnabled= TRUE

,AND

ComMPncGatewayType != NONE

。PNC的状态由PNC_NO_COMMUNICATION切换到PNC_FULL_COMMUNICATION::PNC_REQUESTED 状态。

PNC_FULL_COMMUNICATION主状态行为

该状态下,所有与此PNC关联的通道均进入Full Communication状态。

进入PNC_REQUESTED子状态工况:

ComMUser对此PNC请求COMM_FULL_COMMUNICATION;

ERA信号中的PNC置位,且此PN是同步的。

进入PNC_PREPARE_SLEEP子状态工况:

接收的EIRA信号PNC未置位;

EcuM通知ComM,Passive唤醒事件发生,且是同步唤醒,且ComMPncPrepareSleepTimer > 0。

进入PNC_READY_SLEEP子状态工况:

此PN的所有ComMUser请求COMM_NO_COMMUNICATION, AND 接收到的EIRA信号PNC置位 ,AND 所有的ERA信号PN未置位,且此PN是同步的。

3

PNC Gateway

使能PNC的网关功能,需要在ComM中配置参数

ComMPncGatewayEnabled = TRUE

。默认的网关类型是:COMM_GATEWAY_TYPE_ACTIVE。PNC的网关类型分为:Active PNC Gateway和Passive PNC Gateway 两种。

ComM通过ERA或者EIRA与其他ECU交互PNC信息。对于ERA,

仅当PNC网关功能开启

分配给多个ComM通道时可用

。每个PNC在位向量中使用相同的位位置,由 PNC ID 定义。比如:定义PNC1、PNC2,这两个PNC均长度均为2 byte,其中bit0均表示关联某个ECU的指定Channel与否。

ComM负责协调网络的网关行为,即将PNC激活请求从一个通道路由到其他通道。通过发送 EIRA TX 信号完成路由通道的路由取决于该通道的网关类型

PNC请求在Passive通道

如果在网关类型为PASSIVE的通道上接收到ERA=1的请求,则该请求不会镜像回该通道,即该请求不会在EIRA Tx 信号中设置,并且不会路由到网关类型为PASSIVE的通道。请求仅路由到网关类型为ACTIVE 的通道。

PNC请求在active通道

如果在网关类型为 ACTIVE 的通道上通过 ERA=1接收到PN请求,则该请求会镜像回此通道,且路由到所有其他协调通道。

PNC请求在网关类型为NONE的通道

如果在网关类型为NONE的通道上通过ERA=1接收到请求,则该请求不会存储在内部ComM ERA信号中,即该PNC请求被忽略。因此,请求不会镜像回此通道,也不会路由到任何其他通道,即请求不会设置在EIRA发射信号中。网关类型为NONE的通道忽略通过ERA信号接收的PNC请求,但它们处理通过 EIRA Rx 信号接收的PNC请求。在这种情况下,目标PNC状态不受通过 ERA 接收的PNC请求影响,但通过EIRA=1 接收的 PNC 请求而进行状态改变。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    145

    文章

    1927

    浏览量

    130606
  • AUTOSAR
    +关注

    关注

    10

    文章

    350

    浏览量

    21455
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27466
收藏 人收藏

    评论

    相关推荐

    如何使用PN532芯片模拟NFC卡?

    我正在尝试使用 PN532 芯片模拟 NFC 卡 - 因此将 PN532 放在桌子上,使用 Android 或 iOS 设备,能够芯片读取数据。这个想法是使用 PN532 的主动
    发表于 06-01 08:42

    PN码的跟踪

     pn码的捕获只能使本地的pn码与信号的pn码实现同步,而能使本地的pn码保持与接收的pn码精细同步的
    发表于 08-03 10:12 3次下载

    WL-PBM-PN网关实现PROFINET转PROFIBUS功能

    WL-PBM-PN网关,用于将多个PROFIBUS-DP站设备集成入PROFINET网络,实现PROFINET转PROFIBUS功能。配上网关专用的GSD文件,实现PROFINET主站(西门子S7-1500或S7-1200等)
    发表于 03-28 19:50 1670次阅读
    WL-PBM-<b class='flag-5'>PN</b>网关实现PROFINET转PROFIBUS<b class='flag-5'>功能</b>

    PN/PN Coupler模块进行控制器与控制器之间的相关通信

    在TIA安全系统中S7-1500F和S7-1200F 的PROFINET接口之间可以借助 PN/PN Coupler 模块进行控制器与控制器之间的安全相关的通信。
    的头像 发表于 07-25 17:06 6468次阅读

    AUTOSAR架构中CanNm模块的问题解答

    CanNm模块配置完成后,基本不需要和其他非标准AUTOSAR模块进行交互(除了user data数据的使用),但是在深入理解CanNm模块
    的头像 发表于 11-28 10:38 4686次阅读

    AUTOSAR架构下CanNM User Data的概念及配置

    CanNm模块配置完成后,基本不需要和其他非标准AUTOSAR模块进行交互,但是User Data的使用可以通过SWC-->RTE-->COM方式使用,也可以通过CDD直接Set/Get User Data的方式使用,在实际配置
    的头像 发表于 12-06 10:04 7410次阅读

    PN/PN Coupler模块概述

    PN/PN Coupler 用于连接两个PROFINET网络进行数据交换。最多可以传送256个字节的输入和256个字节的输出。
    的头像 发表于 02-08 14:30 4696次阅读

    电源模块预偏置功能原理分析

    本文用于分析电源模块预偏置功能(prebias)。
    的头像 发表于 03-08 14:44 3709次阅读
    电源<b class='flag-5'>模块</b>预偏置<b class='flag-5'>功能</b>原理<b class='flag-5'>分析</b>

    主设备WiFi模块设备WiFi模块功能介绍

    主设备WiFi模块就是一台低配置的电脑,供电后可以自主运行。理论上,只要资源足够、接口支持,电脑上可以实现的功能模块都可以实现。设备WiFi模块
    的头像 发表于 04-19 14:47 1593次阅读
    主设备WiFi<b class='flag-5'>模块</b>,<b class='flag-5'>从</b>设备WiFi<b class='flag-5'>模块</b><b class='flag-5'>功能</b>介绍

    PN/PN耦合器功能概述

    PN/PN 耦合器用于连接两个不同 PROFINET 子网,实现多个控制器不同子网间的可靠数据交换
    的头像 发表于 10-11 16:49 5690次阅读
    <b class='flag-5'>PN</b>/<b class='flag-5'>PN</b>耦合器<b class='flag-5'>功能</b>概述

    pn8024r引脚功能和电压功能

    PN8024R是一款具有重要功能的集成电路,广泛应用于电子设备中。本文将详细介绍PN8024R引脚功能和电压功能,以帮助读者更好地了解和使用
    的头像 发表于 12-27 10:58 1.1w次阅读

    DCM模块唤醒网络主动与被动唤醒机制探讨

    CanNm专题机Prepare Bus-Sleep Mode切换到Nework Mode的Repeat Message State是如果是通过CanNm_PassiveStartUp()条件切换的就是被动唤醒,如果是通过
    发表于 03-15 11:20 887次阅读
    DCM<b class='flag-5'>模块</b>唤醒网络主动与被动唤醒机制探讨

    EtherNet/IP站转Profinet站协议转换网关(JM-PN-EIP)

    为各位全面、细致地讲解该设备的功能、参数以及配置的方式。 1.产品概述 1.1 产品功能 捷米特JM-PN-EIP是自主研发的一款Profinet
    的头像 发表于 08-12 14:20 279次阅读
    EtherNet/IP<b class='flag-5'>从</b>站转Profinet<b class='flag-5'>从</b>站协议转换网关(JM-<b class='flag-5'>PN</b>-EIP)

    Profinet站转CAN协议转换网关(JM-PN-CAN)

    地讲解该设备的功能、参数以及配置的方式。 一,产品主要功能 捷米特JM-PN-CAN是自主研发的一款Profinet功能的通讯网关。捷米
    的头像 发表于 08-12 14:28 221次阅读
    Profinet<b class='flag-5'>从</b>站转CAN协议转换网关(JM-<b class='flag-5'>PN</b>-CAN)

    Modbus(TCP)转Profinet总线协议转换网关(JM-TCP-PN

    大家详尽阐述该设备的功能、参数以及具体的配置方式。 一,产品主要功能 1、捷米特JM-TCP-PN该网关的核心功能是将Profinet协议转换为Modbus TCP协议,使得Profi
    的头像 发表于 08-16 10:14 294次阅读
    Modbus(TCP)转Profinet<b class='flag-5'>从</b>总线协议转换网关(JM-TCP-<b class='flag-5'>PN</b>)