メインコンテンツ

プログラムによる AUTOSAR 送信側/受信側通信の設定

この例では、autosar.api.getAUTOSARProperties オブジェクト関数を使用して、モデル autosar_swc_expfcns の送信側/受信側ポート、インターフェイス、データ要素、およびランナブルを設定するためのプログラム ワークフローを示します。autosar.api.getSimulinkMapping オブジェクト関数による AUTOSAR 要素への Simulink® のマッピングに関するプログラム ワークフローも提供されます。

送信側/受信側インターフェイスの設定およびマッピング

モデル例 autosar_swc_expfcns を開き、autosar.api.getAUTOSARProperties オブジェクトを作成します。

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

インターフェイス パッケージと名前を使用して、IsService プロパティを false として指定する AUTOSAR 送信側/受信側インターフェイスを追加します。

ifName = 'mySrIf';
ifPkg = get(arProps,'XmlOptions','InterfacePackage');
addPackageableElement(arProps,'SenderReceiverInterface',ifPkg,ifName,'IsService',false);
ifPaths=find(arProps,[],'SenderReceiverInterface','PathType','FullyQualified')'
ifPaths = 3×1 cell
    {'/pkg/if/Interface1'}
    {'/pkg/if/Interface2'}
    {'/pkg/if/mySrIf'    }

SwCalibrationAccess プロパティを ReadWrite に設定してデータ要素を追加します。AUTOSAR プロパティの詳細については、AUTOSAR Element Propertiesを参照してください。

de1 = 'myDE1';
de2 = 'myDE2';
swCalibValue= 'ReadWrite';
add(arProps, [ifPkg '/' ifName],'DataElements',de1,'SwCalibrationAccess',swCalibValue);
add(arProps, [ifPkg '/' ifName],'DataElements',de2,'SwCalibrationAccess',swCalibValue);

AUTOSAR 受信 (要求) 側ポートと送信 (提供) 側ポートをインターフェイス mySrIf に追加します。

rPortName = 'myRPort';
pPortName = 'myPPort';
aswcPath = find(arProps,[],'AtomicComponent','PathType','FullyQualified');
add(arProps,aswcPath{1},'ReceiverPorts',rPortName,'Interface',ifName);
add(arProps,aswcPath{1},'SenderPorts',pPortName,'Interface',ifName);

mapOutport による要求側のポートと提供側のポートのマッピング

autosar.api.getSimulinkMapping オブジェクトを作成します。

slMap=autosar.api.getSimulinkMapping(hModel);

オブジェクト関数を使用して出力端子 RPort_DE2 を取得し、ポート myRPort にマッピングします。データ アクセス モードを ImplicitReceive に設定します。詳細については、mapOutport関数を参照してください。

[rPortName,rDataElementName,rDataAccessMode] = getInport(slMap,'RPort_DE2')
rPortName = 
'RPort'
rDataElementName = 
'DE2'
rDataAccessMode = 
'ImplicitReceive'
mapInport(slMap,'RPort_DE2','myRPort',de2,'ImplicitReceive')
[rPortName,rDataElementName,rDataAccessMode] = getInport(slMap,'RPort_DE2')
rPortName = 
'myRPort'
rDataElementName = 
'myDE2'
rDataAccessMode = 
'ImplicitReceive'

オブジェクト関数を使用して出力端子 PPort_DE1 を取得し、ポート myPPort にマッピングします。データ アクセス モードを ImplicitSend に設定します。

[pPortName,pDataElementName,pDataAccessMode] = getOutport(slMap,'PPort_DE1')
pPortName = 
'PPort'
pDataElementName = 
'DE1'
pDataAccessMode = 
'ImplicitSend'
mapOutport(slMap,'PPort_DE1','myPPort','myDE1','ImplicitSend');
[pPortName,pDataElementName,pDataAccessMode] = getOutport(slMap,'PPort_DE1')
pPortName = 
'myPPort'
pDataElementName = 
'myDE1'
pDataAccessMode = 
'ImplicitSend'

送信側/受信側データ要素のプロパティの設定

入れ子になった for ループを使用して、複数の AUTOSAR データ要素の SwCalibrationAccess プロパティを構成できます。

srIfs = find(arProps,[],'SenderReceiverInterface','PathType','FullyQualified')'
srIfs = 3×1 cell
    {'/pkg/if/Interface1'}
    {'/pkg/if/Interface2'}
    {'/pkg/if/mySrIf'    }

for i=1:length(srIfs)
    srIf = srIfs{i};
    dataElements = get(arProps,srIf,'DataElements','PathType','FullyQualified');
    swCalibValue = 'ReadWrite';
    for ii=1:length(dataElements)
        dataElement = dataElements{ii};
        set(arProps,dataElement,'SwCalibrationAccess',swCalibValue)
    end
end

ランナブル有効化のイベントの設定

このセクションでは、AUTOSAR TimingEventDataReceivedEvent、および DataReceiveErrorEvent をモデル autosar_swc_expfcns のランナブルに追加するプロパティ関数の構文を示します。

DataReceiveErrorEvent の場合は、トリガーを指定する必要があります。トリガー名には、イベントを受信する AUTOSAR 受信側ポートとデータ要素の名前が含まれます。たとえば、"RPort.DE1" です。

OperationInvokedEvent の構文については、Programmatically Configure AUTOSAR Client-Server Communicationを参照してください。

ModeSwitchEvent の構文については、Programmatically Configure AUTOSAR Mode-Switch Communicationを参照してください。

モデル autosar_swc_expfcns を開き、関連する autosar.api.getAUTOSARProperties オブジェクトを作成します。

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

TimingEvent を追加する対象の AUTOSAR ランナブルを特定します。

swc = get(arProps,"XmlOptions","ComponentQualifiedName");
ib = get(arProps,swc,"Behavior");
runnables = get(arProps,ib,"Runnables")'
runnables = 4×1 cell
    {'ASWC/IB/Runnable_Init'}
    {'ASWC/IB/Runnable1'    }
    {'ASWC/IB/Runnable2'    }
    {'ASWC/IB/Runnable3'    }

runnable = "Runnable1";
timingEventName = "myTimingEvent";
add(arProps,ib,"Events",timingEventName,"Category","TimingEvent",...
    "Period",1,"StartOnEvent","ASWC/IB/Runnable2");

AUTOSAR データ受信イベントを追加します。

dreEventName = "myDREEvent";
add(arProps,ib,"Events",dreEventName,"Category","DataReceiveErrorEvent",...
    "Trigger","RPort.DE1","StartOnEvent","ASWC/IB/Runnable2");

検証に合格するには、AUTOSAR 構成内の冗長なタイミング イベントを削除します。

events = get(arProps,ib,"Events");
delete(arProps,"ASWC/IB/Event_t_1tic_A")
events = get(arProps,ib,"Events")'
events = 4×1 cell
    {'ASWC/IB/Event_t_1tic_B'}
    {'ASWC/IB/Event_t_10tic' }
    {'ASWC/IB/myTimingEvent' }
    {'ASWC/IB/myDREEvent'    }

参考

オブジェクト

関数

プロパティ

トピック