主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

将 AUTOSAR XML 描述导入 Simulink

在 Simulink® 中,您可以从 AUTOSAR XML (ARXML) 文件导入 AUTOSAR 软件组件、组合或共享元素包。您使用 ARXML 导入器,它是作为 arxml.importer 对象实现的。有关详细信息,请参阅AUTOSAR ARXML 导入器

要将 ARXML 软件描述文件导入 Simulink,请首先调用 arxml.importer 函数。在函数参量中,指定一个或多个描述软件组件、组合或共享元素包的 ARXML 文件。例如:

ar = arxml.importer('ThrottlePositionControlComposition.arxml')

该函数:

  • 解析 ARXML 文件以识别 AUTOSAR 软件描述。

  • 如果调用函数时未使用终止分号 (;),则列出指定 ARXML 文件的 AUTOSAR 内容。

  • 返回 ARXML 导入器对象的句柄。在后续函数调用中,该对象表示 ARXML 文件中解析的 AUTOSAR 软件描述。

有关详细信息,请参阅创建 ARXML 导入器对象

接下来,根据您要导入的内容,调用 arxml.importer 创建或更新函数。例如:

为了帮助支持 AUTOSAR 元素在 AUTOSAR 编写工具 (AAT) 与 Simulink 基于模型的设计环境之间的来回处理,ARXML 导入会保留导入的 AUTOSAR XML 文件结构、元素和元素通用唯一标识符 (UUID) 以用于 ARXML 导出。有关详细信息,请参阅Round-Trip Preservation of AUTOSAR XML File Structure and Element Information

在将 AUTOSAR 软件组件或组合导入 Simulink 后,您可以开发组件或组合模型的行为和配置。要细化组件配置,请参阅 AUTOSAR 组件配置

要配置 ARXML 导出选项,请参阅Configure AUTOSAR XML Options

创建 ARXML 导入器对象

在将 ARXML 描述导入 Simulink 之前,请调用 arxml.importer 函数。指定一个或多个包含 AUTOSAR 软件组件、组合或共享元素描述的 ARXML 文件的名称。该函数解析指定的 ARXML 文件中的描述,并创建一个表示解析信息的导入器对象。对 createComponentAsModel 或其他 ARXML 导入器函数的后续调用必须指定该导入器对象。

例如,打开 autosar_swc 模型并编译它。

openExample('autosar_swc');

以下调用指定主 AUTOSAR 软件组件文件 autosar_swc_component.arxml,以及包含数据类型、实现和接口信息的相关依赖文件,这些信息完成软件组件描述。

ar = arxml.importer({'autosar_swc_component.arxml','autosar_swc_datatype.arxml',...
                     'autosar_swc_implementation.arxml','autosar_swc_interface.arxml'})

此调用指定 ARXML 文件 ThrottlePositionControlComposition.arxml,该文件描述 AUTOSAR 软件组合及其聚合的 AUTOSAR 组件。

ar = arxml.importer('ThrottlePositionControlComposition.arxml')

如果调用 arxml.importer 函数时未使用终止分号 (;),导入器会列出指定 XML 文件的 AUTOSAR 内容。信息包括 AUTOSAR 包结构中软件组件的路径,您将在下一步中用到这些路径。

在此示例中,软件组合 ThrottlePositionControlComposition 的路径是 /Company/Components/ThrottlePositionControlComposition。软件组件 Controller 的路径是 /Company/Components/Controller

ar =
The file "path/ThrottlePositionControlComposition.arxml" contains:
  1 Composition-Software-Component-Type:
    '/Company/Components/ThrottlePositionControlComposition'
  2 Application-Software-Component-Type:
    '/Company/Components/Controller'
    '/Company/Components/ThrottlePositionMonitor'
  3 Sensor-Actuator-Software-Component-Type:
    '/Company/Components/AccelerationPedalPositionSensor'
    '/Company/Components/ThrottlePositionActuator'
    '/Company/Components/ThrottlePositionSensor'

导入软件组件并创建模型

要将解析的原子软件组件导入 Simulink 模型,请调用 createComponentAsModel 函数。指定 ARXML 导入器对象和要创建为模型的组件。解析的 ARXML 文件必须指定该组件的所有依赖项。

以下示例创建 AUTOSAR 原子软件组件的 Simulink 表示。

ar = arxml.importer('ThrottlePositionControlComposition.arxml');
names = getComponentNames(ar)
names = 5x1 cell
    {'/Company/Components/Controller'                     }
    {'/Company/Components/ThrottlePositionMonitor'        }
    {'/Company/Components/AccelerationPedalPositionSensor'}
    {'/Company/Components/ThrottlePositionActuator'       }
    {'/Company/Components/ThrottlePositionSensor'         }
createComponentAsModel(ar,'/Company/Components/Controller',...
    'ModelPeriodicRunnablesAs','AtomicSubsystem');

