BswM模块属于模式管理的一部分,其主要功能为模式仲裁、模式控制。
模式仲裁
模式仲裁是接收来自SWC或其他BSW模块的模式请求和通知,根据简单的规则作出模式切换。其分为仲裁规则、模式条件和逻辑表达式和模式请求接口三部分
1、模式请求接口
模式请求接口用于确定模式的请求源、模式仲裁方式以及初始值。其中模式请求源是指模式通知的来源。
模式仲裁方式是指立即处理(Immediate)或推后仲裁(Deferred),立即处理为当收到模式切换请求后立即进行模式仲裁,而推后仲裁则是在BswM的MainFunction中进行仲裁,类似于轮询的机制,其调用区别请参考图1。
图1 Immediate和Deferred的区别
初始值的配置是在BswMModeInitValue选项,如果初始值没有配置,BswM中的模式控制中将其视为未定义,只有当SWC或其他BSW模块有模式请求时才会更新模式。
2、模式条件和逻辑表达式
模式条件是指模式请求是否EQUAL(等于)或NOT_EQUAL(不等于)某种预先设置的模式。逻辑表达式是将不同的模式条件通过逻辑标识符AND,OR,XOR,NAND组合起来。
如图2所示,Normal_Mode==True和Ifc1_Bus_Off==false是两个简单的模式条件,通过&&的方式组合成一个逻辑表达式。
图 2 简单的规则示例
3、仲裁规则
仲裁规则是将逻辑表达式与实际执行动作有序的组合在一起,如图1所示,当逻辑表达式为True时执行theTrue Action List,当为False时执行theFalse Action List。
模式控制
模式控制部分用于开发实际的执行动作,当模式仲裁完成后,会触发不同的动作序列(Action List),动作序列由不同的动作(Action)组成,如图3所示。对于动作有以下三种类型:
<1、调用预设的动作,包括调用其他BSW模块或RTE;
<2、链接到其他动作序列;
<3、模式仲裁规则,当相关的动作序列运行,这些规则会被评估。
图3 Action List和Action
另外对于动作序列的执行有Triggered和Conditional两种方式,其中Triggered表示只有当规则仲裁的结果发生改变才会执行该动作序列,Conditional则是每次规则仲裁完都执行该动作序列。
最后分享两张图,该图能很好的帮助理解BswM模块。
联系客服