8 服務描述約定
8.1 服務描述
本條款定義了本規范中如何描述個診斷服務,並定義了各診斷服務一般服務描述格式。
本條款提供服務功能的簡短概述,各診斷服務規范以描述各自服務的客戶端和服務器執行動作開始。各服務的描述都會包含一張表格,用以列舉其原語的參數:每個肯定或否定結果的請求/指示、響應/確認。都具有相同的結構:
對給定的請求/指示和響應/確認A_PDU定義,每個呈現的參數被下列約定值(Cvt)之一所描述。
表 8 定義A_PDU參數約定。
表 8 - A_PDU參數約定
類型 | 名稱 | 描述 |
---|---|---|
M | Mandatory(強制) | 參數必須存在於A_PDU中 |
C | Conditional(條件) | 參數是否存在於A_PDU中取決於某些標准(例如子功能/參數是否在A_PDU中) |
S | Selection(選項) | 指示參數是強制的(除非有其他說明),且是在參數列表中的選項 |
U | User option(用戶選擇) | 參數是否存在均可,其是否存在依賴於用戶的實際用法 |
注意 “<服務名>請求SID”標記未‘M’(強制),那並不意味着服務器一定支持該服務,‘M’僅僅表示在服務器支持該服務時,請求A_PDU中的參數必須存在。
8.2 請求消息
8.2.1 請求參數定義
本條款包含一張或多張定義服務請求、指示A_PDU參數的表,有可能對每個子功能參數對應不同的表格,這樣做是為了避免不同子功能參數集的請求消息在A_Data參數結構中引發歧義,以及無法在一張表中定義清楚。
表格 9 定義了請求帶有子功能的 A_pdu 定義
表格9 - 帶子功能的A_PDU定義
A_PDU參數 | 參數名 | 約定 | 字節值 | 助記 |
---|---|---|---|---|
MType | Message Type | M | xx | MT |
SA | Source Address | M | xxxx | SA |
TA | Target Address | M | xxxx | TA |
TAtype | Target Address type | M | xx | TAT |
RA | Remote Address | C | xxxx | RA |
A_Data.A_PCI.SI | <Service Name> Request SID | M | xx | SIDRQ |
A_Data.Parameter 1 | sub-function = [parameter] | S | xx | LEV_PARAM |
A_Data.Parameter 2 : A_Data.Parameter k | data-parameter#1 : data-parameter#k-1 | U : U | xx : xx | DP_…#1 : DP_…#k-1 |
Length | Length of A_Data | M | xxxxxxxx | LGT |
C: 僅在遠程地址中存在RA(Remote Address)PDU參數值 |
---|
表 10 定義了不含子功能的請求A_PDU
表10 - 不帶有子功能的A_PDU請求定義
A_PDU參數 | 參數名 | 約定 | 字節值 | 助記 |
---|---|---|---|---|
MType | Message Type | M | xx | MT |
SA | Source Address | M | xxxx | SA |
TA | Target Address | M | xxxx | TA |
TAtype | Target Address type | M | xx | TAT |
RA | Remote Address | C xxxx | RA | |
A_Data.A_PCI.SI | <Service Name> Request SID | M | xx | SIDRQ |
A_Data.Parameter 1 : A_Data.Parameter k | data-parameter#1 : data-parameter#k | U : U | XX : XX | DP_…#1 : DP_…#k |
Length | Length of A_Data | M | xxxxxxxx | LGT |
C: 僅在遠程尋址中存在RA(Remote Address)PDU參數值 |
---|
在所有請求/指示中,地址信息MType,TA,SA,TAtype和Length必須提供;尋址信息RA可選。
注意 為便於定義,商標展示了尋地址信息,由於A_Data和A_PDU參數在服務請求/響應中存在於消息數據字節中,所以接下來的服務請求/指示定義僅規定A_Data,A_PDU參數
8.2.2 請求消息子功能參數 $Level(LEV_)定義
本條款定義了為服務<Service Name>的請求/指示所定義的子功能$Level(LEV_)參數。
如果描述的服務不適用子功能參數值以及不使用suppressPosRspMsgIndicationBit(此處隱含的意思是需要一個響應),則本章節不包含任何定義,
子功能參數字節(按位級別)分列於以下兩部分中,如表11所定義。
表 11 - 子功能參數結構
Bit position | 描述 |
---|---|
7 | $$suppressPosRspMsgIndicationBit$$該字節指示服務器是否應禁止肯定想應消息。 $'0'=FALSE$,表示不禁止肯定響應消息(需要一個肯定想應消息)。 $'1'=TRUE$,禁止響應消息(不會發送肯定響應消息;被尋址的服務器不發送肯定想應消息)。 與suppressPosRspMsgIndicationBit無關的是,服務器依據第7.5章的規定發送否定響應消息。 |
6-0 | $$sub-function參數值$$子功能參數第0-6比特包含了服務子功能參數值(0x00 - 0x7F) |
子功能參數長度 7 bit(子功能參數 byte 第 6-0 比特),可以通過多個值進一步指定服務行為。
服務除支持suppressPosRspMsgIndicationBit子功能參數值以外,也應支持子功能參數值表中定義的子功能參數值。
每個服務包含一個限定在第0-6bit的定義子功能參數值的表格。
注意 如果大量數據響應中SPRMIB為TRUE,則需要頁緩沖處理(paged-buffer-handling),這也會導致第一批數據傳輸發生在響應時間窗口內(譯注:所謂時間窗口即timing window=最晚信號跳變時間-最早信號跳變時間),但服務執行能夠超出響應時間窗口限制而終止。如果這種情況下禁止響應,則服務器無法指示服務器等待,但服務器仍處於繁忙狀態並無法處理其他請求。不建議客戶端請求大量數據時繆用SPRMIB。建議服務器在分頁緩存處理且SPRMIB為TRUE時先發送NRC 0x78(RCRRP)然后緊接着發送肯定響應。
表 12 定義請求消息子功能參數
表 12 - 請i去消息子功能參數定義
Bits 6-0 | 描述 | Cvt | 助記 |
---|---|---|---|
xx | sub-function#1 子功能參數#1描述 |
M/U | SUBFUNC1 |
: | : | : | : |
xx | sub-function#m 子功能參數#m描述 |
M/U | SUBFUNCm |
表13中詮釋了表12的約定(Cvt)列 |
表 13 - 子功能參數約定
類型 | 名稱 | 描述 |
---|---|---|
M | Mandatory(強制) | 如果服務支持子功能參數,則服務器必須支持子功能參數 |
U | User option(用戶選擇) | 依據服務用例,服務器不一定支持該子功能參數 |
完整的子功能參數字節值基於對suppressPosRspMsgIndicationBit和子功能參數選擇的計算。
表 14 定義了子功能參數的計算
表 14 子功能參數值計算
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
SuppressPosRspMsgIndicationBit | 子功能參數值定義域服務的子功能參數值表 | ||||||
產生的子功能參數字節值(bit 7-0) |
8.2.3 請求消息數據參數定義
本條款定義了服務<服務名>的請求和指示的數據參數 $DataParam(DP_)
表 15 - 請求消息數據參數定義
定義 |
---|
data-parameter#1 數據參數#1的描述 |
: |
data-parameter#n 數據參數#n的描述 |
8.3 肯定想應消息
8.3.1 肯定響應消息定義
本條款定義服務響應、服務確認的A_PDU參數(參考 7.2 應用層協議數據單元A_PDU的詳細描述)。響應消息的 A_Data 結構中,不同子功能參數 $Level 可能對應各自獨立的表。
注意 診斷服務執行過后,會根據是否愮響應數據發送肯定想應消息。如果診斷服務需要不同的處理,那么在診斷服務描述中可以找到有關於何時發送肯定響應消息的恰當說明
表 16定義了肯定想應A_PDU
表 16 肯定想應 A_PDU
A_PDU參數 | 參數名 | 協定 | 字節值 | 助記符 |
---|---|---|---|---|
SA | Source Address(源地址) | M | xxxx | SA |
TA | Target Address(目標地址) | M | xxxx | TA |
TAtype | Target Address type(目標地址類型) | M | xx | TAT |
RA | Remote Address(遠程地址) | C | xxxx | RA |
A_Data.A_PCI.SI | <服務名>響應SID | S | xx | SIDPR |
A_Data.Parameter 1 : A_Data.Parameter k |
data-parameter#1(數據參數#1) : data-parameter#k(數據參數#k) |
U : U |
xx : xx |
DP_...#1 : DP_...#k |
C: PDU參數RA(遠程地址)只存在於遠程尋址中 |
---|
所有響應和確認尋址信息中必須要有TA、SA和TAtype,尋址信息RA是可選的。
注意 為明確定義商標展示了尋址信息,更多的服務響應和服務確認僅指定A_Data A_PDU參數,因為它們代表服務響應、服務確認的消息數據字節
8.3.2 肯定響應消息數據參數定義
本條款定義服務<服務名>的響應和確認數據參數。本服務不包含任何不使用數據參數的服務描述的定義。數據參數部分可包含多個字節。
本條款對每個數據參數提供一般描述,詳細定義參考本文附件部分,具體附件取決於服務,附件也規定在服務器支持服務的情況下,數據參數可否受支持(或用戶可選)。
表 17 定義了響應數據參數。
表 17 響應數據參數定義
定義 |
---|
data-parameter#1 對data-parameter#1的描述,如果請求支持子功能參數字節,則該參數是7-bit子功能參數值的回顯,該值存在於請求子功能參數字節0-7bit中。子功能參數字節的suppressPosRspMsgIndicationBit不回顯。 |
: |
data-parameter#m data-parameter#m 的描述 |
8.4 支持的否定響應碼(_NRC)
本條款定義服務支持的否定響應碼實現,在下面表格中產生各響應碼的條件,否定響應消息參考7.4章,服務器通過否定響應A_PDU指明具體的錯誤。
在適用的情況下,在各服務中列舉的否定響應碼之外,在附錄 A.1 中也列舉了否定響應碼,詳情參考附錄 A.1
表 18 定義對否定響應碼的支持。
表 18 支持的否定響應碼
NRC | 描述 | 助記符 |
---|---|---|
0xXX | NegativeResponseCode#1 1. condition#1 : m. comdition#m |
NRC_ |
: | : | NRC_ |
0xXX | NegativeResponseCode#n 1. condition#1 : k. condition#k |
NRC_ |
8.5 消息流示例
本條款包含服務<服務名>的消息流示例。所有示例通過消息級別展示(不包括尋址信息)
表 19 定義了請求消息流示例。
表 19 請求消息流示例
消息方向 | 客戶端->服務器 | |||
---|---|---|---|---|
消息類型 | 請求 | |||
A_Data類型 | 描述(16進制) | 字節值 | 助記符 | |
#1 (A_PCI) | <服務名> 請求 SID | 0xXX | SIDRQ | |
#2 : #n |
sub-function/data-parameter#1 : data-parameter#m |
0xXX 0xXX 0xXX |
LEV_/DP_ DP_ DP_ |
表 20 定義了肯定響應消息流示例
表 20 - 肯定響應消息流示例
消息方向 | 服務器->客戶端 | |||
---|---|---|---|---|
消息類型 | 響應 | |||
A_Data類型 | 描述(16進制) | 字節值 | 助記符 | |
#1 (A_PCI) | <服務名> 響應 SID | 0xXX | SIDRQ | |
#2 : #n |
data-parameter#1 : data-parameter#n-1 |
0xXX : 0xXX |
DP_ : DP_ |
如果服務<服務名>適用,則可能有多個示例(例如 每個子功能參數 $Level 對應一個示例)。
表 21 展示了否定消息的消息流示例
表 21 - 否定消息流示例
消息方向 | 服務器->客戶端 | |||
---|---|---|---|---|
消息類型 | 響應 | |||
A_Data類型 | 描述(16進制) | 字節值 | 助記符 | |
#1 (A_PCI.NR_SI) | 否定響應 SID | 0x7F | SIDRSIDNRQ | |
#2 (A_PCI.SI) | <服務名>請求SID | 0xXX | SIDRQ | |
#3 | responseCode | 0xXX | NRC_ |
(1~7章)[https://www.cnblogs.com/sam-snow-v/articles/15849363.html]