Main Content

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

Simulink への AUTOSAR XML 記述のインポート

Simulink® では、AUTOSAR ソフトウェア コンポーネント、コンポジション、または共有要素のパッケージを AUTOSAR XML (ARXML) ファイルからインポートできます。arxml.importer オブジェクトとして実装されている ARXML インポーターを使用します。詳細については、AUTOSAR ARXML インポーターを参照してください。

ARXML ソフトウェア記述ファイルを Simulink にインポートするには、まず関数 arxml.importer を呼び出します。関数の引数で、ソフトウェア コンポーネント、コンポジション、または共有要素のパッケージを記述する 1 つ以上の ARXML ファイルを指定します。以下に例を示します。

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

この関数は、次のように動作します。

  • ARXML ファイルを解析して AUTOSAR ソフトウェア記述を特定します。

  • 最後にセミコロン (;) を付けずに関数呼び出しを入力した場合、指定された ARXML ファイルの AUTOSAR の内容がリストされます。

  • ARXML インポーター オブジェクトのハンドルが返されます。後続の関数呼び出しで、オブジェクトは ARXML ファイルで解析された AUTOSAR ソフトウェア記述を表します。

詳細については、ARXML インポーター オブジェクトの作成を参照してください。

次に、インポートする内容に基づいて、arxml.importer を呼び出して関数を作成または更新します。以下に例を示します。

AUTOSAR オーサリング ツール (AAT) と Simulink モデルベース デザイン環境の間で AUTOSAR 要素のラウンドトリップをサポートできるようにするために、ARXML インポートでは、インポートされた AUTOSAR XML ファイル構造、要素、および要素の汎用一意識別子 (UUID) を ARXML エクスポート用に保持します。詳細については、AUTOSAR XML ファイル構造と要素情報のラウンド トリップの保存を参照してください。

AUTOSAR ソフトウェア コンポーネントまたはコンポジションを Simulink にインポートすると、コンポーネントまたはコンポジション モデルの動作と構成を開発できます。コンポーネントの構成を調整するには、AUTOSAR コンポーネントの構成を参照してください。

ARXML エクスポート オプションを設定するには、AUTOSAR XML オプションの設定を参照してください。

ARXML インポーター オブジェクトの作成

ARXML 記述を Simulink にインポートする前に、関数 arxml.importer を呼び出します。AUTOSAR ソフトウェア コンポーネントの記述、コンポジション、または共有要素を含む 1 つ以上の ARXML ファイルの名前を指定します。関数は、指定した ARXML ファイルの記述を解析し、解析した情報を表すインポーター オブジェクトを作成します。createComponentAsModel または他の ARXML インポーター関数の後続の呼び出しでは、インポーター オブジェクトを指定する必要があります。

たとえば、次の呼び出しによって、主な AUTOSAR ソフトウェア コンポーネント ファイルである mr_component.arxml と、関連付けられた依存ファイルが指定されます。この依存ファイルには、データ型、実装、およびソフトウェア コンポーネントの記述を完成させるインターフェイス情報が含まれています。

ar = arxml.importer({'mr_component.arxml','mr_datatype.arxml',...
                     'mr_implementation.arxml','mr_interface.arxml'})

この呼び出しによって、AUTOSAR ソフトウェア コンポジションと集約されたその AUTOSAR コンポーネントを記述する ARXML ファイル ThrottlePositionControlComposition.arxml が指定されます。ARXML ファイルは、既定の MATLAB® 検索パス上の matlabroot/examples/autosarblockset/data にあります。

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 の周期的なランナブルを、周期的レートをもつアトミック サブシステムとしてモデル化するか (既定値)、周期的レートをもつ Function-Call Subsystem としてモデル化するかを制御します。設計によって Function-Call Subsystem が必要とされる場合を除いて AtomicSubsystem を指定します。詳細については、複数のランナブルをもつ AUTOSAR ソフトウェア コンポーネントのインポートを参照してください。

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 のリファレンス ページと例AUTOSAR コンポジションの Simulink へのインポートを参照してください。

20 個を超えるソフトウェア コンポーネントを含むコンポジションの場合、コンポーネント間で AUTOSAR プロパティを共有することで、コンポジション ワークフローのパフォーマンスを大幅に改善し、重複を削減できます。コンポーネント共有の AUTOSAR プロパティを保存するようにコンポジションのインポートを構成するには、'DataDictionary' 引数と 'ShareAUTOSARProperties' 引数を使用します。詳細については、createCompositionAsModel のリファレンス ページと例AUTOSAR コンポジションのインポートと AUTOSAR ディクショナリの共有を参照してください。

モデルへのコンポーネントまたはコンポジションの外部更新のインポート

解析されたアトミック ソフトウェア コンポーネントまたはコンポジションを Simulink モデルにインポートした後、コンポーネントまたはコンポジションの ARXML 記述は別の AUTOSAR オーサリング環境で引き続き進化する場合があります。AUTOSAR コンポーネントまたはコンポジション モデルを外部の変更で更新するには、関数 updateModel を呼び出します。ARXML の変更と更新する既存の AUTOSAR モデルを表す ARXML インポーター オブジェクトを指定します。

次の例では、Controller という名前の既存の AUTOSAR コンポーネント モデルを、ファイル ThrottlePositionControlComposition_updated.arxml の変更で更新しています。

% 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 のリファレンス ページ、AUTOSAR ソフトウェア コンポーネントの更新のインポート、および例AUTOSAR コンポーネントの Simulink へのインポートの更新に関するセクションを参照してください。

コンポーネント モデルへの共有要素パッケージのインポート

AUTOSAR ソフトウェア コンポーネント モデルを作成した後に、Simulink で開始するか、ARXML コンポーネントの記述をインポートして、コンポーネント モデルの AUTOSAR プロパティを、コンポーネント間で共有される事前定義済みの要素とプロパティで更新できます。コンポーネントの AUTOSAR プロパティを共有要素定義のパッケージで更新するには、関数 updateAUTOSARProperties を呼び出します。ARXML 共有要素定義と更新する既存の AUTOSAR モデルを表す ARXML インポーター オブジェクトを指定します。

次の例では、AUTOSAR コンポーネント モデルを、ファイル SwAddrMethods.arxml の要素定義で更新します。

addpath(fullfile(matlabroot,'/examples/autosarblockset/main'));
modelName = 'autosar_swc';
open_system(modelName);
ar = arxml.importer('SwAddrMethods.arxml');
updateAUTOSARProperties(ar,modelName);

詳細については、updateAUTOSARProperties のリファレンス ページ、共有 AUTOSAR 要素定義のインポートと参照、および例コンポーネント モデルへの AUTOSAR パッケージのインポートを参照してください。

参考

関連する例

詳細