主要内容

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

以编程方式配置和映射 AUTOSAR 组件

在 Simulink® 中,作为图形化配置的替代方案,您可以通过编程方式配置 AUTOSAR 软件组件。通过 AUTOSAR 属性和映射函数,您可以获取、设置、添加和删除 AUTOSAR 组件模型的 AUTOSAR 字典和代码映射编辑器视图中显示的相同组件属性与映射信息。

AUTOSAR 属性和映射函数

您可以使用 AUTOSAR 属性和映射函数以编程方式配置 AUTOSAR 软件组件的 Simulink 表示。例如:

  • 使用 AUTOSAR 属性函数添加 AUTOSAR 元素、查找元素、获取和设置元素的属性、删除元素以及定义元素的 ARXML 打包。

  • 使用 AUTOSAR 映射函数将 Simulink 模型元素映射到 AUTOSAR 元素,并返回模型元素的 AUTOSAR 映射信息。

AUTOSAR 属性和映射函数还验证所请求的 AUTOSAR 属性与映射更改的语法和语义。

有关属性和映射函数的完整列表,请参阅组件开发中列出的函数。

有关使用这些函数的示例脚本,请参阅:

.

注意

有关创建或导入 AUTOSAR 软件组件的函数的信息,请参阅组件创建

AUTOSAR 配置的树视图

AUTOSAR 配置的以下树视图显示可以应用 AUTOSAR 属性和映射函数的 AUTOSAR 元素的类型。此视图对应于 AUTOSAR 字典树显示画面,但包括可能不在每个配置中出现的元素。italics 中显示的名称是用户选择的名称。

  • AUTOSAR

    • AtomicComponents

      • MyComponent

        • ReceiverPorts

        • SenderPorts

        • SenderReceiverPorts

        • ModeReceiverPorts

        • ModeSenderPorts

        • ClientPorts

        • ServerPorts

        • NvReceiverPorts

        • NvSenderPorts

        • NvSenderReceiverPorts

        • ParameterReceiverPorts

        • TriggerReceiverPorts

        • Runnables

        • IRV

        • 参数

    • S-R 接口

      • SRInterface1

        • DataElements

    • M-S 接口

      • MSInterface1

    • C-S 接口

      • CSInterface1

        • 操作

          • operation1

            • Arguments

    • NV 接口

      • NVInterface1

        • DataElements

    • 参数接口

      • ParameterInterface1

        • DataElements

    • 触发接口

      • TriggerInterface1

        • Triggers

    • CompuMethods

    • XML 选项

AUTOSAR 元素的属性

下表列出了与 AUTOSAR 元素相关联的属性。有关详细信息,请参阅 AUTOSAR Element Properties

AUTOSAR 元素类属性
AtomicComponent
  • ReceiverPorts(添加/删除)

  • SenderPorts(添加/删除)

  • SenderReceiverPorts(添加/删除)

  • ModeReceiverPorts(添加/删除)

  • ClientPorts(添加/删除)

  • ServerPorts(添加/删除)

  • NvReceiverPorts(添加/删除)

  • NvSenderPorts(添加/删除)

  • NvSenderReceiverPorts(添加/删除)

  • ParameterReceiverPorts(添加/删除)

  • TriggerReceiverPorts(添加/删除)

  • Behavior(添加/删除)

  • Kind

  • Name

ApplicationComponentBehavior
  • Runnables(添加/删除)

  • Events(添加/删除)

  • PIM(添加/删除)

  • IRV(添加/删除)

  • Parameters(添加/删除)

  • IncludedDataTypeSets

  • DataTypeMapping

  • Name

DataReceiverPort
DataSenderPort
DataSenderReceiverPort
ClientPort
ServerPort
ModeReceiverPort
NvDataReceiverPort
NvDataSenderPort
NvDataSenderReceiverPort
ParameterReceiverPort
TriggerReceiverPort
  • Interface

  • Name

Runnable
  • symbol

  • canBeInvokedConcurrently

  • SwAddrMethod

  • Name

TimingEvent
  • Period

  • StartOnEvent

  • DisabledMode

  • Name

DataReceivedEvent
DataReceiveErrorEvent
OperationInvokedEvent
  • Trigger

  • StartOnEvent

  • DisabledMode

  • Name

ModeSwitchEvent
  • Trigger

  • Activation

  • StartOnEvent

  • DisabledMode

  • Name

InitEvent
  • StartOnEvent

  • Name

IrvData
  • Type

  • SwAddrMethod

  • SwCalibrationAccess

  • DisplayFormat

  • SwAlignment

  • Name

ParameterData
  • Type

  • SwAddrMethod

  • SwCalibrationAccess

  • DisplayFormat

  • SwAlignment

  • Kind

  • Name

