Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

AUTOSAR CompuMethod の設定

AUTOSAR ソフトウェア コンポーネントは計算方法 (CompuMethod) を使用して AUTOSAR データの内部値と物理表現の間の変換を行います。CompuMethod の一般的な使用方法は、線形データ スケーリング、キャリブレーションおよび測定です。

Embedded Coder® は、ARXML コード内に記述されている AUTOSAR CompuMethod をインポートし、AUTOSAR オーサリング ツール (AAT) と Simulink® の間のラウンドトリップ全体で保持します。Simulink 内で、インポートした CompuMethod を変更したり、新しい CompuMethod を作成して設定したりできます。

このトピックでは、Simulink で AUTOSAR CompuMethod を設定する例を示します。

AUTOSAR CompuMethod のプロパティの設定

モデルの AUTOSAR CompuMethod のプロパティをグラフィカルに、またはプログラムによって設定できます。変更できる CompuMethod のプロパティには、名前、カテゴリ、ユニット、表示形式、AUTOSAR パッケージ、Simulink データ型が含まれます。

グラフィカル インターフェイスを使用して CompuMethod を設定するには、AUTOSAR ディクショナリを開き、[CompuMethods] ビューを選択します。このビューには、ARXML コードからインポートされたものか、あるいは Simulink で作成されたものかに関係なく、モデルの変更可能な CompuMethod が表示されます。

CompuMethod を選択し、使用可能なフィールドを編集します。

  • Name — 名前テキストを指定

  • Category[同一][線形][RatFunc][TextTable] を選択

  • Unit — モデルで使用可能なユニットから選択

  • DisplayFormat — 必要に応じて、データを表示するためにキャリブレーション ツールおよび測定ツールによって使用される形式を指定します。ANSI® C printf 書式指定子文字列を使用します。たとえば、%2.1d は最小幅が 2 文字、最高精度が 1 桁の符号付き 10 進数を指定します。表示される値は 12.2 などになります。書式指定子文字列の構成の詳細については、DisplayFormat の設定を参照してください。

  • パッケージ — CompuMethod 用に生成される AUTOSAR パッケージのパスを指定

  • Simulink DataTypes — CompuMethod を参照する Simulink データ型のリストを指定

CompuMethod の AUTOSAR パッケージを変更するには、次のいずれかを実行します。

  • [パッケージ] パラメーター フィールドにパッケージへのパスを入力します。

  • AUTOSAR パッケージ ブラウザーを開くには、[パッケージ] フィールドの右側にあるボタンをクリックします。ブラウザーを使用して既存のパッケージに移動するか、パッケージを作成および選択します。ブラウザーでパッケージを選択し、[適用] をクリックすると、CompuMethod の [パッケージ] パラメーター値が選択内容によって更新されます。AUTOSAR パッケージ ブラウザーの詳細については、コンポーネント、インターフェイス、CompuMethod、または SwAddrMethod の AUTOSAR パッケージの構成を参照してください。

CompuMethod をモデルで使用される Simulink データ型と関連付けるには、CompuMethod を選択し、[Simulink DataTypes] の右側にある [追加] ボタンをクリックします。このアクションによってダイアログ ボックスが開き、使用可能なデータ型のリストが表示されます。値のリストから Simulink.NumericType または Simulink.AliasType を選択するか、あるいは Simulink 列挙型の名前を入力します。型を [Simulink DataTypes] リストに追加するには、[OK] をクリックします。

[Simulink DataTypes] のプロパティをプログラムによって設定するには、モデルを開き、次のように AUTOSAR プロパティの set 関数呼び出しを使用します。

arProps=autosar.api.getAUTOSARProperties('cmSpeed');
set(arProps,'/pkg/CompuMethods/RpmCm','SlDataTypes',{'SpeedRpmAdt'})
sltypes=get(arProps,'/pkg/CompuMethods/RpmCm', 'SlDataTypes')
sltypes = 
    'SpeedRpmAdt'

AUTOSAR CompuMethod の作成

モデル内で AUTOSAR CompuMethod をグラフィカルに、またはプログラムによって作成できます。グラフィカル インターフェイスを使用して AUTOSAR CompuMethod を作成するには、AUTOSAR ディクショナリを開き、[CompuMethods] ビューを選択します。[CompuMethod の追加] ダイアログ ボックスを開くには、[追加] ボタン をクリックします。名前、カテゴリ、単位、キャリブレーションの表示形式、生成する AUTOSAR パッケージ、関連付けられた Simulink データ型など、CompuMethod の初期プロパティを設定します。[OK] をクリックすると、AUTOSAR ディクショナリの CompuMethod のビューが新しい CompuMethod で更新されます。

