Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

測定およびキャリブレーションのための AUTOSAR データの構成

Simulink® では、AUTOSAR ソフトウェア データ定義のプロパティをインポートおよびエクスポートし、一部の AUTOSAR データのプロパティを変更できます。

ソフトウェア データ定義プロパティ (SwDataDefProps) について

Embedded Coder® では、次の AUTOSAR ソフトウェア データ定義プロパティ (SwDataDefProps) について ARXML インポートおよびエクスポートをサポートしています。

  • ソフトウェア キャリブレーション アクセス (SwCalibrationAccess) — データ オブジェクトに対する測定ツールおよびキャリブレーション ツールのアクセスを指定します。

  • 表示形式 (DisplayFormat) —データ オブジェクトに対する測定およびキャリブレーションの表示形式を指定します。

  • ソフトウェア アドレス メソッド (SwAddrMethod) — 指定されたアドレスに応じてデータ オブジェクト (測定パラメーターやキャリブレーション パラメーターなど) にアクセスする方法を指定します。実行時測定ツールとキャリブレーション ツールからアクセスできるように、データをメモリにグループ化するために使用されます。

  • ソフトウェア アライメント (SwAlignment) — メモリ セクション内のデータ オブジェクトの意図された配置を指定します。

  • ソフトウェア実装ポリシー (SwImplPolicy) — 変数の一貫性メカニズムに配慮したデータ オブジェクトの実装ポリシーを指定します。

  • ソフトウェア レコード レイアウト (SwRecordLayout) — AUTOSAR ECU のメモリでデータを直列化する方法を指定します。

Simulink 環境では一部の AUTOSAR データのソフトウェア データ定義プロパティを直接変更できます。SwImplPolicy プロパティまたは SwRecordLayout プロパティは変更できませんが、これらのプロパティは ARXML コードでエクスポートされます。

詳細については、SwCalibrationAccess の設定DisplayFormat の設定SwAddrMethod の設定SwAlignment の設定SwImplPolicy のエクスポートおよびルックアップ テーブル データの SwRecordLayout のエクスポートを参照してください。

SwCalibrationAccess の設定

SwCalibrationAccess プロパティは、測定変数、キャリブレーション パラメーター、信号データ オブジェクトおよびパラメーター データ オブジェクトに対して指定できます。有効な値は次のとおりです。

  • [ReadOnly] — データ要素は、生成された読み取りアクセス専用の記述ファイルに出力されます。

  • [ReadWrite] — データ要素は、生成された読み取りと書き込みの両方のアクセスが可能な記述ファイルに出力されます。

  • [NotAccessible] — データ要素は、生成された記述ファイルには出力されず、測定ツールおよびキャリブレーション ツールによってアクセスできません。

信号やパラメーターを含むモデルを開く場合、次の方法で SwCalibrationAccess プロパティを指定できます。

AUTOSAR データ要素の SwCalibrationAccess を指定する

AUTOSAR ディクショナリまたは MATLAB® の関数呼び出しを使用して、次の AUTOSAR データ要素の SwCalibrationAccess プロパティを指定できます。

  • 送信側/受信側インターフェイス データ要素

  • 非 volatile インターフェイス データ要素

  • クライアント/サーバー引数

  • インターランナブル変数

次に例を示します。

  1. AUTOSAR 向けに構成されたモデルを開きます。

  2. AUTOSAR ディクショナリを開きます。次のうちいずれかのビューに移動します。

    • S-R または NV インターフェイス、[DataElements] ビュー

    • C-S インターフェイス、[Arguments] ビュー

    • アトミック コンポーネント、[IRV] ビュー

  3. [SwCalibrationAccess] ドロップダウン リストを使用して、データ要素に許可する測定ツールおよびキャリブレーション ツールのアクセス レベルを選択します。

別の方法として、AUTOSAR プロパティ関数を使用して AUTOSAR のデータ要素の SwCalibrationAccess プロパティを指定できます。たとえば、次のコードはモデル例 autosar_swc_fcncalls を開いて、インターランナブル変数 IRV2 の測定およびキャリブレーションのアクセスを ReadWrite に設定します。

hModel = 'autosar_swc_fcncalls';
addpath(fullfile(matlabroot,'/examples/autosarblockset/main'));
open_system(hModel)
arProps = autosar.api.getAUTOSARProperties(hModel);
get(arProps,'/Company/Powertrain/Components/ASWC/ASWC_IB/IRV2','SwCalibrationAccess')

set(arProps,'/Company/Powertrain/Components/ASWC/ASWC_IB/IRV2','SwCalibrationAccess','ReadWrite');
get(arProps,'/Company/Powertrain/Components/ASWC/ASWC_IB/IRV2','SwCalibrationAccess')
ans =
    'ReadOnly'

ans =
    'ReadWrite'

同じモデルで S-R インターフェイス データ要素の SwCalibrationAccess を設定するために、AUTOSAR プロパティ関数 set を呼び出す例を次に示します。

set(arProps,'/Company/Powertrain/Interfaces/InIf/In1','SwCalibrationAccess','ReadWrite');
get(arProps,'/Company/Powertrain/Interfaces/InIf/In1','SwCalibrationAccess')
ans =
    'ReadWrite'

アプリケーション データ型の既定の SwCalibrationAccess を指定する

AUTOSAR XML オプションは、SwCalibrationAccess DefaultValue (プロパティ SwCalibrationAccessDefault) を含みます。これは、モデルの AUTOSAR アプリケーション データ型の既定の SwCalibrationAccess 値を定義します。AUTOSAR プロパティ関数を使用して既定値を変更できます。たとえば、次のコードはモデル例 autosar_swc_fcncalls を開いて、AUTOSAR アプリケーション データ型に対する測定およびキャリブレーションの既定のアクセスを、ReadOnly から ReadWrite に変更します。

hModel = 'autosar_swc_fcncalls';
addpath(fullfile(matlabroot,'/examples/autosarblockset/main'));
open_system(hModel)
arProps = autosar.api.getAUTOSARProperties(hModel);
get(arProps,'XmlOptions','SwCalibrationAccessDefault')

set(arProps,'XmlOptions','SwCalibrationAccessDefault','ReadWrite');
get(arProps,'XmlOptions','SwCalibrationAccessDefault')
ans =
    'ReadOnly'

ans =
    'ReadWrite'

DisplayFormat の設定

AUTOSAR の表示形式仕様は、測定およびキャリブレーション データを表示する幅と精度を制御します。AUTOSAR の表示形式仕様はインポートおよびエクスポートでき、Simulink で仕様を編集することもできます。次の AUTOSAR 要素の表示形式を指定できます。

  • インターランナブル変数

  • 送信側/受信側インターフェイス データ要素

  • クライアント/サーバー インターフェイスのオペレーション引数

  • CompuMethods

表示形式指定は、以下の形式で表される ANSI® C printf 指定子のサブセットです。

%[flags][width][.precision]type
フィールド説明
flags
(オプション)

AUTOSAR スキーマによってサポートされるフラグを指定する文字。

  • (''):値の前にスペースを 1 個挿入します。

  • -:左揃えします。

  • +:プラスまたはマイナス記号を表示します (正の数値に対しても表示)。

  • #:

    • ox および X の型の場合は、接頭辞の 00x または 0X を表示します。

    • eE および f の型の場合は、精度がゼロの場合でも小数点を表示します。

    • g および G の型の場合は、後続のゼロまたは小数点を削除しません。

width
(オプション)

表示する最小文字数を指定する正の整数。

precision
(オプション)

表示する精度を指定する正の整数。

  • 整数型の値 (dioux および X) の場合は、最小桁数を指定します。

  • eE および f の型の場合は、小数点以下の桁数を指定します。

  • g および G の型の場合は、有効桁数を指定します。

type

