Keywords: ETC 三菱 EP-9U77 解析 プロトコル 通信 料金 履歴 高速道路 料金所番号

三菱ETCナビ連携端子通信プロトコルの解析

ec2-54-224-76-150.compute-1.amazonaws.com , 17663rd 2017/06/17 UPDATED
Copyright(C)2013 H.Kashima

[注意] この情報の利用においてのリスクは完全自己責任でお願いします。
また、この情報群について製造会社に問い合わせることは迷惑となりますのでしないでください。
[更新履歴]
2012.1.5	初版
2012.1.18	料金所番号ファイルに首都高などが入っていなかったので第2版に追加
2012.3.31	料金所番号ファイル第3版
2013.4.13	[Ver1.01] 64bitOSで ODBCエラーが出るので、32bitで動作するようコンパイルしなおした。
		COMポートが空白のままだとエラーで落ちるのを警告表示するようにした。
2013.4.16	料金所番号ファイル第4版
2013.10.31	料金所番号ファイル第5版
2014.10.17	料金所番号ファイル第6版
2015.3.1	料金所番号ファイル第7版
2015.9.25	料金所番号ファイル第8版
2016.8.14	料金所番号ファイル第9版
2017.2.7	料金所番号ファイル第10版
2017.6.17	[Ver1.02] ODBCを使用しないようにした。.net Framework 4.6対応に変更した。
		USBシリアルの種類によっては正しく通信できないことがあるのを修正した。
		表示フォントを Meiryo UIに変更した。登録日取得コマンドの実装が無いモデルに
		対応した。
		9U812V型で新発見したコマンドを掲載。 履歴レスポンスの日付が秒の項目を追加
  1. 三菱製ETCについて
  2. 通信連携機能が使えるのは、後部にナビゲーション通信端子が搭載されている EP-7xx、EP-8xxxxであると思われる。 また、カロッツェリアの純正ETC車載器は三菱のOEMで、7xxシリーズの適当なモデルと同一であるようだ。

    通信可能と思われるモデルをリストアップすると下記ようになるが、新旧モデル間でコマンド有無があるようなので注意して欲しい。

    2006年	EP-406B     0376
    2007年	EP-9U77     0402 (実機検証済)
            EP-9U47N    0404
    Panasonic CN-EN802CT 0445 (実機検証済)
    2009年  EP-9U79     0471
    2010年  EP-9U810V   0519
    2012年  EP-9U812V   0546 (実機検証済)
    2014年  EP-9U714V   0590
    



  3. 接続ケーブルとピン配置
  4. 車載器側通信コネクタ(ヒロセ GT8E-8/2P-2H)
    ETC車載器の通信コネクタ


    PC接続ケーブルの配線

    ETC          DSUB9メス
    --------------------
    TxD  ------  2 RxD
    RxD  ------  3 TxD
    GND  ------  5 GND
    
    ヒロセのコネクタが入手できればそれを使うのが良いが、秋月とかで売っている 2.0mmピッチの汎用ヘッダコネクタを8ピン分切断して使用するのが手っ取り早い。 オークションなどで出ている中古の連携ケーブルを切断して使うのもありだ。



  5. PC用連携ソフト
  6. ETCイベントの表示と履歴を読み出すソフトを作ってみた。






  7. 通信プロトコル
  8.  信号は RS232Cレベル、非同期 19,200bps, 8bit, Even Parityである。

    チェックサム(SUM)は+1番目~LEN-3番目までの合計(16進数 大文字ASCII)の 下2桁である。

    (車載器番号要求 'B' 長さ 6の場合)

    0xc6 + 0x42 = 0x108なので、SUMは "08"。
    0x01 0xc6 0x42 0x30 0x38 0x0d を送出すればよい。


    [電源ONから、履歴を読み出すまでの例]
    PC→ETC	0xfa 0x0d					[通信要求]
    ETC→PC	0xf0 0x0d 0x01 0xc2 0x30 0x46 0x32 0x0d		[通信可能][通信確認]
    PC→ETC	0x02 0xc0 0x43 0x30 0x0d			[ACK]	← ここまで手続きするとETCの外部通信がオンライン状態になる。
    PC→ETC	0x01 0xc6 0x4c 0x31 0x32 0x0d			[履歴要求]
    ETC→PC	0x02 0xc1 0x37 0x46 0x38 0x0d			[履歴あり]
    PC→ETC	0x01 0xc6 0x4c 0x31 0x32 0x0d			[履歴要求]
    ETC→PC	0x02 0xe5 (履歴データー・・・・・・)			[履歴]
    PC→ETC	0x01 0xc6 0x4d 0x31 0x33 0x0d			[継続要求]
    ETC→PC	0x02 0xe5 (履歴データー・・・・・・)			[履歴]
    		・
    		・
    PC→ETC	0x01 0xc6 0x4d 0x31 0x33 0x0d			[継続要求]
    ETC→PC	0x02 0xc1 0x38 0x46 0x39 0x0d			[継続なし]
    
    


通信コマンド一覧

名称 通信方向 LEN +0 +1 +2 +3 +4 +5 +6 +7 説明
コマンド・ACK
通信要求 PC→ETC 2 0xfa 0x0d   通信要求をする。電源投入時はこのコマンドしか受け付けない
通信確認 PC→ETC 6 0x01 0xc6 '1' SUM 0x0d   ETCが通信可能かどうかのチェック可能であれば '0'が返ってくる
利用料金確認 PC→ETC 6 0x01 0xc6 '3' SUM 0x0d   最後に利用した料金のリクエスト。 支払金額レスポンスが返ってくる
車載器番号要求 PC→ETC 6 0x01 0xc6 'B' SUM 0x0d   ETC車載器番号を読み出す
登録日要求(※1) PC→ETC 6 0x01 0xc6 'C' SUM 0x0d   車載器がセットアップされた日付を読み出す。 実装が無い古い機種はコマンド無効レスポンスが返る
カード確認 PC→ETC 6 0x01 0xc6 'G' SUM 0x0d   カードが挿入されているかチェックする。
無効なカードでも挿入されていれば「あり」が返ってくる。
累積金額 PC→ETC 6 0x01 0xc6 'H' SUM 0x0d   車載器で利用した累積金額を読み出す。
累積金額クリア PC→ETC 6 0x01 0xc6 'I' SUM 0x0d   累積金額のクリア。
形式番号要求 PC→ETC 6 0x01 0xc6 'J' SUM 0x0d   ETC車載器の形式番号を読み出す
機器名要求 PC→ETC 6 0x01 0xc6 'K' SUM 0x0d   ETC車載器の機器名を読み出す
利用履歴要求 PC→ETC 6 0x01 0xc6 'L' SUM 0x0d   最初の 'L'で履歴の有無('7'/'5')が返され、履歴ありの場合
再度1度だけ 'L'を送出し、最新履歴を1行取得したら、その後継続要求'M'を、継続なし '8'を受け取るまで繰り返す。
履歴継続要求 PC→ETC 6 0x01 0xc6 'M' SUM 0x0d   次の履歴を要求する。 次の履歴が無い場合は レスポンス'8'が返される。
消音(※2) PC→ETC 6 0x01 0xc6 '9' SUM 0x0d   音量0 (消音)にセットする
音量1(※2) PC→ETC 6 0x01 0xc6 'A' SUM 0x0d   音量1にセットする
履歴SWモニタ(※2) PC→ETC 6 0x01 0xc6 'O' SUM 0x0d   本体の履歴SWを押下と同時にPCへデータを転送するのを有効にする。カード挿入時は最終履歴、抜去時は累積金額が転送される。無効に戻すコマンドの実装は無く、電源OFFでリセットするしかない。
バルクダンプ(※2) PC→ETC 6 0x01 0xc6 'R' SUM 0x0d   カードの内容(?) 128byteを読み出す
ACK PC→ETC 5 0x02 0xc0 SUM 0x0d   受信確認 ACK。 ETCから送出される頭が 0x01のパケットには ACKを返さなければいけない。
メッセージ
通信確認 ETC→PC 6 0x01 0xc2 '0' SUM 0x0d   0xfa 0x0dの通信要求を行うと、0xf0 0x0dの次に送出される。 このメッセージのACKを返した時点で、通信がオンラインになる。 このやりとりが完了しないとETCは他のコマンドは受け付けない。 PCは ACKを返さなければならない。
未挿入警告
(エラー01)
ETC→PC 6 0x01 0xc2 '1' SUM 0x0d   ゲートやお知らせアンテナ通過時にカード未挿入であると送出される。 PCは ACKを返さなければならない。
カードエラー
(エラー03)
ETC→PC 6 0x01 0xc2 '3' SUM 0x0d   カード挿入時、エラーが検出されると送出される。PCは ACKを返さなければならない。
カードエラー
(エラー05)
ETC→PC 6 0x01 0xc2 '5' SUM 0x0d   カードICチップの読み出しエラー。PCは ACKを返さなければならない。
カード挿入 ETC→PC 6 0x01 0xc2 'D' SUM 0x0d   カードが挿入されると送出される。PCは ACKを返さなければならない。
カード取出 ETC→PC 6 0x01 0xc2 'E' SUM 0x0d   カードがイジェクトされると送出される。PCは ACKを返さなければならない。
ゲートイン ETC→PC 6 0x01 0xc7 'a' SUM 0x0d   料金所入口を正常通過すると送出される。PCは ACKを返さなければならない。
ゲート通過
エラー
ETC→PC 6 0x01 0xc7 'b' SUM 0x0d   料金所ゲートでエラーになると送出される。PCは ACKを返さなければならない。
お知らせアンテナ
通過
ETC→PC 6 0x01 0xc7 'c' SUM 0x0d   お知らせアンテナ通過時送出される。(カードが正常だとこの通知はされないようだ) PCは ACKを返さなければならない。
ゲートアウト ETC→PC 6 0x01 0xc7 'A' SUM 0x0d   料金所出口を正常通過すると送出される。PCは ACKを返さなければならない。
支払通知 ETC→PC 11 +0 +1 +2 +3 +4 +5 +6 +7 決済が確定すると送出される。PCは ACKを返さなければならない。
0x01 0xc5 料金(ASCII スペース詰め右寄せ)
+8 +9 +10  
SUM 0x0d  
最終履歴(※2) ETC→PC 40 +0 +1   'O'コマンドでSW転送有効後、カード挿入時に履歴SWを押下すると発生する。フィールドの詳細は履歴レスポンスと同一。 PCはACKを返さなければならない。
0x01 0xc4
+2 +3 +4 +5  
"0108"
+6 +7 +8 +9 +10  
区分(入) 番号(入)
+11 +12 +13 +14  
"0108"
+15 +16 +17 +18 +19  
区分(出) 番号(出)
+20 +21 +22 +23 +24 +25 +26 +27
年(西暦)
+28   +29   +30 +31 +32 +33 +34 +35 +36
車種 料金(ASCII 右寄せ)
+37 +38 +39  
SUM 0x0d
累積金額(※2) ETC→PC 11 +0 +1 +2 +3 +4 +5 +6 +7 'O'コマンドでSW転送有効後、カード抜去時に履歴SWを押下すると発生する。PCはACKを返さなければならない。
0x01 0xce 料金(ASCII スペース詰め右寄せ)
+8 +9 +10  
SUM 0x0d
レスポンス
ハートビート ETC→PC 2 'U' 0x0d   車載器の電源投入後数秒間送出される。
通信可能 ETC→PC 2 0xf0 0x0d   通信要求 0xfa 0x0dを送ると返ってくる。直後に通信確認メッセージが送られてくる。
登録日(※1) ETC→PC 9 +0 +1 +2 +3 +4 +5 +6 +7 C コマンドの返答。
0x02 0xcc 年(BCD 4桁) SUM
+8  
0x0d
カードあり ETC→PC 6 0x02 0xcd 0x01 SUM 0x0d   G コマンドの返答。
カードなし ETC→PC 6 0x02 0xcd 0x00 SUM 0x0d   G コマンドの返答。
車載器番号 ETC→PC 13 +0 +1 +2 +3 +4 +5 +6 +7 Bコマンドの返答。番号は上位4bit下位4bitのBCDである。
0x02 0xcb 車載器番号(BCD 12桁)
+8 +9 +10 +11 +12  
車載器番号 SUM 0x0d
型式番号 ETC→PC 9 +0 +1 +2 +3 +4 +5 +6 +7 Jコマンドの返答。
0x02 0xe1 形式番号(ASCII) SUM
+8  
0x0d
機種名 ETC→PC 13 +0 +1 +2 +3 +4 +5 +6 +7 Kコマンドの返答。
0x02 0xe2 機種名(ASCII)
+8 +9 +10 +11 +12  
機種名(ASCII) SUM 0x0d
履歴 ETC→PC 46 +0 +1   'L'、'M'コマンドの返答履歴情報。 "0108"は国番号? 料金所区分と番号は道路公団のHPに漢字名との一覧が掲載されている。

