C 專案之CAN協議

2021-08-19 20:20:17 字數 2622 閱讀 4661

lx_can 協議採用靈活的通訊模式,支援主從方式通訊模式和事件觸發通訊模式。生產者消費者通訊模式用於 lx_can 網路中的生產者對於消費者的訪問。

lx_can協議的

生產者消費者模式在lx_can協議中有三種方式:

1.廣播方式

所有的消費者必須接受廣播方式命令幀。位址0xff用於識別廣播通訊。在廣播報文中目標節點位址為

0xff

,如下:

2.組位址(一對多)

lx_can協議中,組位址方式是一種一對多的模式,即乙個組位址多個不同的位址號和通訊物件。如下圖:

3.實體地址(點對點)

lx_can協議中,生產者消費之模式下的實體地址的方式是一對一的點對點方式。如下圖:

生產者根據應用軟體所需要的操作確定消費者源位址、功能碼、以及所要的操作資源節點和資料引數,按lx_can報文格式封裝傳送到

lx_can

網路節點上。

消費者接收到生產者的報文後,需要根據報文中的目標節點、功能碼、資源節點以及資料引數進行判斷,以決定該報文是否為合法的報文。如果為合法的報文則執行相應的操作,並返回正常的響應報文;如果為非法的報文,則丟棄接收的報文,返回異常響應報文,並根據錯誤在異常響應報文中指明錯誤**,以供消費者決定下乙個操作。lx_can協議報文處理過程,如下:

1.命令幀

優先順序源位址

目的位址

ack=0

重複位保留

分段碼0-7個資料

ack表示需要目標節點應答,當目的位址

=0xff

時命令幀為廣播幀時,廣播幀可以設定

ack=1

。2.正常響應幀

如果lx_can的網路節點收到命令幀,並成功處理後,目標節點傳送「正常響應幀」至網路。

正常響應幀格式如下:

優先順序源位址

目的位址

ack=1

重複位保留

分段碼0-7個資料

ack=1 表示為響應幀,無需應答。功能碼 與「命令幀」的 功能碼 相同,表示本幀為正常響應。

3.異常響應幀

如果 lx_can 網路的目標節點在收到「命令幀」後,無法對該命令幀進行處理(例如功能碼不支援、引數錯誤時等) ,則傳送「異常響應幀」至網路。

異常響應幀的格式如下:

優先順序源位址

目的位址

ack=1

重複位保留

分段=0x00

0-7個資料

ack=1 表示為響應幀,無需應答。分段碼

=0x0f 

表示本幀為回應錯誤**。錯誤碼如下:

錯誤碼描述

01功能碼不存在

02資源不存在

03命令不支援

04引數非法

05操作無效

在lx_can命令

/響應幀中,最多傳送

7位元組資料,為了實現更多位元組資料地傳輸,

lx_can

協議規範定義了分段傳輸協議。

1.lx_can分段幀格式

「命令幀」格式:

優先順序源位址

目的位址

ack=0

重複位保留

分段碼0-7個資料

「響應幀」格式:

優先順序源位址

目的位址

ack=1

重複位保留

分段碼0-7個資料

lx_can 協議使用 

can 

報文資料部分的第 

1 位元組用於指示分段傳輸,該位元組的格式定義如下:

分段碼bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

segpolo

segnum

segpolo 表示分段標誌,

segnum 

表示分段編號

,segpolo

的位定義如下:

dd含義

00未分段

01分段資料第一段

10分段資料中間段

11分段資料結尾段

採用分段傳輸時,第 1 分段的 

segflag=0x40

,最後的分段 

segflag=0xc0 

值。當報文分段傳輸時,接收節點

(目標節點

)只在接收完最後分段後才做出響應。

2.lx_can分段傳輸規則

在傳送大於 7 個位元組長度的資料時, 需要採用分段傳輸報文的方法。 當命令報文使用分段傳輸時,從站在接收完所有的分幀報文後才向主站回送響應報文。

CAN匯流排協議 CAN訊息之「報文型別」

can有四種不同的報文型別 資料幀 遠端幀 錯誤指示幀和超載幀。1 資料幀 can協議有兩種資料幀型別 標準can和擴充套件can 見上文 乙個資料幀中包括7個主要的域 幀起始域 標誌資料幀的開始,由乙個顯性位組成。仲裁域 內容由標示符和遠端傳輸請求位 rtr 組成,rtr用以表明此資訊幀是資料幀還...

CAN協議簡介

硬體設計好了,在進行軟體程式設計之前我們最好對 can匯流排的協議有個了解。一 報文傳送由以下四種幀型別 1 資料幀 資料幀攜帶資料從傳送器至接收器。2 遠端幀 匯流排單元發出遠端幀,請求傳送具有同一識別符的資料幀。3 錯誤幀 任何單元檢測到一匯流排錯誤時就傳送錯誤幀。4 超載幀 用來在先行的和後續...

CAN匯流排協議

can control controller area network 是控制 器 區域網的簡稱 can是一種有效支援分布式控制或實時控制的序列通訊網路,最初由德國bosch公司80年代用於汽車內部測試和控制儀器之間的資料通訊。目前can 匯流排規範已被國際標準化組織iso制訂為國際標準iso118...