AUTOSAR スキーマによってサポートされる数値変換の型を指定する文字。

  • d:符号付き 10 進数整数。

  • i:符号付き 10 進数整数。

  • o:符号なしの 8 進数整数。

  • u:符号なしの 10 進数整数。

  • x:"abcdef" の文字を使用した、符号なしの 16 進数整数。

  • X:"ABCDEF" の文字を使用した、符号なしの 16 進数整数。

  • e:指数表現における符号付き浮動小数点値。値の形式は [-]d.dddd e [sign]ddd

    • d は 1 桁の 10 進数。

    • dddd は 1 桁以上の 10 進数。

    • ddd は厳密に 3 桁の 10 進数。

    • sign+ または -

  • E:e ではなく E が指数を導入する点を除いて、e 形式と同じ。

  • f:固定小数点表記における符号付き浮動小数点値。値の形式は [-]dddd.dddd

    • dddd は 1 桁以上の 10 進数。

    • 小数点の前の桁数は、数値の大きさによって決まります。

    • 小数点以下の桁数は、要求される精度によって決まります。

  • g:f 形式または e 形式で出力される符号付き値。指定された値および精度がコンパクトないずれか一方。後続のゼロは切り捨てられ、小数点が 1 桁以上になる場合にのみ表示されます。

  • G:(必要な場合に) e ではなく E によって指数を導入する点を除いて、g 形式と同じ。

たとえば、%2.1d という書式指定子は、幅が 2、精度が 1 の符号付き 10 進数を指定しており、表示される値は 12.2 のようになります。

[DisplayFormat] 属性は、それが適用される AUTOSAR 要素のダイアログ ボックスに表示されます。表示形式はダイアログ ボックスで指定することも、あるいは属性を変更できる要素 API を使用して指定することもできます。

hModel = 'autosar_swc_counter';
addpath(fullfile(matlabroot,'/examples/autosarblockset/main'));
open_system(hModel);
slMap = autosar.api.getSimulinkMapping(hModel);
mapParameter(slMap,'INC','ConstantMemory','DisplayFormat','%2.6f')

表示形式を指定する場合、ARXML コードをエクスポートすることで対応する DISPLAY-FORMAT 仕様が生成されます。

<PARAMETER-DATA-PROTOTYPE UUID="...">
    <SHORT-NAME>INC</SHORT-NAME>
    <CATEGORY>VALUE</CATEGORY>
    <SW-DATA-DEF-PROPS>
        <SW-DATA-DEF-PROPS-VARIANTS>
            <SW-DATA-DEF-PROPS-CONDITIONAL>
                <SW-CALIBRATION-ACCESS>READ-WRITE</SW-CALIBRATION-ACCESS>
                <DISPLAY-FORMAT>%2.6f</DISPLAY-FORMAT>
                <SW-IMPL-POLICY>STANDARD</SW-IMPL-POLICY>
            </SW-DATA-DEF-PROPS-CONDITIONAL>
        </SW-DATA-DEF-PROPS-VARIANTS>
    </SW-DATA-DEF-PROPS>
    ...
</PARAMETER-DATA-PROTOTYPE>

SwAddrMethod の設定

AUTOSAR ソフトウェア コンポーネントでは、ソフトウェア アドレス メソッド (SwAddrMethod) を使用してデータと関数をメモリ セクションにグループ化し、実行時測定ツールとキャリブレーション ツールからアクセスできるようにします。AUTOSAR ソフトウェア コンポーネントにマッピングされる Simulink モデルの場合は、SwAddrMethod を次の要素に関連付けることができます。

  • 次にマッピングされたモデル パラメーターまたはルックアップ テーブル:

    • AUTOSAR 定数メモリ

    • AUTOSAR 内部キャリブレーション パラメーター

    • AUTOSAR ポート パラメーター

  • 次にマッピングされる信号、状態、またはデータ ストア:

    • AUTOSAR の静的メモリ

    • AUTOSAR のインスタンスごとのメモリ

  • AUTOSAR ランナブルにマッピングされるモデルのエントリポイント関数

  • モデルのエントリポイント関数内の内部データ

