Main Content

プログラムによる AUTOSAR コンポーネントの構成とマッピング

Simulink® では、グラフィカルな構成の代わりに、プログラムによって AUTOSAR ソフトウェア コンポーネントを構成できます。AUTOSAR のプロパティ関数と map 関数を使用すると、AUTOSAR コンポーネント モデルの AUTOSAR ディクショナリおよびコード マッピング エディターのビューに表示される情報と同一のコンポーネントのプロパティやマッピングの情報を取得、設定、追加、削除できます。

AUTOSAR のプロパティ関数と map 関数

AUTOSAR のプロパティ関数と map 関数を使用して、プログラムによって AUTOSAR ソフトウェア コンポーネントの Simulink 表現を構成できます。次に例を示します。

  • AUTOSAR プロパティ関数を使用して、AUTOSAR 要素の追加、要素の検索、要素のプロパティの取得および設定、要素の削除、要素の ARXML パッケージ化の定義を行います。

  • AUTOSAR map 関数を使用して Simulink モデル要素を AUTOSAR 要素にマッピングし、モデル要素の AUTOSAR マッピング情報を返します。

AUTOSAR のプロパティ関数と map 関数は、AUTOSAR のプロパティとマッピングの変更要求に関する構文とセマンティクスを検証することもできます。

プロパティ関数と map 関数の完全なリストについては、コンポーネントの開発に記載されている関数を参照してください。

これらの関数を使用したスクリプトの例については、以下を参照してください。

.

メモ

AUTOSAR ソフトウェア コンポーネントの作成やインポートを行う関数の詳細については、コンポーネントの作成を参照してください。

AUTOSAR 構成のツリー ビュー

次に示す AUTOSAR 構成のツリー ビューは、AUTOSAR のプロパティ関数および map 関数を適用可能な AUTOSAR 要素のタイプを示しています。このビューは AUTOSAR ディクショナリのツリー表示に対応していますが、一部のコンフィギュレーションに表示されない要素も含まれる可能性があります。italics で表示されている名前はユーザーの選択によるものです。

  • AUTOSAR

    • AtomicComponents

      • MyComponent

        • ReceiverPorts

        • SenderPorts

        • SenderReceiverPorts

        • ModeReceiverPorts

        • ModeSenderPorts

        • ClientPorts

        • ServerPorts

        • NvReceiverPorts

        • NvSenderPorts

        • NvSenderReceiverPorts

        • ParameterReceiverPorts

        • TriggerReceiverPorts

        • ランナブル

        • IRV

        • パラメーター

    • S-R Interfaces

      • SRInterface1

        • DataElements

    • M-S Interfaces

      • MSInterface1

    • C-S Interfaces

      • CSInterface1

        • Operations

          • operation1

            • Arguments

    • NV Interfaces

      • NVInterface1

        • DataElements

    • パラメーター インターフェイス

      • ParameterInterface1

        • DataElements

    • トリガー インターフェイス

      • TriggerInterface1

        • トリガー

    • 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 ソフトウェア コンポーネントを構成する方法を示します。モデルにある AUTOSAR ソフトウェア コンポーネントは関数 find を使用して検出できます。

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");

コンポーネントをループし、Name プロパティと Kind プロパティの値をリストします。

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

Name プロパティと Kind プロパティの値を変更します。

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 Interfaces] ビューでの結果の表示を示します。

送信側/受信側インターフェイスをコンポーネント パッケージに追加していた場合は、次のように完全修飾パスを指定します。

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

完全修飾パスではなく部分修飾パスを使用する利点として考えられるのは、AUTOSAR コンポーネントの AUTOSAR ディクショナリのビューを参照すると、部分修飾パスが作成しやすくなることです。不利な点として考えられることは、部分修飾パスは AUTOSAR 構成内の 1 つを超える要素を参照する可能性があることです。たとえば、パス s/r は、送信側/受信側インターフェイスのデータ要素とコンポーネントのランナブルの両方を指す可能性が考えられます。競合が発生した場合、エラーと完全修飾パスのリストが表示されます。

ほとんどの AUTOSAR 要素は複数の要素で構成された (複合) プロパティをもちます。たとえば、アトミック ソフトウェア コンポーネントは、ReceiverPortsSenderPortsInternalBehavior などの複合プロパティをもちます。コンポーネントの ReceiverPorts プロパティのような、操作可能な複合プロパティをもつ要素については、親要素の中で子要素に名前が付けられて一意に定義されます。複合プロパティ内の子要素を特定するには、プロパティ名を付けずに親要素のパスと子の名前を使用します。たとえば、親のアトミック ソフトウェア コンポーネントの修飾パスが /A/B/SWC で、子の受信ポートの名前が RPort1 の場合、受信ポートの場所は /A/B/SWC/RPort1 になります。