环球热门:Autosar PN网络管理:PNC信息的收/发流程
2023-06-21 15:36:36
个人图书馆-新用户3849ayns
(相关资料图)
Autosar局部网络管理(PN:Partial Network
当
(3)PduR模块根据配置的路由路径,将
(4)ComM通过COM的标准接口Com_ReceiveSignal(),即可读取
2、终端ECU的PNC信息接收
首先讨论,何为终端ECU?如下图,一般将网关ECU下连接的ECU称为终端ECU,终端ECU不再外接其他ECU。注意:这里讨论同种总线类型连接的ECU,eg:CAN总线。下图中的ECU1~ECU8均可看作终端ECU。终端ECU与网关ECU的不同点:终端节点不需路由PNC信息,因此,可以不使用ERA,仅配置EIRA即可。终端节点PNC信息的接收流程如下所示:3、ERA_Rx_Signal/EIRA_Rx_Signal的PNC #n何时复位( = 0)?
既然CanNM只将PNC #n = 1的信息送给COM,ERA_Rx_Signal/EIRA_Rx_Signal的PNC #n何时复位( = 0)?答:PnResetTimer超时。当收到外部或者内部PNC #n请求时,PnResetTimer重置(eg:2.95s),如果外部或者内部不再请求PNC #n,当ERA Timer和EIRA Timer超时,将CanNM存储的PNC #n复位(=0),并通知COM更新ERA_Rx_Signal、EIRA_Rx_Signal的PNC #n( = 0)。
4PNC信息的发送流程发送PNC信息需要3步:Step1:ComM根据每个PNC的局部网络状态,置位/复位COM中的PNC #n Bit;Step2:CanNM请求发送NM Msg;Step3:COM层中的PNC信息(User Data)+ CanNM Header(NID+CBV) = NM PDU,调用发送接口完成NM PDU的发送。如下所示:PNC #n Bit何时置位(= 1),何时复位(= 0)呢?按照Autosar的解释:当PNC进入PNC_REQUESTED子状态时,对应的PNC #n置位(= 1),当PNC离开PNC_REQUESTED子状态时,对应的PNC #n复位(= 0)。这里的PNC #n置位/复位,由ComM调用Com_SendSignal()接口完成,操作的对象为EIRA_Tx_Signal,所以,ComM置位/复位COM层的发送PNC #n Bit。发送的PNC信息存在何处呢?每个Channel,发送的PNC信息存储在COM的EIRA_Tx_Signal中。每当CanNM的CANNM_MSG_CYCLE_TIME到期以后(eg:1s),CanNM触发NM Msg的发送请求(Trigger),此时CanNM的User Data部分信息为空(Empty),需要通过PduR到COM层获取User Data(PNC信息)数据,形成完整的NM PDU,之后调用CanIf_Transmit()将NM PDU发送出去,如下所示:5PNC状态机切换示例假设:某网关节点包含两路CAN:CAN1和CAN2,且均关联PNC 16,CAN1和CAN2的PNC Gateway类型为Active。提示:不考虑User请求。如下所示:CAN1和CAN2对应的局部网络PNC16的网络状态如何变化呢?发送的网络管理报文,PNC 16 Bit如何变化呢?如下所示:
T0时刻,假设CAN1收到一帧PNC 16 = 1(局部网络请求)的网络管理报文,ComM通过CAN1的ERA1_Rx_Signal获取PNC16 请求信息,PNC 16的网络状态由PNC_NO_COMMUNICATION模式切换到PNC_REQUESTED状态,由于PNC16状态进入PNC_REQUESTED状态,COM层的EIRA1_Tx_Signal、EIRA2_Tx_Signal对应的PNC 16 Bit置位(= 1),所以,CAN1和CAN2发送的NM Msg中,PNC 16 = 1。此时,ERA1 Timer和ERA2 Timer重置为2.95s(假设:PnResetTimer = 2.95s),CAN1和CAN2共用的EIRA Timer也重置为2.95s;T0~T1期间,CAN1和CAN2每次发送网络管理(eg:周期1s),由于PNC 16 = 1,EIRA Timer均重置为2.95s;T1时刻,由于CAN1和CAN2均没有收到内部和外部的PNC 16请求,ERA1 Timer 、ERA2 Timer超时,使得PNC 16局部网络释放,PNC 16局部网络状态由PNC_REQUESTED进入PNC_READY_SLEEP。同时,ComM将EIRA1_Tx_Signal、EIRA2_Tx_Signal对应的PNC 16 Bit复位(= 0)。T2时刻,EIRA Timer超时,PNC 16网络切换到PNC_PREPARE_SLEEP状态,同时启动ComMPncPrepareSleepTimer(eg:25ms);T3时刻,当ComMPncPrepareSleepTimer超时以后,PNC 16的网络状态进入PNC_NO_COMMUNICATION模式,同时,PNC 16关联的Tx_PDU_Group停发,Rx_PDU_Group不再接收。所以,当PNC #n释放时,对应PNC #n的Tx_PDU_Group会延时2.95s+25ms停发。注意:节点在不同的网段,PNC #n Bit置位/复位的时机需要保持一致;CAN1收到PNC 16 = 1的网络管理报文,调用CanNM_PassiveStarup()接口,完成被动唤醒。之后,PNC 16 = 1信息路由到CAN1和CAN2,ComM主动请求两个网段的网络(调用Nm_NetworkRequest()),使得CAN1和CAN2网络状态由BSM(Bus Sleep Mode)进入RMS(Repeat message state)状态,如果CAN1和CAN2使能了快发模式,则进入开发模式。拓展思考
假设:VCU包含3路CAN(CAN1、CAN2、CAN3),各路CAN与PNC的关联关系如下所示:问题:CAN3收到的网络管理报文中,PNC18 = 1,会路由给CAN1吗?答:不会。为什么呢?每个节点接收PNC信息的时候,只关注本节点的PNC,比如:CAN3,只接收PNC16、PNC19、PNC21、PNC23。如果收到PNC18,CAN3会直接忽略。