LabVIEWと周立功ライブラリで作るCAN通信の上位システム:入門編

CAN(Controller Area Network)バスは、工業界や車載電子など多様な場面で使われている重要な通信規格です。本稿では、LabVIEWを使って周立功社のライブラリを呼び出すCAN通信上手法について、実際のコード例を交えて解説します。初めて触る方でも扱いやすい構成にしています。

必要な環境設定

作業を始める前に、周立功から提供されるライブラリ説明書を入手してください。この説明書はライブラリの関数群やインターフェース仕様を詳細にまとめたものであり、開発において不可欠な資料となります。入手したライブラリは、LabVIEWの指定ディレクトリに正しくインストールしてください。 установкаが完了すると、LabVIEWからライブラリ関数を呼び出せるようになります。

対応ハードウェア

本構成ではUSBCAN1とUSBCAN2の2台をデフォルトで利用します。USBケーブルの両端をそれぞれUSBCANデバイスとPCに接続し、デバイスの電源を入れてください。ハードウェアの接続確認が取れないと、後のソフトウェア設定が正しく動作しません。

プログラミングの実装

CANモジュールの初期化

初めにCANデバイスを初期化し、通信可能な状態にします。以下のコードは初期化処理の例です:


// LabVIEWにおける初期化処理(疑似コード)
// 周立功ライブラリから初期化VIを呼び出す
CAN_Setup.vi (channel = 0, speed = 500000, operationMode = standard)
// channel: 0はUSBCAN1に対応
// speed: 500Kbpsの波特率を設定
// operationMode: 標準モードを指定

初期化では、通信速度(波特率)と動作モードの設定が必要です。波特率は通信のデータ転送速度を決定し、モード選択では通常モードやリスニングモードなどから用途に応じた設定を行います。

データ送信処理

送信データを作成し、指定したCANデバイスから送出する処理がこちら:


// 送信データの作成
txPayload = [10, 20, 30, 40]
// ライブラリ関数の呼び出し
CAN_Transmit.vi (channel = 0, payload = txPayload, dataLen = 4, identifier = 0x456)
// channel: 送信元となるUSBCAN1
// payload: 送信データの配列
// dataLen: データ長の指定(4バイト)
// identifier: CAN識別子0x456を設定

CAN識別子(CAN ID)は受信側がデータを処理すべきかを判断するためのアドレス情報として機能します。複数のデバイスが同一バス上で通信している場合、この識別子によって目的のデバイスだけデータが受信されます。

データ受信処理

もう一方のデバイス(USBCAN2)からのデータ受信は、以下のように実装します:


// 受信バッファの確保
rxBuffer = Empty_Array
// 受信関数の実行
CAN_Read.vi (channel = 1, storage = rxBuffer, waitTime = 500)
// channel: 1はUSBCAN2を指す
// storage: 受信データを格納するバッファ
// waitTime: 500ミリ秒のタイムアウト設定

受信タイムアウト値を設定することで、特定の時間内にデータが届かない場合でもプログラムが長時間ブロックされることを防げます。ここでは500ミリ秒を設定しており、タイムアウト発生時は空データが返されます。

動作確認と次のステップ

以上の手順で、LabVIEWと周立功ライブラリを使用したCAN通信の基本機能が実現できます。初期化、送信、受信の3つの主要な処理を組み合わせることで、実際の工業制御アプリケーションや車載診断ツールとして活用可能です。ライブラリに付属する説明書を参考に、各パラメータの調整や拡張機能の利用に挑戦してみてください。

タグ: LabVIEW CAN USBCAN 周立功 工業通信

7月1日 16:12 投稿