SwAddrMethod を作成して AUTOSAR モデルで使用するには、次のようにします。

  1. SwAddrMethod を ARXML ファイルからインポートするか、SwAddrMethod を Simulink に作成します。

    • SwAddrMethod を ARXML ファイルからインポートするには、関数 arxml.importer (新しいモデルの場合は createComponentAsModel または createCompositionAsModel、既存のモデルの場合は updateModel または updateAUTOSARProperties) を使用します。

    • 既存のモデルで SwAddrMethod を作成するには、AUTOSAR ディクショナリの [SwAddrMethods] ビューを開き、[追加] ボタン をクリックします。または、等価の AUTOSAR プロパティ関数を使用します。詳細については、Simulink での SwAddrMethod の作成を参照してください。

  2. SwAddrMethod をモデル データと関数に関連付けます。コード マッピング エディターを開き [Parameters][Data Stores][Signals/States]、または [Functions] タブを選択します。タブ内の要素を選択し、プロパティ インスペクターを使用して [SwAddrMethod] 属性を設定します。または、等価の AUTOSAR map 関数を使用します。詳細については、SwAddrMethod とモデル データまたは関数の関連付けを参照してください。

  3. AUTOSAR モデルのコードを生成します (この例では、モデル autosar_swc_counter で AUTOSAR 静的メモリにマッピングされている信号を使用します)。生成されたファイルでは、以下のようになります。

    • エクスポートされた ARXML ファイルに SwAddrMethod の記述と参照が含まれます。

      <VARIABLE-DATA-PROTOTYPE UUID="...">
          <SHORT-NAME>SM_equal_to_count</SHORT-NAME>
          <CATEGORY>VALUE</CATEGORY>
          <SW-DATA-DEF-PROPS>
              <SW-DATA-DEF-PROPS-VARIANTS>
                  <SW-DATA-DEF-PROPS-CONDITIONAL>
                      <SW-ADDR-METHOD-REF DEST="SW-ADDR-METHOD">
                      /Company/Powertrain/DataTypes/SwAddrMethods/VAR
                      </SW-ADDR-METHOD-REF>
                      <SW-CALIBRATION-ACCESS>READ-ONLY</SW-CALIBRATION-ACCESS>
                      <SW-IMPL-POLICY>STANDARD</SW-IMPL-POLICY>
                  </SW-DATA-DEF-PROPS-CONDITIONAL>
              </SW-DATA-DEF-PROPS-VARIANTS>
          </SW-DATA-DEF-PROPS>
          <TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">
          /Company/Powertrain/DataTypes/Boolean_volatile_my_qualifier</TYPE-TREF>
      </VARIABLE-DATA-PROTOTYPE>
    • AUTOSAR 準拠の C コードには、各 SwAddrMethod メモリ セクションに属しているデータのラッパーまたは関数定義を提供するコメントおよび #define#include ステートメントが含まれます。

      /* Static Memory for Internal Data */
      
      /* SwAddrMethod VAR for Internal Data */
      #define autosar_swc_counter_START_SEC_VAR
      #include "autosar_swc_counter_MemMap.h"
      
      volatile my_qualifier boolean SM_equal_to_count;
      
      #define autosar_swc_conter_STOP_SEC_VAR
      #include "autosar_swc_counter_MemMap.h"

Simulink での SwAddrMethod の作成

既存のモデルで SwAddrMethod を作成するには、AUTOSAR ディクショナリの [SwAddrMethods] ビューを開き、[追加] ボタン をクリックします。

または、等価の AUTOSAR プロパティ関数を使用します。このコードによって SwAddrMethods myCODE と myVAR が AUTOSAR コンポーネント モデルに追加されます。

hModel = 'autosar_swc_counter';
addpath(fullfile(matlabroot,'/examples/autosarblockset/main'));
open_system(hModel)
arProps = autosar.api.getAUTOSARProperties(hModel);
addPackageableElement(arProps,'SwAddrMethod',...
    '/Company/Powertrain/DataTypes/SwAddrMethods','myCODE',...
    'SectionType','Code')
swAddrPaths = find(arProps,[],'SwAddrMethod','PathType','FullyQualified',...
    'SectionType','Code')
addPackageableElement(arProps,'SwAddrMethod',...
    '/Company/Powertrain/DataTypes/SwAddrMethods','myVAR',...
    'SectionType','Var')
swAddrPaths = find(arProps,[],'SwAddrMethod','PathType','FullyQualified',...
    'SectionType','Var')
swAddrPaths =
    {'/Company/Powertrain/DataTypes/SwAddrMethods/CODE'}
    {'/Company/Powertrain/DataTypes/SwAddrMethods/myCODE'}