SenderReceiverInterface
NvDataInterface
ParameterInterface
  • DataElements(添加/删除)

  • IsService

  • Name

FlowData
  • Type

  • SwAddrMethod

  • SwCalibrationAccess

  • DisplayFormat

  • SwAlignment

  • Name

ModeSwitchInterface
  • ModeGroup(添加/删除)

  • IsService

  • Name

ModeDeclarationGroupElement
  • ModeGroup

  • SwCalibrationAccess

  • Name

ClientServerInterface
  • Operations(添加/删除)

  • IsService

  • Name

TriggerInterface
  • Triggers(添加/删除)

  • IsService

  • Name

以编程方式配置 AUTOSAR 软件组件

此示例说明如何配置 AUTOSAR 软件组件。您可以使用 find 函数查找模型中存在的 AUTOSAR 软件组件。

配置 AUTOSAR 软件组件名称和类型

打开示例模型 autosar_swc_expfcns 并创建 autosar.api.getAUTOSARProperties 对象。

hModel = "autosar_swc_expfcns";
open_system(hModel);
arProps = autosar.api.getAUTOSARProperties(hModel);

查找 AUTOSAR 软件组件。

aswcPaths = find(arProps,[],"AtomicComponent","PathType","FullyQualified");

遍历组件并列出 NameKind 属性值。

for ii=1:length(aswcPaths)
    aswcPath = aswcPaths{ii};
    swcName = get(arProps,aswcPath,"Name");
    swcKind = get(arProps,aswcPath,"Kind");
    fprintf("Component %s: Name %s, Kind %s\n",aswcPath,swcName,swcKind);
end
Component /pkg/swc/ASWC: Name ASWC, Kind Application

修改 NameKind 属性值。

aswcName = 'mySwc';
aswcKind = 'SensorActuator';
set(arProps,aswcPaths{1},'Name',aswcName);
aswcPaths = find(arProps,[],'AtomicComponent','PathType','FullyQualified');
set(arProps,aswcPaths{1},'Kind',aswcKind);
swcName = get(arProps,aswcPaths{1},'Name');
swcKind = get(arProps,aswcPaths{1},'Kind');
fprintf('Component %s: Name %s, Kind %s\n',aswcPaths{1},swcName,swcKind);
Component /pkg/swc/mySwc: Name mySwc, Kind SensorActuator

指定 AUTOSAR 元素位置

AUTOSAR 属性函数通常要求您指定元素的名称和位置。AUTOSAR 元素在 AUTOSAR 包和对象层次结构中的位置可以使用完全限定路径唯一指定。完全限定路径可能包括包层次结构和对象层次结构中的元素位置,例如:

/pkgLevel1/pkgLevel2/pkgLevel3/grandParentName/parentName/childName

对于 addPackageableElement 以外的 AUTOSAR 属性函数,您可以指定不包括包层次结构的部分限定路径,例如:

grandParentName/parentName/childName

以下代码将示例模型 autosar_swc_expfcns 中路径 Interface1 下的发送方-接收方接口的 IsService 属性设置为 true。在本例中,指定名称 Interface1 足以定位元素。

hModel = 'autosar_swc_expfcns';
openExample(hModel);
arProps = autosar.api.getAUTOSARProperties(hModel);
set(arProps,'Interface1','IsService',true);

以下是 AUTOSAR 字典中 S-R 接口视图中的结果显示画面。

如果您将发送方-接收方接口添加到组件包中,您将指定完全限定路径,例如:

hModel = 'autosar_swc_expfcns';
openExample(hModel);
arProps = autosar.api.getAUTOSARProperties(hModel);
addPackageableElement(arProps,'SenderReceiverInterface','/pkg/if','Interface3',...
   'IsService',true);

相较于使用完全限定路径,使用部分限定路径的一个潜在优点是,通过查看 AUTOSAR 组件的 AUTOSAR 字典视图,可以更轻松地构造部分限定路径。一个潜在缺点是部分限定路径可能引用 AUTOSAR 配置中的多个元素。例如,路径 s/r 可能既指定发送方-接收方接口的数据元素,又指定组件的可运行实体。当发生冲突时,软件会显示错误并列出完全限定路径。

大多数 AUTOSAR 元素具有由多个部分组成的属性(复合属性)。例如,原子软件组件具有复合属性,如 ReceiverPortsSenderPortsInternalBehavior。对于具有可操作的复合属性的元素,如组件的属性 ReceiverPorts,子元素会被命名并在父元素内唯一定义。要在复合属性中定位子元素,请使用父元素路径和子元素名称,而不使用属性名称。例如,如果父原子软件组件的限定路径是 /A/B/SWC,并且子接收方端口名为 RPort1,则接收方端口的位置是 /A/B/SWC/RPort1