メインコンテンツ

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

PackNGoを使用したSimulinkでのCAN 通信

この例では、PackNGo 機能を使用して、CAN 通信 Simulink ® モデルから生成されたコードを含む ZIP ファイルを作成する方法を示します。

特定のアプリケーションとハードウェア要件に応じて、パラメータとブロックを調整します。

Vehicle Network Toolbox ™ は、Controller Area Network (CAN) 形式を使用して、ネットワーク経由で Simulink モデルを介してライブ メッセージを送受信するための Simulink ブロックを提供します。この例では、CAN Configuration、CAN Pack、CAN Transmit、CAN Receive、および CAN Unpack ブロックを使用して、CAN バスを介してデータ転送を実行します。例 Simulink での CAN 通信入門 を参照してください。

CAN メッセージの送受信の Simulink モデルを開きます

モデルを開いて、正弦波データ信号を伝送する CAN メッセージを送受信します。このモデルは、タイムステップごとに 1 つのメッセージを送信するように設計されています。DBC ファイルは、モデルで使用されるメッセージと信号を定義します。

open_system("CANCommunicationPackNGo")

CAN Receive ブロックは、特定のステップで新しいメッセージを受信すると、関数呼び出しトリガーを生成します。これは、モデル内の他のブロックに、メッセージがデコード アクティビティに使用できることを示します。信号のデコードと処理は Function-Call Subsystem (Simulink) 内で実行されます。

モデルを実行すると、TransmitData.mat ファイルと ReceiveData.mat ファイルが作成され、データが出力されます。これらのファイルには、それぞれソース データと CAN メッセージから復号化された信号が含まれます。

transmitData = load("TransmitData.mat"); 
receiveData = load("ReceiveData.mat"); 

送信前と送信後の正弦波の値をプロットします。X 軸はシミュレーションのタイムステップに対応し、Y 軸は信号の値に対応します。2 つのグラフ間の位相シフトは、信号がネットワーク上を移動する際の伝播遅延を表します。

plot(transmitData.ans(1,:), transmitData.ans(2,:))
hold on
plot(receiveData.ans(1,:), receiveData.ans(2,:))
legend('transmit', 'receive'); 
xlabel('time'); 
ylabel('SignalValue'); 

Figure contains an axes object. The axes object with xlabel time, ylabel SignalValue contains 2 objects of type line. These objects represent transmit, receive.

コード生成用のモデルを構成する

コード生成ペインから PackNGo ZIP ファイルのパッケージ化を構成します。コード ジェネレーターは、ビルド プロセス中に packNGo を使用して ZIP ファイルを出力します。

Modeling > Model Configuration Parameters へ進みます。

この例では、Code Generation ノードを選択し、システム ターゲット ファイルをリアルタイム ターゲットの grt.tlc に設定します。

生成されたコードと必要な成果物を 1 つのフラットな ZIP ファイルにパックします。

set_param('CANCommunicationPackNGo', 'PostCodeGenCommand', 'packNGo(buildInfo)');

PackNGo のセットアップが完了したら、Build Model ボタン (Ctrl+B) をクリックしてモデルを Build します。

コード ジェネレーターは、ビルド プロセスの最後に ZIP ファイルを出力します。ZIP ファイル内のフォルダー構造はフラットです。

出力データの検証

生成されたコードを確認するには、次の手順に従います。

  1. 圧縮ファイルを解凍します。

  2. 実行可能ファイル (CANCommunicationPackNGo.exe) を解凍したフォルダーに移動します。

  3. 実行可能ファイルを実行します。

  4. 作成された TransmitData.matReceiveData.mat を確認してプロットします。

パッケージ化されたコード (CANCommunicationPackNGo.zip) をターゲット ハードウェアまたはシミュレーション環境に転送することで、パッケージを展開できるようになりました。