在匯流排中傳送的報文,每幀由7部分組成。CAN協議支援兩種報文格式,其唯一的不同是識別符號(ID)長度不同,標準格式為11位,擴充套件格式為29位。 在標準格式中,報文的起始位稱為幀起始(SOF),然後是由11位識別符號和遠端傳送請求位 (RTR)組成的仲裁場。RTR位標明是資料幀還是請求幀,在請求幀中沒有資料位元組。 控制場包括識別符號擴充套件位(IDE),指出是標準格式還是擴充套件格式。它還包括一個保留位 (ro),為將來擴充套件使用。它的最後四個位元組用來指明資料場中資料的長度(DLC)。資料場範圍為0~8個位元組,其後有一個檢測資料錯誤的迴圈冗餘檢查(CRC)。 應答場(ACK)包括應答位和應答分隔符。傳送站傳送的這兩位均為隱性電平(邏輯1),這時正確接收報文的接收站傳送主控電平(邏輯0)覆蓋它。用這種方法,傳送站可以保證網路中至少有一個站能正確接收到報文。 報文的尾部由幀結束標出。在相鄰的兩條報文間有一很短的間隔位,如果這時沒有站進行匯流排存取,匯流排將處於空閒狀態。CAN資料幀的組成 遠端幀 遠端幀由6個場組成:幀起始、仲裁場、控制場、CRC場、應答場和幀結束。遠端幀不存在資料場。 遠端幀的RTR位必須是隱位。 DLC的資料值是獨立的,它可以是0~8中的任何數值,為對應資料幀的資料長度。 出錯幀 出錯幀由兩個不同場組成,第一個場由來自各站的錯誤標誌疊加得到,第二個場是出錯界定符 錯誤標誌具有兩種形式: 活動錯誤標誌(Active error flag),由6個連續的顯位組成 認可錯誤標誌(Passive error flag),由6個連續的隱位組成 出錯界定符包括8個隱位 超載幀 超載幀包括兩個位場:超載標誌和超載界定符 傳送超載幀的超載條件: 要求延遲下一個資料幀或遠端幀 在間歇場檢測到顯位 超載標誌由6個顯位組成 超載界定符由8個隱位組成資料錯誤檢測 不同於其它匯流排,CAN協議不能使用應答資訊。事實上,它可以將發生的任何錯誤用訊號發出。CAN協議可使用五種檢查錯誤的方法,其中前三種為基於報文內容檢查。 3.4.1 迴圈冗餘檢查(CRC) 在一幀報文中加入冗餘檢查位可保證報文正確。接收站透過CRC可判斷報文是否有錯。 3.4.2 幀檢查 這種方法透過位場檢查幀的格式和大小來確定報文的正確性,用於檢查格式上的錯誤。 3.4.3.應答錯誤 如前所述,被接收到的幀由接收站透過明確的應答來確認。如果傳送站未收到應答,那麼表明接收站發現幀中有錯誤,也就是說,ACK場已損壞或網路中的報文無站接收。CAN協議也可透過位檢查的方法探測錯誤。 3.4.4 匯流排檢測 有時,CAN中的一個節點可監測自己發出的訊號。因此,傳送報文的站可以觀測匯流排電平並探測傳送位和接收位的差異。 3.4.5 位填充 一幀報文中的每一位都由不歸零碼錶示,可保證位編碼的最大效率。然而,如果在一幀報文中有太多相同電平的位,就有可能失去同步。為保證同步,同步沿用位填充產生。在五個生。在五個連續相等位後,傳送站自動插入一個與之互補的補碼位;接收時,這個填充位被自動丟掉。例如,五個連續的低電平位後,CAN自動插入一個高電平位。CAN透過這種編碼規則檢查錯誤,如果在一幀報文中有6個相同位,CAN就知道發生了錯誤。 如果至少有一個站透過以上方法探測到 一個或多個錯誤,它將傳送出錯標誌終止當前的傳送。這可以阻止其它站接收錯誤的報文,並保證網路上報文的一致性。當大量傳送資料被終止後,傳送站會自動地重新發送資料。作為規則,在探測到錯誤後23個位週期內重新開始傳送。在特殊場合,系統的恢復時間為31個位週期。 但這種方法存在一個問題,即一個發生錯誤的站將導致所有資料被終止,其中也包括正確的資料。因此,如果不採取自監測措施,匯流排系統應採用模組化設計。為此,CAN協議提供一種將偶然錯誤從永久錯誤和區域性站失敗中區別出來的辦法。這種方法可以透過對出錯站統計評估來確定一個站本身的錯誤並進入一種不會對其它站產生不良影響的執行方法來實現,即站可以透過關閉自己來阻止正常資料因被錯誤地當成不正確的資料而被終止。
在匯流排中傳送的報文,每幀由7部分組成。CAN協議支援兩種報文格式,其唯一的不同是識別符號(ID)長度不同,標準格式為11位,擴充套件格式為29位。 在標準格式中,報文的起始位稱為幀起始(SOF),然後是由11位識別符號和遠端傳送請求位 (RTR)組成的仲裁場。RTR位標明是資料幀還是請求幀,在請求幀中沒有資料位元組。 控制場包括識別符號擴充套件位(IDE),指出是標準格式還是擴充套件格式。它還包括一個保留位 (ro),為將來擴充套件使用。它的最後四個位元組用來指明資料場中資料的長度(DLC)。資料場範圍為0~8個位元組,其後有一個檢測資料錯誤的迴圈冗餘檢查(CRC)。 應答場(ACK)包括應答位和應答分隔符。傳送站傳送的這兩位均為隱性電平(邏輯1),這時正確接收報文的接收站傳送主控電平(邏輯0)覆蓋它。用這種方法,傳送站可以保證網路中至少有一個站能正確接收到報文。 報文的尾部由幀結束標出。在相鄰的兩條報文間有一很短的間隔位,如果這時沒有站進行匯流排存取,匯流排將處於空閒狀態。CAN資料幀的組成 遠端幀 遠端幀由6個場組成:幀起始、仲裁場、控制場、CRC場、應答場和幀結束。遠端幀不存在資料場。 遠端幀的RTR位必須是隱位。 DLC的資料值是獨立的,它可以是0~8中的任何數值,為對應資料幀的資料長度。 出錯幀 出錯幀由兩個不同場組成,第一個場由來自各站的錯誤標誌疊加得到,第二個場是出錯界定符 錯誤標誌具有兩種形式: 活動錯誤標誌(Active error flag),由6個連續的顯位組成 認可錯誤標誌(Passive error flag),由6個連續的隱位組成 出錯界定符包括8個隱位 超載幀 超載幀包括兩個位場:超載標誌和超載界定符 傳送超載幀的超載條件: 要求延遲下一個資料幀或遠端幀 在間歇場檢測到顯位 超載標誌由6個顯位組成 超載界定符由8個隱位組成資料錯誤檢測 不同於其它匯流排,CAN協議不能使用應答資訊。事實上,它可以將發生的任何錯誤用訊號發出。CAN協議可使用五種檢查錯誤的方法,其中前三種為基於報文內容檢查。 3.4.1 迴圈冗餘檢查(CRC) 在一幀報文中加入冗餘檢查位可保證報文正確。接收站透過CRC可判斷報文是否有錯。 3.4.2 幀檢查 這種方法透過位場檢查幀的格式和大小來確定報文的正確性,用於檢查格式上的錯誤。 3.4.3.應答錯誤 如前所述,被接收到的幀由接收站透過明確的應答來確認。如果傳送站未收到應答,那麼表明接收站發現幀中有錯誤,也就是說,ACK場已損壞或網路中的報文無站接收。CAN協議也可透過位檢查的方法探測錯誤。 3.4.4 匯流排檢測 有時,CAN中的一個節點可監測自己發出的訊號。因此,傳送報文的站可以觀測匯流排電平並探測傳送位和接收位的差異。 3.4.5 位填充 一幀報文中的每一位都由不歸零碼錶示,可保證位編碼的最大效率。然而,如果在一幀報文中有太多相同電平的位,就有可能失去同步。為保證同步,同步沿用位填充產生。在五個生。在五個連續相等位後,傳送站自動插入一個與之互補的補碼位;接收時,這個填充位被自動丟掉。例如,五個連續的低電平位後,CAN自動插入一個高電平位。CAN透過這種編碼規則檢查錯誤,如果在一幀報文中有6個相同位,CAN就知道發生了錯誤。 如果至少有一個站透過以上方法探測到 一個或多個錯誤,它將傳送出錯標誌終止當前的傳送。這可以阻止其它站接收錯誤的報文,並保證網路上報文的一致性。當大量傳送資料被終止後,傳送站會自動地重新發送資料。作為規則,在探測到錯誤後23個位週期內重新開始傳送。在特殊場合,系統的恢復時間為31個位週期。 但這種方法存在一個問題,即一個發生錯誤的站將導致所有資料被終止,其中也包括正確的資料。因此,如果不採取自監測措施,匯流排系統應採用模組化設計。為此,CAN協議提供一種將偶然錯誤從永久錯誤和區域性站失敗中區別出來的辦法。這種方法可以透過對出錯站統計評估來確定一個站本身的錯誤並進入一種不會對其它站產生不良影響的執行方法來實現,即站可以透過關閉自己來阻止正常資料因被錯誤地當成不正確的資料而被終止。