メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

CAN FD Unpack

R2025a

CAN FDメッセージから個々の信号をアンパックする

  • CAN FD Unpack block

ライブラリ:
Vehicle Network Toolbox / CAN FD Communication
C2000 Microcontroller Blockset / Target Communication
Simulink Real-Time / CAN / CAN-FD MSG blocks

説明

CAN FD Unpack ブロックは、指定された出力パラメータを使用して、各タイムステップで CAN FD メッセージを信号データにアンパックします。データは個別の信号として出力されます。

このブロックを使用するには、Simulink® ソフトウェアのライセンスも必要です。

CAN FD Unpack ブロックは次をサポートします。

  • Simulink アクセラレータモード。Simulink モデルの実行を高速化できます。詳細については、高速化 (Simulink)を参照してください。

ヒント

  • チャネルを介して送信されるすべてのメッセージを処理するには、function trigger subsystem で CAN FD Unpack ブロックを使用することをお勧めします。Triggered Subsystem の使用 (Simulink)を参照してください。

  • J1939 メッセージを操作するには、このブロックの代わりに J1939 Communication ブロック ライブラリ内のブロックを使用します。 J1939通信 を参照してください。

例

端子

入力

すべて展開する

このブロックには 1 つの入力ポート (Msg) があります。CAN FD Unpack ブロックは、指定された入力 CAN メッセージを受け取り、その信号データを個別の出力にアンパックします。

このブロックは、single、double、int8、int16、int32、int64、uint8、uint16、uint32、uint64、boolean の入力信号データ型をサポートします。ブロックは固定小数点データ型をサポートしていません。

出力

すべて展開する

CAN FD Unpack ブロックには、デフォルトで 1 つの出力ポートがあります。データ出力ポートの数は動的であり、ブロックが出力する信号の数によって決まります。たとえば、ブロックに 4 つの信号がある場合、信号名でラベル付けされた 4 つの出力ポートがあります。

手動またはデータベースで指定された信号の場合、デフォルトの出力信号データ型は double です。他のタイプを指定するには、Signal Specification (Simulink) ブロックを使用します。これにより、ブロックは次の出力信号データ型をサポートできるようになります: single、double、int8、int16、int32、int64、uint8、uint16、uint32、uint64、および boolean。ブロックは固定小数点型をサポートしていません。

追加の出力ポートは、パラメータ 出力端子 ペインのオプションによって追加できます。

パラメーター

すべて展開する

  • raw data:データを uint8 ベクトル配列として出力します。このオプションを選択した場合は、メッセージ フィールドのみを指定します。その他の信号パラメータ フィールドは使用できません。このオプションは、ブロック上の出力ポートを 1 つだけ開きます。

    変換式は次のとおりです。

    physical_value = raw_value * Factor + Offset
    ここで、raw_value はアンパックされた信号値であり、physical_value はスケーリングされた信号値です。

  • manually specified signals:データ信号を指定できます。このオプションを選択した場合は、Signals テーブルを使用して信号メッセージを手動で作成します。ブロック上の出力ポートの数は、指定する信号の数によって異なります。たとえば、4 つの信号を指定すると、ブロックには 4 つの出力ポートがあります。

  • CANdb specified signals:データ信号を含む CAN データベース ファイルを指定できます。このオプションを選択した場合は、CANdb ファイルを選択します。ブロック上の出力ポートの数は、CANdb ファイルで指定された信号の数によって異なります。たとえば、CANdb ファイルで選択したメッセージに 4 つの信号がある場合、ブロックには 4 つの出力ポートがあります。

  • ARXML specified signals:信号定義用の ARXML ファイルを指定できます。これにより、一部のリモート オプションが無効になります。ARXML ファイルからデータを読み取った後、manually specified signals に切り替えてテーブルをさらに変更できます。

    詳細については、Simulink における CAN の ARXML ファイル サポートを参照してください。

プログラムでの使用

