電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 26|回復: 0
收起左側(cè)

CAN、CANopen協(xié)議棧詳解【硬核,慎點】

[復制鏈接]

260

主題

260

帖子

1844

積分

三級會員

Rank: 3Rank: 3

積分
1844
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 昨天 11:00 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
第一章 CAN協(xié)議棧詳解本章目錄
  • 前言
  • 一、CAN簡介
  • 二、CAN的發(fā)展歷史
  • 三、CAN的電氣特性
  • 四、CAN協(xié)議棧
  •     4.1、CAN協(xié)議棧解析
  •     4.2、CAN收發(fā)過程
  •     4.3、CAN錯誤處理
  •     4.4、CAN波特率
  •     4.5、CAN過濾
  • 總結
    本章介紹了CAN協(xié)議棧的發(fā)展歷史、電氣特性、基礎理論、標準協(xié)議棧解析等干貨知識點。
    一、CAN簡介CAN包含兩個部分,分別是CAN總線和CAN總線協(xié)議。
    CAN總線:
    控制器局域網(wǎng)總線(CAN,Controller Area Network)是一種用于實時應用的串行通訊協(xié)議總線,它是使用兩根信號總線(雙絞線的形式)來傳輸信號,是世界上應用最廣泛的現(xiàn)場總線之一。最初,CAN被設計作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置ECU之間交換信息,形成汽車電子控制網(wǎng)絡。比如:發(fā)動機管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中,均嵌入CAN控制裝置。一個由CAN 總線構成的單一網(wǎng)絡中,理論上可以掛接無數(shù)個節(jié)點。實際應用中,節(jié)點數(shù)目受網(wǎng)絡硬件的電氣特性所限制。CAN 可提供高達1Mbit/s的數(shù)據(jù)傳輸速率,這使實時控制變得非常容易。另外,硬件的錯誤檢定特性也增強了CAN的抗電磁干擾能力。CAN總線協(xié)議:
    CAN總線協(xié)議是 ISO國際標準化的串行通信協(xié)議:CAN協(xié)議用于汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。該協(xié)議的健壯性使其用途延伸到其他自動化和工業(yè)應用。CAN協(xié)議的特性包括完整性的串行數(shù)據(jù)通訊、提供實時支持、傳輸速率高達1Mb/s、同時具有11位的尋址以及檢錯能力。CAN總線協(xié)議是一個載波偵聽(CSMA)、基于報文優(yōu)先級碰撞檢測和仲裁(CD+AMP)的多路訪問協(xié)議:
  • CSMA:意思是總線上的每一個節(jié)點在企圖發(fā)送報文前,必須要監(jiān)聽總線,當總線處于空閑時,才可發(fā)送。
  • CD+AMP:意思是通過預定編程好的報文優(yōu)先級逐位仲裁來解決碰撞,報文優(yōu)先級位于每個報文的標識域。更高級別優(yōu)先級標識的報文總是能獲得總線訪問權,即:標識符中最后保持邏輯高電平的會繼續(xù)傳輸,因為它具有更高優(yōu)先級。二、CAN的發(fā)展歷史
  • 1980年代初期,由于沒有可滿足汽車工程師的總線協(xié)議,人們開始開發(fā)新的串行總線。
  • 1986年2月,在底特律舉行SAE會議上CAN總線誕生,稱之為Automotive Serial Controller Area Network。
  • 1991年,博世發(fā)布CAN2.0規(guī)范,分CAN 2.0A(具有11位標識符)和CAN 2.0B(具有29位標識符)。
  • 1993年,ISO組織發(fā)布CAN標準IS0 11898: IS0 11898-1涵蓋數(shù)據(jù)鏈路層,IS0 11898-2涵蓋高速CAN的CAN物理層(經(jīng)典CAN速度1Mbps,CAN FD 5Mbps) ,IS0 11898-3 涵蓋低速,容錯CAN的物理層 (速度125Kbps),后續(xù)還推出了ISO 11898 -4 -5和-6標準。
  • 2012年,博世發(fā)布CAN FD 1.0,速度2Mbps,使用CAN FD-SiC (加強版CAN PHY)可以做到5-8Msps。以STM32H7為例,帶的CANFD是支持經(jīng)典CAN的CAN2.0A和CAN2.0B,以及CANFD V1.0規(guī)范,兼容ISO 11898-1 : 2015和ISO11898 -4。
  • 2018年12月,開始推出第三代CAN數(shù)據(jù)鏈路層協(xié)議CAN XL,速度提升至10Mbsp。
  • 2022年11月、博世推出下一代CAN IP核CAN XL,速度高達20Mbps。


    三、CAN的電氣特性
  • CAN總線測試階段,至少一端的終端120Q終端電阻不可以省略。
  • CAN是差分通信,總線電平分為顯性電平和隱性電平兩種。總線上執(zhí)行邏輯上的線“與”:顯性電平為0,隱性電平為1。顯性電平具有主導性,只有所有節(jié)點都輸出隱性電平時總線上才是隱性。
  • 測量發(fā)現(xiàn)CAN僅接一端的終端電阻,結束的時候波形會有個抬高。
  • 通信速度和最大長度理論值,主要是經(jīng)典CAN,所有節(jié)點操作必須在同一個CAN波特率下。
  • 在測試階段,測試軟件應用層時,由于STM32芯片大部分都是雙CAN,所以可以通過特別操作,不使用CAN PHY芯片也可以實現(xiàn)CAN通訊,不過這個不是差分電平。



    [/ol]四、CAN協(xié)議棧CAN協(xié)議棧的幀類型包括數(shù)據(jù)幀、遠程幀、錯誤幀、過載幀和幀間隔。
    4.1、CAN協(xié)議棧解析
  • 數(shù)據(jù)幀發(fā)送單元向接收單元傳送數(shù)據(jù)的幀。



    ① 起始段:表示數(shù)據(jù)幀開始的段。
    SOF:幀起始(1位),顯性(0)表示報文的開始,并用于同步總線上的節(jié)點。
    ② 仲裁段:表示該幀優(yōu)先級的段。標識符:標識符(11位),標準格式具有11位標識符,用來確定報文的優(yōu)先級。此域的數(shù)值越小,優(yōu)先級越高。
    RTR:遠程發(fā)送請求位(1位),當需要從另一個節(jié)點請求信息(遙控幀)時,此位為顯性(0)。
    所有節(jié)點都能接收這個請求,但是幀標識符確定被指定的節(jié)點。響應數(shù)據(jù)幀同樣被所有節(jié)點接收,可以被有興趣的節(jié)點使用。
    ③ 控制段:表示數(shù)據(jù)的字節(jié)數(shù)及保留位的段。IDE:標志符擴展位(1位),為顯性(0)時使用標準格式,為隱性(1)時表示這是擴展格式。
    r0:保留位(1位),必須全部以顯性電平發(fā)送,但接收方可以接收任意電平。
    DLC:數(shù)據(jù)長度代碼(4位),表示傳輸數(shù)據(jù)的字節(jié)數(shù)目,一幀最多傳輸8字節(jié)用戶數(shù)據(jù)。
    ④ 數(shù)據(jù)段:數(shù)據(jù)的內(nèi)容,經(jīng)典CAN支持0-8字節(jié),CANFD支持0-64字節(jié)。⑤ 校驗段:檢查幀的傳輸錯誤的段。
    CRC:經(jīng)典CAN是15bit+1個bit的CRC界定符 (用于位分隔),CANFD是17或者21bit+1個界定符。
    CRC Delimiter:置“1”。
    CRC的計算范圍包括起始段,仲裁段,控制段,數(shù)據(jù)段,接收方以同樣的算法計算CRC值并進行比較,不一致會通報錯誤。
    ⑥ 應答段:表示確認正常接收的段。ACK:包含應答位和應答界定符(2位)。
    發(fā)送節(jié)點的報文幀中,ACK兩位是隱性位,當接收器正確地接收到有效的報文,接收器會在應答位期間向發(fā)送節(jié)點發(fā)送一個顯性位,表示應答。
    如果接收器發(fā)現(xiàn)這幀數(shù)據(jù)有錯誤,則不向發(fā)送節(jié)點發(fā)送ACK應答,發(fā)送節(jié)點會稍后重傳這幀數(shù)據(jù)。
    ⑦ 結束段:表示數(shù)據(jù)幀結束的段。EOF:幀結束標志位(7位),全部為隱性位。如果這7位出現(xiàn)顯性位,則會引起填充錯誤。
    IFS:幀間隔標志位(7位),CAN控制器將接收到的幀正確的放入消息緩沖區(qū)是需要一定時間的,幀間隔可以提供這個時間。
  • 遠程幀:接收單元向具有相同ID的發(fā)送單元請求數(shù)據(jù)的幀。
    遙控用于接收單元向具有相同 ID 的發(fā)送單元請求數(shù)據(jù)的幀,CANFD沒有遙控幀,只有經(jīng)典CAN有遠程幀。遠程幀相比數(shù)據(jù)幀沒有數(shù)據(jù)段。需要注意的是,目前CAN官方建議不再使用遠程幀。
    擴展格式相對于標準格式改動的內(nèi)容如下:
    ①SRR:代替遠程請求位,為隱性。所以當標準幀與擴展幀發(fā)送相互沖突并且擴展幀的基本標識符與標準幀的標識符相同時,標準幀優(yōu)先級高于擴展幀。②IDE :為隱性位表示標志位擴展幀,18位擴展標識符緊跟著IDE位。③18位標識符:增加18位標識符。④r1:保留位。
  • 錯誤幀:當檢測出錯誤時向其他單元通知錯誤的幀。
    接收節(jié)點或者發(fā)送節(jié)點檢測出錯誤時,通知錯誤的幀。
    主動錯誤標志:6個bit的顯性位;被動錯誤標志:6個bit的隱性位;錯誤界定符:8個bit隱性位。
  • 過載幀:接收單元表明其自身尚未做好準備的幀。
  • 幀間隔:將數(shù)據(jù)幀及遙控幀與前面的幀分離開來的幀。
    [/ol]4.2、CAN收發(fā)過程
  • 發(fā)送過程
    ① 設置發(fā)送節(jié)點的ID,DLC,數(shù)據(jù)等。
    ② 設置CAN控制器,啟動發(fā)送幀。
    ③ 任何節(jié)點,在總線空閑時,都可以啟動發(fā)送幀。
    ④ 除了啟動數(shù)據(jù)發(fā)送的節(jié)點,其余所有節(jié)點都在等待接收數(shù)據(jù)。
    ⑤ 如果多個節(jié)點同時啟動數(shù)據(jù)發(fā)送,將進行仲裁,ID值小的優(yōu)先處理,ID值大的停止發(fā)送,進入接收狀態(tài)。
    ⑥ 此時,僅有一個節(jié)點發(fā)送數(shù)據(jù),否則還有其它節(jié)點發(fā)送數(shù)據(jù)將造成異常。
    ⑦ 當發(fā)送節(jié)點完成消息發(fā)送,將等待應答bit被拉低為0,表示接收節(jié)點正常收到數(shù)據(jù)了。
    ⑧ 發(fā)送節(jié)點的數(shù)據(jù)已經(jīng)送達接收節(jié)點,繼續(xù)發(fā)送頓數(shù)據(jù)中的結束段,之后發(fā)送節(jié)點將進入接收狀態(tài)或者繼續(xù)發(fā)送下一幀數(shù)據(jù)。接收節(jié)點將處理收到的數(shù)據(jù)。
    ⑨ 此時,任何數(shù)據(jù)都可以發(fā)送數(shù)據(jù),如果沒有節(jié)點發(fā)送數(shù)據(jù),總線將進入空閑狀態(tài)。
    ⑩ 如果沒有收到應答,將按照CAN錯誤方式處理 。
  • 接收過程
    ① 所有節(jié)點,除了發(fā)送數(shù)據(jù)的節(jié)點和處于總線關閉狀態(tài)的節(jié)點,都處于監(jiān)聽狀態(tài)。
    ② CAN數(shù)據(jù)將按照前面說的CAN發(fā)送過程進行數(shù)據(jù)發(fā)送。
    ③ 所有處于監(jiān)聽狀態(tài)的節(jié)點都將收到數(shù)據(jù),如果被認為是沒有錯誤的有效 CAN 消息,監(jiān)聽節(jié)點將應答。
    ④ 如果接收節(jié)點設置了CAN過濾器,將根據(jù)過濾設置濾掉不需要的消息。
    [/ol]4.3、CAN錯誤處理
    檢測到幀錯誤處理:
  • 接收錯誤的節(jié)點將拉低 (顯性電平0) 總線至少6個bit。
  • 超過5個bit相同極性,將觸發(fā)位填充,這個是硬件完成的,不需要用戶操作。
  • 錯誤幀以通知發(fā)送給所有節(jié)點,這個是硬件完成的。
  • 發(fā)送總線放棄當前幀,8 bit的 TEC 發(fā)送錯誤計數(shù)器寄存器的值加X。
  • 如果此TEC 等于0xFF,則發(fā)送節(jié)點將 BUSOFF (總線關閉) 并使自己脫離總線。
  • 如果不是,則嘗試重傳消息,該消息必須與其他消息一起再次經(jīng)過優(yōu)先級處理。
  • 所有其他節(jié)點放棄讀取當前幀,REC接收錯誤計數(shù)器寄存器的值加X。
  • 任何有消息排隊的節(jié)點現(xiàn)在都將啟動發(fā)送,其它的節(jié)點進去監(jiān)聽。
  • 如果每次傳輸一個幀或接收一幀成功,相應的 TEC 和 REC 寄存器遞減 (通常只遞減 1)。
    [/ol]4.4、CAN波特率
    CANFD波特率計算,含仲裁階段可變波特率和數(shù)據(jù)階段可變波特率,而經(jīng)典CAN只有一種波特率。
    4.5、CAN過濾
    標識符過濾器是用于接收的,發(fā)送的時候無需設置過濾器,根據(jù)發(fā)送端發(fā)送來的幀數(shù)據(jù),通過標識符過濾器就可以設置僅接收需要接收的幀數(shù)據(jù)有效降低CPU多余的處理時間。
  • 經(jīng)典CAN支持標識符列表模式和屏蔽位模式。
  • CANFD支持范圍過濾器 (Range filter) 、專用ID的過濾器 (Filter for dedicated IDs)和經(jīng)典位屏蔽過濾器 (Classic bit mask filter)。

    [/ol]總結本章介紹了CAN協(xié)議棧的發(fā)展歷史、電氣特性、基礎理論、標準協(xié)議棧解析等干貨知識點。
    第二章 CANopen協(xié)議棧詳解本章目錄前言
    一、CANopen簡介二、CANopen的發(fā)展歷史三、CANopen ID四、CANopen協(xié)議?蚣芪、PDO六、SDO    6.1、快速SDO報文格式:    6.2、普通SDO報文格式:        6.2.1 普通SDO的讀操作報文格式        6.2.2 普通SDO的寫操作報文格式七、NMT八、時間戳協(xié)議九、同步協(xié)議十、緊急報文協(xié)議總結
    CANopen是基于CAN(控制器局域網(wǎng))總線的一種高級通信協(xié)議,被廣泛應用于自動化和嵌入式系統(tǒng)中。本章旨在提供詳細的CANopen相關知識、最佳實踐和實際應用案例。包括但不限于CANopen標準: 對CANopen規(guī)范進行深入講解,包括但不限于通信對象(COB-ID)的管理,進程數(shù)據(jù)對象(PDO)、服務數(shù)據(jù)對象(SDO)和網(wǎng)絡管理(NMT)等核心概念。一、CANopen簡介CANopen是基于Can的應用層協(xié)議,其報文分為過程數(shù)據(jù)對象 (PDO) 和服務數(shù)據(jù)對象(SDO)CANopen本身的設計目的就是實現(xiàn)小網(wǎng)絡、控制信號的實時通訊,所以為了節(jié)約時間開銷,最大限度保證實時性,CANopen作了一些定義:報文傳輸采用CAN標準幀格式,即11bit的ID域,以盡量減小傳輸時間;網(wǎng)絡控制報文均采用數(shù)據(jù)最小字節(jié)數(shù)。比如心跳報文,只有1個字節(jié)數(shù)據(jù);實時更新的過程數(shù)據(jù)無需接收方報文應答,即采用生產(chǎn)消費模型,降低總線負載;需要接收方確認的配置參數(shù)一般都是采用快速單字傳輸,即1個報文最大傳送1個32位的參數(shù)變量,避免分幀引起的實時性降低。[/ol]
    從 OSI 的 7 層網(wǎng)絡模型的角度來看同,CAN(Controller Area Network)現(xiàn)場總線僅僅定義了第 1 層(物理層,見 ISO11898-2 標準)、第 2 層(數(shù)據(jù)鏈路層,見 ISO11898-1 標準);而在實際設計中,這兩層完全由硬件實現(xiàn),設計人員無需再為此開發(fā)相關軟件(Software)或固件(Firmware),只要了解如何調(diào)用相關的接口和寄存器,即可完成對 CAN 的控制。

    CAN 總線的工業(yè)自動化應用中,由于設備的互通互聯(lián)的需求越來越多,所以需要一個開放的、標準化的高層協(xié)議:這個協(xié)議支持各種 CAN 廠商設備的互用性、互換性,能夠?qū)崿F(xiàn)在 CAN 網(wǎng)絡中提供標準的、統(tǒng)一的系統(tǒng)通訊模式,提供設備功能描述方式,執(zhí)行網(wǎng)絡管理功能。其中包括:應用層(Application layer):為網(wǎng)絡中每一個有效設備都能夠提供一組有用的服務與協(xié)議。通訊描述(Communication profile):提供配置設備、通訊數(shù)據(jù)的含義,定義數(shù)據(jù)通訊方式。設備描述(Device proflile):為設備(類)增加符合規(guī)范的行為。[/ol]
    二、CANopen的發(fā)展歷史

    1994年CiA聯(lián)盟(CAN in Automation ) 發(fā)布CANopen首版CiA301,CANopen的成功不是一個大供應商推動的,而是眾多中小企業(yè)推動的。早期的CANopen,CAN遠程還受到青睞,并且節(jié)點保護也是基于遠程幀設計,后來被心跳報文取代,現(xiàn)在的CiA規(guī)范已經(jīng)不建議使用遠程幀。CiA301是CANopen最重要的最重要的基礎協(xié)議,第一個版本已經(jīng)定義了PDO (過程數(shù)據(jù)對象)和SDO(服務數(shù)據(jù)對象)引入了PDO的同步傳輸以及網(wǎng)絡管理(NMT) 和緊急消息。后來在CiA301基礎之上,針對各個行業(yè)推出一大批子協(xié)議,[/ol]
    三、CANopen ID這里的CAN-ID也叫COB-ID(Communication Objectldentifier, 通信對象編號)。Node-ID節(jié)點ID,最大128個,范圍0-127。[/ol]

    根據(jù)不同的功能碼,預定的CAN-ID如下:


    四、CANopen協(xié)議?蚣


    五、PDOPDO簡介:過程數(shù)據(jù),即單向傳輸,無需接收節(jié)點回應 CAN 報文來確認,從通訊術語上來說是于“生產(chǎn)消費”模型,數(shù)據(jù)長度被限制為 1~8 字節(jié)。最多只要 1 就可以把一條信息或者一個變量傳遞結束。

    PDO協(xié)議:節(jié)點的PDO共定義8個數(shù)據(jù)對象,TPDO 和 RPDO 分別有4個,如下圖所示:

    PDO數(shù)據(jù)對象有三個重要參數(shù),分別為通訊參數(shù),映射參數(shù),數(shù)據(jù)存放。RPDO 通訊參數(shù) 1400h to15FFh,映射參數(shù) 1600h to 17FFh,數(shù)據(jù)存放為 2000h 之后廠商 自定義區(qū)域: TPDO 通訊參數(shù) 1800h to19FFh,映射參數(shù) 1A00h to 1BFFh,數(shù)據(jù)存放為 2000h 之后廠商自定義區(qū)域。所有的 PDO 傳送數(shù)據(jù)必須透過對象宇典映像到對應的索引區(qū)上。
    PDO通訊參數(shù):

    ①Number of entries 參數(shù)條目數(shù)量: 即本索引中有幾條參數(shù);②COB-ID: 即這個 PDO 發(fā)出或者接收的對應 CAN ID;③發(fā)送類型:即這個 PDO 發(fā)送或者接收的傳輸形式,通常使用循環(huán)同步和異步制造商特定事件較多;④Inhibit time 生產(chǎn)禁止約束時間(1/10ms): 約束 PDO 發(fā)送的最小間隔,避免導致總線負載劇烈增加,比如數(shù)字量輸入過快,導致狀態(tài)改變發(fā)送的 TPDO 頻繁發(fā)送總線負載加大,所以需要一個約束時間來進行“濾波”,這個時間單位為 0.lms;⑤Event timer 事件定時器觸發(fā)的時間(單位 ms):定時發(fā)送的 PDO,它的定時時間如果這個時間為 0,則這個 PDO 為事件改變發(fā)送;⑥SYNC start value 同步起始值:同步傳輸?shù)?PDO,收到諾干個同步包后,才進行發(fā)送,這個同步起始值就是同步包數(shù)量。比如設置為 2,即收到 2 個同步包后才進行發(fā)送。
    PDO映射:[/ol]為了更加直觀地表現(xiàn)映射,將參數(shù)、應用數(shù)據(jù)、CAN 報文數(shù)據(jù)聯(lián) 合起來展示,不同的映射采用不同的顏如下圖所示:


    六、SDOSDO簡介:服務數(shù)據(jù),主要用于 CANopen 主站對從節(jié)點的參數(shù)配置。為每個消息都生成一個應答,確保數(shù)據(jù)傳輸?shù)臏蚀_性,在一個CANopen 系統(tǒng)中,通常 CANopen 從節(jié)點作為 SDO 服務器,CANopen 主節(jié)點作為客戶端。

    SDO協(xié)議:SDO 分為快速 SDO 協(xié)議和普通SDO協(xié)議,快速SDO數(shù)據(jù)長度最大4個字節(jié),普通SDO沒有最大限制。其報文格式如下圖所示,由命令碼、索引、子索引和數(shù)據(jù)組成。

    節(jié)點的SDO定義如下圖所示:

    SDO 客戶端通過索引和子索引,能夠訪問 SDO 服務器上的對 象字典。這樣 CANopen 主節(jié)點可以訪問從節(jié)點的任意對象字典項的參數(shù),并且 SDO 也可以 傳輸任何長度的數(shù)據(jù)。發(fā)送方 (客戶端)發(fā)送 CAN-ID 為600h+Node-ID 的報文,Node-D 為接收方(服務器) 的節(jié)點地址,數(shù)據(jù)長度均為 8 字節(jié),實際數(shù)據(jù)小于8字節(jié)時,用0補齊到8字節(jié)。
    [/ol]
    快速SDO報文格式:快速SDO的讀報文格式如下圖所示:

    快速SDO的寫報文格式如下圖所示:

    說明:圖中的符號”-“表示數(shù)據(jù)不予考慮,使用0進行填充。
    普通SDO報文格式:普通SDO傳輸?shù)挠行?shù)據(jù)長度大于4個字節(jié),采用分段式傳輸方式,讀和寫均分成了三個階段:初始報文(在傳輸數(shù)據(jù)之前確認要傳輸?shù)臄?shù)據(jù)長度),傳輸過程報文(按照傳輸規(guī)格把數(shù)據(jù)進行分段傳輸);結束報文(數(shù)據(jù)分段的最后一段數(shù)據(jù))。
    ①普通SDO的讀操作報文格式分段讀初始報文:獲取從站(服務器)指定索引對象的讀取數(shù)據(jù)長度,與快速傳輸?shù)淖x指令一致使用0x40指令(這里同時也就說明分段讀取是由從設備的返回數(shù)據(jù)所決定的,這里返回的是0x41指今而不是快速傳輸中的0x43、47等指令) 。

    分段讀傳輸過程報文:在傳輸過程中,主站(客戶端先發(fā)送指今0x60的報文開始讀傳輸,同時從站(服務器)響應0x00指令的報文上傳一段數(shù)據(jù),下一主站發(fā)送0x70指令的報文,這時從站響應0x10指令的報文繼續(xù)上傳下一段數(shù)據(jù),然后又會再次按照0x60-00、0x70-10的順序接著下傳輸后續(xù)的數(shù)據(jù),每次7個字節(jié),最后的一段數(shù)據(jù)將會進入結束報文階段。只要總數(shù)據(jù)大小不超過7也會一開始直接進入結束階段。

    分段讀結束報文:在上一個階段中,數(shù)據(jù)是按照0x60-00、0x70-10的順序進行交替?zhèn)鬏,當發(fā)送到最后一段數(shù)據(jù)時,主站并不知道是到達最后一段了,所以主站發(fā)送的“0x60或70“指令保持不變,而其對應從站的響應指令”0x00或10“替換成對應的結束指令。

    ②普通SDO的寫操作報文格式分段寫初始報文:通知從站(服務器)指定索引對象的寫入數(shù)據(jù)長度,使用0x21指令發(fā)送這個長度值。

    分段寫傳輸過程報文:在傳輸過程中,主站(客戶端先發(fā)送指今0x00的報文開始讀傳輸,同時從站(服務器)響應0x20指令的報文上傳一段數(shù)據(jù),下一主站發(fā)送0x10指令的報文,這時從站響應0x30指令的報文繼續(xù)上傳下一段數(shù)據(jù):然后又會再次按照0x00-20、0x10-30的順序接著往下傳輸后續(xù)的數(shù)據(jù),每次7個字節(jié)。最后的一段數(shù)據(jù)將會進入結束報文階段。只要總數(shù)據(jù)大小不超過7也會一開始直接進入結束階段。

    分段寫結束報文:在上一個階段中,數(shù)據(jù)是按照0x00-20、0x10-30的順序進行交替?zhèn)鬏敚敯l(fā)送到最后一段數(shù)據(jù)時,主站會把“0x00或10“指令替換成對應的結束指令,而其對應的從站響應指令”0x20或30“保持不變。

    [/ol]
    七、NMT網(wǎng)絡管理NMT(NetworkManagement)采用的主從方式,主機節(jié)點可以向從節(jié)點發(fā)送和請求數(shù)據(jù)。同一個網(wǎng)絡中只能有一個主節(jié)點,一個或者多個從節(jié)點。

    NMT節(jié)點狀態(tài)切換:

    各種狀態(tài)下支持的報文操作:

    上線報文:

    心跳報文:

    NMT報文:[/ol]


    八、時間戳協(xié)議NMT主機發(fā)送自身的時鐘,為網(wǎng)絡各個節(jié)點提供公共的時間參考。


    九、同步協(xié)議該報文對象主要實現(xiàn)整個網(wǎng)絡的同步傳輸,一般同步報文由 NMT 主機發(fā)出。

    同步窗口時間:索引1007h 約束了同步發(fā)送后,從節(jié)點發(fā)送PDO 的時效,即在這個時間內(nèi)發(fā)送的 PDO 才有效超過時間的 PDO將被丟棄。通訊循環(huán)周期:索引1006h 規(guī)定了同步頓的循環(huán)周期。
    十、緊急報文協(xié)議當設備內(nèi)部發(fā)生錯誤,觸發(fā)該對象,發(fā)送設備內(nèi)部錯誤代碼,提示 NMT 主站。緊急報文屬于診斷性報文,一般不會影響 CANopen 通訊。


    總結CANopen是基于CAN(控制器局域網(wǎng))總線的一種高級通信協(xié)議,被廣泛應用于自動化和嵌入式系統(tǒng)中。本章旨在提供詳細的CANopen相關知識、最佳實踐和實際應用案例。包括但不限于CANopen標準: 對CANopen規(guī)范進行深入講解,包括但不限于通信對象(COB-ID)的管理,進程數(shù)據(jù)對象(PDO)、服務數(shù)據(jù)對象(SDO)和網(wǎng)絡管理(NMT)等核心概念。
    end

    一口Linux

    關注,回復【1024】海量Linux資料贈送
    精彩文章合集
    文章推薦
    ?【專輯】ARM?【專輯】粉絲問答?【專輯】所有原創(chuàng)?【專輯】linux入門?【專輯】計算機網(wǎng)絡?【專輯】Linux驅(qū)動?【干貨】嵌入式驅(qū)動工程師學習路線?【干貨】Linux嵌入式所有知識點-思維導圖
  • 回復

    使用道具 舉報

    發(fā)表回復

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則

    關閉

    站長推薦上一條 /1 下一條


    聯(lián)系客服 關注微信 下載APP 返回頂部 返回列表