メインコンテンツ

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

CAN Unpack

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

  • CAN Unpack block

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

説明

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

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

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

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

  • モデル参照の使用。この機能を使用すると、モデルに他の Simulink モデルをモジュラー コンポーネントとして含めることができます。詳細については、モデル参照 (Simulink)を参照してください。

ヒント

  • チャネルを介して送信されるすべてのメッセージを処理するには、関数トリガー サブシステムで CAN Unpack ブロックを使用することをお勧めします。Triggered Subsystem の使用 (Simulink)を参照してください。

  • このブロックは、最大 8 バイトの J1939 パラメータ グループの信号を復号化するために使用できます。ただし、J1939 メッセージを使用する場合は、このブロックではなく、J1939 Communication ブロック ライブラリ内のブロックを使用することをお勧めします。 J1939通信 を参照してください。

端子

入力

すべて展開する

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

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

出力

すべて展開する

ブロックにはデフォルトで 1 つの出力ポートがあります。出力ポートの数は動的であり、ブロックが出力するために指定した信号の数によって異なります。たとえば、メッセージに 4 つの信号がある場合、ブロックには 4 つの出力ポートを設定できます。

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

追加の出力ポートは、パラメータ 出力端子 ペインでオプションを選択することで追加できます。詳細については、パラメータ Output identifierOutput timestampOutput errorOutput remoteOutput length、および Output status を参照してください。

パラメーター

すべて展開する

  • 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

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

プログラムでの使用

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

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

プログラムでの使用

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

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

プログラムでの使用

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

CAN メッセージの長さを 0 ~ 8 バイトの範囲で指定します。出力データにデータベース指定の信号を使用している場合、データベース ファイルによってメッセージの長さが定義されます。それ以外の場合、このフィールドはデフォルトで 8 になります。このオプションは、生データを出力するか、信号を手動で指定する場合に使用できます。

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

プログラムでの使用

ブロック パラメーター: MsgLength
型: string | character vector
値: '0' から '8'
既定の設定: '8'

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

プログラムでの使用

なし

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

プログラムでの使用

なし

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

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

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

名前

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

Start bit

データの開始ビットを指定します。スタート ビットは、メッセージの先頭から数えて最下位ビットです。スタートビットは 0 から 63 までの整数である必要があります。

Length (bits)

メッセージ内で信号が占めるビット数を指定します。長さは 1 から 64 までの整数である必要があります。

バイト順

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

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

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

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

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

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

Data type

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

  • signed (既定)

  • unsigned

  • single

  • double

Multiplex type

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

  • 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 typeMultiplexed として選択した場合にのみ使用できます。ブロックが Multiplexed 信号をアンパックするには、指定した値が実行時の Multiplexor 信号値と一致する必要があります。Multiplex value は正の整数またはゼロでなければなりません。

要素

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

オフセット

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

MinMax

生の信号値の範囲を定義します。デフォルト設定はそれぞれ -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'

拡張機能

すべて展開する

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

バージョン履歴

R2009a で導入

すべて展開する