車種
001:普通車 002:大型車 003:特大車
004:中型車 005:軽二輪
0x02 0xe5
+2 +3 +4 +5  
"0108"
+6 +7 +8 +9 +10  
区分(入) 番号(入)
+11 +12 +13 +14  
"0108"
+15 +16 +17 +18 +19  
区分(出) 番号(出)
+20 +21 +22 +23 +24 +25 +26 +27
年(西暦)
+28 +29 +30 +31 +32 +33  
+34   +35   +36 +37 +38 +39 +40 +41 +42
車種 料金(ASCII 右寄せ)
+43 +44 +45  
SUM 0x0d
コマンド無効 ETC→PC 6 0x02 0xc1 '2' SUM 0x0d   存在しないコマンドを送ると返ってくる
SUMエラー ETC→PC 6 0x02 0xc1 '3' SUM 0x0d   コマンドのチェックサムエラー
履歴あり ETC→PC 6 0x02 0xc1 '7' SUM 0x0d   最初の 'L'コマンドの返答。
履歴なし ETC→PC 6 0x02 0xc1 '5' SUM 0x0d   最初の 'L'コマンドの返答。
継続データなし ETC→PC 6 0x02 0xc1 '8' SUM 0x0d   'M'コマンドの返答。
支払通知 ETC→PC 11 +0 +1 +2 +3 +4 +5 +6 +7 '3' コマンドの返答。
0x02 0xc5 料金(ASCII スペース詰め右寄せ)
+8 +9 +10  
SUM 0x0d
累積金額 ETC→PC 11 +0 +1 +2 +3 +4 +5 +6 +7 'H' コマンドの返答。
0x02 0xce 料金(ASCII スペース詰め右寄せ)
+8 +9 +10  
SUM 0x0d
バルクダンプ(※2) ETC→PC 134 +0 +1 +2 +3  ・・・・ +131 +132 +133 'R' コマンドの返答
0x01 0xb6 0x80 カードデータ?
(128byte binary)
SUM 0x0d

※1・・・Panasonic EN802には実装が無い
※2・・・9U812V型で確認。9U77型には実装が無い


E-mail [注意]不適正な題名は即座ゴミ箱、名前を名乗らぬ者への返事はしない事があります。フリー系メールからは自動的に拒絶する場合があります。
-- LINK FREE --
 
HOME LAST