天天看點

UDS(七)應用層 28/85

1. CommunicationControl (0x28) service

該服務是控制某類通訊關閉/開啟接收或者發送。當uds需要下載下傳更新或者傳輸大量資料時需要将can總線資源讓出來,提高傳輸效率。這時候可以通過28服務關閉某類的通訊發送封包到can總線上,待下載下傳更新或傳輸資料完成後再通過28服務将通訊開啟即可。

1.1 請求格式:

UDS(七)應用層 28/85

由上圖可以28服務請求格式分為四個部分

第一部分:第一位元組為SID 0x28

第二部分:第二位元組為sub function,控制該類通訊的接收和發送是開啟還是關閉

0x00 enableRxAndTx (使能接收和發送)

0x01 enableRxAndDisableTx(使能接收和關閉發送)

0x02 disableRxAndEnableTx(使能發送和關閉接收)

0x03 disableRxAndTx(關閉接收和發送)

0x04 enableRxAndDisableTxWithEnhancedAddressInformation(使能接收和關閉發送,針對特定的位址)

0x05 enableRxAndTxWithEnhancedAddressInformation(使能接收和發送,針對特定的位址)

0x06 - 0x7F都是保留或者留給廠商自定義的。

第三部分:communicationType:控制哪種類型通訊

UDS(七)應用層 28/85

由上圖可知communicationType占一個位元組,本人隻使用0-2bit的參數。0x1代表普通應用封包,0x2代表網絡管理封包,0x3代表普通應用封包和網絡管理封包。

1.2 響應格式:

UDS(七)應用層 28/85

由上圖可知,響應格式分為兩個部分:第一部分:response SID ,第二部分:sub function。兩個部分各自占用一個位元組。

1.3 舉例

診斷儀請求ECU關閉普通應用封包的接收和發送,即sub function:0x03,communication Type:0x01。發送請求和響應如下圖所示:

UDS(七)應用層 28/85

2. ControlDTCSetting (0x85) service

該服務用于控制ECU的DTC存儲,這個服務常常和前面提到的28服務一起使用,比如,在開始寫參數之前,為了獲得更快的傳輸速度,我們用28服務把所有ECU的通信關閉了,但此時因為收到不到相關的封包,ECU會沒有必要地存儲很多DTC,這時如果我們使用85服務把ECU存儲DTC的功能暫時性地禁止掉,則不會造成這種麻煩。比如:ECU會檢測can總線封包情況,當使用28服務關閉接收和發送封包時,can總線沒有了封包,ECU會存儲CAN總線錯誤的DTC,是以有時候會在使用28服務之前使用85服務關閉響應DTC存儲功能。

2.1 請求格式:

UDS(七)應用層 28/85

請求格式分為三個部分;

第一部分:請求SID 0x85

第二部分:sub function,占用一個位元組,參數如下

0x00 : ISOSAEReserved(保留)

0x01 : on (DTC 開啟)

0x02 : off (DTC 關閉)

0x03-0x7F :保留或者廠家自定義

第三部分:DTCSettingControlOptionRecord 廠家自定義,比如,可以用FF FF FF 來表示這條診斷指令針對所有的DTC。

2.2 響應格式

UDS(七)應用層 28/85

響應格式分為兩個部分,第一部分:response SID :0xC5; 第二部分:DTCSettingType:請求 sub function的echo。

2.3 舉例

診斷儀請求ECU關閉所有DTC存儲,廠家自定義請求參數DTCSettingControlOptionRecord= 0xFFFFFF為所有DTC存儲控制碼。請求與響應如下圖所示:

UDS(七)應用層 28/85

參考知乎:https://zhuanlan.zhihu.com/p/33852614

UDS協定棧系列文章:

UDS(一)入門概述

UDS(二)網絡層

UDS(三)網絡層時間參數

UDS(四)應用層

UDS(五)應用層10/3E

UDS(六)應用層11/27

UDS(七)應用層28/85

UDS(八)應用層22/2E

UDS(九)應用層14/19

UDS(十)應用層34/36/37

UDS

繼續閱讀