Main Content

connect

AUTOSAR アーキテクチャ コンポーネントとコンポジションの接続

R2020a 以降

説明

connectors = connect(archModel,comp1,comp2) は、一致するポート名に基づいて、コンポーネントまたはコンポジション comp1 の出力ポートをコンポーネントまたはコンポジション comp2 の入力ポートに接続します。archModel 引数は、autosar.arch.createModel または autosar.arch.loadModel への以前の呼び出しにより返されるモデル ハンドルです。comp1 引数と comp2 引数は、addComponentaddComposition または find への以前の呼び出しにより返されるコンポーネント ハンドルまたはコンポジション ハンドルです。connectors 出力引数は、autosar.arch.Connector オブジェクトである 1 つ以上のコネクタ ハンドルを返します。

connectors = connect(archCM,[],comp2) は、一致するポート名に基づいて、親コンポジションまたはアーキテクチャ モデル archCM のルート入力ポートを子コンポーネントまたはコンポジション comp2 の入力ポートに接続します。

connectors = connect(archCM,comp1,[]) は、一致するポート名に基づいて子コンポーネントまたはコンポジション comp1 の出力ポートを親コンポジションまたはアーキテクチャ モデル archCM のルート出力ポートに接続します。

connectors = connect(archModel,port1,port2) は、コンポーネント、コンポジションまたはルート アーキテクチャ ポート port1 をコンポーネント、コンポジションまたはルート アーキテクチャ ポート port2 に接続します。port1 引数と port2 引数は、addPort または find への以前の呼び出しにより返されるポート ハンドルです。

すべて折りたたむ

この例では、AUTOSAR Classic アーキテクチャ モデルでポートを接続する方法について説明します。

AUTOSAR Classic アーキテクチャ モデルを作成します。

modelName = 'myArchModel';
archModel = autosar.arch.createModel(modelName);

既定では、autosar.arch.createModelは、Classic Platform の AUTOSAR アーキテクチャ モデルを作成します。同じアーキテクチャ モデル内で Classic コンポーネントと Adaptive コンポーネントを混在させることはサポートされていません。

モデルの最上位レベルで、コンポジション、アプリケーション コンポーネント、センサー/アクチュエータ コンポーネントを追加します。

composition = addComposition(archModel,'Sensors');

addComponent(archModel,'Controller1');
actuator = addComponent(archModel,'Actuator');
set(actuator,'Kind','SensorActuator');

アーキテクチャ モデルには、2 つの受信 (入力) ポートと 1 つの送信 (出力) ポートを追加します。ポートはアーキテクチャ モデルの境界に表示されます。

addPort(archModel,'Receiver',{'TPS_Hw','APP_Hw'});
addPort(archModel,'Sender','ThrCmd_Hw');

コンポジション ブロックには、2 つの受信ポートと 2 つの送信ポートを追加します。コンポジションの受信ポートの名前は、それらが接続するアーキテクチャ モデルの受信ポートの名前と一致します。

addPort(composition,'Receiver',{'TPS_Hw','APP_Hw'});
addPort(composition,'Sender',{'TPS_Perc','APP_Perc'});

コンポーネント ブロックには、受信ポートと送信ポートを追加します。コンポーネントの受信ポートと送信ポートの名前は、それらが接続するコンポーネント ポート、コンポジション ポートまたはアーキテクチャ モデル ポートの名前と一致します。

controller = find(archModel,'Component','Name','Controller1');
addPort(controller,'Receiver',{'TPS_Perc','APP_Perc'});
addPort(controller,'Sender','ThrCmd_Perc');
addPort(actuator,'Receiver','ThrCmd_Perc');
addPort(actuator,'Sender','ThrCmd_Hw');

モデルの最上位レベルで、一致するポート名に基づいて、コンポジションとコンポーネントを接続します。

connect(archModel,composition,controller);
connect(archModel,controller,actuator);
% Connect specified arch root ports to specified composition and component ports
connect(archModel,archModel.Ports(1),composition.Ports(1));

アーキテクチャ ルート ポートをコンポジション ポートとコンポーネント ポートに接続します。一致するポート名に基づき接続を確立するのではなく、ポート ハンドルを使用して特定のアーキテクチャ ポート、コンポジション ポートおよびコンポーネント ポートを識別します。

connect(archModel,...
    find(archModel,'Port','Name','APP_Hw'),...
    find(composition,'Port','Name','APP_Hw'));
connect(archModel,actuator.Ports(2),archModel.Ports(3));
% ALTERNATIVELY, connect architecture root ports based on matching port names
% connect(archModel,[],composition);
% connect(archModel,actuator,[]);

layout(archModel);  % Auto-arrange architecture model layout

Sensors コンポジションの中に、PedalSnsr および ThrottleSnsr という名前のセンサー/アクチュエータ コンポーネントを追加します。

names = {'PedalSnsr','ThrottleSnsr'};
sensorSWCs = addComponent(composition,names,'Kind','SensorActuator');