ブロック パラメーター: DataFormat
型: string | character vector
値: 'raw data' | 'manually specified signals' | 'CANdb specified signals' 'ARXML specified signals'
既定の設定: 'raw data'

このオプションは、データの出力形式 パラメータを CANdb specified signals または ARXML specified signals として指定した場合に使用できます。システム上のデータベース ファイルを見つけるには、参照 をクリックします。データベース ファイルで指定されたメッセージと信号定義は、ダイアログ ボックスの メッセージ セクションに表示されます。データベース ファイルで指定された信号は 信号 テーブルに入力されます。等号、アンパサンドなどの英数字以外の文字を含むファイル名は、有効なデータベース ファイル名ではありません。データベース名にピリオドを使用できます。データベース ファイルを使用する前に、英数字以外の文字を使用して名前を変更します。

プログラムでの使用

ブロック パラメーター: CANdbFile
型: string | character vector

このオプションは、データの入力形式 フィールドにデータベースを指定し、データベース ファイル フィールドにデータベース ファイルを指定する場合に使用できます。表示するメッセージを選択できます。信号 テーブルには、選択したメッセージの詳細が表示されます。

プログラムでの使用

ブロック パラメーター: MsgList
型: string | character vector

メッセージの名前を指定します。既定値は Msg です。このオプションは、生データを出力するか、信号を手動で指定する場合に使用できます。

プログラムでの使用

ブロック パラメーター: MsgName
型: string | character vector

メッセージ識別子が Standard タイプか Extended タイプかを指定します。既定値は Standard です。標準識別子は 11 ビットの識別子であり、拡張識別子は 29 ビットの識別子です。このオプションは、生データを出力するか、信号を手動で指定する場合に使用できます。データベースで指定された信号の場合、識別子タイプ はデータベースからタイプを継承します。

プログラムでの使用

ブロック パラメーター: MsgIDType
型: string | character vector
値: 'Standard (11-bit identifier)' | 'Extended (29-bit identifier)'
既定の設定: 'Standard (11-bit identifier)'

メッセージ ID を指定します。この番号は、標準識別子の場合は 0 ~ 2047 の整数、拡張識別子の場合は 0 ~ 536870911 の整数である必要があります。–1 を指定すると、ブロックはメッセージに指定された長さに一致するメッセージをアンパックします。hex2dec 関数を使用して 16 進数値を指定することもできます。このオプションは、生データを出力するか、信号を手動で指定する場合に使用できます。

プログラムでの使用

ブロック パラメーター: MsgIdentifier
型: string | character vector
値: '0' から '536870911'

メッセージの長さを指定します。CAN メッセージの場合、値は 0 ~ 8 バイトになります。CAN FD の場合、値は 0 ~ 8、12、16、20、24、32、48、または 64 バイトになります。出力データにデータベース指定の信号を使用している場合、データベース ファイルによってメッセージの長さが定義されます。このオプションは、生データを出力するか、信号を手動で指定する場合に使用できます。

メモ: マスクまたはネットワーク記述ファイルで指定された値と異なる長さのフレームを受信すると、そのフレームは破棄されます。

プログラムでの使用

ブロック パラメーター: MsgLength
型: string | character vector
値: '0' から '8'、'12'、'16'、'20'、'24'、'32'、'48'、'64'
既定の設定: '8'

信号テーブルに信号を追加します。

プログラムでの使用

なし

選択した信号を信号テーブルから削除します。

プログラムでの使用

なし

信号を手動で指定するか、データベース ファイルを使用して信号を定義する場合、このテーブルが表示されます。

データベース ファイルを使用している場合は、ファイル内のデータがこのテーブルに入力され、フィールドを編集することはできません。信号情報を編集するには、指定した信号に切り替えます。

信号を手動で指定することを選択した場合は、このテーブルで信号を手動で作成します。作成する各信号には次の値があります。

名前

信号のわかりやすい名前を指定します。モデル内の Simulink ブロックにこの名前が表示されます。既定値は Signal [row number] です。

