記事検索

検索ワードを入力してください。
Sky Tech Blog
UDS通信(Unified Diagnostic Services)の​概要

UDS通信(Unified Diagnostic Services)の​概要

自動車の電子制御ユニット(ECU)と診断ツール間で使用される通信プロトコルであるUDS(Unified Diagnostic Services)について説明しています。UDSの基本的な考え方、機能、通信の流れ、サービスID(SID)やデータ識別子(DID)の使用方法、ポジティブおよびネガティブ応答の詳細を紹介しています。

はじめに

車載プロジェクトでは自動車の電子制御ユニット(ECU)を用いる業務が大半を占めていますが、 ECUに対する診断や制御はUDS(Unified Diagnostic Services)という通信プロトコルによって定義されています。(ISO 14229規格に基づいている) 案件によってはECUと診断機でやり取りされるUDSのログを参照することもあるため この記事では通信の基本的な考え方やいくつかの関連知識を紹介させていただきます。

通信の​概要​(基本的な​考え方)

上述の通り、UDS通信はECUと診断ツール間でのデータ交換を行うためのプロトコルです。主に以下のような機能を提供します。

  • 診断セッション管理:ECUの診断セッションを開始、終了、または変更する。
  • データの読み取り:ECUから特定のデータを読み取る。
  • データの書き込み:ECUに特定のデータを書き込む。
  • エラーコードの管理:ECUのエラーコードを読み取る、クリアする。

UDS通信は、リクエストとレスポンスの形式で行われ、診断ツールがリクエストを送信し、ECUがそれに対してレスポンスを返します。

リクエストの際は、コマンドの識別子としてSID(サービスID)を先頭に指定して送ることになります。

サービスIDの一例

SID 説明
0x10 診断セッション制御
0x11 ECUリセット
0x14 データの消去
0x19 DTC情報の読み取り
0x22 データの読み取り
0x2E データの書き込み
0x31 ルーティンコントロール

通信の​結果​(ECUからの​応答)

ECUからの応答には、ポジティブ応答ネガティブ応答の2種類があります。

ポジティブ応答

ポジティブ応答は、ECUがリクエストを正常に処理した場合に返される応答です。ポジティブ応答には、リクエストされたデータや処理結果が含まれます。

例:

  • データの読み取りリクエストに対して、要求されたデータが返される。
  • データの書き込みリクエストに対して、書き込みが成功したことが返される。

ネガティブ応答

ネガティブ応答は、ECUがリクエストを正常に処理できなかった場合に返される応答です。ネガティブ応答には、エラーコード(NRC: Negative Response Code)が含まれ、リクエストが失敗した理由を示します。

例:

  • サービスがサポートされていない場合、NRC 0x11が返される。
  • メッセージの長さが不正な場合、NRC 0x13が返される。

NRC​(Negative Response Code)

NRCは、ECUがリクエストに対してエラーを返す際に使用されるコードです。NRCは、リクエストが成功しなかった理由を示します。

NRCコードの一例

NRCコード 説明
0x11 Service Not Supported(サービス未サポート)
要求されたサービスID(SID)がサポートされていない
0x12 Sub-Function Not Supported(サブ機能未サポート)
サブ機能がサポートされていない
0x13 Incorrect Message Length or Invalid Format
メッセージ長誤りまたはフォーマット不正
0x22 Conditions Not Correct(条件不適合)
要求された操作を行う条件が満たされていない
0x31 Request Out of Range(リクエスト範囲外)
パラメータや値がECUの許容範囲を超えている
0x78 Request Correctly Received - Response Pending
リクエストは正しく受信されたが、レスポンス待ち

関連知識​(DID)

DID(Data Identifier)は、ECU内の特定のデータを識別するための識別子です。
DIDを使用して、特定のデータを読み取ったり、書き込んだりすることができます。
※車載識別番号、ECUソフトウェアバージョンなど。メーカー独自の識別子もあり。

実際の送信コマンドの例としては [SID] [DID] [データ] の形式で送ることになります。

<0x22 データの読み取りの例>
送信:22 F1 90
応答:62 F1 90 12 34 ※[62]ポジティブ応答、[F1 90]DID、[12 34]DIDに対するデータ値

<0x2E データの書き込みの例>
送信:2E F1 90 56 78 ※[56 78]DIDに対するデータ値(書き込み値)
応答:6E F1 90 ※[6E]ポジティブ応答、[F1 90]DID

おわりに

UDS通信に基づいたSIDとDIDの基本的な考え方は車両メーカー問わず共通の知識となります。 ECUを取り扱う上で非常に重要な役割を果たしますので、今回の記事をご活用いただければ幸いです。 最後までお読みいただきありがとうございました。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム