配置AUTOSAR方式开关通信
AUTOSAR方式开关(m)交流依赖于模式管理器和连接模式的用户。模式管理器是一个软件组件的权威来源查询当前模式和模式改变时接收通知(开关)。模式管理器可以提供的AUTOSAR基础软件(BSW正在)或作为AUTOSAR软件组件实现。模式管理器实现为一个软件组件被称为应用程序模式管理器。一个软件组件,查询模式管理器和接收通知用户模式切换的模式。
配置用户模式接收机端口和方式开关事件模式
模型模式用户软件组件,使用AUTOSAR模式接收机端口和一个方式开关事件。模式接收机端口使用方式开关(m)接口连接和沟通模式管理器,它提供了模式变化的通知。您配置方式开关事件响应指定模式变化通过激活一个相关联的可运行。这个例子展示了如何配置一个AUTOSAR mode-receiver港口,模式切换事件,用户和相关元素的模式。
请注意
本例中没有实现有意义的算法组件执行基于当前ECU控制模式。
打开一个可写的复制示例的模式
autosar_swc_expfcns
。声明一个模式声明,一群模式价值观——使用仿真软件金宝app®枚举。指定存储类型作为一个无符号整数。输入以下命令在MATLAB®命令窗口:
金宝appSimulink.defineIntEnumType (“mdgEcuModes”,…{“运行”,“睡眠”},[0,1],……“描述”、“模式ECU申报小组模式”,…‘DefaultValue’,‘快跑’,……“HeaderFile”、“Rte_Type。h’,……“AddClassNameToEnumNames”,假的,…“StorageType”、“uint16”);
重命名模型尺寸。金宝app
RPort_DE1 (ErrorStatus)
来MRPort (ECU模式)
。例如,打开模型数据编辑器(建模选项卡上,单击模型数据编辑器)。使用源列重命名轮廓尺寸。在后面的步骤中,您将地图这尺寸AUTOSAR mode-receiver端口。接下来,应用模式的宣言
mdgEcuModes
轮廓尺寸。在模型数据编辑器中,轮廓尺寸,集数据类型来枚举:mdgEcuModes
。此外,设置复杂性来汽车
。在模型窗口,打开函数调用子系统命名
Runnable1_subsystem
和做以下更改:重命名尺寸。
ErrorStatus
来运放
。取代固定块
RTE_E_OK
用枚举常量。(枚举常数块可以在源块组。)双击块开放块参数对话框。集输出数据类型来枚举:mdgEcuModes
并设置价值来mdgEcuModes.Run
。点击好吧。
添加一个AUTOSAR方式开关接口模型。打开AUTOSAR字典。选择xm接口。单击添加按钮。在添加界面对话框中,指定的名字作为
Interface3
并指定ModeGroup作为mgEcuMode
。的IsServicem界面默认的属性
真正的
。对于本示例的目的,您可以离开IsService在其默认设置,除非你有一个理由去改变它。点击添加。
AUTOSAR模式组的值指定使用在后面的步骤中,当你地图模型尺寸的AUTOSAR mode-receiver港口和元素。金宝app
添加一个AUTOSAR mode-receiver港口到模型中。扩大AtomicComponents扩展组件
ASWC
,并选择ModeReceiverPorts。打开对话框添加端口,单击添加按钮。在对话框添加端口,指定的名字作为MRPort
。接口已经设置为Interface3
(唯一可用的值在这个配置)类型已经设置为ModeReceiver
。点击添加。在代码映射编辑器中,映射模型尺寸金宝app
MRPort (ECU模式)
AUTOSAR mode-receiver端口和元素。打开代码映射编辑器和选择港口选项卡。在尺寸的行MRPort (ECU模式)
,设置DataAccessMode来ModeReceive
,设置港口来MRPort
,并设置元素来mgEcuMode
。(AUTOSAR元素值相匹配ModeGroup时指定的值添加AUTOSAR方式开关接口Interface3
。)这一步完成了AUTOSAR mode-receiver端口配置。单击验证按钮验证AUTOSAR组件配置。如果报告错误,解决它们,然后重试验证。当模型通过验证、保存模型。
请注意
剩下的步骤创建AUTOSAR方式开关事件和设置它触发AUTOSAR可运行的激活。如果您打算使用ECU模式控制程序执行,不使用一个事件激活runnable,您可以跳过其余步骤和实现所需的流控制逻辑的设计。
添加一个AUTOSAR方式开关为runnable事件:
打开AUTOSAR字典。扩大AtomicComponents,扩大
ASWC
组件,并选择可运行的。在可运行的列表中,选择Runnable1
。这选择激活一个事件可运行的配置面板中。添加一个事件到事件列表
Runnable1
,点击添加事件。新的事件,集事件类型来ModeSwitchEvent
。(这激活一个事件属性subpane)。指定事件名称作为Event_Run
。在事件属性subpane,设置模式激活来
OnEntry
,设置模式接收机端口来MRPort
,并设置模式声明来运行
。点击应用。
打开代码映射编辑器和选择功能选项卡。在这个例子中模型,仿真软件的入口点函数已经被映金宝app射到AUTOSAR runnable,包括可运行
Runnable1
,你只是添加了一个事件方式开关。这就完成了AUTOSAR事件配置方式开关。单击验证按钮验证AUTOSAR组件配置。如果报告错误,解决它们,然后重试验证。当模型通过验证、保存模型。可选地,可以从模型中生成XML和C代码并检查结果。
配置模式发送端口和模式应用程序模式管理器的开关点
模型应用程序模式管理器软件组件,使用AUTOSAR模式发送端口。方式发送端口使用方式开关(m)接口输出模式切换到连接模式用户组件。
你模型模式发送端口作为模型根外港,AUTOSAR模式映射到一个发送方港口和方式开关(m)接口。外港的数据类型是一个无符号整数枚举类存储类型,代表一群AUTOSAR模式声明。
这个例子展示了如何配置一个模式为应用程序发送方港口和相关元素模式管理器。
打开一个模型配置为AUTOSAR代码生成。这个例子使用一个模型,其中包含Stateflow®保持发动机状态的逻辑。模型输出当前引擎模式值。
声明一个模式声明,一群模式值。您可以声明模式与模型枚举值。金宝app在这个例子中,Stateflow逻辑定义
EngineModes
值从
,曲柄
,摊位
,闲置
,运行
。例如:添加一个AUTOSAR xm接口模型。打开AUTOSAR词典和选择xm接口。单击添加按钮。在添加界面对话框中,设置isService来
真正的
并输入一个ModeGroup的名字。在本例中,模式声明集团EngineModes
。添加一个AUTOSAR模式发送方港口到模型中。扩大AtomicComponents,扩大该组件,并选择ModeSenderPorts。单击添加按钮。在对话框添加端口,设置接口m创建接口的名称。
映射模型输出港,金宝app输出模式价值AUTOSAR模式发送方端口创建。打开代码映射编辑器和选择外港选项卡。AUTOSAR的外港映射模式发送方端口,设置DataAccessMode来
ModeSend
,选择港口的名字,元素,选择模式声明为xm接口指定组名。为模型生成代码。
ARXML代码包括引用ModeSwitchPoints、ModeSwitchInterfaces ModeDeclarationGroups。例如,下面的ARXML代码描述了ModeSwitchPoint AUTOSAR模式发送端口。
< RUNNABLE-ENTITY >…< MODE-SWITCH-POINTS > < MODE-SWITCH-POINT UUID = "……" > <字> OUT_currentState_EngineModes < /字> < MODE-GROUP-IREF > < CONTEXT-P-PORT-REF DEST = " P-PORT-PROTOTYPE " > / pkg swc / mEngineFailureMode现状后< / CONTEXT-P-PORT-REF > < TARGET-MODE-GROUP-REF DEST = " MODE-DECLARATION-GROUP-PROTOTYPE " > / pkg /如果/ msInterface / EngineModes < / TARGET-MODE-GROUP-REF > < / MODE-GROUP-IREF > < / MODE-SWITCH-POINT > < / MODE-SWITCH-POINTS >…< / RUNNABLE-ENTITY >
C代码包括
Rte_Switch
API调用模式切换到其他软件组件通信。例如,下面的代码一个通信EngineModes
模式开关。/ *输出港:“< Root > / EngineMode”* / Rte_Switch_currentState_EngineModes (mEngineFailureMode_B.engstate);