コンポーネント ブロックには、受信ポートと送信ポートを追加します。コンポーネントの受信ポートと送信ポートの名前は、それらが接続するコンポジション ルート ポートの名前と一致します。

pSnsr = find(composition,'Component','Name','PedalSnsr');
tSnsr = find(composition,'Component','Name','ThrottleSnsr');
addPort(pSnsr,'Receiver','APP_Hw');
addPort(pSnsr,'Sender','APP_Perc');
addPort(tSnsr,'Receiver','TPS_Hw');
addPort(tSnsr,'Sender','TPS_Perc');

一致するポート名に基づいて、Sensors コンポジション ルート ポートをコンポーネント ポートに接続します。

connect(composition,[],pSnsr);
connect(composition,pSnsr,[]);
connect(composition,[],tSnsr);
connect(composition,tSnsr,[]);

layout(composition);  % Auto-arrange composition layout

この例では、AUTOSAR Adaptive アーキテクチャ モデルでポートを接続する方法について説明します。

AUTOSAR Adaptive アーキテクチャ モデルを作成します。

modelName = 'myArchModel';
archModel = autosar.arch.createModel(modelName,'platform','Adaptive');

モデルの最上位レベルで、コンポジションと Adaptive アプリケーション コンポーネントを追加します。

composition = addComposition(archModel,'Sensors');
addComponent(archModel,'Filter');

アーキテクチャ モデルには、2 つの受信 (入力) ポートと 2 つの送信 (出力) ポートを追加します。ポートはアーキテクチャ モデルの境界に表示されます。

addPort(archModel,'Receiver',{'Data_Snsr1','Data_Snsr2'});
addPort(archModel,'Sender',{'FilteredData_Snsr1','unFilteredData_Snsr2'});

コンポジション ブロックには、2 つの受信ポートと 2 つの送信ポートを追加します。コンポジションの受信ポートと送信ポートの名前は、それらが接続するアーキテクチャ モデルの受信ポートと送信ポートの名前と一致します。

addPort(composition,'Receiver',{'Data_Snsr1','Data_Snsr2'});
addPort(composition,'Sender',{'FilteredData_Snsr1','unFilteredData_Snsr2'});

モデルの最上位レベルで、アーキテクチャのルート入力端子をコンポジション ポートに接続し、一致するポート名に基づき接続を確立します。

connect(archModel,[],composition);

アーキテクチャのルート出力端子をコンポジション ポートに接続し、一致するポート名に基づき接続を確立します。

connect(archModel,composition,[]);

コンポジション ブロックには、クライアント ポートを追加します。

addPort(composition,'Client','Filter_RPort');

コンポーネント ブロックには、サーバー ポートを追加します。

filter = find(archModel,'Component','Name','Filter');
addPort(filter,'Server','Filter_PPort');
layout(archModel);

コンポジションとコンポーネントのクライアント サーバー ポートを接続します。ポート ハンドルを使用して、特定のコンポジション ポートおよびコンポーネント ポートを識別します。

connect(archModel,...
    find(filter,'Port','Name','Filter_PPort'),...
    find(composition,'Port','Name','Filter_RPort'));

入力引数

すべて折りたたむ

ポートを接続する AUTOSAR アーキテクチャ モデル。この引数は、autosar.arch.createModel または autosar.arch.loadModel への以前の呼び出しにより返されるモデル ハンドルです。

例: archModel

一致するポート名に基づいて親ポートと子ポートを接続する AUTOSAR コンポジションまたはアーキテクチャ モデル。この引数は、addCompositionautosar.arch.createModel または autosar.arch.loadModel への以前の呼び出しにより返されるコンポジションまたはアーキテクチャ モデルのハンドルです。

例: archModel

一致するポート名に基づいて、出力ポートを接続するコンポーネントまたはコンポジション。この引数は、addComponentaddComposition または find への以前の呼び出しにより返されるコンポーネントまたはコンポジション ハンドルです。

例: composition

一致するポート名に基づいて、入力ポートを接続するコンポーネントまたはコンポジション。この引数は、addComponentaddComposition または find への以前の呼び出しにより返されるコンポーネントまたはコンポジション ハンドルです。

例: controller

別の指定したポートに接続するコンポーネント、コンポジションまたはルート アーキテクチャ ポート。この引数は、addPort または find への以前の呼び出しにより返されるポート ハンドルです。

例: archModel.Ports(1)

別の指定したポートに接続するコンポーネント、コンポジションまたはルート アーキテクチャ ポート。この引数は、addPort または find への以前の呼び出しにより返されるポート ハンドルです。

例: composition.Ports(1)

出力引数

すべて折りたたむ

autosar.arch.Connector オブジェクトであり、コネクタ プロパティをもつ 1 つ以上の AUTOSAR コネクタ ハンドルを返します。

バージョン履歴

R2020a で導入