記事ディレクトリ
1. UDS 診断プロトコル
- 車両の電子制御ユニット ECU を診断およびデバッグするための一連の診断サービスを定義する一般的な自動車診断プロトコル. UDS プロトコルは ISO 14229 によって標準化されており、最新の車両の診断システムで広く使用されています.
- 多くの診断サービスを提供
- 診断セッション制御: 診断セッションの開始、終了、設定、診断セッション モードの読み取り
- ECU 識別: ECU 識別とバージョン情報を識別、検証します。
- データの読み取り: 故障コード、リアルタイム データ、スナップショット データなどを含む、ECU 内部メモリのデータを読み取ります。
- Clear DTCs: ECU に保存されている DTC をクリアします。
- コントロールECU:再起動、プログラミング、読み取り、プログラミングデータの書き込みなど、ECUの動作を制御します。
- セキュリティ アクセス メカニズム: 診断サービスのセキュリティ制御、セキュリティ アクセス権、データ暗号化、メッセージ認証など。
- 物理層伝送媒体としてCANバス、伝送プロトコルとしてISO 15765-2、アプリケーション層プロトコルとしてISO 14229-3を使用
2. セッション
- セッションは、ECU と対話するための診断サービスのコレクションです。
- デフォルトのセッション
- 基本的なセッション タイプ。基本的な診断機能とセキュリティ メカニズムを提供します。
- 機密性の低い診断サービスのみ: DTC の読み取り、DTC のクリア、ライブ データの読み取りなど、いつでもアクセス可能
- プログラミングセッション
- 自動車メーカーのメンテナンスとトラブルシューティングで一般的に使用される、プログラミング データの読み取りと書き込み、ECU のプログラミングなど、ECU のプログラミングと構成を提供する高度なセッション タイプ
- 認証と承認にはセキュリティアクセス制御メカニズムが必要であり、承認されたユーザーのみが入ることができます
- 延長セッション
- 最高レベルのセッション タイプ、最も包括的な診断、および最強のセキュリティ メカニズム. すべての診断サービスが許可され、最も厳格な認証およびセキュリティ メカニズムが提供されます
- 特別な診断サービス/診断セッション モード、デフォルト セッション -> 拡張セッション経由でアクセス可能
3. アドレッシング
- 物理アドレッシング
- 実際のハードウェア アドレスを使用してメモリ/その他のリソースを参照する
- ECUの物理アドレスによる診断サービスのアドレス指定、ROMを含むすべてのECUメモリ領域へのアクセス
- 最初に、OBD-II インターフェイスを介して車の診断インターフェイスを接続する、ECU の物理アドレスを介して内部メモリに直接アクセスする、データの読み取りを実行する、障害コードをクリアするなど、ECU との物理的な接続を確立します。
- 機能的アドレッシング
- 命令/オペコードを使用してメモリ/その他のリソースにアクセスする
- ECUの機能識別子による診断サービスのアドレス指定、ROMへのアクセスなし
- 物理的な接続なしで ECU の機能を含むリクエスト フレームを送信することにより、ECU の診断サービスを識別/アクセスします。
- 機能識別子は、ECU の診断サービスと機能を一意に識別するために使用される標準化された識別子です。
4. ネットワーク層
- データをCANバス仕様に適応できる単一のデータフレームに変換します.メッセージの長さがCANデータフレームの長さを超える場合,分割する必要があります.最大4095バイトを一度に送信できます.
4.1. プロトコルデータユニット
- 住所情報N_AL
- 暗黙の送信元アドレス、宛先アドレス、アドレッシング モード情報
- プロトコル制御情報 N_PCL
-
単一フレーム
Single Frame
: 7 バイト以下のデータを送信します。データ長とデータ自体を単一フレームで送信できます。バイト 0 バイト 1234567 識別子 0
+ データ長データ 03 xx xx xx __ __ __ __ -
最初のフレーム
First Frame
: データ送信の最初のフレーム ≥ 7 バイトバイト 0 バイト 1 バイト 234567 識別子 1
+ データ長上位 4データ ロング ロウ 8 データ 10 14 xx xx xx xx xx xx -
連続フレーム
Consecutive Frame
: 送信側は最初のフレーム FF を送信し、受信側からフロー制御フレーム FC を受信した後、データ パケットを送信します。バイト 0 バイト 1234567 識別子 2
+ フレーム番号データ 23 xx xx xx xx xx xx xx -
フロー制御フレーム
Flow Control Frame
: 最初のフレームを受信した後、受信者はフロー制御フレームで応答します- ステータス: 送信を継続する場合は 0、待機する場合は 1、オーバーフローする場合は 2
バイト 0 バイト 1 バイト 2 バイト 34567 識別子 3
+ ステータス一度に連続して送信できるCFの数 間隔 30 02 14 __ __ __ __ __
-
4.2. タイミングパラメータ
時間 | 方向 | 説明 | タイムアウト |
---|---|---|---|
N_As | 送信 -> 受信 | T :最初のフレーム、連続するフレームがリンク層で伝搬されます。 |
送信者は最初のフレーム/継続フレームを時間内に送信しませんでした |
N_Ar | 受信→送信 | T :フロー制御フレームはリンク層で伝播されます |
受信者がフロー制御フレームに時間内に応答しませんでした |
N_B | 送信 -> 受信 | 最初のフレーム<-T-> 自体 (送信側)を受信したときに受信側によって送信された ACK は、フロー制御フレームを受信します。 |
送信者はフロー制御フレームを受信しませんでした |
N_Br | 受信→送信 | 自己 (受信側) が最初のフレーム <-T-> を受信し、それ自体でフロー制御フレームの送信を開始します。 |
受信者がフロー制御フレームを送信しませんでした |
N_C | 送信 -> 受信 | 自己(送信側)はフロー制御フレーム・連続フレーム<-T-> 配信で生成されたACK応答を受信し、新たなフロー制御フレームの送信を開始 |
|
N_Cr | 受信→送信 | 自己(受信機)が連続フレーム <-T-> 受信次回連続フレーム受信時 |
受信者は継続フレームを受信しませんでした |
5. アプリケーション層
- 26サービス、6ユニット
- 診断および通信管理機能ユニット
シド | 関数 | |||
---|---|---|---|---|
x10 | 診断および通信管理 | x7 | データ送信 | |
0x10 |
診断セッション制御 | 0x22 |
DID を介してデータを読み取る | |
0x11 |
リセット | 0x23 |
アドレスによるデータの読み取り | |
0x27 |
安全なアクセス | 0x24 |
DID 読み取りスケール データ | |
0x28 |
通信制御 | 0x2A |
DID を介してデータを読み取る | |
0x3E |
スタンバイハンドシェイク | 0x2C |
動的に定義された識別子 | |
0x83 |
アクセス時間パラメータ | 0x2E |
DID を介してデータを書き込む | |
0x84 |
安全なデータ伝送 | 0x3D |
アドレスでメモリを書き込む | |
0x85 |
診断トラブルコード設定制御 | |||
0x86 |
インシデント対応 | x1 | ルーチン制御 | |
0x87 |
リンク制御 | 0x31 |
ルーチン制御 | |
x2 | ストレージデータ転送 | x5 | アップロードダウンロード | |
0x14 |
診断情報のクリア | 0x34 |
ダウンロードをリクエストする | |
0x19 |
DTC 情報を読み取る | 0x35 |
アップロードをリクエスト | |
0x36 |
データ送信 | |||
x1 | 入出力制御 | 0x37 |
送信のオプトアウトのリクエスト | |
0x2f |
識別子による入出力の制御 | 0x38 |
ファイル転送を要求する |
5.1. 診断と通信管理
5.1.1.0x10
診断セッションの制御
-
ECUを制御して異なるセッションを切り替える
-
要求メッセージ: request SID+subfunction
- 0x01 デフォルト セッション: ECU の電源投入後のデフォルト状態
- 0x02 プログラミング セッション: ソフトウェアのフラッシュを実行できる一連の診断サービス
- 0x03 外部拡張セッション: 実行可能な診断サービス
単一フレーム シド 会話 バイト 34567 02 10 03 __ __ __ __ __ -
肯定消息: 会话诊断响应SID(请求SID+0x40)+子功能+会话参数记录
单帧 SID 会话 字节34567 06 50 03 __ __ __ __ __ -
否定消息: 否定响应SID(0x7f)+诊断会话SID+否定响应码
- 0x10 支持的否定响应码
- 0x12 不支持请求服务的子功能
- 0x13 请求报文的数据长度(或者格式)不符合标准
- 0x22 条件不满足
5.1.2.0x11
电控单元复位
- 以此诊断指令命令ECU执行自复位
- 请求消息: 请求SID+子功能
- 0x01 硬复位, ECU先完全掉电再上电过程
- 0x02 钥匙电复位, 下钥匙电再重新上电, RAM重置
- 0x03 软复位, 程序从头开始执行, RAM不重置
- 0x04 使能快速休眠, 开启休眠功能, 关闭钥匙电也不关闭而是休眠
- 0x05 关闭快速休眠, 返回常规模式
- 肯定消息: 肯定响应SID(0x11+0x40)+子功能
- 否定消息: 否定响应SID(0x7f)+请求SID(0x11)+否定响应码
5.1.3.0x27
安全访问服务
- 给其他服务加一个访问权限, 常用于上传下载诊断服务
- 请求消息:
- 请求SID+安全访问种子子功能
- 请求SID+安全访问密钥子功能
- 肯定消息:
- 肯定响应SID+安全访问种子功能+发送种子
- 肯定响应SID+安全访问密钥子
5.1.4.0x28
通讯控制服务
- 客户端向服务端请求打开/关闭某类/多类报文信息的发送接收功能
- 请求响应消息定义: 请求SID+请求子功能
- 请求消息子功能:
- 0x00 启用Rx, Tx
- 0x01 启用Rx 禁用Tx
- 0x02 禁用Rx 启用Tx
- 0x03 禁用Rx, Tx
- 0x04 启用Rx(增强的地址信息), 禁用Tx
- 0x05 启用Rx, Tx(增强的寻址信息)
- 肯定消息: 肯定响应SID+请求消息子功能
- 否定消息: 否定响应SID(0x7f)+请求SID+否定响应NRC
5.1.5.0x3E
待机握手
- 客户端确认无服务端是否在线的操作, 利用该服务可实现客户端与服务端一次握手
- 请求消息: 请求消息SID+请求消息子功能
- 0x00 零子功能, 此服务不支持抑制肯定响应
- 肯定响应: 肯定响应SID+请求消息子功能
- 否定响应: 否定响应SID(0x7f)+请求SID+否定响应NRC
5.1.6.0x83
请求读取、修改通信定时参数
5.1.7.0x84
传输加密方法保护的诊断数据
5.1.8.0x85
Control DTC
- 要求ECU停止/恢复DTC的设置, 该服务结合车载通信切换(28)可增加Flash编程速度
5.1.9.0x86
事件响应
- 请求ECU自动传输指定事件的响应
5.1.10.0x87
LinkControl
- 请求控制通信数据速率, 影响数据链路层, 从而影响用于板载通信及诊断通信的数据速率. 转换数据速率请求:
- 验证网络上的ECU是否允许特定的数据速率
- 验证结果为肯定情况下请求转换
- 执行转换
5.2.数据传输功能单元
5.2.1.0x22
通过DID读取数据服务
-
Client向Server通过DID的方式读取相关数据(版本,VIN码等)
-
请求消息: 请求消息SID0x22+要读取的DID
单帧 SID DID 字节4567 03 22 11 80 __ __ __ __ -
肯定响应: 肯定响应SID(0x22+0x40)+请求DID+响应数据
单帧 SID+0x40 DID 字节456 字节7 06 62 11 80 01 02 03 __ -
否定响应: 否定响应SID0x7f+请求服务SID+否定响应码
5.2.2.0x23
ReadMemory By Address
- 读取指定内存范围的当前值
- 参数: 内存地址和内存大小
5.2.3.0x24
Read Scaling Data By Identifier
- 请求ECU将缩放信息值传输到测试仪
5.2.4.0x2A
Read Data By Period Identifier
- 请求定期发送数据记录值, 请求的速率由传输模式参数设置
5.2.5.0x2C
Dynamically Define Data Identifier
- 允许测试人员在ECU中动态定义新的数据标识符, 包括对静态定义的标识符/内存地址的引用
5.2.6.0x2E
通过DID写入数据
- 客户端向服务端请求写入一个DID对应标识的数据记录值
- 请求消息:请求消息SID(0x2E) + DID +数据记录
- 肯定响应:肯定响应SID(0x2E+0x40) + DID
- 否定响应:否定响应SID(0x7F) + 请求服务SID + 否定响应NRC
5.2.7.0x3D
Write Memory By Address
- 允许将数据记录直接写入ECU内存
- 请求参数: 内存地址, 内存大小, 数据记录
5.3.存储数据传输功能单元
5.3.1.0x14
清除诊断信息服务
- 客户端可以利用此服务来清除一个或多个服务端内存中的诊断信息,该服务可设置支持功能寻址,可控制单个服务端或多个服务端诊断信息的清除
- 请求消息:请求消息SID + 请求消息数据参数
- 肯定响应:肯定响应码(0x14+0x40)
- 否定响应:否定响应码(0x7F)+请求SID+否定响应NRC
5.3.2.0x19
读取DTC服务
- 允许外部诊断仪(Client)通过该服务读取存储在ECU芯片内的故障码(DTC)状态信息
- DTC常为3字节
- 请求响应:请求响应SID + 请求消息子功能 + 请求消息相关参数
- 肯定响应:肯定响应SID + 请求消息子功能 + 响应数据
- 否定响应:否定响应SID(0x7F)+请求消息SID + 否定响应码NRC
5.4.输入输出控制单元
5.4.1.0x2F
输入输出控制服务
- 客户端使用输入输出控制服务请求消息作为输入信号,为内部服务器某些简单功能提供输入替代值,或强制控制外部执行器状态,该服务用于相对简单(例如,静态)的输入替代/输出控制。这里的输入输出都是对于服务器而言的,输入信号指输入到服务器的信号(譬如:CAN信号、 I2C信号等);而输出信号则是服务器向外部执行器发出的信号(CAN信号、I2C信号等)
- 请求响应:请求消息SID + 请求DID + 请求数据
- 肯定响应:肯定响应SID(0x2F+0x40) + 请求DID + 请求参数
- 否定响应:否定响应SID(0x7F)+ 请求消息SID + 否定响应码NRC
5.5.例行程序功能单元
5.5.1.0x31
例行程序控制服务
- 客户端利用诊断仪向ECU发送诊断命令来开始或停止一段程序的执行,还可以请求例程执行的结果。
- 请求响应:请求响应SID + 请求消息子功能 + 请求例程标识符
- 肯定响应:肯定响应SID + 请求消息子功能 + 例程标识符
- 否定响应:否定响应SID(0x7F)+ 请求消息SID + 否定响应码NRC
5.6.上传下载功能单元
5.6.1.0x34
上传下载功能单元
- 启动从测试仪到ECU的数据传输, 当ECU准备从测试仪接收数据, 将发送肯定响应, 包含用于后续数据传输的可用块的大小
5.6.2.0x35
请求上传
- 启动东ECU到测试仪的数据传输, 当ECU准备好将数据发送到测试仪, 其将发送肯定响应, 包含用于后续数据传输的块大小
5.6.3.0x36
Transfer Data
- 在下载(测试仪–>ECU) / 上传(ECU->测试仪)
5.6.4.0x37
Request Transfer Exit
- 用于终止transfer Data服务