Start bit

データの開始ビットを指定します。スタート ビットは、メッセージ データの先頭から数えて最下位ビットです。CAN の場合、スタート ビットは、メッセージ内のビット数内で 0 ~ 63 の整数である必要があります (CAN FD の場合、スタート ビットは 0 ~ 511 です)。(メッセージの長さはバイト単位で指定されることに注意してください。)

Length (bits)

メッセージ内で信号が占めるビット数を指定します。長さは 1 から 64 までの整数である必要があります。メッセージ内のすべての信号の長さの合計は、メッセージの長さのビット数に制限されます。つまり、すべての信号は累積的にメッセージの長さ内に収まる必要があります。(メッセージ長はバイト単位で指定され、信号長はビット単位で指定されることに注意してください。)

バイト順

次のいずれかのオプションを選択します。

  • LE:バイト順序はリトルエンディアン形式 (Intel®) です。この形式では、最下位ビットから最上位ビットまでのビットをカウントし、バイト境界を越えるたびに次の上位バイトに進みます。たとえば、スタート ビットを 20 にして 1 バイトのデータをリトルエンディアン形式でパックすると、データ ビット テーブルは次の図のようになります。

    最下位ビットから最上位アドレスまでカウントされるリトルエンディアンバイトオーダー

  • BE:バイト順序はビッグエンディアン形式 (Motorola®) です。この形式では、最下位ビットから最上位ビットまでのビットをカウントし、バイト境界を越えるたびに次の下位バイトに進みます。たとえば、開始ビットを 20 にして 1 バイトのデータをビッグ エンディアン形式でパックすると、データ ビット テーブルは次の図のようになります。

    ビッグエンディアンバイトオーダーは最下位ビットから最下位アドレスまでカウントされます

詳細については、CANフレーム構造、バイト順序、ビットカウントを参照してください。

Data type

信号が割り当てられたビット内のデータをどのように解釈するかを指定します。次の中から選択してください:

  • signed (既定)

  • unsigned

  • single

  • double

    メモ: メッセージのバイト境界に正確に揃わない double 信号がある場合、Embedded Coder® を含むコードを生成するには、[構成パラメーター] ダイアログの ハードウェア実行 ペインで デバイスの詳細 の下の long long のサポート をチェックする必要があります。

Multiplex type

ブロックが各タイム ステップでメッセージから信号をアンパックする方法を指定します。

  • Standard:信号は各タイムステップでアンパックされます。

  • Multiplexor:Multiplexor 信号、またはモード信号がアンパックされます。メッセージごとに 1 つの Multiplexor 信号のみ指定できます。

  • Multiplexed:実行時の Multiplexor 信号 (モード信号) の値が、この信号に設定された Multiplex value と一致する場合、信号はアンパックされます。

たとえば、メッセージには次の値を持つ 4 つの信号があります。

信号名マルチプレックスタイプマルチプレックス値
Signal-A標準適用不可
Signal-B多重化1
Signal-C多重化0
Signal-Dマルチプレクサ適用不可

この例では以下のようになります。

  • ブロックは、各タイム ステップで Signal-A (標準信号) と Signal-D (マルチプレクサ信号) をアンパックします。

  • 特定のタイム ステップで Signal-D の値が 1 の場合、ブロックはそのタイム ステップで Signal-A と Signal-D とともに Signal-B をアンパックします。

  • 特定のタイム ステップで Signal-D の値が 0 の場合、ブロックはそのタイム ステップで Signal-A と Signal-D とともに Signal-C をアンパックします。

  • Signal-D の値が 1 または 0 でない場合、ブロックはその時間ステップで多重化された信号のいずれもアンパックしません。

Multiplex value

このオプションは、Multiplex type を Multiplexed として選択した場合にのみ使用できます。ここで指定する値は、ブロックが Multiplexed 信号をアンパックするために、実行時の Multiplexor 信号値と一致する必要があります。Multiplex value は正の整数またはゼロでなければなりません。

