以下文章来源于汽车电子与软件,作者不可说
一、引 入
在复杂的汽车电子系统中,ECU往往集成了多种通信网络,以适应不同的数据传输需求。为了确保每个网络都能被准确无误地识别和管理,每个网络都被赋予了一个独特的网络句柄,这个句柄就像网络的“身份证”,确保了网络通信的有序进行。通信管理(ComM)模块,作为网络通信的指挥官,会根据系统需求向这些网络发出通信模式的请求。它凭借自身丰富的配置信息,能够清晰地知道哪个句柄对应着哪种类型的网络,从而做出精准的指令调度。
在CAN这一通信协议中,ComM模块会借助CanSM模块来实现对CAN网络通信模式的灵活控制。CanSM模块,会根据ComM模块发出的模式请求,迅速调整配置好的CAN网络的通信模式,以满足系统对通信性能的不同要求。
为了实现这一功能,CanSM模块与CanIf模块之间建立了紧密关系。CanIf模块,这个负责配置好的CAN控制器和CAN收发器控制流抽象的“桥梁”,会密切关注CAN控制器和收发器模式的任何变化。一旦检测到变化,CanIf模块会立即通过其API将这一信息传达给CanSM模块。CanSM模块在接收到这些通知后,会结合当前CAN网络状态机的状态(这是CanSM模块为每个配置的CAN网络实现的状态管理机制),综合判断后,向ComM模块和BswM发出相应的通知。
另外,CanSM模块并不会随意地向ComM模块报告其通信模式。除非ComM模块明确提出了通信模式的请求,否则在初始化完成后,CanSM模块会保持沉默,不会主动向ComM模块透露其当前的通信模式设置。这一设计旨在提高系统的效率和稳定性,避免不必要的通信开销。
二、功 能
CanSM主要功能包括对CAN网络的状态转换进行管理,涵盖网络的启动、停止、睡眠和唤醒等操作。通过CanSM模块,系统能够根据应用需求或网络管理请求,动态调整CAN网络的工作状态,从而优化网络资源的利用并满足不同的运行场景需求。
关键的功能可分为如下三类:
状态管理:监控CAN网络的状态,并根据请求执行状态转换。
错误处理:检测和处理CAN网络中的错误,确保网络的可靠性。
与网络管理模块的协作:与CAN Network Management(CanNM)模块协同工作,实现网络管理功能。
2.1 状态管理
CAN网络的状态转换是CanSM功能实现的关键一环,这些状态不仅反映了网络的当前运行状况,还指导着网络如何根据需求进行灵活调整。
CAN网络的状态主要包括以下几种:
CAN_NO_COM:这一状态意味着网络尚未启动,没有任何通信活动在进行。此时,网络处于静默且未激活的状态,等待外部指令来启动。
CAN_FULL_COM:当网络完全启动并处于正常通信状态时,即进入CAN_FULL_COM状态。在这一状态下,网络能够自由地发送和接收数据,确保信息的实时传递和系统的正常运行。
CAN_SILENT_COM:网络处于静默模式时,即进入CAN_SILENT_COM状态。在这一特殊状态下,网络仅接收数据而不发送数据,这在某些需要减少通信干扰或保护数据安全的场景下尤为重要。
CAN_SLEEP:为了节省能源,当网络在不需要通信时,可以进入低功耗睡眠模式,即CAN_SLEEP状态。在这一状态下,网络的功耗被降至最低,同时保持对外部唤醒信号的响应能力,以便在需要时迅速恢复通信。
CanSM模块通过调用底层接口(如CanIf模块)来执行这些状态转换,从而实现对CAN网络状态的精准控制。例如,当应用层发出启动CAN网络的请求时,CanSM模块会迅速响应,调用CanIf接口来启动CAN控制器,并将网络状态从CAN_NO_COM无缝转换为CAN_FULL_COM。这一转换过程不仅确保了网络能够迅速进入正常工作状态,还保证了系统通信的连续性和稳定性。
通过这种状态管理机制,CanSM模块能够根据系统需求灵活切换CAN网络的工作模式,从而满足汽车电子系统在不同场景下的通信需求。
2.2 错误处理
CanSM模块还承担着检测和处理网络中可能出现的错误的重任,以确保整个网络的可靠性和稳定性。面对复杂多变的通信环境,CanSM模块能够精准识别并应对多种常见的错误类型,从而保障系统的顺畅运行。
其中,总线关闭错误(Bus-Off)是一种较为严重的网络故障。当CAN控制器检测到总线关闭的情况时,这意味着网络中的通信已经中断,无法继续进行数据传输。此时,CanSM模块会迅速响应,首先通知上层模块关于这一错误的发生,以便系统能够及时采取相应的应对措施。同时,CanSM模块还会尝试通过重启CAN控制器的方式来恢复通信,从而重新建立网络连接,确保数据的正常传输。
除了总线关闭错误外,通信超时错误也是CAN网络中常见的问题之一。当CAN网络在长时间内没有通信活动时,这可能意味着网络中存在某种故障或异常,导致数据无法正常传递。为了应对这种情况,CanSM模块会触发错误处理流程,根据预设的策略来尝试重新启动网络或切换到备用通信模式。这种灵活的错误处理机制,能够最大限度地减少通信中断对系统的影响,确保系统在异常情况下仍能维持基本的通信功能。
为了实现这些错误处理功能,CanSM模块通过调用CanIf接口来获取详细的错误信息。CanIf能够实时提供网络的运行状态和错误信息。CanSM模块根据这些信息,结合配置的策略,执行相应的恢复操作。这种基于信息的错误处理机制,不仅提高了CAN网络的容错能力,还使得系统在面对异常情况时能够更加智能地做出响应。
2.3 与网络管理模块的协作
CanSM模块与CanNM模块模块紧密配合,共同监控和管理CAN网络的运行状态,确保网络资源得到高效利用,同时满足电源管理的严格要求。
CanNM模块作为网络管理的核心,承担着监控网络整体状态的功能。它时刻关注着网络负载的变化、电源管理的需求以及可能出现的异常情况,并根据这些信息向CanSM模块发送状态转换请求。这种请求机制,使得CanSM模块能够及时了解网络的需求,并采取相应的措施来应对。
在网络唤醒的场景中,当系统接收到远程唤醒信号或其他唤醒请求时,CanNM模块会立即识别并处理这些请求。随后,它会向CanSM模块发送网络唤醒的指令。CanSM模块在接收到指令后,会迅速启动CAN控制器,并将网络状态从低功耗的CAN_SLEEP模式转换为正常的CAN_FULL_COM模式。这一转换过程,确保了网络能够在最短时间内恢复通信能力,满足系统对数据传输的需求。
相反,在网络睡眠的场景中,当系统进入低功耗模式或检测到网络长时间无通信活动时,CanNM模块会判断网络已经处于空闲状态,并向CanSM模块发送网络睡眠的请求。CanSM模块在接收到请求后,会停止CAN控制器的运行,并将网络状态从CAN_FULL_COM模式转换为低功耗的CAN_SLEEP模式。这一转换过程,不仅降低了网络的功耗,还延长了系统的使用寿命。
通过这种紧密的协作机制,CanSM模块与CanNM模块实现了共同监控,管理着CAN网络的运行状态,确保网络资源得到高效利用,同时满足了电源管理的严格要求。
三、状态机
CANSM_BSM:单个CAN网络所设计的状态机图
上图是CANSM_BSM,是指针对单个CAN网络所设计的状态机图。在这个图中,详细描绘了CAN网络在不同状态下的转换逻辑和流程,通过这个图中的元素来理解一下CAN网络的通信状态与状态之间的切换。
3.1 子状态机(Sub State Machines)
CANSM_BSM_WUVALIDATION:验证唤醒请求的有效性。
CANSM_BSM_S_PRE_NOCOM:处理无通信模式的前置状态。
CANSM_BSM_S_SILENTCOM_BOR:处理静默通信模式下的总线关闭恢复。
CANSM_BSM_S_PRE_FULLCOM:处理全通信模式的前置状态。
CANSM_BSM_S_FULLCOM:处理全通信模式。
CANSM_BSM_S_CHANGE_BAUDRATE:处理波特率变更。
3.2 触发条件(Triggers)
PowerOn:电源开启后,状态机进入CANSM_BSM_S_NOT_INITIALIZED状态。
CanSM_Init:初始化函数调用后,所有CAN网络的状态机被触发。
CanSM_DeInit:去初始化函数调用后,所有CAN网络的状态机被触发。
T_START_WAKEUP_SOURCE:启动唤醒源后,状态机被触发。
T_STOP_WAKEUP_SOURCE:停止唤醒源后,状态机被触发。
T_FULL_COM_MODE_REQUEST:请求全通信模式后,状态机被触发。
T_SILENT_COM_MODE_REQUEST:请求静默通信模式后,状态机被触发。
T_NO_COM_MODE_REQUEST:请求无通信模式后,状态机被触发。
T_BUS_OFF:CAN控制器进入总线关闭状态后,状态机被触发。
3.3 保护条件(Guarding Conditions)
G_FULL_COM_MODE_REQUESTED:检查是否请求了全通信模式。
G_SILENT_COM_MODE_REQUESTED:检查是否请求了静默通信模式。
3.4 效果(Effects)
E_PRE_NOCOM:将网络模式设置为无通信模式,并通知BswM模块。
E_NOCOM:将内部存储的网络模式设置为无通信模式。
E_FULL_COM:将CAN控制器的PDU模式设置为在线或仅发送模式,并通知ComM模块。
E_FULL_TO_SILENT_COM:将CAN控制器的PDU模式设置为仅发送模式,并通知ComM模块。
E_BR_END_FULL_COM:与E_FULL_COM相同。
E_BR_END_SILENT_COM:与E_FULL_TO_SILENT_COM相同。
E_SILENT_TO_FULL_COM:与E_FULL_COM相同。
有了上面的这些解释内容就较为容易理解CanSM有哪些状态,以及状态之间的切换条件、动作等。
四、小 结
CanSM模块的功能规范涵盖了状态管理、错误处理、CanNM模块的协作等多个方面,确保其在汽车电子系统中的高效运行和广泛应用。通过实时性支持、错误检测与恢复以及模块化设计等功能,CanSM模块为CAN网络的管理提供了强大的支持。未来,随着汽车电子技术的不断发展,CanSM模块将继续演进,以满足更高的性能和安全性需求。
/ END /