為什麼單靠 CAN 無法實現運動控制?完整 CANopen 架構才是關鍵

CAN 與 CANopen

在工業自動化與伺服驅動系統中,許多人將 CAN 與 CANopen 視為相同技術。然而,CAN 僅是一種底層通訊機制,而 CANopen 則是在 CAN 基礎上建立的完整運動控制架構。只有完整的三層式 CANopen 架構相互協同運作,才能實現標準化且可互通的馬達運動控制。

為什麼 CAN 無法支援運動控制,而完整 CANopen 卻可以?

CAN 僅提供底層驅動,不具備標準化通訊物件

CAN 並未定義 PDO、SDO、SYNC 及 NMT 等核心機制。因此,開發者必須自行設計訊息 ID、資料格式以及同步機制,導致不同廠牌馬達與驅動器之間缺乏互通性。

CANopen 的中間通訊層則提供專為運動控制設計的標準化模組,可大幅降低系統整合與開發難度。

缺乏統一的物件字典(Object Dictionary)

CAN 不具備統一的參數位址標準,因此不同製造商的驅動器通常使用不同的指令格式與參數定義。

CANopen 利用物件字典(Object Dictionary)以及 DS402 標準,統一伺服運動控制參數的位址定義,讓主控制器能夠以一致方式控制符合標準的伺服驅動器。

缺少事件驅動 Event-Driven 的應用層聯動機制

CANopen 提供:

  • SYNC(同步機制)
  • NMT(網路管理)
  • Heartbeat(節點監控)

這些機制能夠觸發上層應用事件,自動完成同步運動、狀態切換及故障保護功能。

相較之下,CAN 必須自行開發訊框解析、時序判斷及狀態管理程式,大幅增加軟體開發複雜度。

缺乏標準化多軸同步機制

SYNC 訊息是 CANopen 特有的同步控制機制。

由於純 CAN 缺少全域同步參考,因此多軸控制時容易產生同步誤差,無法滿足插補控制及多軸協同運動等高精度應用需求。

CANopen 三層協定架構解析


(圖片來源:Microchip

CANopen 架構可分為三個主要層次,每一層皆負責不同的功能,並共同完成完整的運動控制系統。

第一層:ECAN™ Driver(CAN 硬體鏈路層)

此層對應 CAN 2.0 的實體層與資料鏈路層。

核心功能

  • 傳送與接收標準 8-byte CAN 訊框
  • 執行硬體仲裁(Arbitration)
  • CRC 錯誤檢查
  • 匯流排錯誤管理

此層不包含任何運動控制邏輯,無法辨識目標位置、控制字(Control Word)或同步命令,本質上只是資料傳輸通道。

所有 CANopen 上層模組,包括 PDO、SDO、SYNC、NMT 以及 Heartbeat,最終皆透過此層完成 CAN 訊息傳送。

第二層:通訊子層(CANopen 核心通訊層,DS301)

此層是 CANopen 最重要的標準化通訊架構,負責資料交換、同步控制及網路管理。

PDO(Process Data Object)

PDO 是即時運動閉環控制的核心。

其可將下列運動資料映射至物件字典:

  • 控制字(Control Word)
  • 目標位置(Target Position)
  • 實際位置(Actual Position)
  • 速度(Speed)

由於不需額外握手機制,因此具有低延遲特性,可在每次 SYNC 週期中實現多軸同步運動控制。

SDO(Service Data Object)

SDO 是設備參數配置的專用通道。

主要負責讀寫物件字典,設定包括:

  • 加速度限制
  • 減速度限制
  • 行程範圍限制
  • 馬達運轉模式
  • PDO 映射關係

通常於設備啟動初始化階段完成參數設定。

NMT(Network Management)

NMT 用於管理匯流排與馬達的安全狀態。

其功能包括:

  • 節點狀態管理
  • Pre-operational 與 Operational 狀態切換
  • 狀態變更事件通知

只有在 Operational 狀態下,PDO 控制功能才能正式運作。

SYNC

SYNC 提供整個系統的全域時間基準。

透過週期性廣播同步訊息,可確保所有軸在相同時間點更新位置命令,提升多軸同步控制精度。

Heartbeat / Node Guard / Boot-up

此類機制負責系統通訊監控與故障保護。

Heartbeat 可用於偵測節點或匯流排是否發生通訊異常。一旦發現連線中斷,即可觸發上層應用程式執行緊急停機保護。

第三層:應用層(Application Layer,DS402 伺服標準)

應用層負責實現實際的運動控制邏輯與伺服演算法。

Object Dictionary(物件字典)

物件字典是所有運動控制參數的集中式資料庫。

DS402 定義的標準索引範圍為:

0x6000 ~ 0x9FFF

其中包含:

  • 0x6040:Control Word(控制字)
  • 0x607A:Target Position(目標位置)
  • 0x6064:Actual Position(實際位置)
  • Operating Mode(運轉模式)
  • Fault Code(故障碼)

SDO 透過讀寫物件字典完成參數設定,而 PDO 則透過映射方式取得即時運動資料。

Application Object(應用物件)

應用物件負責執行馬達閉環控制核心邏輯,並處理來自通訊層的各種事件。

SYNC 事件

  • 讀取 PDO 傳送的目標位置
  • 執行位置迴路 PID 演算法
  • 輸出 PWM 訊號驅動馬達

NMT 狀態切換事件

  • 馬達啟用與停用
  • 故障重置
  • 上電初始化

Heartbeat 中斷事件

  • 觸發緊急停機機制
  • 執行系統安全保護

同時,系統也會將編碼器回授的位置資料及馬達狀態寫回物件字典,再透過 PDO 回傳至主站控制器。

結論

CAN 本身僅提供資料傳輸能力,其職責包括訊框收發、硬體仲裁、CRC 驗證與錯誤管理。它並不具備運動控制所需的同步機制、參數管理、設備管理或多軸協調能力。

完整的 CANopen 架構則透過:

  • ECAN Driver 提供底層傳輸能力
  • PDO/SDO/SYNC/NMT/Heartbeat 提供標準化通訊與同步管理
  • Object Dictionary 統一管理所有運動控制參數
  • Application Object 執行閉環控制、啟停控制及故障保護

共同形成完整的運動控制平台。

因此,在伺服控制、多軸同步控制及工業自動化應用中,真正實現標準化運動控制的關鍵,不是單純的 CAN,而是完整且協同運作的 CANopen 三層架構。

參考資料:

Microchip Application Notes

更多相關技術主題: