CanNm模块笔记(三)

一:PNC概述

PNC(Partial Network Cluster) 即“局部网络集群”, 通过一些规则(通常按照功能类) 将车辆网络进一步划分为不同的“局域网”, 通过 PNC 管理其各种状态。

如下图:OBC和BMS组成一个PNC1,而MCU和BMS又组成了一个PNC2。

主要内容:

1.为了减少ECU的功耗,在主动总线通信期间应能够关闭通信栈。

2.为了控制这些ECU的关闭和唤醒,CAN NM提供了额外的算法。

3.NM 消息用户数据包含请求的部分网络(PN)的信息.

二:ERA和EIRA

CAN NM 通过两种略微不同的算法汇总请求的 PN 信息:

ERA:ERA 算法对接收到的 NM 消息进行评估,并存储每个网络的相关 PN 信息(根据 PN 过滤器掩码和 CRI 位)。因此,ERA 状态包含每个网络的哪些部分网络被其他 ECU 请求,并且必须因外部需求而处于活动状态的信息。

EIRA:EIRA算法对任何网络上接收或发送的NM消息进行评估,并将相关的PN信息(根据PN过滤器掩码和CRI位)合并为一个聚合状态。因此,该状态包含了整个ECU上哪些部分网络处于活动状态的信息。

三:部分网络网关和路由行为

3.1被动激活

3.2主动激活

四:配置项解释

1.PNC 在网络管理报文中的位置

2.PNC对应的ComM channel

1.EIRA表示集成汇总后的PNC信息

2.EIRA PNC信息传送到ComM模块所用的内部信号

1.CanNM中用来传送EIRA信息的PDU

2.PNC重置时间

CanNM中设置的包含PNC信息的PDU通过PDUR模块把信息传输到Com模块都PDU中

ComSignalPnc_EIRA_CAN_Rx信号绑定在ComIPdu_PNC_EIRA_CAN_Rx报文中

ComSignalPnc_EIRA_CAN_Rx信号就是ComM模块中PNC所关联的PNC信息

五:PNC信息传送流程

5.1配置中:

CanNM 中绑定PduPNC_EIRA_CAN_Rx

PduPNC_EIRA_CAN_Rx PDUR中被路由到ComIPdu_PNC_EIRA_CAN_Rx

ComSignalPnc_EIRA_CAN_Rx信号绑定在ComIPdu_PNC_EIRA_CAN_Rx

ComSignalPnc_EIRA_CAN_Rx信号被ComM模块使用

5.2代码中:

CanNm_RxIndication():从canif接收nm报文

      CanNm_PnFilterHandling() :过滤提取pn信息

CanNm_PnEiraCalculation():计算eira

PduR_CanNmRxIndication():把eira中的pn信息通过pdur传输给comM

ComM_ComCbk_ComSignalPnc_XXX_Rx():comM模块使用eira信号获取pnc信息

ComM_PncProcessRxSignalEira():处理eira提供的信息

六:APIs

1.ComM_GetCurrentPNCComMode()用来获取特定PNC的状态

2.ComM_RequestComMode()也可以设定某个PNC的通讯状态

七:总结

对于单个ECU来说:

网络管理的主要作用是通过网络管理报文来控制某一路通道的通讯状态

PNC上可以绑定若干路通道,通过PNC便可以控制多路通道的通讯状态。

注意:

CanNM实际需要配置成:

CanNm Timeout Time (lowest of all CAN channels) >CanNm PNC Reset Time + PNC Prepare Sleep Timer + Msg Cycle Time

### 关于 AUTOSAR PNC 组件在 Vector 工具中的配置 #### 使用 Vector DaVinci Configurator 进行 PNC 配置 Vector DaVici Configurator 是一款强大的工具,用于配置和验证基于 AUTOSAR 的 ECU 软件组件。对于 Powertrain Network Communication (PNC) 组件的配置,该工具提供了直观的操作界面和支持多种配置选项。 当涉及到具体配置时,例如设置 UserData Signal 发送,长度为两个字节且 BitPosition 为55,在 Motorola MSB 表示法下即 BIG_ENDIAN 方式中[^3],操作如下: 1. 打开 Vector DaVinci Configurator 并加载相应的项目文件。 2. 寻找并打开与目标 ECU 和通信接口关联的部分。 3. 定位到需要添加信号的消息定义区域。 4. 创建新的信号条目,并指定其属性如名称、数据类型、起始位置(本例中为55)、大小(这里指定了两字节),以及端序模式(此案例采用的是大端模式)。 5. 对新创建的信号执行必要的参数调整和其他设定,确保满足特定的应用需求。 6. 将更改保存至项目内以便后续编译或仿真测试使用。 ```python # Python伪代码展示如何通过API调用完成上述部分步骤(假设存在这样的Python API) from vector_davinci import Project, Message, Signal project = Project.load('path_to_project_file') # 加载项目文件 message = project.find_message_by_name('TargetMessageName') new_signal = Signal(name='NewUserdataSignal', start_bit=55, length_in_bits=16, endianess='big') message.add_signal(new_signal) project.save() ``` 此外,为了进一步优化开发过程,建议将这些手动配置活动纳入持续集成/持续部署(CI/CD)管道之中,从而实现更高效的自动化处理流程[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值