要素

アンパックされた生の値を物理値 (信号値) に変換するために適用される Factor 値を指定します。詳細については、Data input as パラメータ変換式を参照してください。

オフセット

物理値 (信号値) をアンパックされた生の値に変換するために適用される オフセット 値を指定します。詳細については、Data input as パラメータ変換式を参照してください。

Min、Max

生の信号値の範囲を定義します。デフォルト設定はそれぞれ -Inf (負の無限大) と Inf です。データベースで指定された信号の場合、これらの設定はデータベースから読み取られます。manually specified signals の場合、信号の最小および最大の物理値を指定できます。デフォルトでは、これらの設定を超える信号値はクリップされません。

プログラムでの使用

ブロック パラメーター: SignalInfo
型: string | character vector

CAN メッセージ識別子を出力するには、このオプションを選択します。このポートのデータ型は uint32 です。

プログラムでの使用

ブロック パラメーター: IDPort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

メッセージのタイムスタンプを出力するには、このオプションを選択します。この値は、メッセージが受信された時刻を示し、モデル シミュレーションの開始から経過した秒数として測定されます。このオプションは、ブロックに新しい出力ポートを追加します。このポートのデータ型は double です。

プログラムでの使用

ブロック パラメーター: TimestampPort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

メッセージのエラーステータスを出力するには、このオプションを選択します。このオプションは、ブロックに新しい出力ポートを追加します。このポートの出力値 1 は、着信メッセージがエラー フレームであることを示します。出力値が 0 の場合、エラーはありません。このポートのデータ型は uint8 です。

プログラムでの使用

ブロック パラメーター: ErrorPort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

リモート フレームのステータス メッセージを出力するには、このオプションを選択します。このオプションは、ブロックに新しい出力ポートを追加します。このポートのデータ型は uint8 です。

プログラムでの使用

ブロック パラメーター: RemotePort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

メッセージの長さをバイト単位で出力するには、このオプションを選択します。このオプションは、ブロックに新しい出力ポートを追加します。このポートのデータ型は uint8 です。

プログラムでの使用

ブロック パラメーター: LengthPort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

メッセージの受信ステータスを出力するには、このオプションを選択します。ブロックが新しいメッセージを受信した場合のステータスは 1 で、受信しなかった場合は 0 になります。このオプションは、ブロックに新しい出力ポートを追加します。このポートのデータ型は uint8 です。

プログラムでの使用

ブロック パラメーター: StatusPort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

(CAN プロトコルでは無効です。)メッセージのビット レート切り換えを出力するには、このオプションを選択します。このオプションは、CAN FD メッセージ ビット レート切り換えが設定されているかどうかを示す新しい出力ポートをブロックに追加します。このポートのデータ型は boolean で、メッセージのデータ フェーズのビット レートがアービトレーション フェーズのビット レートよりも速い (true) か、同じ (false) かを示します。

BRS の詳細については、CAN FD - 基本的な考え方 を参照してください。

プログラムでの使用

ブロック パラメーター: BRSPort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

(CAN プロトコルでは無効です。)メッセージのエラーステータスを出力するには、このオプションを選択します。このオプションは、ブロックに新しい出力ポートを追加します。このポートのデータ型は boolean で、CAN FD メッセージのエラー状態インジケータ フラグが設定されているかどうかを示します。

ESI の詳細については、CAN FD - 基本的な考え方 を参照してください。

プログラムでの使用

ブロック パラメーター: ESIPort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

(CAN プロトコルでは無効です。)メッセージ データの長さを出力するには、このオプションを選択します。このオプションは、ブロックに新しい出力ポートを追加します。このポートのデータ型は double です。

プログラムでの使用

ブロック パラメーター: DLCPort
型: string | character vector
値: 'off' | 'on'
既定の設定: 'off'

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2018a で導入

すべて展開する