CAN總線網絡層與傳輸層的理解(五)

ISO15765-2中定義了網絡層和傳輸層的內容,下面就對這兩部分分別進行介紹。

一、網絡層

所有網絡層的服務都有統一的結構,爲了定義服務,有三種服務原語

  • 服務請求原語:服務用戶向服務提供方請求服務
  • 服務指示原語:服務提供方向服務用戶通知網絡層內部事件或對同級協議層實體服務用戶的服務請求
  • 服務確認原語:服務提供方向服務用戶通知請求服務的結果

所有的網絡層服務也有統一的格式,如下:

service_name.type {
                  parameter A,
                  parameter B,
                  [,parameter C,...]
                  }

網絡層提供了兩種服務

通信服務

1. 數據發送請求

N_USData.request {
                 Mtype
                 N_SA
                 N_TA
                 N_TAtype
                 [N_AE]
                 <MessageData>
                 <Length>
                 }

2. 請求服務確認

N_USData.confirm {
                 Mtype
                 N_SA
                 N_TA
                 N_TAtype
                 [N_AE]
                 <N_Result>
                 }

3. 首幀指示服務

N_USData_FF.indication {
                       Mtype
                       N_SA
                       N_TA
                       N_TAtype
                       [N_AE]
                       <Length>
                       }

用於把接收到的分段報文的首幀發送給上層,如果首幀發現任何錯誤,那麼整個報文都將被忽略;如果數據長度(FF_DL)大於接收方可用的緩衝區,也會被認爲是一個錯誤。

4. 數據指示服務

N_USData.indication {
                    Mtype
                    N_SA
                    N_TA
                    N_TAtype
                    [N_AE]
                    <MessageData>
                    <Length>
                    <N_Result>
                    }

用於給上層提供接收到的數據。

協議參數配置服務

1. 參數配置請求服務

N_ChangeParameter.request {
                          Mtype
                          N_SA
                          N_TA
                          N_TAtype
                          [N_AE]
                          <Parameter>
                          <Parameter_Value>
                          }

用於對特定內部參數的動態配置請求。

2. 參數配置確認服務

N_ChangeParameter.confirm {
                          Mtype
                          N_SA
                          N_TA
                          N_TAtype
                          [N_AE]
                          <Parameter>
                          <Result_ChangeParameter>
                          }

用於向上層確認修改特定協議的請求已經完成(成功與否)。

3. Service Data Unit(SDU):

Mtype —— 報文類型,有兩種:

  • (1)Diagnostics型,N_AI(Address Information)包含N_SA,N_TA,和N_TAtype
  • (2)Remote Diagnostics型,N_AI(Address Information)包含N_SA,N_TA,N_TAtype和N_AE

N_AI —— Address Information

(1)N_SA,network source address,長度8位

(2)N_TA,network target address,長度8位

(3)N_TAtype,network target address type,枚舉類型

物理尋址:一對一通信,支持網絡層所有類型的報文

功能尋址:一對多通信,只支持單幀傳輸(廣播)

(4)N_AE,network address extension,長度8位

<Length> —— 數據長度,長度32位

<MessageData> —— 傳輸的數據

<Parameter> —— BlockSize,SeparationTime minimum(詳情見傳輸層)

<Parameter_Value> —— BlockSize,SeparationTime minimum的值,長度8位

<N_Result> —— 服務執行結果,枚舉類型

(1)N_OK:服務執行成功

(2)N_TIMEOUT_A:超過時間N_Asmax/N_Armax

(3)N_TIMEOUT_Bs:超過時間N_Bsmax

(4)N_TIMEOUT_Cr:超過時間N_Crmax

(5)N_WRONG_SN:接收到非預期序列號(PCI.SN)

(6)N_INVALID_FS:流控幀接收到無效的狀態

(7)N_UNEXP_PDU:接收到非預期的PDU

(8)N_WFT_OVRN:接收方在流控幀中發出等待狀態

(9)N_BUFFER_OVFLW:接收方在流控幀中發出溢出狀態

(10)N_ERROR:網絡層發現除上述錯誤之外的錯誤

<Result_ChangeParameter> —— 修改參數配置結果,枚舉類型

(1)N_OK:服務執行成功

(2)N_RX_ON:服務沒有執行

(3)N_WRONG_PARAMETER:參數沒有定義

(4)N_WRONG_VALUE:參數值超出範圍

二、傳輸層

2.1 傳輸層的功能:

(1)傳送/接收報文

(2)報告傳送/接收報文的結果

2.2 傳輸的數據分爲:

2.2.1 單幀傳輸(SingleFrame transmission)

2.2.2 多幀傳輸(Multiple-frametransmission)

2.2.2.1 多幀包含:

① 首幀(First Frame)

② 連續幀(Consecutive Frame)

接收端通過流控機制(FlowControl)防止傳輸過程中幀丟失,在緩衝區已滿時,接收端發送流控幀(FlowControl Frame)通知發送端暫時先不要發報文。

2.2.2.1.1  流控幀(FlowControl Frame)包含以下兩個內容:

  • (1)BlockSize(BS):接收端緩衝區一次性可接收的最大字節數
  • (2)SeparationTime minimum(STmin):發送連續幀時,幀之間的最小時間間隔

2.2.2.1.2 流控機制(Flow Control)的兩種模式:

  • (1)動態:BS和STmin會有更新
  • (2)靜態:BS和STmin爲常數

2.2.2.1.3 接收段緩衝區存儲以下狀態來控制連續幀(Consecutive Frame)的發送:

  • (1)FC.CTS:可以繼續發送
  • (2)FC.WAIT:需要等待
  • (3)FC.OVFLW:首幀(FirstFrame)的字節數超過了緩衝區可存儲字節大小

2.2.2.2 傳輸層PDU(Protocol Data Unit):
 

N_PDU格式

(1)N_AI:Address Information,參見本章小節(網絡層)內容

(2)N_PCI:Protocol Control Information,定義了發送的N_PDU是哪一種幀

(3)N_Data:需要發送的數據

三、總結

本文參考的標準是ISO15765-2:2016(E),與舊版相比又有所擴充,並且把協議分成了網絡層和傳輸層兩部分。網絡層提供了交換報文的地址信息,決定幀的接收端和發送端;傳輸層則主要在於幀的傳輸機制及多幀的拆分,協議後面還講了四類幀的錯誤處理機制,這裏沒有講,感興趣的可以自行研究一下。以上均是筆者自己的理解,如有錯誤歡迎指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章