通信プロトコル

概要

 SSMプロトコルによって得られる ECUデータのほかに、基板に実装された加速度センサ、LED、スイッチなどのデータをやりとりするためのものである。SSMのパケットをカプセル化するのではなく、独自仕様のプロトコルに変換する。

 
  • ハンドシェイク方式
  1. ホスト(PC)がコマンドを送信する
  2. 基板が応答する

通信方式

方式RS-232C
ビット8bit
パリティなし
フローなし
ボーレートとエラー率2400bps-0.02%
4800bps0.04%
9600bps-0.08%
19200bps0.16%
38400bps0.16%
57600bps0.64%
115200bps-0.79%
230400bps2.12%
460800bps-3.55%

パケットの基本構造

  • Simple is Best (^^;
  • Big Endian

送信(PC)側

アドレスMSB/LSBデータ
0MSBコマンド
1LSBコマンド
2データサイズ (n = 0 to 255)
3 + nチェックサム

応答(基板)側

アドレスMSB/LSBデータ
0データサイズ (n = 0 to 255)
1 + nチェックサム

コマンド

  • 未実装のコマンドは、応答しない... (^^;

コマンドリスト

送信(PC)側応答(基板)側
コマンド番号データサイズデータ型取得データ名称データサイズデータ型応答、単位など
0x00000x00CPU Resetなし (応答しない)
0x00010x00Ping0x00なし(データサイズとチェックサムだけ返ってくる)
基板情報を取得するコマンド群
0x00100x00基板名ncharASCIIコード
0x00110x00基板バージョンncharASCIIコード
0x00120x00基板シリアル番号0x02unsigned int
0x00180x00ファームウェア名ncharASCIIコード
0x00190x00ファームウェアバージョンncharASCIIコード
0x001A0x00プロトコルバージョンncharASCIIコード
日時を取得/設定するコマンド群
0x00200x00現在時を得る0x01unsigned char
0x00210x00現在分を得る0x01unsigned char
0x00220x00現在秒を得る0x01unsigned char
0x00280x01unsigned char現在時を設定する0x00なし(データサイズとチェックサムだけ返ってくる)
0x00290x01unsigned char現在分を設定する0x00なし(データサイズとチェックサムだけ返ってくる)
0x002A0x01unsigned char現在秒を設定する0x00なし(データサイズとチェックサムだけ返ってくる)
ギア比を取得/設定するコマンド群
0x00400x00最終減速比0x02unsigned int(0 to 65535) / 1000
0x00410x001速0x02unsigned int(0 to 65535) / 1000
0x00420x002速0x02unsigned int(0 to 65535) / 1000
0x00430x003速0x02unsigned int(0 to 65535) / 1000
0x00440x004速0x02unsigned int(0 to 65535) / 1000
0x00450x005速0x02unsigned int(0 to 65535) / 1000
0x00460x006速0x02unsigned int(0 to 65535) / 1000
0x00470x007速0x02unsigned int(0 to 65535) / 1000
0x00480x02unsigned int(0 to 65535) / 1000 最終減速比0x00なし(データサイズとチェックサムだけ返ってくる)
0x00490x02unsigned int(0 to 65535) / 1000 1速0x00なし(データサイズとチェックサムだけ返ってくる)
0x004A0x02unsigned int(0 to 65535) / 1000 2速0x00なし(データサイズとチェックサムだけ返ってくる)
0x004B0x02unsigned int(0 to 65535) / 1000 3速0x00なし(データサイズとチェックサムだけ返ってくる)
0x004C0x02unsigned int(0 to 65535) / 1000 4速0x00なし(データサイズとチェックサムだけ返ってくる)
0x004D0x02unsigned int(0 to 65535) / 1000 5速0x00なし(データサイズとチェックサムだけ返ってくる)
0x004E0x02unsigned int(0 to 65535) / 1000 6速0x00なし(データサイズとチェックサムだけ返ってくる)
0x004F0x02unsigned int(0 to 65535) / 1000 7速0x00なし(データサイズとチェックサムだけ返ってくる)
タイヤサイズを取得/設定するコマンド群
0x00500x00タイヤ幅0x02unsigned int(0 to 65535) mm
0x00510x00扁平率0x01unsigned char(0 to 255) %
0x00520x00直径0x01unsigned char(0 to 255) Inch
0x00580x02unsigned int(0 to 65535) mm タイヤ幅なし(データサイズとチェックサムだけ返ってくる)
0x00590x01unsigned char(0 to 255) % 扁平率なし(データサイズとチェックサムだけ返ってくる)
0x005A0x01unsigned int0 to 255) Inch 直径なし(データサイズとチェックサムだけ返ってくる)
現在値を取得するコマンド群
0x10000x00車速0x02unsigned int(0 to 65535) km/h
0x10010x00エンジン回転数0x02unsigned int(0 to 65535) rpm
0x10020x00スロットル0x01unsigned char(0 to 100) %
0x10030x00ブースト圧0x02int(-32768 to 32767) / 1000 kg/cm^2
0x10040x00水温0x02int(-32768 to 32767) C
0x10050x00吸気温0x02int(-32768 to 32767) C
0x10060x00バッテリ電圧0x01unsigned char(0 to 255) / 10 V
0x10070x00Mass Air Flow0x02unsigned int(0 to 65535) / 100
0x10080x00A/F0x02unsigned int(0 to 65535) / 100
0x10090x00イグニッション0x02int(-32768 to 32767) / 100 deg
0x100A0x00ノッキング0x02int(-32768 to 32767) / 100 deg
0x100B0x00瞬間燃費0x02unsigned int(0 to 65535) / 100 km/h
0x100C0x00シフトポジション0x01unsigned char(0 to 255) Shift
0x100D0x00X軸加速度0x02int(-32768 to 32767) / 1000 G
0x100E0x00Y軸加速度0x02int(-32768 to 32767) / 1000 G
0x100F0x00Z軸加速度0x02int(-32768 to 32767) / 1000 G
最大値を取得するコマンド群
0x20000x00車速0x02unsigned int(0 to 65535) km/h
0x20010x00エンジン回転数0x02unsigned int(0 to 65535) rpm
0x20020x00スロットル0x01unsigned char(0 to 100) %
0x20030x00ブースト圧0x02int(-32768 to 32767) / 1000 kg/cm^2
0x20040x00水温0x02int(-32768 to 32767) C
0x20050x00吸気温0x02int(-32768 to 32767) C
0x20060x00バッテリ電圧0x01unsigned char(0 to 255) / 10 V
0x20070x00Mass Air Flow0x02unsigned int(0 to 65535) / 100
0x20080x00A/F0x02unsigned int(0 to 65535) / 100
0x20090x00イグニッション0x02int(-32768 to 32767) / 100 deg
0x200A0x00ノッキング0x02int(-32768 to 32767) / 100 deg
0x200B0x00瞬間燃費0x02unsigned int(0 to 65535) / 100 km/h
0x200C0x00シフトポジション0x01unsigned char(0 to 255) Shift
0x200D0x00X軸加速度0x02int(-32768 to 32767) / 1000 G
0x200E0x00Y軸加速度0x02int(-32768 to 32767) / 1000 G
0x200F0x00Z軸加速度0x02int(-32768 to 32767) / 1000 G
最小値を取得するコマンド群
0x30000x00車速0x02unsigned int(0 to 65535) km/h
0x30010x00エンジン回転数0x02unsigned int(0 to 65535) rpm
0x30020x00スロットル0x01unsigned char(0 to 100) %
0x30030x00ブースト圧0x02int(-32768 to 32767) / 1000 kg/cm^2
0x30040x00水温0x02int(-32768 to 32767) C
0x30050x00吸気温0x02int(-32768 to 32767) C
0x30060x00バッテリ電圧0x01unsigned char(0 to 255) / 10 V
0x30070x00Mass Air Flow0x02unsigned int(0 to 65535) / 100
0x30080x00A/F0x02unsigned int(0 to 65535) / 100
0x30090x00イグニッション0x02int(-32768 to 32767) / 100 deg
0x300A0x00ノッキング0x02int(-32768 to 32767) / 100 deg
0x300B0x00瞬間燃費0x02unsigned int(0 to 65535) / 100 km/h
0x300C0x00シフトポジション0x01unsigned char(0 to 255) Shift
0x300D0x00X軸加速度0x02int(-32768 to 32767) / 1000 G
0x300E0x00Y軸加速度0x02int(-32768 to 32767) / 1000 G
0x300F0x00Z軸加速度0x02int(-32768 to 32767) / 1000 G

データタイプ

INTEGER

TypeBitsMinMax
char8-128127
unsigned char80255
int16-3276832767
unsigned int16065535
long32-2^312^31 -1
unsigned long3202^32 -1

FLOATING POINT

  • IEEE-754
TypeBitsE MinE MaxN MinN Max
float, double32-1261272^-1262^128

実行例

Ping

送信
0x00 0x00 0x00 0x00
応答
0x00 0x00

CPU Reset

送信
0x00 0x01 0x00 0x01
応答

最終減速比を設定する

  • 最終減速比 3.900
  • 3900 = 0x0f3c
  • Checksum = 0x00 + 0x48 + 0x02 + 0x0f + 0x3c
送信
0x00 0x48 0x02 0x0f 0x3c 0x95
応答
0x00 0x00

最終減速比を取得する

送信
0x00 0x40 0x00 0x40
受信
0x02 0x0f 0x3c 0x4d

History

Rev.1 2008/12/10

  • 初版作成