一: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