写在前面BswM的运行原理可以简单理解,如图

BswMConfig
BswMConfig
BswMRteModeDclGroup
在 BswM_swc.arxml 中会生成以下元素:
- ModeDeclarationGroup(名称与该容器一致)
- ModeSwitchInterface(使用该 ModeDeclarationGroup 作为其 ModeDeclarationGroupPrototype)
- ImplementationType(包含一个 CompuMethod,其中包含 ModeDeclarationGroup 的所有模式)
- DataTypeMappingSet(将 ModeDeclarationGroup 映射到 ImplementationType)
BswMRteMode
自定义一些ECU的模式
BswMArbitration
BswMLogicalExpression
该容器描述了可用于模式仲裁(mode arbitration)的逻辑表达式。
这些逻辑表达式由一组参数(arguments)和一个逻辑运算符(logical operator)构成。
每个参数可以是以下两种类型之一:
- 模式条件(mode condition)
- 子表达式(sub-expression),用于定义更复杂的逻辑组合。
BswMLogicalOperator
逻辑运算,如与 或 与非 异或
BswMArgumentRef
可以是mode condition 也可以是另一个LogicExpression
BswMModeCondition
可单独用于构成规则,或作为Logic Expression的一部分使用。
BswMConditionMode
引用一个ModeRequestPort
BswMConditionType
条件类型为等于或不等
BswMConditionValue
该容器包含用于标识模式类型(mode type)及模式请求比对值(mode request comparison value)的必要参数与引用。
BswMBswMode
设置一个请求模式
BswMModeDeclaration
该容器包含对模式声明(Mode Declaration)的引用配置。当涉及模式请求接口(Mode Request Interface)或模式指示接口(Mode Indication Interface)时,其具体模式行为必须通过模式声明进行定义。由于模式声明实际定义在软件组件模板(SW-C Template)中,本容器通过外部引用(Foreign Reference)机制关联到对应的模式声明对象。
实际上各个SWC中的模式声明再此均可引用。

BswMModeRequestPort
该容器的每个实例定义了一个模式请求接口,用于向BswM请求或指示模式。这些接口根据请求方类型不同,可被实现为端口或普通C函数:
模式请求类型分为:
来自SW-C的模式请求
来自其他BSW模块(如DCM)的模式请求
来自RTE或其他BSW模块(如总线专用状态管理器)的状态/模式指示
BswMRequestProcessing
此参数定义了模式仲裁的处理方式。
如果处理值为BSWM_DEFERRED,则处理应推迟到BswM主函数的处理时进行。
如果其值为BSWM_IMMEDIATE,则在接收到模式请求时应立即进行处理,如果有其他立即请求正在处理或者在处理主函数中的延迟规则时,则请求将被排队。
当处理值为BSWM_FORCED_IMMEDIATE时,应立即进行模式仲裁,中断主函数中正在处理的其他立即请求或延迟规则
BswMModeInitValue
在尚未获取请求的port的值时的初始值
BswMModeRequestSource
该选择容器用于指定模式请求或状态/模式指示的请求源。模式请求的发起方既可以是SW-C(软件组件),也可以是其他BSW模块(如总线专用状态管理器)。
按我理解选择,应该是选择不同SWC,这个接口会将模式的值传递过来。

BswMRule
该容器的每个实例均定义一条BswM仲裁规则。每条规则可由简单模式条件或复杂逻辑表达式构成,同时包含当规则判定为True/False时应执行的动作列表引用。
BswMNestedExecutionOnly
此参数为其相关规则定义该规则是独立规则还是从属规则。
false:独立规则,即每次适用时都要进行评估(既作为由其自身的BswMModeRequestSource驱动的独立规则进行评估,也作为被其他规则引用时进行评估)。
true:从属规则,仅在作为一个或多个ActionList中的引用时才进行评估。
BswMRuleExpressionRef
引用的LE
BswMRuleFalseActionList
Rule不符合时的动作列表
BswMRuleInitState
该参数用于定义BswM初始化后规则评估的“先前评估结果”,以确定是否触发动作列表的执行。动作列表的执行条件为:当前规则评估结果与上一次评估结果相比发生变化。
- 设为BSWM_UNDEFINED时
初始化后的首次规则评估结果始终视为发生变化,强制触发关联动作列表的执行。
(适用于初始状态未知的场景)
- 设为BSWM_TRUE时
仅当规则评估结果为**false**时视为发生变化(即与初始预设值true不同),触发动作列表。
- 设为BSWM_FALSE时
仅当规则评估结果为**true**时视为发生变化(即与初始预设值false不同),触发动作列表。
BswMRuleTrueActionList
Rule符合时的动作列表
BswMModeControl
BswMActionList
一堆action绑一块的列表
BswMActionListExecution
BswM动作列表执行条件参数说明
该参数用于控制关联动作列表的执行条件,决定其是否在每次规则评估时执行,或仅在评估结果变化时执行。
- 设为 BSWM_CONDITION 时
每次规则评估均执行动作列表,无论评估结果是否与上一次一致。
(适用于需持续响应状态的应用场景,如周期性刷新操作)
- 设为 BSWM_TRIGGER 时
仅当规则评估结果发生变化时执行动作列表(例如从true变为false,或反之)。
(适用于避免重复触发的场景,如模式切换的单一事件响应
BswMActionListPriority
执行优先级
BswMAbortOnFail
对于有返回值的动作返回了NOK是否退出
BswMActionListItemRef
绑的具体动作
BswMReportFailToDemRef
返回NOK的时候是不是要报DTC
BswMAction
种类较多

BswMGeneral
BswM与各类SWC的接口API是否使能
NOTE:其实这个SWC不同配置生成代码可以做一些有趣的对比,后续再补。