1、简介
BSW模式管理器基本功能的操作可以描述为两个不同的任务:模式仲裁和模式控制。
模式仲裁部分发起模式切换,其结果是基于规则的仲裁从SW-Cs或其他BSW模块接收到的模式请求和模式指示。
模式控制部分通过执行包含其他BSW模块的模式切换操作的操作列表来执行模式切换。
BswM应该被视为一个模式管理框架模块,其中行为完全由其配置定义。
实现BswM可能有不同的方法,例如基于配置生成完整的BswM,或者作为在运行时解析编码配置的规则解释器。
2、模式仲裁
BswM执行的模式仲裁简单且基于规则。用于模式仲裁的规则在BSW模式管理器模块的配置中指定。
规则由简单的布尔表达式组成,因此模式仲裁对运行时的影响很小。
为了知道要执行哪些操作列表,BswM需要检测从前的规则评估产生的模式仲裁结果中的更改。
2.1、Mode Conditions 模式条件
Mode Conditions 验证请求或指示的模式是否为EQUAL或NOT_EQUAL的某个模式。例如下图的 Normal_Mode == True ,这个就属于 Mode Conditions (MC)
2.2、逻辑表达式 Logical Expressions(LE)
由模式仲裁规则组成的逻辑表达式可以使用不同的运算符,如AND、OR、XOR和NAND。表达式中的每个术语都对应一个模式请求条件。
逻辑表达式就是下图的:
Normal_Mode == True && Ifc1_Bus_Off == False
2.3、Rule 仲裁规则
规则是由一组模式请求条件组成的逻辑表达式。当输入模式请求和模式指示发生更改时,或在BswM主函数执行期间,对规则进行评估。评估的结果(True或False)用于决定是否执行相应的模式控制动作列表。
True Action list 或者 False Action list 其中的True和False就是Rule了,rule里面包含了LE和AL
2.4 模式请求的来源
类似于下图,是谁配置谁就好了,看下来源来自于BSW还是SWC,这块主要还是为了compisition连接 Request Port
这块的需求描述下:
- BswM应根据传入的模式请求执行模式仲裁。
- BswM应基于传入模式指示执行模式仲裁。
- 注意:所有模式仲裁请求(请求和指示)都由BswM以相同的方式处理。通过选择BswMModeRequestSource配置容器中相应的模式条件类型来配置它们。
- BswM应该使用配置好的规则执行模式仲裁。
- 模式仲裁规则应该可以使用模块配置参数进行配置。
- BswM不允许使用以前模式仲裁的结果作为逻辑表达式的输入。
- 作为BswM仲裁规则评估结果而调用的操作只能在操作列表上下文中调用。
- BswM应基于传入模式切换通知执行模式仲裁。
建立Port经过RTE和SWC连接,
2.5 Immediate and Deferred Operation 立即和延时操作
安排模式仲裁的处理有两种不同的方法。它要么在模式请求/指示的上下文中立即完成,要么(循环地)延迟到BswM的主要功能。
“立即”请求在调用者的上下文中执行。系统集成商的责任是确保操作列表的执行不会危及系统性能或一致性。
特别是,如果调用者在中断上下文中运行(或可能在中断上下文中运行),则在中断上下文中应用有关系统函数使用的限制。
直接操作和延迟操作之间的区别显示在序列图中。
模式仲裁规则可以包含立即和延迟模式仲裁请求的任何组合。
配置BswM以在模式仲裁请求后立即执行模式仲裁是可能的。这是通过将BswMRequestProcessing配置参数(在BswMModeRequestPort容器内)设置为BSWM_IMMEDIATE来配置的。
BswM应将在其主要功能处理期间收到的模式仲裁请求延迟到其完成为止。
2.6 初始化后的仲裁行为
BswM初始化后的模式仲裁行为由配置容器BswMModeInitValue控制。该参数可以为配置中的每个BswMModeRequestPort配置一次。
如果容器BswMModeInitValue不存在[或ModeRequest还没有初始值,]BswM将把相应的模式条件视为未定义,并且在相应的模式仲裁请求第一次更新之前不使用它进行模式仲裁。
初始化后每个BswMModeRequestPort的初始值可以由配置容器BswMModeInitValue控制。
如果定义了BswMModeInitValue,则BswM在初始化BswMCompuScaleModeValue时,应使用BswMModeInitValue或BswMCompuScaleModeValue初始化相应的BswMModeRequestSource。对于单个BswMModeInitValue同时包含BswMModeInitValue和BswMCompuScaleModeValue的配置,BswM将拒绝该配置。例如,BswM_RequestMode的每次调用都将更新GenericRequest模式。
注意:Rte和SchM模式总是有一个初始值。
解释一个地方:
BSW Mode Declaration(公告,通知,声明之意) Group 这个地方是当BSWM执行模式切换之后,更新到RTE层,然后通过本身的一个回调通知自身。