USB CANアダプター ASCIIコマンドリファレンス
概要: USB CANアダプターは仮想シリアルポートとして登録され、シンプルなASCIIコマンドで制御できます。全てのコマンドは改行文字CR(0xD)で終了し、エラー時は0x7(BELL)が返されます。
基本情報・ヘルプコマンド
コマンド |
応答 |
機能 |
利用可能状態 |
H[CR] |
[CR] |
サポートされているコマンド一覧を表示 |
常時 |
h[CR] |
[CR] |
サポートされているコマンド一覧を表示 |
常時 |
?[CR] |
[CR] |
サポートされているコマンド一覧を表示 |
常時 |
V[CR] |
VXXXX[CR] |
ファームウェアバージョンを取得 |
常時 |
N[CR] |
TXXXXXXXX[CR] |
シリアル番号を取得(10進数) |
常時 |
RST[CR] |
- |
USB CANアダプターをリセット |
常時 |
チャンネル制御コマンド
チャンネルオープン
コマンド |
応答 |
機能 |
前提条件 |
O[CR] |
[CR] |
通常モードでチャンネルをオープン |
ビットレート設定済み |
L[CR] |
[CR] |
リッスンオンリーモードでチャンネルをオープン |
ビットレート設定済み |
Y[CR] |
[CR] |
ループバックモードでチャンネルをオープン |
ビットレート設定済み |
モードの説明:
- 通常モード(O): 標準的なCAN通信モード
- リッスンオンリーモード(L): バスとの相互作用なし、受信のみ
- ループバックモード(Y): 送信フレームも受信する
チャンネルクローズ
コマンド |
応答 |
機能 |
前提条件 |
C[CR] |
[CR] |
CANチャンネルをクローズ |
チャンネルオープン状態 |
ビットレート設定コマンド
標準ビットレート設定
コマンド |
応答 |
ビットレート |
前提条件 |
S00[CR] |
[CR] |
5Kbps |
チャンネルクローズ状態 |
S0[CR] |
[CR] |
10Kbps |
チャンネルクローズ状態 |
S1[CR] |
[CR] |
20Kbps |
チャンネルクローズ状態 |
S2[CR] |
[CR] |
50Kbps |
チャンネルクローズ状態 |
S3[CR] |
[CR] |
100Kbps |
チャンネルクローズ状態 |
S4[CR] |
[CR] |
125Kbps |
チャンネルクローズ状態 |
S5[CR] |
[CR] |
250Kbps |
チャンネルクローズ状態 |
S6[CR] |
[CR] |
500Kbps |
チャンネルクローズ状態 |
S7[CR] |
[CR] |
800Kbps |
チャンネルクローズ状態 |
S8[CR] |
[CR] |
1Mbps |
チャンネルクローズ状態 |
注意: USB-CAN-SI-Mは20K~1Mビットのみサポート
カスタムビットレート設定
コマンド |
応答 |
機能 |
前提条件 |
sXXXXXXXXX[CR] |
[CR] |
カスタムビットレートを設定 |
チャンネルクローズ状態 |
例: s013070603[CR]
= 150kbps設定
設定方法: CAN Bitrate Calculator プログラムを使用して値を計算
データ送信コマンド
標準フレーム送信(11bit ID)
コマンド |
応答 |
機能 |
前提条件 |
tiiildddd...dd[CR] |
z[CR] |
標準CANフレームを送信 |
チャンネルオープン状態 |
riiil[CR] |
z[CR] |
標準リモートリクエストフレームを送信 |
チャンネルオープン状態 |
パラメータ説明:
- iii: 11bit ID(000-7FF、16進数)
- l: データ長DLC(0-8)
- dd: データバイト(00-FF、16進数)
例:
t00231199FF[CR]
→ ID=002h, DLC=3, Data=11 99 FF
r0023[CR]
→ ID=002h, DLC=3のリモートリクエスト
拡張フレーム送信(29bit ID)
コマンド |
応答 |
機能 |
前提条件 |
Tiiiiiiiildddd...dd[CR] |
Z[CR] |
拡張CANフレームを送信 |
チャンネルオープン状態 |
Riiiiiiiil[CR] |
Z[CR] |
拡張リモートリクエストフレームを送信 |
チャンネルオープン状態 |
パラメータ説明:
- iiiiiiii: 29bit ID(00000000-1FFFFFFF、16進数)
- l: データ長DLC(0-8)
- dd: データバイト(00-FF、16進数)
例:
T1FFFFFFF3112233[CR]
→ ID=1FFFFFFFh, DLC=3, Data=11 22 33
R100000023[CR]
→ ID=10000002h, DLC=3のリモートリクエスト
フィルタリング設定コマンド
アクセプタンスマスク設定
コマンド |
応答 |
機能 |
前提条件 |
miii[CR] |
[CR] |
標準フレーム用アクセプタンスマスクを設定 |
チャンネル初期化済み |
miiiiiiii[CR] |
[CR] |
拡張フレーム用アクセプタンスマスクを設定 |
チャンネル初期化済み |
マスクの仕組み:
- ビット値"0" = そのビット位置のIDは無視(Don't Care)
- ビット値"1" = そのビット位置のIDをフィルタでチェック
- デフォルト: 全フレーム通過(0x000 / 0x00000000)
例: m700[CR]
→ ビット10,9,8をチェック、ビット7-0は無視
アクセプタンスコード設定
コマンド |
応答 |
機能 |
前提条件 |
Miii[CR] |
[CR] |
標準フレーム用アクセプタンスコードを設定 |
マスク設定後 |
Miiiiiiii[CR] |
[CR] |
拡張フレーム用アクセプタンスコードを設定 |
マスク設定後 |
フィルタの仕組み:
- マスクとコードを組み合わせて特定のIDまたはID範囲を指定
- デフォルト: 全フレーム通過(0x7FF / 0x1FFFFFF)
例: M1FF[CR]
→ 上記マスクと組み合わせて0x100-0x1FFの範囲を通過
その他の設定コマンド
タイムスタンプ設定
コマンド |
応答 |
機能 |
前提条件 |
Z1[CR] |
[CR] |
受信フレームのタイムスタンプをONに設定 |
チャンネルクローズ状態 |
Z0[CR] |
[CR] |
受信フレームのタイムスタンプをOFFに設定 |
チャンネルクローズ状態 |
ステータス確認
コマンド |
応答 |
機能 |
前提条件 |
F[CR] |
XX[CR] |
CANバスステータスフラグを取得 |
常時 |
ステータスフラグ詳細
Last Error Code(LEC)- ビット2,1,0
コード |
意味 |
000 |
エラーなし |
001 |
スタッフエラー:5個以上の同じビットが連続 |
010 |
フォーマットエラー:固定フォーマット部分が間違い |
011 |
ACKエラー:送信メッセージが他ノードで応答されない |
100 |
ビット1エラー:リセッシブ送信時にドミナントを検出 |
101 |
ビット0エラー:ドミナント送信時にリセッシブを検出 |
110 |
CRCエラー:CRCチェックサムが不正 |
111 |
未使用 |
その他のステータスビット
ビット |
意味 |
3 |
メッセージ送信成功(1=成功) |
4 |
メッセージ受信成功(1=成功) |
5 |
エラーパッシブ状態(1=パッシブ) |
6 |
エラー警告ステータス(1=警告レベル到達) |
7 |
バスオフステータス(1=バスオフ状態) |
実用的な使用例
基本的な送信シーケンス
S6[CR] # 500kbpsに設定
O[CR] # チャンネルをオープン
t0023112233[CR] # ID=002h, DLC=3, Data=11 22 33を送信
C[CR] # チャンネルをクローズ
フィルタリング設定例
C[CR] # チャンネルをクローズ(設定変更のため)
m700[CR] # マスク設定:上位3ビットをチェック
M100[CR] # コード設定:0x100-0x1FFの範囲を通過
O[CR] # チャンネルをオープン
ステータス確認例
F[CR] # ステータス取得
# 応答例:20[CR] = ビット5が1(エラーパッシブ状態)
重要な注意事項
- コマンド実行順序: ビットレート設定 → チャンネルオープン → データ送信
- フィルタ設定順序: アクセプタンスマスク → アクセプタンスコード
- 設定変更: ビットレート、タイムスタンプ設定はチャンネルクローズ時のみ
- エラーハンドリング: 全てのエラーは0x7(BELL)で応答
- データフォーマット: 全ての数値は16進数で指定
- DLC制限: データ長は最大8バイト
トラブルシューティング
よくあるエラーと対処法
- BELL応答: コマンド構文エラーまたは不正な状態での実行
- 無応答: コマンド終端のCRが不正または未接続
- 送信失敗: チャンネルが開いていない、またはビットレート未設定
- 受信できない: フィルタ設定が厳しすぎる、またはビットレート不一致