好久不见!
今天博主带你研究一下CAN状体管理相关规范内容。
CAN 状态管理spec
(Below all specs & figures source from AutoSAR portal)
#车用总线状态管理
总线管理器模块适用于任何CAN通讯的车用域控制器,比如车身域控制器BDM、ADS辅助驾驶域控制器之类。
由图示不难看出,基础软件层为每个通信channel通过CanSM通讯服务层,指派了状态管理器,与通信硬件抽象层和系统服务层进行信息交互
#状态管理器模块函数调度机制概述
简单讲,博主认为,状态管理器模块是通过CANsw中调用canif函数来实现驱动CAN 控制器、CAN数据接收与CAN数据发送。当然这个过程通过代码实现是比较繁琐和复杂的,因为涉及到模块往往包括:ECU模块、基础软件调度模块、通讯管理模块(这里不包括LIN/Eth)、诊断模块和网络管理模块。ECU的wakeup状态与sleep状态均需要通过CANsm进行验证。
#状体机与状态切换管理
对于状态管理机制,作为一名研发人员,首先就要充分考虑可能的工作工况及状态,也就是要定义状态机。同时,还需要定义不同状态之间的切换机制,也就是定义状态流,这里面往往都会涉及触发条件或者触发事件的定义,比如时间触发或者事件触发之类。如图即为spec中的状态机的举例,博主认为,你完全可以参考这个框架来设计自己的状态机
定义状态机的软件可以使用PREEvision,正版软件一般比较贵,博主在这里给你推荐一款可以直接试用的EA UML建模工具,即装即用,定义状态机或者状态流都是没有问题的。
(待续)
“合抱之木,生于毫末;九层之台,起于累土”——老子