【DoCAN】車両診断通信 その56【UDS⑯】

【DoCAN】車両診断通信 その56【UDS⑯】 車両診断通信

バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/

はじめに

ISO14229ことUDSの話。
TesterPresentサービスのメッセージについて。

登場人物

博識フクロウのフクさん

イラスト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

TesterPresentサービスのリクエストメッセージ

フクさん
フクさん

じゃ、TesterPresentサービスのメッセージを見てみよう。

太郎くん
太郎くん

見てみよう!

フクさん
フクさん

リクエストメッセージはこんなん。

PositionParameter NameValue
1TesterPresent Request SID0x3E
2sub-function = [ zeroSubFunction ]0x00,0x80
太郎くん
太郎くん

ん?
sub-functionは0x00か0x80?
なんかずいぶん間が飛んでるね。

フクさん
フクさん

あー。
0x80はsuppressPosRspMsgIndicationBitが立ってる状態だね。

suppressPosRspMsgIndicationBit

太郎くん
太郎くん

suppressPosRspMsgIndicationBit?
なにそれ?

フクさん
フクさん

suppressPosRspMsgIndicationBitは別にTesterPresentサービス限定の仕様ではない
sub-functionのパラメータを持っているサービス全てに適用される仕様。
効能は、PositiveResponse応答抑制
sub-functionの最上位bitに位置するんで、通常のsub-functionと0x80でORを取ったものになるね。

太郎くん
太郎くん

PositiveResponse応答抑制?
なんでそんなのがあるの?

フクさん
フクさん

TesterPresentサービスとかだと割と顕著なんだけど、
メンドクサイから応答しなくていいよ
って感じ。

太郎くん
太郎くん

メンドクサイって・・・。

フクさん
フクさん

TesterPresentサービス自体は特に処理とか無くて、
S3時間の維持だけのために使われることが多い

フクさん
フクさん

例えば、CANネットワークに8台のECUが居て、
機能アドレスでTesterPresentを送るとどうなると思う?

太郎くん
太郎くん

全員が応答してくる?

フクさん
フクさん

suppressPosRspMsgIndicationBitがあると?

太郎くん
太郎くん

全員応答してこない!

太郎くん
太郎くん

なるほど!
S3時間の延長だけを考えると
機能アドレス且つsuppressPosRspMsgIndicationBit付きが効率が良いのか!

フクさん
フクさん

そういうこと。
TesterPresentサービスだと無いけど、
他のサービスでsuppressPosRspMsgIndicationBitを付けた場合、
NegativeResponseは普通に応答が来る。
あと、NRC$78も返信して、そのあとのPositiveResponseも返す
って仕様になってる。

太郎くん
太郎くん

あれ?
PositiveResponseは返さないんじゃないの?

フクさん
フクさん

NRC$78を一回返してるからね。
PositiveResponseを返さないとタイムアウトとしてハンドリングされるんで、
この場合はPositiveResponse返す必要がある。
って感じ。

太郎くん
太郎くん

なるほど。
言われてみればそうかも。

TesterPresentサービスのレスポンスメッセージ

フクさん
フクさん

そして、レスポンスメッセージはこう

PositionParameter NameValue
1TesterPresent Response SID0x7E
2sub-function = [ zeroSubFunction ]0x00
太郎くん
太郎くん

これは予想付いてたな。
sub-functionで0x80はsuppressPosRspMsgIndicationBitの場合で、
TesterPresentの場合はNegativeResponseも無い想定だからだね。

フクさん
フクさん

正解!

フクさん
フクさん

TesterPresentサービスについてはこんなもんかな。

まとめ

フクさん
フクさん

まとめだよ。

  • TesterPresentサービスのメッセージについて説明。
  • suppressPosRspMsgIndicationBitについて説明。
    • PositiveResponse抑制。
    • NegativeResponseは返す。
    • NRC$78後のPositiveResponseも返す。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました