メインコンテンツ

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

CAN Pack

個々の信号をCANメッセージにパックする

  • CAN Pack 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 Pack ブロックは、シミュレーション中に指定された間隔で信号データを CAN メッセージに読み込みます。

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

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

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

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

ヒント

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

端子

入力

すべて展開する

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

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

ヒント

信号のない長さがゼロのメッセージがある場合でも、サンプル時間を定義するために、入力ポートにダミー データを提供する必要があります。この場合、データ値自体は無視されます。

CAN Msg ID 入力ポートを使用すると、CAN メッセージ ID を動的に指定できます。このポートは、入力端子から CAN 識別子を指定 パラメータが選択されている場合にのみ存在します。詳細については、CAN Pack ブロック入力ポートによる CAN ID の動的変更を参照してください。

出力

すべて展開する

このブロックには、1 つの出力ポート (CAN Msg) があります。CAN Pack ブロックは指定された入力信号を受け取り、それを CAN メッセージにパックします。出力データ型は、バスとして出力 パラメータ設定によって決まります。

パラメーター

すべて展開する

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

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

    raw_value = (physical_value - Offset) / Factor
    ここで、physical_value は信号の元の値であり、raw_value はパックされた信号値です。

  • manually specified signals:データ信号の定義を指定できます。このオプションを選択した場合は、信号 テーブルを使用して信号を作成します。ブロック入力の数は、指定する信号の数によって異なります。

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

  • 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 の正の整数である必要があります。hex2dec 関数を使用して 16 進数値を指定することもできます。このオプションは、生データを入力するか、信号を手動で指定する場合に使用できます。

プログラムでの使用

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

選択すると、ブロックの入力ポートを通じて値を指定して、CAN 識別子 (CAN ID) を動的に制御できます。このオプションを選択すると、CAN Msg ID という名前の入力ポートが追加されます。

プログラムでの使用

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

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

プログラムでの使用

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

CAN メッセージをリモート フレームとして指定します。

プログラムでの使用

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

ブロックが CAN メッセージを Simulink バス信号として出力するには、このオプションを選択します。Simulink バス オブジェクトの詳細については、「合成インターフェイス (Simulink)」を参照してください。

プログラムでの使用

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

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

プログラムでの使用

なし

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

プログラムでの使用

なし

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

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

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

名前

信号のわかりやすい名前を指定します。モデル内の 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 と一致する場合、信号はパックされます。

たとえば、メッセージには次のタイプと値を持つ信号が含まれます。

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

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

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

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

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

  • 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

拡張機能

すべて展開する

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

バージョン履歴

R2009a で導入

すべて展開する