CANopen學習筆記(總)

小兜兜me發表於2024-08-27

CANOpen

定位:小網路,控制訊號的實時通訊

確保實時性採取的措施

  • ID域:11bit(CAN標準幀格式)

  • 控制報文采用資料最小位元組數

  • 採用生產消費模型(資料無需應答)

  • 需要應答時,採用快速單字傳輸(一個報文最多傳輸一個32位元組引數變數)

一、協議分類

  • 主從協議
    • 一對多
    • 無應答模式和應答模式
  • 客戶端/伺服器協議(SDO)
    • 單對單
    • 有應答
  • 生產消費協議(PDO)
    • 一對多
    • 推拉模式

二、通訊物件

2.1 PDO

我的觀點:一個 CANopen 裝置可以擁有最多 512 個 RPDO 和 512 個 TPDO,總共最多 1024 個 PDO。(得到GPT4o的肯定)

CiA協議棧觀點:一個只有一個邏輯裝置的 CANopen 裝置最多有 512 個 PDO。

PDO的兩種用法:

  • TPDO:生產者PDO
  • RPDO:消費者PDO
2.1.1 特點

小而快

2.1.2 傳輸模式
  • 同步傳輸:透過(SYNC物件)來獲取同步訊號

    ​ 同步TPDO的傳輸倍率:n表示經過n個同步訊號後傳送下一個訊息。(為0時,收到觸發訊號後的第一個同步訊號後進行傳送)

  • 事件驅動傳輸

2.1.3 觸發模式

訊息的觸發模式

觸發方式 解釋 應用場景
事件驅動 特定的事件進行驅動 超限報警
定時器驅動 固定的時間間隔進行傳送 週期性更新資料
遠端請求 其它節點透過傳送 RTR 幀來請求該裝置傳送相應的 PDO 允許節點靈活的請求資料
同步觸發 由一定數量的Sync和內部事件觸發 協調多個裝置的同步操作
2.1.4 PDO讀寫
  • 寫協議(推模式):生產者向0 ~ n個消費者寫PDO資料(參考spi寫資料)
  • 讀協議(拉模式):消費者傳送RTR請求向生產者請求資料(參考spi讀資料)

PDO寫

引數 請求/執行 響應/確認
PDO編號 強制
資料 強制

image-20240823090708657

PDO讀

引數 請求/執行 響應/確認
PDO編號 強制
資料 強制

image-20240823090717664

2.1.5 物件描述
  • 通訊引數:定義了PDO的基本特性,如COB-ID、傳輸型別、禁止時間和事件定時器等,它決定了PDO是以何種方式傳送和接收資料。

    • COB-ID:透過COB-ID可以唯一識別一個PDO訊息

      • TPDO和RPDO的COB-ID是不同的
      • COB-ID的最高位設定為1時,表示該PDO被禁用
    • 傳輸型別(Transmission Type):PDO訊息的傳輸方式

      • 同步傳輸
      • 非同步傳輸

      image-20240823104525646

    • 抑制時間(Inhibit Time):兩個PDO之間的最小時間間隔(以ms為單位)

    • 事件計時器(Event Timer):定了事件觸發的週期時間,PDO在到期時傳送(表示沒有事件發生)

    • 同步計數器(Sync Counter):在同步傳輸型別下使用,規定了在接收多少次同步訊號後傳送

  • 對映引數:定義了哪些物件字典條目(變數)被包含在 PDO 訊息中,以及這些變數在訊息中的位置。

    • 對映條目數:定義了一個PDO在物件字典中的條目數量,每個條目代表一個資料段
    • 對映物件:每個對映物件由32位組成
      • 索引(Index,16位):物件字典中的索引
      • 子索引(Sub-Index, 8位):物件字典項的子索引
      • 位長度(Bit Length,8位):表示對映物件的資料位數(常為位元組的整數倍)
2.1.6 PDO 傳輸例項

點我檢視

2.2 Multiplex PDO(不懂且沒看完,因資料少)

有兩種MPDO的使用方法。第一是目的地址模式(DAM)PDO,第二是源地址模式(SAM)PDO

支援接收MPDO的ANope的裝置為MPDO消費者,支援傳送MPDO的C為MPDO生產者

傳送MPDO由事件驅動,不支援定時、遠端請求和同步觸發模式

