1. PNC/VFC
-
PNC:部分网络簇,在整车网络中,某些功能需要多个节点参与,节点之间通过信息交互(Signal:信号,包含在PDU中)实现功能。这几个节点就是一个簇(Cluster),这个簇映射到网络信号User Data中的一个Bit位,此Bit位置位与否标识着对应功能是否要启用或者禁止。所以,不同的PNC #n表示不同的网络簇,意味着对应的ECU是否需要通信。
-
VFC:虚拟功能簇。SWC之间通过Port交互信息,实现一个或者多个车辆功能。需要使能某个功能时,通过特定的SWC(VFC-Controller)置位VFC #n( = 1)即可请求对应的通信功能,使得不同SWC之间可以交互信息,对应功能开启;如果不需要某个功能时,复位对应的VFC #n( = 0 )即可关闭通信,功能禁止。VFC #n状态信息可以通过RTE Port传递给BSW。
PNC通讯流程
VFC对应功能,PNC对应局部网络,功能的启用和禁止依附于对应局部网络激活与否
暂时无法在飞书文档外展示此内容
2. NM State
2.1 睡眠模式(Bus-Sleep Mode)
休眠状态,当ECU没有本地网络唤醒源以及远程唤醒请求源时,控制器就会进入此睡眠模式,ECU在该状态下就是一个低功耗的状态,大部分耗电外设均已经关闭,仅仅留下一些唤醒源的检测,此模式下NM报文只收不发,APP报文不收不发,这是整车上所有ECU的协同睡眠状态,当ECU上电初始化时默认进入该状态。
2.2 预休眠模式(Prepare Bus-Sleep Mode)
准备进入休眠的一个状态,APP报文不收不发,NM报文只收不发,ECU进入到这个状态时处于只收NM帧的状态,它会等待一段时间 T_WAIT_BUS_SLEEP让车上所有的ECU实现一起休眠
2.3 重复报文状态(Repeat Message State,RMS)
NM报文可收可发,APP报文可收可发
-
Normal immediate state :以快速周期(immediateNMCycleTime)发送N(immediateNM_times)次NM帧,发送完进入Normal Transmit State
-
Normal Transmit State:正常周期(MessageCycleTime)发送NM报文
2.4 正常工作状态(Normal Operation State,NOS)
此状态下NM报文可收可发,APP报文可收可发,NOS可以说明ECU处于一种真正的唤醒状态,可正常进行通讯。
2.5 准备睡眠状态(Ready Sleep State,RSS)
从工作状态准备进入休眠时必须要经过这个状态,主要是做休眠之前的一些准备工作,就比如说有些数据要存储EEPROM还在写操作中,ESCL电子转向柱锁解闭锁动作还未完成,也有可能是电机控制器检测到电机未处于停止状态,也就是说这个状态是要让休眠前的准备工作都要完成即ECU的外设要都处于空闲的状态,在RSS状态时NM报文只收不发,APP报文可收可发。
3. 时间参数
-
T_REPEAT_MESSAGE:RMS状态保持最长时间
-
T_NM_TIMEOUT:NM模式最长保持时间
-
T_WAIT_BUS_SLEEP:确保节点停止所有活动定时器,预休眠最大时间
-
T_STARTTX_AppFrame:发送NM报文后延迟发送APP报文间隔
-
T_NM_ImmediateCycleTime:快速发送网络报文周期时间
-
T_NM_MessageCycle:正常周期网络报文发送时间
-
T_START_NM_TX:进入RMS状态第一帧NM报文发送时间
-
T_WakeUp:NM报文最大发送间隔
-
T_MESSAGE_TIMEOUT:NM报文发送超时时间
4. NM类型
-
FULL:该通道具备网络管理模块的所有功能,因此本 ECU 具备保持总线唤醒的能力,同时可以由 NM 向 ComM 模块指示何时进入网络同步休眠状态。
-
PASSIVE:该通道的网络管理模块处于 PASSIVE 模式,即本身只接收网络管理报文,但不向外发送网络管理报文。本 ECU 不具备保持总线唤醒的能力,但可以根据其他 ECU的网络管理报文,向 ComM 模块指示进入网络同步休眠状态。
-
LIGHT:该通道不具有网络管理模块,因此不会接收或发送网络管理报文。但可以通过配置定时器,在没有通信需求的一段时间以后自动进入休眠状态。该配置项一般用于需要延迟休眠的场景。
-
NONE:该通道不具有网络管理模块,因此不会接收或发送网络管理报文。一旦进入FULL_COM模式就不会退出,也不会自动进入休眠状态,只有通过 ECU 电源才能控制网络关闭。
5. 唤醒方式
-
主动唤醒源:承担着主动唤醒网络责任的唤醒源。比如:KL15硬线,User请求,ERA信号等。
-
被动唤醒源:不需要承担唤醒网络责任的唤醒源。比如:收到NM Msg。
-
主动唤醒:由主动唤醒源触发,调用CanNm_NetworkRequest()接口唤醒网络的方式称为网络主动唤醒。
处于休眠状态的主板,在由主动唤醒源唤醒后,会从 Bus-Sleep 模式切换到Network 模式的Repeat state,进行快发报文,以 CanNmImmediateNmCycleTime(例:20ms) 为周期,发送 CanNmImmediateNmTransmissions(例:10) 次,之后进入慢发报文,以 CanNmMsgCycleTime(例:200ms) 为周期,在Repeat Message Timer(例:1000ms)定时器到时时跳转到 Normal State,在此状态会一直发NM报文和应用报文,当满足休眠条件则切换到 Ready state,此时主板不会再发送NM报文,只会发送APP应用报文。
-
被动唤醒:由被动唤醒源触发,调用CanNm_PassiveStartUp()接口唤醒网络的方式称为网络被动唤醒。
处于休眠状态的主板,在收到NM报文唤醒时,会从 Bus-Sleep 模式切换到Network 模式的Repeat state,进行慢发NM报文,以 CanNmMsgCycleTime(例:200ms) 为周期,在Repeat Message Timer(例:1000ms)定时器到时时跳转到 Ready state, 此时主板不会再发送NM报文,只会发送APP应用报文。
6. PDU格式
6.1 字节流
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
---|---|---|---|---|---|---|---|
NodeId | CBV | UserData1 | UserData2 | UserData3 PnIfo1 | UserData4 PnIfo2 | UserData5 | UserData6 |
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
---|---|---|---|---|---|---|---|
Rsv | Partial Network Information | Partial Network Learnin | Active WakeUp | NM Coordinat Or Sleep Ready | Rsv | PN Shutdown Request | Repeat Message |
-
CBV_Bit0:重复消息状态请求标志(Repeat Message Request Bit)
-
0:不请求重复消息状态
-
1:请求重复消息状态
-
-
CBV_Bit1:PN关闭请求位(PNSR)
-
0:NM报文不包含同步PN关闭请求
-
1:NM报文包含同步PN关闭请求
-
-
CBV_Bit3:网络管理统筹睡眠标志 (NM Coordinator Sleep Bit)
-
0:主统筹节点不要求开始同步关闭
-
1:主统筹节点要求开始同步关闭
-
-
CBV_Bit4:激活唤醒标志(Active Wakeup Bit)
-
0:节点不唤醒网络(被动唤醒)
-
1:节点唤醒网络(主动唤醒)
-
-
CBV_Bit5:PN学习位(PNL)
-
0:PNC学习未被请求
-
1:PNC学习被请求
-
-
CBV_Bit6:部分网络标志(Partial Network Information Bit)
-
0:网络管理报文不包含部分网络管理请求信息
-
1:网络管理报文包含部分网络管理请求信息
-
6.2 过滤算法
-
CanNmPnInfoOffset = 4,Pn Info在PDU中偏移的距离
-
CanNmPnInfoLength = 2,Pn Info在PDU中的长度
-
CanNmPnFilterMaskByteIndex= 0,设置CanNmPnFilterMaskByteValue = 0x01;
-
CanNmPnFilterMaskByteIndex= 1,设置CanNmPnFilterMaskByteValue = 0x97。
7. ERA/EIRA
ERA:可以理解为外部PN请求,比如:接收到其他ECU发送来的网络管理报文,PNI置位,PNC有效。
EIRA:可以理解为外部PN请求和内部PN请求,外部PN请求和ERA一样,内部PN请求可以理解为不同channel转发过来的PN请求。
内部请求实际是通过signal走COM传递给ComM,这里简单提一下,后面我们在讨论ComM和PN的关系。可以把ERA和EIRA看作信号,通过COM层标准收发接口进行信息交互。既然依赖COM,那么CanNM此时可以看作底层模块,通过PduR_CanNmRxIndication()接口通知到PDUR,PDUR再路由给COM模块,之后ComM通过COM层信号接口获取PN请求的状态信息。
8. UserData
-
CDD直接访问,不能使能PN
-
CanNmComUserDataSupport配置为False
-
CanNmUserDataEnabled配置为True
-
NmComUserDataSupport配置为False
-
NmUserDataEnable配置为True
-
-
SWC->RTE->COM访问
-
CanNmComUserDataSupport配置为True
-
CanNmUserDataEnabled配置为True
-
NmComUserDataSupport配置为True
-
NmUserDataEnable配置为True
-
9. Coordinator(协调器)
NM模块使用协调算法协调连接到ECU的所有或一个或多个独立网络子集NM的关闭。执行NM协调功能的NM被认为是NM Coordinator。