1. 程式人生 > 實用技巧 >拖拉機控制關鍵協議 ISO-11783 協議解析

拖拉機控制關鍵協議 ISO-11783 協議解析

快速開始

應用層關注的主要內容是如何讀寫資料,對於ISOBUS,讀寫資料,即是如何控制車輛動作和獲取車輛資訊。

ISOBUS的實現讀寫資料的機制是“訊息”。一切皆為訊息(message)。一般的,每個訊息的核心為一個引數組(parametergroup),引數組主要分為幾類:指令類、資料類和輔助類。

指令類:可以被執行,如控制開關、控制轉向。

資料類:用來讀取和寫入的關鍵資料,如感測器值,元件ID等。

輔助類:輔助完成請求資料,應答資料、廣播宣告、分包傳輸管理等功能。

具體通訊的細節請參照後續章節的介紹。

注:標準文件將引數組的型別定義了5種(Command、Request、Broadcast/Request、Acknowledgement和Group Function)。這裡為了便於理解分為3類。

協議關鍵要素定義

PDU

protocol data unit

一個完整的CAN資料幀

PGN

Parameter group number

由PDU中定義的DataPage、Format和Specific共同決定的,用以確定具體message 的種類。

Message

由相同PGN組成的一個或多個CAN資料幀

Packet

組成multi-packet message 的單個CAN資料幀

multi-packet message

當單個CAN資料幀不能完整傳輸完Message的全部資料時,採用多個含相同PGN的CAN資料完成資料傳輸。

SA

Source Address

定義訊息從哪裡傳送

DA

Destination Address

定義訊息傳送到哪裡

概述

ISOBUS協議是基於CAN2.0B協議的一個拓展。幀結構如所示。

PDU結構

PDU由七部分組成PRIO,Reserved,DP,PF,PS,SA,Data,

訊息通訊

訊息(Message)是ISOBUS定義的一種在CAN資料幀基礎上,更高層的資料鏈路層通訊資料結構。訊息支援傳輸高達1785(255包*7位元組每包)個位元組的應用程式資料。

由於CAN資料幀每一幀最大傳輸的資料量為8個位元組,遠遠不能滿足訊息定義的最大傳輸容量,所以ISOBUS協議使用多個CAN資料幀分次傳送的方法,逐步完成全部應用層資料的傳輸。

需要特別注意的是,傳送拆分的資料包的過程中,有可能會有其他ISOBUS裝置傳送相同的訊息幀,為了避免資料幀遭到插入造成資料破壞,接收端必須要能識別不同傳送端傳送的Messsage包,並分別合併成正確的Message。

訊息的型別

訊息型別有5大類

型別

英文名

PGN

指令

Command

請求

Request

59904

廣播/ 響應

Broadcast/Response

應答

Acknowledge

59392

ACK和NACK

組功能

Group Funtion

應答類訊息

應答類訊息分為積極應答ACK(Positive Acknowledge)和消極應答NACK(negative Acknowledge)。

引數組

ISOBUS 主要通過PDU中的DP,PF和PS這3個域來定義訊息的型別,並且為了方便描述,又將這三個域合稱為PGN。

ISOBUS規定,根據PF的不同,PS的含義有2種,

PF

PS

0~239

目標地址

240~255

拓展引數

由此,當PF值為0~239時,稱之為PDU1,由此PGN如下定義

PGN

最高位

最低位

DP

PF

0

當PF值為240~255時,此時的PDU稱為PDU2,PGN如下定義

PGN

最高位

最低位

DP

PF

PS

傳輸協議功能

大量資料分包傳輸

當有大量資料構成的訊息需要傳輸的時候,標準的CAN幀已經不能滿足傳輸需求。ISO11738定義了一種分包傳送大量資料的機制——多包訊息(multi-packet message).

每個包的結構如下

CAN幀的資料域

位元組

byte1

byte2-byte8

內容

包序號

7個位元組的資料塊

  1. 包序號從1開始到255為止,用來標識多個包,方便接收端合併包。
  2. 廣播模式傳送包,兩包之間的延時要在50ms~200ms之間。
  3. 非廣播模式傳送包,兩包之間的傳送延時要小於200ms。
  4. 每一包的DLC值都固定為8,即使所需要傳輸的資料不足8個,也應將未用到的資料設定為0xFF。

連線管理

初始化連線

請求端傳送RequesttoSend(TP.CM_RTS)訊息,此訊息中包含了接下來傳輸資料的總大小。目標接受連線請求需要回應CleartoSend(TP.CM_CTS) 訊息,目標若不接受連線請求需要回應ConnectionAbort(TP.CM_CA)訊息。

傳輸資料

