2000年以前用FIATダイアグツールを日本語化+αを試す2

前回は同ダイアグツールの基本接続と実車疎通接続を行いました。しかし連続モニタリングと再接続性に課題があり、調査します。

まず通信仕様を理解する必要があります。通常はサプライヤ以外には非公開ですが検索するとpdfが見つかります。No.07223 と No. 3.00608 のFIAT公式資料がでてきます。No. 3.00608 の方が具体的内容のようです。No.07223は2000年以降の仕様のようであまり参考にならないです。公式か不明の”IAW 16F Technical Information”という資料に100%の内容が記載されているようです。

  • ECU接続時にSeedkey等はない。
  • 実際の通信ではチェックサムは無い。
  • ダイアグツール 接続時 1200bps、データ通信時7,812bps (コード内はクロック分周の都合か7,680bps)となっており一般と異なる。
  • 接続後は、ECUへのリクエストは1Byte。
  • 初期接続時に、110msec±10% という順守するにはPCだけでは厳しい条件あり。
  • 切断コマンドは見当たらず。

通信自体は、ダイアグツールは大体あっている感じです。


車両側ダイアグコネクタには、L_LINE が来ていたので配線を確認しました。K-LINEと合成されているだけようです。


組込み機器と通信するWindowsアプリを作る場合、以下の課題があります。

  • msec単位の処理に対して、正確にリクエスト/応答できない。0.1秒が限度。
  • 画面操作なと介入により通信は遅延する。
  • .NETは、C++&Win32APIより数倍遅い。

当アプリは配慮はされていますが万全とは言えないようです。ここは様子見ですね。

  • ECU通信部は別スレッド化されている。(これはOK)
  • 通信リトライが無い。(UARTではハード層はリトライしないので実施が常識)
  • 不正確な Thread.Sleep を多用している。
  • 通信は1byte単位で実施している。(length指定より遅れが出やすい、.NETならなおさら)
  • エコーバックの一致チェックはしていない。(一線式のKLINEおよびLINではエコーバックが不一致だとBUS競合したと判断できる)
  • 必須かは不明だが、使用者に切断操作時に、ECUへ切断コマンドは送信していない


まずECUとの通信内容をリアルタイム表示する機能が必要です。専用のアナライザ装置がベストですが、通信コンソール画面を追加します。これは別スレッドでメイン画面スレッドとPostMessageさせる取りするので処理遅延は最小です。以下アプリが受信待機していて、IG-ONしたとき、ECUから型番等が送られるのがわかります。

以下は、ダイアグツール側がECU型番を覚えているときのシーケンスで、失敗したときです。

見解としては、ECUとツールのどちらかが遅れているか、タイムアウト時間が適正でないといえそうです。ECUへのリクエストのタイミングか、ツール側の取りこぼしが疑わしいそうです。微妙なBaudrateも確かWindowsでは作りだせなかった記憶があります。FTDIでは作り出せるかもしれません。もろもろクロック周期の影響を受け7,812bpsジャストにはできないはずです。


モニタログのパスは変更できるようにしました。

その他、昔の勢いで使いにくい部分はどんどん直してしまいました。

  • 接続時の通信リクエストにリトライ3回を追加。
  • ウインドウサイズやグラフ幅を覚えうるように処理を追加。
  • try – catch もれも一か所あり、そこに行着くと落ちるので修正。
  • メッセージ表示中にメイン画面の操作無効されているが、× ボタンも押せないのでそこは操作できるように修正。
  • USBケーブル抜き取り時に、DISCONNECTを実行。
  • USBケーブル挿入時にCOMを自動オープンする。
  • tooptipが表示されなくなる事象を修正。
  • グラフ画面で、項目名とグラフの比率をスライダで変更できるようにした。

リポジトリ本流に戻しにくくなってしまいました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です