'ModelPeriodicRunnablesAs' 参量控制导入器是将 AUTOSAR 周期性可运行实体建模为具有周期性速率的原子子系统(默认值)还是具有周期性速率的函数调用子系统。除非您的设计需要使用函数调用子系统,否则指定 AtomicSubsystem。有关详细信息,请参阅Import AUTOSAR Software Component with Multiple Runnables

要将 AUTOSAR 数据的 Simulink 数据对象导入 Simulink 数据字典,您可以在模型创建时设置 'DataDictionary' 参量。如果指定的字典尚不存在,导入器将创建它。

要显式指定 AUTOSAR 可运行实体作为组件中的初始化可运行实体,请在模型创建时使用 'InitializationRunnable' 参量。

有关详细信息,请参阅 createComponentAsModel 参考页和示例将 AUTOSAR 组件导入 Simulink

导入软件组合并创建模型

要将解析的原子软件组合导入 Simulink 模型,请调用 createCompositionAsModel 函数。指定 ARXML 导入器对象和要创建为模型的组合。解析的 ARXML 文件必须指定该组合的所有依赖项。

以下示例创建 AUTOSAR 软件组合的 Simulink 表示。

ar = arxml.importer('ThrottlePositionControlComposition.arxml');
names = getComponentNames(ar,'Composition')
names = 1x1 cell array
    {'/Company/Components/ThrottlePositionControlComposition'}
createCompositionAsModel(ar,'/Company/Components/ThrottlePositionControlComposition');
Creating model 'ThrottlePositionSensor' for component 1 of 5:
 /Company/Components/ThrottlePositionSensor
Creating model 'ThrottlePositionMonitor' for component 2 of 5:
 /Company/Components/ThrottlePositionMonitor
Creating model 'Controller' for component 3 of 5:
 /Company/Components/Controller
Creating model 'AccelerationPedalPositionSensor' for component 4 of 5:
 /Company/Components/AccelerationPedalPositionSensor
Creating model 'ThrottlePositionActuator' for component 5 of 5:
 /Company/Components/ThrottlePositionActuator
Creating model 'ThrottlePositionControlComposition' for composition 1 of 1:
 /Company/Components/ThrottlePositionControlComposition

要在组合模型中包含现有 Simulink 原子软件组件模型,请在组合模型创建时使用 'ComponentModels' 参量。

有关详细信息,请参阅 createCompositionAsModel 参考页和示例Import AUTOSAR Composition to Simulink

对于包含超出 20 个软件组件的组合,在组件之间共享 AUTOSAR 属性可以显著提高性能并减少组合工作流的重复。要配置组合导入以存储组件共享的 AUTOSAR 属性,请使用 'DataDictionary''ShareAUTOSARProperties' 参量。有关详细信息,请参阅 createCompositionAsModel 参考页和示例Import AUTOSAR Composition and Share AUTOSAR Dictionary

将组件或组合的外部更新导入模型

在将解析的原子软件组件或组合导入 Simulink 模型后,该组件或组合的 ARXML 描述可能在不同 AUTOSAR 编写环境中继续演化。要用外部更改更新您的 AUTOSAR 组件或组合模型,请调用 updateModel 函数。指定表示 ARXML 更改的 ARXML 导入器对象和要更新的现有 AUTOSAR 模型。

以下示例用文件 ThrottlePositionControlComposition_updated.arxml 中的更改更新名为 Controller 的现有 AUTOSAR 组件模型。

% Create and open AUTOSAR controller component model
ar = arxml.importer('ThrottlePositionControlComposition.arxml');
createComponentAsModel(ar,'/Company/Components/Controller',...
  'ModelPeriodicRunnablesAs','AtomicSubsystem');

% Update AUTOSAR controller component model (model must be open)
ar2 = arxml.importer('ThrottlePositionControlComposition_updated.arxml');
updateModel(ar2,'Controller');

有关详细信息,请参阅 updateModel 参考页、Update AUTOSAR Software Component和示例将 AUTOSAR 组件导入 Simulink 的更新部分。

将共享元素包导入组件模型

在创建 AUTOSAR 软件组件模型后,无论是在 Simulink 中开始还是导入 ARXML 组件描述,您都可以用组件之间共享的预定义元素和属性更新组件模型的 AUTOSAR 属性。要用共享元素定义包更新组件的 AUTOSAR 属性,请调用 updateAUTOSARProperties 函数。指定表示 ARXML 共享元素定义的 ARXML 导入器对象和要更新的现有 AUTOSAR 模型。

以下示例用文件 SwAddrMethods.arxml 中的元素定义更新 AUTOSAR 组件模型。

modelName = 'autosar_swc';
openExample(modelName);
ar = arxml.importer('SwAddrMethods.arxml');
updateAUTOSARProperties(ar,modelName);

有关详细信息,请参阅 updateAUTOSARProperties 参考页、Import and Reference Shared AUTOSAR Element Definitions和示例Import AUTOSAR Package into Component Model

另请参阅

|

主题