請求傳輸資料端在收到CleartoSend(TP.CM_CTS) 訊息後,開始DataTransfer(TP.DT)流程.流控制由接收端負責,當傳送端傳輸過快,接收端可能來不及處理接收的資料時,接收端通過傳送CleartoSend(TP.CM_CTS)訊息,並將該訊息的

結束連線

接收端接收完最後一個包後,回發一個結束連線訊息end-of-messageack,用以通知傳輸完成,釋放連線。

當傳輸出現異常時,傳送端負責中止連線通過傳送ConnectionAbort訊息來完成。需要注意的時,接收端無權中止連線。

如圖1正常傳輸流程,一般可導致中止連線的情況如下幾種:

  1. T1,在傳輸完資料之前,兩包資料之間的時間間隔超過了250ms。
  2. T2,發出CleartoSend(TP.CM_CTS) 訊息到接收到資料包的時間間隔超過1250ms。
  3. T3,兩次CleartoSend(TP.CM_CTS) 訊息間隔超過1250ms。
  4. T4,發出CleartoSend(TP.CM_CTS) 訊息用以暫停資料傳輸到下一個CleartoSend(TP.CM_CTS) 訊息之間的時間間隔超過550ms。

訊息定義

連線管理

引數組名:ConnectionManagement連線管理

PGN定義:

PGN

DLC

DP

PF

PS

0

236

目標地址

8

60416

資料傳送請求Request To Send(TP.CM_RTS)

Data Field

1

2

3

4

5

6

7

8

控制字:16

總位元組數

總包數

保留:

0xFF

所傳輸內容的PGN

資料過程管理Clear To Send (TP.CM_CTS)

Data Field

1

2

3

4

5

6

7

8

控制字:17

傳送包數

下一包序號

保留:

0xFF

保留:

0xFF

所傳輸內容的PGN

結束訊息傳輸End of Message Acknowledgement (TP.CM_EndofMsgACK)

Data Field

1

2

3

4

5

6

7

8

控制字:19

總位元組數

總包數

保留:

0xFF

所傳輸內容的PGN

終止連線Connection Abort (TP.Conn_Abort)

Data Field

1

2

3

4

5

6

7

8

控制字:255

保留:

0xFF

保留:

0xFF

保留:

0xFF

保留:

0xFF

所傳輸內容的PGN

廣播發送Broadcast Announce Message (TP.CM_BAM)

Data Field

1

2

3

4

5

6

7

8

控制字:32

總位元組數

總包數

保留:

0xFF

所傳輸內容的PGN

資料傳輸DataTransfer

引數組名:DataTransfer資料傳輸(TP.DT)

PGN定義:

PGN

DLC

DP

PF

PS

0

235

目標地址

8

60160

Data Field

1

2

3

4

5

6

7

8

包序號

傳輸的資料內容

請求Request

PGN

DLC

DP

PF

PS

0

234

目標地址

(廣播255)

3

60160

Data Field

1

2

3

請求內容的PGN

注:由於有些請求的資料可能超過8位元組,對於超過8位元組容量的資料,將會分多個包應答回來。

響應請求

應答Acknowledgement

PGN定義:

PGN

DLC

DP

PF

PS

0

232

目標地址

(廣播255)

8

59392

Data Field

1

2

3

4

5

6

7

8

ACK:0

NACK:1

保留:

0xFF

請求的PGN

通訊場景

點對點通訊

傳送端發起依次傳輸元件ID的資料通訊流程如下圖所示。

1正常傳輸流程

廣播通訊

廣播通訊不同於點對點的通訊模式,廣播通訊每一包的傳送間隔為50ms到200ms之間,超過或少於均會產生錯誤。接收廣播資料無需進行應答,也不能進行流量控制。

請求資料

當需要獲取指定資料時,請求端需要嚮應答端傳送請求資料訊息。應答端會根據請求的內容選擇應答所請求的資料,如圖 2 請求-應答所示的內容,或做出NACK的迴應,如圖 3 請求-不應答所示的流程。

2請求-應答

3請求-不應答

廣播資料

在某些應用場景中,一臺是被需要不斷向總線上廣播資料,通訊流程如圖 4 廣播資料所示。

4廣播資料

回饋指令(Command)的執行結果

為了執行某些特定動作,比如控制輪子轉向,執行端必須給出某些反饋,這些反饋可以是ACK,當動作執行成功或完成;也可以反饋NACK,提醒指令執行失敗,或直接通過讀取某些資料來自行判斷指令的執行狀況。

常見問題彙總

Q:本協議是否支援超過8位元組的資料傳輸?

A:通過資料傳輸協議支援單次最高傳輸1785位元組應用層資料。

Q:什麼是PDU?

A:PDU是ISOBUS 通訊的基本單元,是對CAN幀的具體定義。一個can幀有且只有一個PDU。