swAddrPaths =
    {'/Company/Powertrain/DataTypes/SwAddrMethods/VAR'}
    {'/Company/Powertrain/DataTypes/SwAddrMethods/myVAR'}

SwAddrMethod とモデル データまたは関数の関連付け

SwAddrMethod をモデル データおよび関数と関連付けるには、コード マッピング エディターを開き、[Parameters][Data Stores][Signals/States]、または [Functions] タブを選択します。タブ内の要素を選択し、プロパティ インスペクターを使用して [SwAddrMethod] 属性を設定します。この例では、信号の equal_to_countSwAddrMethod VAR が選択され、AUTOSAR の静的なメモリにマッピングされます。

または、等価の AUTOSAR map 関数を使用します。詳細については、mapFunctionmapParametermapSignalmapState、または mapDataStore のリファレンス ページを参照してください。

SwAlignment の設定

SwAlignment プロパティは、メモリ セクション内の AUTOSAR データの意図された配置を記述します。SwAlignment はビット数を定義します。有効な値には 8、12、32、UNKNOWN (推奨されない)、UNSPECIFIED および BOOLEAN があります。数値データの場合、一般的な SwAlignment の値は 8、16 および 32 です。

SwAlignment プロパティを定義しない場合、参照されている SwAlignmentswBaseType サイズと memoryAllocationKeywordPolicy によって配置が決まります。

AUTOSAR プロパティ関数 set を使用して、S-R インターフェイス データ要素およびインターランナブル変数の SwAlignment を設定できます。以下に例を示します。

interfacePath = '/A/B/C/Interfaces/If1/';
dataElementName = 'El1';
swAlignmentValue = '32';
set(dataObj,[interfacePath dataElementName],'SwAlignment',swAlignmentValue);

ラウンドトリップ ワークフローをサポートするために、ARXML インポーターは次の AUTOSAR データの SwAlignment プロパティをインポートして保持します。

  • インスタンスごとのメモリ

  • ソフトウェア コンポーネント パラメーター

  • パラメーター インターフェイス データ要素

  • クライアント/サーバー インターフェイスのオペレーション引数

  • 静的メモリおよび定数メモリ

SwImplPolicy のエクスポート

SwImplPolicy プロパティは、変数の一貫性メカニズムに関して、データ要素の実装ポリシーを指定します。SwImplPolicy プロパティは変更できませんが、このプロパティはエクスポートされた ARXML コード内の AUTOSAR データについて standard または queued に設定されます。値は次のように設定されます。

  • standard

    • インスタンスごとのメモリ

    • インターランナブル変数

    • ソフトウェア コンポーネント パラメーター

    • パラメーター インターフェイス データ要素

    • クライアント/サーバー インターフェイスのオペレーション引数

    • 静的メモリおよび定数メモリ

  • standard または queued

    送信側/受信側インターフェイス データ要素

ルックアップ テーブル データの SwRecordLayout のエクスポート

AUTOSAR ソフトウェア コンポーネントはソフトウェア レコード レイアウト (SwRecordLayout) を使用して AUTOSAR ECU のメモリでデータを直列化する方法を指定します。ARXML インポーターは、AUTOSAR データの SwRecordLayout プロパティをインポートして保持します。

SwRecordLayout は、次の 2 つのいずれかの方法で ARXML ファイルからインポートできます。

  • インポーター関数 createComponentAsModel を使用して AUTOSAR モデルを ARXML ファイルから作成する場合は、インポートに SwRecordLayout 定義を含む ARXML ファイルを含めます。インポートされた SwRecordLayout は保持され、後で ARXML コードでエクスポートされます。

  • Simulink で AUTOSAR モデルを作成する場合は、ARXML ファイルから SwRecordLayout の共有の定義をインポートできます。インポーター関数 updateAUTOSARProperties を使用します。次に例を示します。

    importerObj = arxml.importer(arxmlFileName);
    updateAUTOSARProperties(importerObj,modelName);

    モデル コードを生成すると、エクスポートされた ARXML コードにはインポートされた読み取り専用 SwRecordLayout 要素への参照が含まれますが、定義への参照は含まれません。

    詳細については、共有 AUTOSAR 要素定義のインポートと参照を参照してください。

関連する例

詳細