メモ

カテゴリ BITFIELD_TEXTTABLE および SCALE_LINEAR_AND_TEXTTABLE の CompuMethod は [AUTOSAR コンポーネント ビルダー] では作成できません。

コードを生成する場合、エクスポートされた ARXML コードには CompuMethod の定義が含まれ、それを参照します。

線形関数に対する CompuMethod の方向の設定

Simulink で作成された設計については、値の内部表現と物理表現の間の CompuMethod 変換の方向などの、エクスポートされる CompuMethod のプロパティを制御できます。AUTOSAR ディクショナリまたは AUTOSAR プロパティ関数 set を使用して、CompuMethod の方向として次のいずれかの値を指定できます。

  • InternalToPhys (既定値) — 内部値から物理表現へ変換するために CompuMethod セクションを生成します。

  • PhysToInternal — 物理値から内部表現へ変換するために CompuMethod セクションを生成します。

  • Bidirectional — 内部から物理へ、物理から内部への双方向に変換するために CompuMethod セクションを生成します。

CompuMethod 指示を MATLAB® コマンド ウィンドウで指定するには、次のように AUTOSAR プロパティの set 関数呼び出しを使用します。

hModel = 'autosar_swc_expfcns';
openExample(hModel);
arProps=autosar.api.getAUTOSARProperties(hModel);
set(arProps,'XmlOptions','CompuMethodDirection','Bidirectional');
get(arProps,'XmlOptions','CompuMethodDirection')

