MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linux《S810-MX-ADL1L》
MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linuxとは
Linux環境での高精度CAN/CAN FD通信制御
MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linuxは、MicroPeckerX CAN FDアナライザを制御して、CAN通信またはCAN FD通信を用いたLinuxアプリケーションを簡単に開発できる制御API群です。組込みLinuxからデスクトップLinuxまで、幅広いディストリビューションに対応し、エッジデバイスやIoTゲートウェイの開発に最適です。
MicroPeckerX CAN FDアプリケーション開発ライブラリは、専用ページから無償でダウンロード可能です。
開発現場のニーズに対応
MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linuxは、以下のご要望にお応えします。
- Linux環境からCAN通信、CAN FD通信を行いたい
- Raspberry Pi(ラズベリーパイ)を使ってCAN通信、CAN FD通信を利用したい
- Pythonで手軽にCAN/CAN FD通信アプリケーションを開発したい
- 組込みLinuxでPCレスの評価環境を構築したい
- エッジコンピューティングやIoTゲートウェイを開発したい
ユーザーが自由にCAN FD通信またはCAN通信を使ったツールを開発したい、というご要望を、MicroPeckerX CAN FDアプリケーション開発ライブラリが実現します。
クロスプラットフォーム対応とAPI統一
MicroPeckerX CAN FDアプリケーション開発ライブラリの最大の特徴は、Windows版とLinux版でAPI仕様が統一されていることです。
API仕様の統一による開発効率化
- Windows版とLinux版で共通のAPI仕様
- OSが異なってもアプリケーション開発ライブラリの使い方は同じ
- クロスプラットフォーム開発での移植が容易
精密なタイミング制御
- 0.1ms単位での送信タイミング指定
- 周期送信のジッタ最小化
- 2chチャンネル同期制御
主要機能
POSIX準拠の直感的なAPI
MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linuxは、Linux環境に最適化されたAPI設計を採用しています。
C/C++開発(実際のサンプルコード)
#include "MPXCANFDCtrlLinuxFree.h"
#include <stdio.h>
#include <unistd.h>
int main() {
ER ret;
unsigned int serial;
// MicroPeckerXオープン
StMPXDeviceInfo devices[4];
unsigned char count;
ret = MPXOpen(devices, &count);
if (ret == E_OK && count > 0) {
serial = devices[0].Serial;
printf("Serial : [%d]\n", serial);
}
// CAN FD通信パラメータ設定
StMPXCANParam param;
param.Mode = MPX_MODE_CAN_SIM; // シミュレーションモード
param.ArbitrationBaudrate = MPX_CAN_PARAM_ABR_500K;
param.ArbitrationSamplepoint = MPX_CAN_PARAM_SP_80P;
param.DataBaudrate = MPX_CAN_PARAM_DBR_2M;
param.DataSamplepoint = MPX_CAN_PARAM_SP_80P;
param.EnableTerminate = MPX_CAN_TERMINATE_ENABLE;
MPXSetCANParam(serial, 1, ¶m);
// ログ取得モード設定
MPXSetGetLogMode(serial, 1, MPX_GETLOGMODE_GETLOGAPI);
// モニタリング開始
MPXMonitorStart(serial, MPX_SYNC_MASTER);
// ダイレクト送信
StMPXCANDirect directFrame;
directFrame.FrameType.Option.Protocol = MPX_CAN_PROTOCOL_CANFD;
directFrame.FrameType.Option.BRS = MPX_CAN_BRS_ENABLE;
directFrame.Frame.ID.ID = 0x350;
directFrame.Frame.DL = 64;
MPXDirectSend(serial, 1, &directFrame);
// ログ取得
StMPXCANLog *CANLog;
uint16_t Count;
uint8_t BufferOver;
MPXGetLog(serial, 1, &CANLog, &Count, &BufferOver);
// モニタリング停止
unsigned int MSec;
unsigned short USec;
MPXMonitorStop(serial, &MSec, &USec);
MPXClose();
return 0;
}
Python開発(専用ラッパー提供)
import MPX_ADL_WR
import threading
# 受信スレッド
def read_exec():
while True:
ret = MPX_ADL_WR.DispMonitor(serial, 1)
if ret is not None:
for i in range(ret[0]):
print('time:' +
str(ret[1 + i][0]) + '[ms], ' +
str(ret[1 + i][1]) + '[us], CAN-ID:' +
hex(ret[1 + i][2]) +
' DL:' + str(ret[1 + i][3]) +
' DIR:' + ret[1 + i][4] +
' DATA:' + str(ret[1 + i][5]))
global stop_threads
if stop_threads:
break
# デバイスオープン
ret = MPX_ADL_WR.MPXOpen()
if ret[0] == 0:
print('Serial No.')
for i in range(ret[1]):
print(' ' + str(ret[2][i]))
serial = ret[2][0]
# 初期化
MPX_ADL_WR.MPXSampleInit(serial)
# モニタリング開始
MPX_ADL_WR.MPXMonitorStart(serial)
# 受信スレッド開始
stop_threads = False
read_thread = threading.Thread(target=read_exec)
read_thread.start()
# CAN送信
senddata = bytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B')
for i in range(10000):
ret = MPX_ADL_WR.MPXDirectSend(serial, 1, i, 8, senddata)
senddata[0] = (senddata[0] + 1) % 256
# 終了処理
stop_threads = True
read_thread.join()
ret = MPX_ADL_WR.MPXMonitorStop(serial)
MPX_ADL_WR.MPXClose()
幅広いプラットフォーム対応
対応CPUアーキテクチャ
- x86_64/x86_32: デスクトップ向け
- ARM v7/v8: Raspberry Pi、組込みボード向け
対応ディストリビューション
- Ubuntu 18.04/20.04
- Raspberry Pi OS
Raspberry Pi対応による組込み開発
Linux版では、Raspberry Pi(ラズベリーパイ)のようなLinux OSが動作するコンピューターボードでも動作可能です。
PCレスの環境でCAN通信、CAN FD通信を実現させたりと、MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linuxを活用することで、MicroPeckerXをCAN/CAN FDデバイスとした応用範囲が広がります。
高度な機能
スロット送信機能
- 最大28スロットの周期送信設定
- MicroPeckerX内部での高精度周期制御
- インクリメント機能による自動データ更新
ダイレクト送信機能
- PC主体の任意タイミング送信
- データ変更しながらの送信に最適
- CAN/CAN FD両対応
マルチチャンネル対応
- 2チャンネル独立制御
- 異なるモード設定可能(モニタ/シミュレーション)
- チャンネル間の同期動作
パッケージ構成例
mpx_adl_linux/
├── 01_drv/ # ライブラリ本体
│ └── Arm7l_gcc/ # ARM7l向けライブラリ
│ ├── libMPXCANFDCtrlFree.a # 静的ライブラリ
│ ├── libMPXCANFDCtrlFree.so # 動的ライブラリ
│ └── MPXCANFDCtrlLinuxFree.h # ヘッダファイル
├── 02_sample/ # サンプルプログラム
│ ├── mpx_adl_sample.py # Pythonサンプル
│ ├── mpx_adl_wrapper.cpp # Pythonラッパー
│ ├── setup.py # Pythonインストーラ
│ ├── mpxinfo.c # C++サンプル
│ └── Makefile # ビルド設定
├── 03_doc/ # ドキュメント
│ └── html/
│ └── mpx__adl__wrapper_8cpp.html
└── ReadMe.txt
インストールと設定
1. FTDI D2XXドライバのインストール
# FTDI Chip社のwebページからD2XXドライバをダウンロード
# https://ftdichip.com/drivers/d2xx-drivers/
# X64 (64-Bit)版をダウンロード
# インストール後、ライブラリを読込み可能にする
sudo ldconfig
2. ユーザー書き込み許可設定(初回のみ)
初期状態では、ルート権限のみで実行可能です。一般ユーザーでも実行できるよう設定します。
# 展開したディレクトリ内のスクリプトを実行
cd mpx_adl_linux/lib/
sudo ./devrule_inst
3. C++サンプルのビルドと実行
# サンプルディレクトリへ移動
cd 02_sample
# CPUアーキテクチャに対応したライブラリをコピー
cp ../01_drv/Arm7l_gcc/libMPXCANFDCtrlFree.a ./
# ビルド
make
# 実行
./mpxinfo
4. Pythonラッパーのインストール
cd 02_sample
# ビルド
python3 setup.py build
# インストール
sudo python3 setup.py install
# サンプル実行
python3 mpx_adl_sample.py
サンプルプログラムの動作
C++版サンプル(mpxinfo)
確認できる機能
- モニタ機能、送信(シミュレーション)機能
- スロット送信機能、ダイレクト送信機能
- ボーレート設定、終端抵抗有無切り替え
動作内容
- CH1: モニタモードで動作。受信メッセージをコンソール表示
- CH2: スロット送信(ID:0x300, 0x400)とダイレクト送信(ID:0x350)
Python版サンプル
確認できる機能
- モニタ機能、送信(シミュレーション)機能
- マルチスレッドによる送受信
動作内容
- CH1: CAN-IDとペイロードをインクリメントしつつ10000メッセージ送信
- 受信メッセージをリアルタイムでコンソール表示
動作環境
| 項目 | 仕様 |
|---|---|
| 対応OS | Linux(カーネル4.15以降) |
| 対応ディストリビューション |
|
| CPUアーキテクチャ |
|
| 開発環境 |
|
| 必要ライブラリ |
|
| メモリ | 最小512MB(推奨1GB以上) |
| USBポート | USB 2.0以上(Hi-Speed) |
- 仮想環境での動作は非対応です - USBハブを使用する場合は、セルフパワー対応機器を使用してください
活用事例
MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linuxを使って以下のシステム開発が可能です。
Raspberry Pi組込み型評価システム
開発現場のニーズ
実車環境での長期評価や、PCレスの組込み評価システムが必要。従来のPC依存システムでは設置場所や運用に制約がありました。MicroPeckerX アプリケーション開発ライブラリの活用
Linux版ライブラリとRaspberry Piを組み合わせて、小型で低消費電力の組込み評価システムを構築。スロット送信機能により、実車環境で要求される厳密な周期送信を実現。車両への設置や長期運用が容易になります。エッジコンピューティング・IoTゲートウェイ
開発現場のニーズ
工場内のCAN機器データを収集し、クラウドに送信するエッジデバイスを開発したい。PCレスで長期安定動作する小型システムが必要。MicroPeckerX アプリケーション開発ライブラリの活用
Pythonラッパーを活用して、CAN通信とクラウド連携を簡単に実装。マルチスレッド対応により、データ収集と送信を並行処理。MQTTやHTTPSでのデータ送信により、リアルタイム監視システムを実現。産業用制御システム
開発現場のニーズ
工場の生産設備をCAN通信で制御・監視したい。リアルタイム性が要求される制御システムの構築が必要。MicroPeckerX アプリケーション開発ライブラリの活用
スロット送信機能により、MicroPeckerX内部で高精度な周期送信を実現。ソフトウェア制御の不安定さを排除し、産業機器が要求する厳密なタイミング制御を実現。0.1ms精度のタイミング制御で、精密な機器制御が可能。研究開発・プロトタイピング
開発現場のニーズ
新しいCAN/CAN FDプロトコルの実験や、概念実証(PoC)を素早く行いたい。Pythonで手軽に試作したい。MicroPeckerX アプリケーション開発ライブラリの活用
Pythonラッパーにより、数行のコードでCAN通信を実現。Jupyter Notebookとの連携で、対話的な開発が可能。研究成果の可視化やデータ解析も容易に実装。製品ラインナップ
無償ダウンロード
MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linuxは、MicroPeckerXユーザー向けに無償でダウンロードが可能です。 但し、MicroPeckerX アプリケーション開発ライブラリに対しての技術的な問合わせ対応は含まれません。 ライブラリの組込方法など、ユーザーからの技術的な問合わせ対応については、別途有償サポートパックのお申込みが必要になります。
| 製品型名 | 製品名 |
|---|---|
| S810-MX-ADL1L | MicroPeckerX CAN FDアプリケーション開発ライブラリ for Linux |
※:ご利用には、MicroPeckerX CAN FD Analyzer《S810-MX-FDx》または、MicroPeckerX CAN FDインターフェースモデル《S810-MX-adl2》が必要です。
MicroPeckerX CAN FD アプリケーション開発ライブラリ for Linux ダウンロード
MicroPeckerX アプリケーション開発ライブラリ サポートパック
MicroPeckerX CAN FDアプリケーション開発ライブラリのユーザーアプリケーションへの組込み、問い合わせサポート対応は別途有償サポートとなります。
サポート内容
- 登録日から1年間の年間サポート
- 最大12件(合計20時間まで)の問い合わせに対応します
- 電話又は、メールによる組込み方法に関する問合せサポートを致します
- 問合せサポートに関しては、1週間以内の回答を目途とします
※緊急対応は含まれておりません - MicroPeckerX CAN FDアプリケーション開発ライブラリのユーザーアプリケーションに合わせたカスタマイズ作業は含まれておりません
MicroPeckerX アプリケーション開発ライブラリの年間サポートをご希望の方は、下記の製品型名でお知らせください。
| 製品型名 | 製品名 |
|---|---|
| S810-MX-ADL-SPT | MicroPeckerX アプリケーション開発ライブラリ サポートパック |
他の開発環境との比較
MicroPeckerX開発環境の選択
MicroPeckerXは用途に応じて3つの開発環境を提供しています
| 開発環境 | Linux版ライブラリ | Windows版ライブラリ | SocketCANドライバ |
|---|---|---|---|
| 対応OS | Ubuntu/Debian/RasPi OS | Windows 11/10/8.1 | Linux全般 |
| 開発言語 | C/C++/Python | C/C++/C#/VB.NET/VBA | 任意(ソケットAPI) |
| 送信タイミング精度 | ◎ 0.1ms精度保証 | ◎ 0.1ms精度保証 | △ カーネル依存 |
| 周期送信精度 | ◎ ライブラリ制御 | ◎ ライブラリ制御 | △ OS負荷影響大 |
| Raspberry Pi対応 | ◎ 完全対応 | × 非対応 | ◎ 対応 |
| Python対応 | ◎ 専用ラッパー提供 | △ 要開発 | ○ python-can |
| 組込み適性 | ◎ 軽量設計 | × Windows限定 | ○ カーネル依存 |
| 標準ツール互換 | △ 独自API | △ 独自API | ◎ 完全互換 |
スロット送信とダイレクト送信の使い分け
- スロット送信機能: MicroPeckerXが主体となり送信。実車両で要求される厳密な周期送信が可能
- ダイレクト送信機能: PCが主体となり都度送信。データを変更しつつ送信する場合に有効
ソフトウェア制御では周期送信間隔を正確に維持できないため、高精度な周期送信が必要な場合はスロット送信機能を使用してください。
Linux版ライブラリの優位性
Linux版は組込みシステムからエッジコンピューティングまで幅広く対応。特にPython対応とRaspberry Pi対応により、IoT/エッジ開発において最適な選択肢です。
Linux版が最適な用途
- Raspberry Piを使った組込みシステム開発
- Pythonによる迅速なプロトタイピング
- エッジコンピューティング・IoTゲートウェイ構築
- 産業用Linux環境での制御システム
選択の指針
Linux版ライブラリを選ぶべき場合
- Linux環境での開発が前提
- Pythonで手軽に開発したい
- Raspberry Piなど組込みボードを使用
- 高精度なタイミング制御が必要
- Windows版と同じAPIで開発したい
他の開発環境を検討すべき場合
- Windows GUIアプリケーション開発 → Windows版ライブラリ
- 既存のLinux CANツールを使いたい → SocketCANドライバ
- candump等の標準ツールが必須 → SocketCANドライバ
クロスプラットフォーム開発の場合
- Windows版とLinux版のAPI仕様は統一されているため、同一ロジックでの移植が容易
- 両環境での動作が必要な場合は、両ライブラリの併用を推奨
Linux環境での使い分け
Linux環境では用途に応じて2つの選択肢があります。
- 高精度制御・Python開発 → Linux版ライブラリ
- 標準ツール互換・既存資産活用 → SocketCANドライバ
| 観点 | Linux版ライブラリ | SocketCANドライバ |
|---|---|---|
| タイミング精度 | ◎ 0.1ms保証 | △ カーネル依存 |
| Python開発 | ◎ 専用ラッパー | ○ python-can |
| 開発の容易さ | ◎ シンプルAPI | ○ Linux知識必要 |
| 既存ツール | × 独自API | ◎ 完全互換 |
| リソース消費 | ◎ 軽量 | ○ カーネル動作 |

