このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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
ごとに単位参照を生成します。便宜上、各 CompuMethod
は NoUnit
という名前の単位を参照します。たとえば、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 次有理関数にすることができます。
二重スケール パラメーターを設定して生成するには、次の手順に従います。
AUTOSAR モデルを開きます。この例の目的上、AUTOSAR 二重スケール パラメーターを参照する Constant ブロックを作成します。モデル内で、Constant ブロックを Simulink 出力端子に接続します。
モデル データ エディター ([モデル化] タブで [モデル データ エディター] をクリック) を開き、[パラメーター] タブを選択します。Constant ブロックのパラメーター エントリを見つけます。[値] 列を使用して二重スケール パラメーターの名前を参照します。この例ではパラメーター名
T1Rec
を使用します。T1Rec
データ オブジェクトを作成します。モデル データ エディターで、値T1Rec
の右でアクション ボタン をクリックし、[作成] を選択します。[新規データの作成] ダイアログ ボックスで、[値] を
AUTOSAR.DualScaledParameter
に設定して [作成] をクリックします。ベース ワークスペースにAUTOSAR.DualScaledParameter
データ オブジェクトが表示されます。二重スケール パラメーターのプロパティ ダイアログ ボックスが開きます。二重スケール パラメーター
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²';
二重スケール パラメーター
T1Rec
のプロパティ ダイアログ ボックスを検証します。MATLAB コードによって設定されたメイン属性を次に示します。MATLAB コードによって設定されたキャリブレーション属性を次に示します。
AUTOSAR プロパティで
CompuMethod
の方向がまだ双方向に設定されていない場合は、AUTOSAR ディクショナリの [XML オプション] ビューを使用して設定します。モデルからコードを生成します。
モデルからコードを生成するときに、ARXML エクスポーターによってカテゴリが RAT_FUNC
の CompuMethod
が生成されます。
<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>
関連する例
- Simulink への AUTOSAR XML 記述のインポート
- コンポーネント、インターフェイス、CompuMethod、または SwAddrMethod の AUTOSAR パッケージの構成
- AUTOSAR XML オプションの設定
- AUTOSAR コード生成の構成