CompuMethod の方向を AUTOSAR ディクショナリで指定するには、[XML オプション を選択します。パラメーター [CompuMethod 方向] の値を選択します。[適用] をクリックします。

モデルのコードを生成するときに、エクスポートされる ARXML コード内の CompuMethod に要求した方向のセクションが含まれます。たとえば、CompuMethod の方向を Bidirectional に設定して生成された CompuMethod は次のようになります。

<COMPU-METHOD UUID="...">
    <SHORT-NAME>COMPU_EngSpdValue</SHORT-NAME>
    <CATEGORY>LINEAR</CATEGORY>
    <COMPU-INTERNAL-TO-PHYS>
    <COMPU-SCALES>
        <COMPU-SCALE>
        <SHORT-LABEL>intToPhys</SHORT-LABEL>
        <LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT>
        <UPPER-LIMIT INTERVAL-TYPE="CLOSED">24000</UPPER-LIMIT>
        <COMPU-RATIONAL-COEFFS>
            <COMPU-NUMERATOR>
            	<V>0</V>
            	<V>1</V>
            </COMPU-NUMERATOR>
            <COMPU-DENOMINATOR>
            	<V>8</V>
            </COMPU-DENOMINATOR>
        </COMPU-RATIONAL-COEFFS>
        </COMPU-SCALE>
    </COMPU-SCALES>
    </COMPU-INTERNAL-TO-PHYS>
    <COMPU-PHYS-TO-INTERNAL>
    <COMPU-SCALES>
        <COMPU-SCALE>
        <SHORT-LABEL>physToInt</SHORT-LABEL>
        <LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT>
        <UPPER-LIMIT INTERVAL-TYPE="CLOSED">3000</UPPER-LIMIT>
        <COMPU-RATIONAL-COEFFS>
            <COMPU-NUMERATOR>
            	<V>0</V>
            	<V>8</V>
            </COMPU-NUMERATOR>
            <COMPU-DENOMINATOR>
            	<V>1</V>
            </COMPU-DENOMINATOR>
        </COMPU-RATIONAL-COEFFS>
        </COMPU-SCALE>
    </COMPU-SCALES>
    </COMPU-PHYS-TO-INTERNAL>
</COMPU-METHOD>

メモ

boolean または列挙データ型に対して生成される TEXTTABLE カテゴリの CompuMethod については、この方向パラメーターの設定にかかわらず、InternalToPhys のみが使用されます。

CompuMethod の単位参照のエクスポート

ARXML インポーターでは、インポートされる CompuMethod で検出された単位および物理的次元の情報が保持されます。CompuMethod の単位および物理的次元の情報は、AUTOSAR オーサリング ツール (AAT) と Simulink の間のラウンドトリップ全体で保持されます。

Simulink で作成された設計については、エクスポーターは CompuMethod ごとに単位参照を生成します。便宜上、各 CompuMethodNoUnit という名前の単位を参照します。たとえば、boolean データ型の CompuMethod とそれが参照する単位は次のようになります。

<COMPU-METHOD UUID="...">
    <SHORT-NAME>COMPU_Boolean</SHORT-NAME>
    <CATEGORY>TEXTTABLE</CATEGORY>
    <UNIT-REF DEST="UNIT">/mymodel_pkg/mymodel_dt/NoUnit</UNIT-REF>
    ...
</COMPU-METHOD>
<UNIT UUID="...">
    <SHORT-NAME>NoUnit</SHORT-NAME>
    <FACTOR-SI-TO-UNIT>1</FACTOR-SI-TO-UNIT>
    <OFFSET-SI-TO-UNIT>0</OFFSET-SI-TO-UNIT>
</UNIT>

エクスポートされる CompuMethod ごとに単位を指定すると、エクスポートされた AUTOSAR データを使用するキャリブレーション ツールおよび測定ツールをサポートするのに役立ちます。

SCALE_LINEAR_AND_TEXTTABLE CompuMethod の線形スケーリングの変更

LINEAR および TEXTTABLE スケーリングを使用する AUTOSAR CompuMethod をインポートおよびエクスポートできます。カテゴリ SCALE_LINEAR_AND_TEXTTABLE の CompuMethods を参照するアプリケーション データ型をインポートすると、Simulink.NumericType データ オブジェクトまたは Simulink.AliasType データ オブジェクトが Simulink ワークスペースに作成されます。Simulink では、CompuMethod の LINEAR スケーリングを変更できます。TEXTTABLE スケーリングは読み取り専用です。

たとえば、1 つの LINEAR スケールと 2 つの TEXTTABLE スケールを使用する CompuMethod があります。

CompuMethod をモデルにインポートすると、インポーターは LINEAR スケーリングを使用する Simulink.NumericType を作成します。LINEAR スケーリングを変更するには、Simulink.NumericType データ オブジェクトを開き、そのフィールドを変更します。

TEXTTABLE スケーリング情報へのアクセスが読み取り専用の場合は、次のような AUTOSAR プロパティの関数呼び出し get を使用します。

>> arProps=autosar.api.getAUTOSARProperties('mySWC');
>> % Get literals for COMPU_myType TEXTTABLE scales
>> get(arProps,'/simple_ar_package/simple_ar_dt/COMPU_myType','CellOfEnums')
ans =
    'SensorError'    'SignalNotAvailable'
>> % Get internal values for COMPU_myType TEXTTABLE scales
>> get(arProps,'/simple_ar_package/simple_ar_dt/COMPU_myType','IntValues')
ans =
   350   351

二重スケール パラメーターに対する有理関数の CompuMethod の設定

同一の物理値の 2 つのケール値を保存する AUTOSAR 二重スケール パラメーターについては、CompuMethod のカテゴリ RAT_FUNC が生成されます。この計算方法は、1 次有理関数にすることができます。

二重スケール パラメーターを設定して生成するには、次の手順に従います。

  1. AUTOSAR モデルを開きます。この例の目的上、AUTOSAR 二重スケール パラメーターを参照する Constant ブロックを作成します。モデル内で、Constant ブロックを Simulink 出力端子に接続します。

  2. モデル データ エディター ([モデル化] タブで [モデル データ エディター] をクリック) を開き、[パラメーター] タブを選択します。Constant ブロックのパラメーター エントリを見つけます。[値] 列を使用して二重スケール パラメーターの名前を参照します。この例ではパラメーター名 T1Rec を使用します。

  3. T1Rec データ オブジェクトを作成します。モデル データ エディターで、値 T1Rec の右でアクション ボタン をクリックし、[作成] を選択します。

    [新規データの作成] ダイアログ ボックスで、[値]AUTOSAR.DualScaledParameter に設定して [作成] をクリックします。ベース ワークスペースに AUTOSAR.DualScaledParameter データ オブジェクトが表示されます。二重スケール パラメーターのプロパティ ダイアログ ボックスが開きます。

  4. 二重スケール パラメーター T1Rec の属性を設定します。以下の MATLAB コードを実行します。このコードは内部キャリブレーション時間値から物理周波数 (時間の逆数) 値への変換を設定します。

    % Conversion from Time to Frequency
    % F = 1/T
    % In Other Words F = (0*T + 1)/(1*T+0);
    T1Rec.CompuMethodName = 'CM3';  %Specify AUTOSAR CompuMethod name
    T1Rec.DataType ='fixdt(1,32,0.01,0)';
    T1Rec.CalToMainCompuNumerator=1;
    T1Rec.CalToMainCompuDenominator=[1 0];
    T1Rec.CalibrationMin = 0.001;
    T1Rec.CalibrationMax = 1.0;
    T1Rec.CalibrationValue = 0.1500;
    T1Rec.CoderInfo.StorageClass = 'Custom';
    T1Rec.CoderInfo.Identifier = '';
    T1Rec.CoderInfo.CustomStorageClass = 'InternalCalPrm';
    T1Rec.CoderInfo.CustomAttributes.PerInstanceBehavior =...
      'Parameter shared by all instances of the Software Component';
    T1Rec.Description = '';
    % T1Rec.Min = [];
    % T1Rec.Max = [];
    T1Rec.Unit = '';
    T1Rec.CalibrationDocUnits = 'm/s²';
  5. 二重スケール パラメーター T1Rec のプロパティ ダイアログ ボックスを検証します。MATLAB コードによって設定されたメイン属性を次に示します。

  6. MATLAB コードによって設定されたキャリブレーション属性を次に示します。

  7. AUTOSAR プロパティで CompuMethod の方向がまだ双方向に設定されていない場合は、AUTOSAR ディクショナリの [XML オプション] ビューを使用して設定します。

  8. モデルからコードを生成します。

モデルからコードを生成するときに、ARXML エクスポーターによってカテゴリが RAT_FUNCCompuMethod が生成されます。

<COMPU-METHOD UUID="...">
    <SHORT-NAME>CM3</SHORT-NAME>
    <CATEGORY>RAT_FUNC</CATEGORY>
    <UNIT-REF DEST="UNIT">/mymodel_pkg/mymodel_dt/m_s_</UNIT-REF>
    <COMPU-INTERNAL-TO-PHYS>
        <COMPU-SCALES>
            <COMPU-SCALE>
                <COMPU-RATIONAL-COEFFS>
                    <COMPU-NUMERATOR>
                        <V>-100</V>
                    </COMPU-NUMERATOR>
                    <COMPU-DENOMINATOR>
                        <V>0</V>
                        <V>-1</V>
                    </COMPU-DENOMINATOR>
                </COMPU-RATIONAL-COEFFS>
            </COMPU-SCALE>
        </COMPU-SCALES>
    </COMPU-INTERNAL-TO-PHYS>
    <COMPU-PHYS-TO-INTERNAL>
        <COMPU-SCALES>
            <COMPU-SCALE>
                <COMPU-RATIONAL-COEFFS>
                    <COMPU-NUMERATOR>
                        <V>100</V>
                    </COMPU-NUMERATOR>
                    <COMPU-DENOMINATOR>
                        <V>0</V>
                        <V>1</V>
                    </COMPU-DENOMINATOR>
                </COMPU-RATIONAL-COEFFS>
            </COMPU-SCALE>
        </COMPU-SCALES>
    </COMPU-PHYS-TO-INTERNAL>
</COMPU-METHOD>

CompuMethod は、T1Rec に対して生成されたアプリケーション データ型から参照されます。

<APPLICATION-PRIMITIVE-DATA-TYPE UUID="...">
  <SHORT-NAME>T1Rec_DualScaled</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>
        <COMPU-METHOD-REF DEST="COMPU-METHOD">/mymodel_pkg/mymodel_dt/CM3</COMPU-METHOD-REF>
        <DATA-CONSTR-REF DEST="DATA-CONSTR">/mymodel_pkg/mymodel_dt/ApplDataTypes/
                                 DataConstrs/DC_T1Rec_DualScaled</DATA-CONSTR-REF>
      </SW-DATA-DEF-PROPS-CONDITIONAL>
    </SW-DATA-DEF-PROPS-VARIANTS>
  </SW-DATA-DEF-PROPS>
</APPLICATION-PRIMITIVE-DATA-TYPE>

アプリケーション データ型 T1Rec_DualScaled は、T1Rec に対して生成されたパラメーター データ プロトタイプから参照されます。

<PARAMETER-DATA-PROTOTYPE UUID="...">
  <SHORT-NAME>T1Rec</SHORT-NAME>
  <SW-DATA-DEF-PROPS>
    <SW-DATA-DEF-PROPS-VARIANTS>
      <SW-DATA-DEF-PROPS-CONDITIONAL>
        <SW-CALIBRATION-ACCESS>READ-WRITE</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="APPLICATION-PRIMITIVE-DATA-TYPE">/mymodel_pkg/mymodel_dt/ApplDataTypes/
                                                              T1Rec_DualScaled</TYPE-TREF>
  ...
</PARAMETER-DATA-PROTOTYPE>

関連する例

詳細