2.2.1 定址模式
  • 目的地址模式(DAM):一個DAM-MPDO可以被所有該MPDO的消費者同時接收(類似於廣播),且無 應答。如果物件不存在,則生成EMCY幀。
  • 源地址模式(SAM):
2.2.2 MPDO讀寫

MPDO寫

引數 請求/執行 響應/確認
PDO編號 強制
地址型別 強制
Node-ID 強制
Multiplexer 強制
資料 強制

image-20240823091809355

2.3 SDO

2.3.1 特點

大而慢

2.3.2 傳輸模式
傳輸模式 概述 應答模式
快速傳輸 因資料小於等於4個位元組,一幀足夠傳送完,無需分段 一幀一答
段傳輸 把資料分割成若干個段,每一段透過單獨的幀傳送 每幀每答
塊傳輸 把多個段組合成一個子塊,每一子塊傳送完才接受應答訊號,所有子塊組成塊 每子塊每答

快速傳輸模式:只需要一次資料的傳送和應答就可以完成資料傳輸,效率高,但是傳輸的資料量少。

段傳輸:資料被分成多個段(segment)來傳輸,每個段最多可以包含7個位元組的資料。這種模式的實現較為簡單,適合中等長度的資料傳輸。

塊傳輸:相比段傳輸模式,塊傳輸模式能夠處理更大的資料量並且提高了傳輸效率。資料被分為多個塊(block),每個塊可以包含多個段。塊傳輸還具有校驗機制,能夠確保資料的完整性和可靠性。

協議詳解見 Or CiA301中文手冊43頁

2.4 SYNC

  • 同步生產者定期廣播同步物件(SYNC)。
  • SYNC提供基本的網路同步機制,遵循生產消費模型,該服務無應答。
  • 傳輸1個位元組的計數器(可選)

2.5 TIME

  • TIME生產者定期廣播時間戳物件(TIME)。
  • TIME提供了簡單的網路時鐘。CANopen裝置透過時間戳物件來校準本地時間。
  • 傳輸6個位元組的時間戳

2.6 EMCY

  • 當裝置內部出現致命錯誤將觸發應急(EMCY)報文
  • 由應用裝置以最高優先順序傳送到其他裝置。任何具備緊急事件監控與處理能力的從站會接收並處理緊急報文。

三、NMT

NMT主要用來管理和控制各個節點的狀態,具體協議可以分為以下四類:

  1. NMT protocol
  2. Node guard protocol
  3. Heartbeat protocol
  4. Bootup protocol

3.1 NMT protocol

該協議是CANopen中網路管理的協議,控制和管理節點的狀態,透過傳送相關報文,可以讓目標節點進入特定的工作狀態。工作狀態有以下幾種

  • Initialization(初始化): 節點開始時進入初始化狀態。
  • Pre-operational(預操作): 節點處於準備狀態,但不參與正常的PDO(Process Data Object)通訊。
  • Operational(操作): 節點完全進入操作模式,允許PDO通訊。
  • Stopped(停止): 節點停止所有的通訊。

NMT命令通常由網路管理器傳送,命令包括:

命令 描述 cs值
Start Remote Node 將節點切換到Operational模式 0x01
Stop Remote Node 將節點切換到Stopped模式 0x02
Enter Pre-operational 將節點切換到Pre-operational模式 0x80
Reset Node 重置節點,重新啟動節點 0x81
Reset Communication 重置節點的通訊部分 0x82

其具體值為cs值(一位元組)+nodeid(一位元組)

Note : To command all the nodes, use nodeId = 00

Examples

  • To put the node 0x6 in operational mode : 000 01 06
  • To put all the nodes in pre-operational mode : 000 80 00

3.2 Node Guard protocol

節點監護協議(Node Guard protocol),用於主裝置監控從裝置的狀態。由主裝置定期傳送,如從節點沒在規定時間內回應,則主節點認為該節點出現了故障。(該報文中有翻轉位)

3.3 Heartbeat protocol

心跳協議(Heartbeat protocol),是節點監護協議的簡化版本,心跳協議不需要主裝置定期傳送訊息來請求從裝置回應,而是每個節點自主釋出心跳報文。(該報文中沒有翻轉位)

3.4 Bootup protocol

Bootup協議是CANopen節點在啟動時,通知主裝置其狀態的協議,在初始化進入預操作狀態時,該節點會傳送Bootup表示節點已經初始化完成,並且可以接收管理指令。

相關文章