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 三層架構。
