バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
車両診断通信のネットワーク層の話。
各種タイムアウト関連。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
各種タイムアウト

さて、
通信と言えばタイムアウト判定と言っても過言ではないほど、タイムアウトは結構メンドクサイ。

それはなんとなくわかる。
メンドクサそう。

まずは名前から簡単な説明
- N_As:フレーム送信を試みた時のタイムアウト値
- N_Bs:FF/CF送信完了からFC受信までのタイムアウト値
- N_Cs:FC受信/CF送信完了から次のCF送信開始までのタイムアウト値
- N_Ar:FC送信を試みた時のタイムアウト値
- N_Br:FF受信からFC送信開始までのタイムアウト値
- N_Cr:CF受信から次のCF受信までのタイムアウト値

(意味わからん。)

(明らかに意味わからんって顔してるな。)

まず、末尾が”s”のものはメッセージ送信側、
末尾が”r”のものは受信側のタイムアウト値になる。

(それを聞いたところで何かの理解が進んだ気が全くしない。)
各種タイムアウト図解

まぁ絵で見れば大体わかると思うよ。

はよう絵をくれ!
シングルフレーム送信時のタイムアウトパラメータ

まずはシンプルなSF送信時のタイムアウトパラメータの図。


?
N_Asだけ?

そう。
1フレームしか送信しないんで結果的にメッセージ送信に必要なパラメータは限定される。

なんだ。ちょろいじゃん!

(そう言ってられるのも今のうちなんだよなぁ。)
マルチフレーム送信時のタイムアウトパラメータ

そして、今度はマルチフレーム送信時のタイムアウトパラメータの図。


!!!!!

(さぁ絶望するが良い。)

送信側は分かるけど、受信側も大量に・・・。

と言う感じで、ISO-TPを設計&実装すると、ここへんのタイムアウトパラメータのハンドリングが主になるね。
その他のタイムアウトパラメータ

ちょっと気になったんだけど。

なに?

実際の通信する場合はリクエストしてレスポンスする流れなんだよね?
リクエストメッセージを送ってからレスポンスメッセージを受けるまでのタイムアウトも有りそうなんだけど、
それは出てきてないね。

ほう。鋭いね。
その通り、今回は説明してない。
今回はISO15765-2に相当するメッセージの分解と構築に必要なパラメータだけでを示している。
実際のはこれより上位のレイヤを定義しているISO14229-1の中にあるタイムアウトパラメータもある。
ただし、あくまでメッセージとして成立した上のタイムアウトなんで、
ISO-TPことISO15765-2の段階でエラーがあると、そもそも判定されもしない。

まぁそのうち説明してくれるって感じかな。
まとめ

まとめだよ。
- ISO-TPのタイムアウトパラメータは6個、
- N_As、N_Bs、N_Cs、N_Ar、N_Br、N_Cr。
- シングルフレーム送信は1フレームで完結しているのでN_Asだけ。
- マルチフレーム送信は全パラメータを使用する。
- ISO-TPはあくまでフレームレベルのタイムアウト判定をするだけで、メッセージ単位のタイムアウトは上位のレイヤで判定している。
バックナンバーはこちら。
コメント