Keywords: YAMAHA XC155 SMAX マジェスティS 1DK 回路図 wiring diagram colored 配線図 診断コネクタ ECU ECM CDI OBD ダイアグノシス diagnosis

ヤマハ SMAX(XC155 1DK4) ECU遊び

ec2-18-234-232-228.compute-1.amazonaws.com , 7867th 2017/10/16 UPDATED

FI Diagnostic Toolの通信を解析してみた(2017.10.1)

個人整備用(?)ツールで、Yamaha FI Diagnostic Toolという簡易診断機が売っている。 ヤマハの50~155cc FI車で使用できるらしい。 早速、通信内容を傍受してまとめてみた。

物理仕様は K-LINEで、high:12V, low:0V, 通信速度は 15,384bps S8N1である。

診断信号線は、バッテリー付近にある緑色の線のギボシ短絡を外して使用するが、通常時の短絡先はメーターユニットへ信号が行っていて、昔からある長点灯+点滅何回的な信号が出力される。 メーター側はこの原始的診断信号を翻訳して液晶画面にエラーコードを表示するようになっているようだ。


  • 通信モードへの移行
  • 電源投入後 15,384bpsの通信モードへ突入するには、開始コマンドを送信する必要がある。

    PCECU
    fd電源起動から 100ms以内。 時間が過ぎると受付されない。
    00 00 00 00 00通信モードに移行すると00が5バイト返ってくる


    ECU通信推移図


  • DIAGモード
  • DIAGモードへ突入するには、0xce (MODEボタン押下)コマンドを、v2 = 0x40のタグパケットが返るまで送出し続ける。

    ちなみに、DIAGモードではエンジン始動が無効化されるため、走行中に使用する事はできない。

    PCECU
    ce15ms毎に繰り返し
    00 00 80 00 80突入中
    ce15ms毎に繰り返し
    00 00 40 d0 10準備中
    ce
    00 00 40 01 41[D01]モード


    基本通信フレーム

    通信方向 LEN +0 +1 +2 +3 +4
    コマンド
    PC→ECU 1 0xfd   通信モード移行
    PC→ECU 1 0xca   ボタン解放
    PC→ECU 1 0xcb   UPボタン押下
    PC→ECU 1 0xcc   DOWNボタン押下
    PC→ECU 1 0xce   MODEボタン押下
    レスポンス
    PC←ECU 5 v0 v1 v2 v3 SUM SUM = (v0 + v1 + v2 + v3 ) & 0x0ff


    Diagnostic ToolのUP/DOWNキーを押すと、押下げコマンドとして ECUに送り ECU側がメニュー推移を管理する不思議な通信プロトコルになっている。

    通常はボタン解放コマンド 0xcaが 15ms間隔で送出され、8回に一度 v2 = 0x40のタグパケットが返ってくる。
    タグパケット以外の 7回はデーターパケットとなる。

    ツール側で、UP/DOWNが押下されると、押されいる間 15ms毎に 0xcb(UP)、0xcc(DOWN)が送出される。 ECU側でメニュー推移が行われると、タグパケットの診断番号が推移し、データーパケットに推移された診断データーが出力される。

    UP/DOWNコマンドを送ったら、タグの番号が推移するまで 0xcaを送り続け、推移後のデーターパケットを使って処理を進める。



    [D01] スロットル開度

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 1 0x41
    データーパケット
    PC←ECU 5 0 0 0 v SUM 開度 = v / 2.06


    [D03] 吸気圧

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 3 0x43
    データーパケット
    PC←ECU 5 0 0 0 v SUM 吸気圧 = v / 2.02


    [D05] 吸気温

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 5 0x45
    データーパケット
    PC←ECU 5 0 0 0 v SUM 吸気温 = v - 30


    [D06] 水温

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 6 0x46
    データーパケット
    PC←ECU 5 0 0 0 v SUM 水温 = v - 30


    [D07] 車速

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 7 0x47
    データーパケット
    PC←ECU 5 0 v1 0 v2 SUM v1, v2 単位時間あたりの車速パルス数。
    パケットが一巡(8フレーム)する時間を t、データーフレーム中の v1, v2の合計を nとすると、車速[km/h] = (3600 / t) * n * 0.23
    (車速1パルス=23cm)


    [D08] バンクセンサー電圧

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 8 0x48
    データーパケット
    PC←ECU 5 0 0 0 v1 SUM センサ電圧[v] = 0.02 * v1


    [D09] バッテリー電圧

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 9 0x49
    データーパケット
    PC←ECU 5 0 0 0 v1 SUM バッテリー電圧[v] = 0.073 * v1


    [D20] サイドスタンドSW

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 0x14 0x54
    データーパケット
    PC←ECU 5 0 0 0 v1 SUM off:v1 = 0xf0, on:v1 = 0


    [D65] 診断エラー数

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 0x3e 0x7e
    データーパケット
    PC←ECU 5 0 0 0 v1 SUM v1: エラー総数


    [D67] ISC学習

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 0x43 0x83
    データーパケット
    PC←ECU 5 0 0 0 v1 SUM v1: フラグ


    [D70] プログラムNo.

    通信方向 LEN +0 +1 +2 +3 +4
    タグパケット
    PC←ECU 5 0 0 0x40 0x46 0x86
    データーパケット
    PC←ECU 5 0 0 0 v1 SUM v1: プログラムNo.(?)


  • モニターモード
  • 0xFD初期化後、モニターコマンドを送信すると、エンジンの稼働状況をモニターすることができる。 DIAGモードはエンジンの始動ができないが、モニターモードは始動可なため走行中でも使用が可能である。

    回転数, 水温, エラー値

    通信方向 LEN +0 +1 +2 +3 +4
    コマンド
    PC→ECU 1 0x01   モニター項目 #1
    データーパケット
    PC←ECU 5 rpm ?? err temp SUM 回転数 = rpm * 50
    エラー番号 = err & 0x7f
    水温 = temp - 30

    エラー番号が複数個ある場合、128回読み出す毎に順番に出力される



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