)
目录网络管理概述状态机Bus Sleep ModePrepare Bus Sleep ModeNetwork ModeRepeat Message StateNormal Operation StateReady Sleep StateNetwork State定时参数NM PDU网络管理报文数据格式源节点地址控制比特向量用户数据状态机梳理网络管理概述网络管理的重要任务是保证网络通信的安全可靠。网络管理可以实现初始化控制器资源启动网络检测、处理以及通知网络和节点的状态协调网络节点同步进入睡眠等功能。根据电源模式/KL15 转为 OFF 后 ECU 的通信状态本文档将 CAN(FD)网络中的ECU分为两类INM 类和DNM 类。INM类ECUECU只在电源模式/KL15由OFF切换到ON状态时开始通信由非OFF状态切换到OFF状态之后立刻停止或者延时通信一段时间的节点DNM类ECUECU 在电源模式/KL15 为 OFF 时可进行 CAN 通信并遵循AUTOSAR直接网络管理进行同步休眠和唤醒的节点。状态机图1 CanNm模式切换【Note:】上电之后在CanNm_PassiveStartup()或CanNm_NetworkRequest()函数接口被调用之前ECU需要维持在总线睡眠模式(Bus-Sleep Mode).Bus Sleep Mode如果ECU处在总线睡眠模式下CAN(FD)物理层检测到唤醒信号如报文或总线电平变化ECU应打开相应CAN(FD)通道的报文接收能力并启动T_WakeUpTimeout。若ECU在T_WakeUpTimeout时间内成功接收到一帧网络管理PDU则进入正常唤醒流程(调用CanNm_RxIndication)若ECU在T_WakeUpTimeout时间内一直未接收到网络管理PDU则在超时后ECU应关闭该通道的报文接收能力。在正常唤醒流程开启前ECU不应发出任何报文。如果CanNm模块处于总线睡眠模式且CanNm_NetworkRequest()函数接口被调用CanNm模块应进入网络模式并启用快发机制默认情况下CanNm模块应进入重复报文状态。如果CanNm 模块处于总线睡眠模式且CanNm_PassiveStartup ()函数接口被调用CanNm模块应进入网络模式默认情况下CanNm模块应进入重复报文状态。当 CanNm 模块在总线睡眠模式成功接收到一帧网络管理 PDU调用CanNm_RxIndication CanNm 模块应通知上层。理由为了避免网络与模式管理之间竞争条件和状态的不一致CanNm不会自动执行从总线睡眠模式到网络模式的转换。CanNm 只会通知需要做出唤醒决策的上层应用。总线睡眠模式下对网络管理PDU的接收处理必须根据ECU关闭/启动过程的当前状态进行。Prepare Bus Sleep Mode准备总线睡眠模式(Prepare Bus-Sleep Mode)的作用是保证在进入总线睡眠前节点有足够的时间停止其网络活动。在准备总线睡眠模式Prepare Bus-Sleep Mode下总线活动减少如存在于发送缓存中的报文被发送以清空发送缓存最终总线将不再有活动即没有任何报文被发送.CanNm 模块应处于等待睡眠模式一段时间这段时间由可配置参数CanNmWaitBusSleepTime 决定该时间超时后CanNm模块应离开等待睡眠模式并进入总线睡眠模式。当处于准备总线睡眠模式(Prepare Bus-Sleep Mode)的节点接收到网络管理报文时CanNm_RxIndication 函数接口被调用将向网络模式(Network Mode)转换默认情况下节点进入网络模式(Network Mode)中的重复报文状态Repeat Message State当节点处于准备总线睡眠模式并且 CanNm_PassiveStartup()被调用时CanNm模块应进入网络模式默认情况下CanNm模块应进入重复报文状态。当 CanNm 处于准备总线睡眠模式(Prepare Bus-Sleep Mode)且函数接口CanNm_NetworkRequest()被调用CanNm 将向网络模式(Network Mode)转换并启用快发机制默认情况下CanNm应进入网络模式(Network Mode)的重复报文状态(Repeat Message State)。原因这种情况下网络中的其他节点仍处在准备总线睡眠模式为避免它们进入总线睡眠模式并且通信应尽可能快地被恢复。Network Mode网络模式(Network Mode)由三种内部状态组成Repeat Message State/重复报文状态Normal Operation State/常规运行状态Ready Sleep State/准备睡眠状态当节点从总线睡眠模式(Bus-Sleep Mode)或准备总线睡眠模式(Prepare Bus-Sleep Mode)进入网络模式(Network Mode)时在默认情况下需进入重复报文状态(RepeatMessage State)。节点进入网络模式(Network Mode)后需开启CanNmTimeoutTime定时器。节点处于网络模式(Network Mode)成功接收或成功发送一帧网络管理报文后需重启NM-Timeout定时器如果NM模块从总线睡眠模式进入网络模式需进入重复报文状态(Repeat Message State)。这一过程需在规定的唤醒时间t内完成要求t≤T_WakeUp。图2 唤醒时间tRepeat Message State无论其睡眠条件是否满足重复报文状态(Repeat Message State)都可以使节点保持一段时间的活跃状态。该状态可以被用来监测在线节点。当节点进入重复报文状态(Repeat Message State)后需要开始或重新开始发送网络管理报文。节点处于重复报文状态(Repeat Message State)NM-Timeout定时器超时溢出时需要重启NM-Timeout定时器。节点在进入重复报文状态(Repeat Message State)后需要保持一段时间这段时间由参数 CanNmRepeatMessageTime 决定CanNmRepeatMessageTime 超时后CanNm模块将离开重复报文状态。节点离开重复报文状态(Repeat Message State)后若节点对网络通信有需求应进入常规运行状态(Normal Operation State)。节点离开重复报文状态(Repeat Message State)后需将重复报文请求标志位Repeat Message Request Bit清零。如果节点处于重复报文状态、准备总线睡眠模式、总线睡眠模式而CanNm_RepeatMessageRequest()服务被上层调用CanNm模块不应执行此服务。当节点进入重复报文状态(Repeat Message State)后需T_START_NM_TX时间内发送出第一帧网络管理报文。图3 Repeat Message State网络管理报文周期定义当节点被本地唤醒或远程唤醒后在 T_All_App_TX 时间内所有周期应用报文必须至少被发送一次。T_All_App_TX从唤醒事件开始计时。当节点被本地唤醒或远程唤醒后在T_AllPlaus_App_TX之后所有应用报文中的信号值都应为可信的。T_AllPlaus_App_TX从唤醒事件开始计时。节点进入重复报文状态(Repeat Message State)后若需要尽可能快地唤醒总线或恢复总线通信需使用快速发送机制。当节点启用快发机制时需使用 CanNmImmediateNmCycleTime 的周期来发送网络管理报文如图3所示。使 用 快 速 发 送 机制发送的网络管理报文的数量由参数CanNmImmediateNmTransmissions 决定。当节点发送完所有的快速周期报文后需按照参数CanNmMsgCycleTime规定的周期发送网络管理报文。若节点进入重复报文状态(Repeat Message State)并且快速发送机制未启动需按参数CanNmMsgCycleTime 规定的周期发送网络管理报文如图4所示。图4 Repeat Message State网络管理报文周期定义当节点从总线睡眠模式(Bus Sleep Mode)或准备总线睡眠模式(Prepare Bus Sleep Mode)进入重复报文状态(Repeat Message State)并成功发送第一帧网络管理报文后需在T_START_App_TX时间内将第一帧CAN应用报文发送出来如图5所示。图5 T_START_NM_TX参数定义Normal Operation State常规运行状态(Normal Operation State)用于保证只要对网络通信有需求任何一个网络管理节点都可以保持网络处于唤醒状态。当 节点进入常规运行状态(Normal Operation State) 时需按照CanNmMsgCycleTime 的周期发送网络管理报文。当节点处于常规运行状态(Normal Operation State)而 NM-Timeout定时器溢出时需要重启定时器。当节点处于常规运行状态(Normal Operation State)而本地睡眠条件满足时需进入准备睡眠状态(Ready Sleep State)。当节点处于常规运行状态(Normal Operation State)而接收到重复报文请求标志位Repeat Message Request Bit置位的网络管理报文时需进入重复报文状态(Repeat Message State)。当节点处于常规运行状态(Normal Operation State) 而CanNm_RepeatMessageRequest()函数接口被调用时需进入重复报文状态(Repeat Message State)并将报文中重复报文请求标志位Repeat Message Request Bit置位。Ready Sleep State当网络中仍有节点对通信有需求时处于准备睡眠状态(Ready Sleep State)的节点将推迟其向准备总线睡眠模式(Prepare Bus-Sleep Mode)的转换。当节点进入准备睡眠状态(Ready Sleep State)后需停止发送网络管理报文。当节点处于准备睡眠状态(Ready Sleep State)NM-Timeout定时器溢出后需进入准备总线睡眠模式(Prepare Bus-Sleep Mode)。当节点处于准备睡眠状态(Ready Sleep State)但因发生本地唤醒事件睡眠条件不再满足时需进入常规运行状态(Normal Operation State)。当节点处于准备睡眠状态(Ready Sleep State)接收到重复报文请求标志位Repeat Message Request Bit置位的网络管理报文后需进入重复报文状态(Repeat Message State)。当节点处于准备睡眠状态(Ready Sleep State)Repeat Message Request()函数接口被调用时需进入重复报文状态(Repeat Message State)并将网络管理报文中的重复报文请求标志位Repeat Message Request置位。Network State网络状态即“请求”和“释放”是AUTOSAR CanNm状态机的两个附加状态它们与状态机并行存在。网络状态表示上层软件是否需要在总线上通信网络状态被“请求”或者上层软件是否不需要在总线上通信总线网络状态随后被“释放”注意如果网络被释放一个ECU仍然可以通信因为其他ECU可能仍然在请求网络。函数接口CanNm_NetworkRequest()的调用将导致网络被请求。即CanNm模块应将网络状态更改为“请求”。函数接口CanNm_NetworkRelease ()的调用将导致网络被释放。即CanNm模块应将网络状态更改为“释放”。定时参数参数值容差描述CanNmRepeatMessageTime1500ms±10%节点在重复报文状态(Repeat Message State)中持续的时间CanNmTimeoutTime3000ms±10%节点进入网络模式(Network Mode)后即开启该定时器在准备睡眠状态(Ready Sleep State)中该定时器溢出后节点进入准备总线睡眠模式(Prepare Bus-Sleep Mode)CanNmWaitBusSleepTime2000ms±10%该定时器的作用是确保所有的节点都有时间停止其网络活动T_START_NM_TX25ms-该参数定义了节点从进入重复报文状态(Repeat Message State)到发出第一帧网络管理报文的最大允许时间间隔。 原则上这个时间越短越好。T_All_App_TX700ms-所有周期应用报文必须至少被发送一次的最大允许时间。该时间间隔从唤醒事件开始计时。T_AllPlaus_App_TX1000ms-所有应用报文中的信号值在此最大允许时间间隔之后均应为可信的。该时间间隔从唤醒事件开始计时。T_START_App_TX20ms-第一帧NM报文发出后第一帧应用报文发出的最大时间间隔。CanNmImmediateNmCycleTime20ms±10%节点启动快速发送机制时需以此参数作为网络管理报文的发送周期CanNmMsgCycleTime500ms±10%在网络模式(Network Mode)除去准备睡眠状态中若快速发送机制未被启动节点应以此参数作为网络管理报文的发送周期T_WakeUp75ms-处在Bus-Sleep Mode的节点从唤醒事件发生到转换到Repeat Message State的最大允许时间间隔CanNmImmediateNmTransmissions10-当节点处于重复报文状态并启用快速发送机制时节点使用CanNmImmediateNmCycleTime为周期发送网络管理报文的数量T_WakeUpTimeout3000ms~5000ms-本参数定义了在监测到CAN(FD)物理层唤醒事件后ECU应使能报文接收能力的最大允许时间。NM PDU每一个节点都会被分配一个唯一的标识符NODE_ID。网络管理报文需使用统一的基地址0x400唯一标识符NODE_ID网络管理报文数据格式源节点地址源节点地址Source Node Identifier在 PDU中的位置必须设置为Byte 0。每一个参与直接网络管理的节点都会被分配一个唯一的标识符NODE_ID存放于网络管理报文的Byte0Source Node Identifier中。控制比特向量控制比特向量Control Bit Vector在 PDU中的位置必须设置为Byte 1。控制比特向量中需包括Bit 0: 重复报文请求标志位(Repeat Message Request Bit)信号值描述为0x0该报文发送节点未请求其他节点进入重复报文状态0x1该报文发送节点请求其他节点进入重复报文状态Bit 4: 主动唤醒网络标志位(Active Wakeup Bit)信号值描述为0x0该报文发送节点未主动唤醒网络被其它节点唤醒0x1该报文发送节点主动唤醒网络重复报文请求标志位(Repeat Message Request Bit)的默认值为 0。当节点由于CanNm_RepeatMessageRequest()接口被调用从常规运行状态(Normal Operation State)或准备睡眠状态(Ready Sleep State)进入重复报文状态(Repeat Message State)时需将其发送的网络管理报文中的重复报文请求标志位置1直到其离开重复报文状态(Repeat Message State).当节点由于本地睡眠条件不再满足CanNm_NetworkRequest ()从总线睡眠模式(Bus-Sleep Mode)或准备总线睡眠模式(Prepare Bus-Sleep Mode)进入重复报文状态(Repeat Message State)时需将主动唤醒网络标志位(Active Wakeup Bit)置1。节点离开网络模式后需将主动唤醒网络标志位(Active Wakeup Bit)清零。控制比特向量中未使用的位须置0。用户数据在NM PDU中有6个字节(User Data Byte 0~5)用于传输用户数据信息。在用户数据中WUS元素代表控制器的唤醒源。当节点从总线睡眠模式(Bus-Sleep Mode)或准备总线睡眠模式(Prepare Bus-Sleep Mode)进入重复报文状态(Repeat Message State)时需将WUS置为对应的编码值。当处于网络模式中时WUS的编码值不允许变化。节点离开网络模式后需将WUS清零。对WUS的系统通用编码(0x0~0xA)定义详见表中。每一个ECU具体WUS的编码定义(0x10~0xFF)将在系统设计阶段详细定义。编码值0x0defaultValue0x1wakedUpByNetwork0x2KL15OnOrPowerModeOn0x3~0xAreserved for future0x10~0xFF……(ECU specific)当ECU的NM模块处于重复报文状态时须将ECU发送的Nm报文中的RepeatSts位设为0x1。当 ECU 的 NM 模块未处于重复报文状态时须将 ECU 发送的 Nm 报文中的RepeatSts 位设为0x0。用户数据中未使用的位应设为0x0未使用的字节应设为0x00。状态机梳理节点状态总线睡眠模式网络模式预睡眠模式重复报文状态常规运行状态准备休眠状态控制器状态睡眠工作是否发送应用报文否是否是否发送网络管理报文否是否定时器行为NM-Timeout Timer关闭开启接收NM/发送NM/超时后均重启接收NM重启超时后节点进入预睡眠模式关闭Repeat Message Timer关闭开启每发送一帧NM加1达到计数值后进入常规运行状态关闭CanNm Message Cycle Timer常规模式关闭装载值为CanNmMsgCycleTime关闭NM立即发送模式-被动激活关闭装载值为CanNmMsgCycleTime不影响关闭NM立即发送模式-主动激活关闭装载值为CanNmImmediateNmCycleTime不影响关闭总线负载降低模式-发送NM关闭不影响装载值为CanNmMsgCycleTime关闭总线负载降低模式-接收NM关闭不影响装载值为CanNmMsgReducedTime关闭Wait Bus-Sleep Timer关闭开启超时后进入总线睡眠模式