引言
在工業自動化與智慧製造環境中,CANopen 已成為伺服驅動器、馬達控制器、I/O 模組及機器人系統的重要通訊協定。然而,許多工程師在導入 CANopen 運動控制系統時,往往專注於功能實現,而忽略了系統狀態管理與安全機制的重要性。
本文將深入解析 CANopen NMT(Network Management)狀態機的運作方式,以及如何透過正確的狀態轉換流程,建立安全、可靠且符合工業標準的運動控制系統。
為什麼 CANopen 安全流程如此重要?
在運動控制系統中,任何錯誤的狀態切換都可能導致:
- 馬達非預期啟動
- 設備碰撞
- 人員安全風險
- 生產線停機
- 控制器與驅動器通訊異常
CANopen 透過 NMT(Network Management)狀態管理機制,明確規範設備從上電、參數設定、正常運作到停機的完整流程。
這種設計能夠確保:
- 設備在參數配置完成之前不會執行動作
- 運動控制命令只能於特定狀態下執行
- 發生故障時可立即停止即時控制通訊
- 系統具備可預測且可驗證的安全行為
I. 五大核心狀態分類
1. Initialization(初始化狀態,虛線框內自動上電流程)
此階段包含兩個自動執行的子狀態。設備上電後無須任何外部指令,即會直接進入 Reset Application 狀態。
Reset Application
功能: 清除應用層資料、馬達閉環控制變數、I/O 訊號、DS402 運動狀態以及故障旗標,並將物件字典(Object Dictionary)還原至預設設定。
自動轉換: 透過深色箭頭自動切換至 Reset Communication,無需任何外部訊號介入。
Reset Communication
功能: 重置 CAN 通訊硬體、PDO/SDO/SYNC 配置、COB-ID、Heartbeat 參數以及匯流排濾波器。
自動轉換: 初始化完成後自動進入 Pre-operational 狀態。
技術提示: 狀態圖中未標示 NMT 指令的深色箭頭代表自動狀態轉換(Automatic State Transition),不需由主站發送任何 NMT 控制命令。
2. Pre-operational(預運行狀態,參數設定階段)
設備完成初始化後預設進入此狀態。所有運動控制系統的啟動參數設定作業皆在此階段完成。
可用功能: 透過 SDO 讀寫物件字典,可設定馬達參數、PDO Mapping、加減速度、限位開關及 DS402 運作模式;Heartbeat 與 EMCY(Emergency Message)緊急訊息亦可正常運作。
停用功能: 不允許即時 PDO 訊息收發;無法下達位置控制或速度控制命令;馬達維持待機狀態,不會執行任何運動。
應用情境: 設備上電後,主站透過 SDO 完成驅動器的所有運動參數配置。
3. Operational(運行狀態,即時運動控制核心狀態)
當主站發送 Start Remote Node NMT 指令後,設備即進入 Operational 狀態。這是 CANopen 系統中唯一允許執行即時運動控制的狀態。
完整功能啟用: SDO、PDO、SYNC 同步機制、Heartbeat 以及 EMCY 故障通報功能皆可正常運作。
運動控制邏輯: RPDO 用於接收主站下達的目標位置與控制字(Control Word),TPDO 則回傳編碼器回授資料與設備狀態資訊。搭配 SYNC 訊號可實現多軸同步閉環控制。
安全規則: 設備一旦離開 Operational 狀態,PDO 傳輸會立即停止。馬達失去即時控制命令後,系統將觸發停機保護機制。
4. Stopped(停止狀態,匯流排休眠模式)
當主站發送 Stop Remote Node 指令後,設備即進入 Stopped 狀態,此時所有服務通訊功能均被停用。
保留功能: 僅保留 NMT 網路管理訊息與 Heartbeat 心跳訊號。
停用功能: SDO、PDO、SYNC 以及 EMCY 功能全部失效,無法進行參數讀寫與馬達控制。
應用情境: 適用於設備維護、全軸暫停運作等場景,此時匯流排僅維持節點在線狀態監控。
II. 狀態轉換控制指令(NMT Master Commands)
狀態機圖中所有標示的狀態轉換皆透過主站發送 NMT 訊息實現。
Start Remote Node
- Pre-operational → Operational(啟用即時運動控制)
- Stopped → Pre-operational
Stop Remote Node
- Operational → Stopped
- Pre-operational → Stopped
Enter Pre-operational
- Operational → Pre-operational(停止 PDO 傳輸並允許透過 SDO 重新配置參數)
- Stopped → Pre-operational
Reset Application
- 任意狀態 → Reset Application
清除馬達與應用層資料,並自動完成初始化流程後返回 Pre-operational。
Reset Communication
- 任意狀態 → Reset Communication
僅重置匯流排通訊設定,完成後自動返回 Pre-operational。
III. 運動控制系統標準上電流程(State Machine Execution Flow)
1. 系統上電與初始化
設備上電後,依序自動進入:
Reset Application 狀態 → Reset Communication 狀態 → Pre-operational 狀態 →
無需主站介入即可完成初始化程序。
2. DS402 運動參數設定
主站透過 SDO 批次設定 DS402 相關參數,包括:
- 運作模式(Position Mode)
- 加速度與減速度
- PDO Mapping
- 軟體限位參數
3. 啟動運動控制
主站發送:Start Remote Node 命令
→ 使設備進入 Operational 狀態。
4. 執行即時閉環控制
主站週期性發送:
- SYNC 同步訊號
- RPDO 控制訊息
→ 實現馬達即時位置閉環控制。
5. 修改運動參數
若需調整設定,主站應先發送:Enter Pre-operational
→ 停止 PDO 傳輸後,再透過 SDO 修改參數。
6. 設備停機維護
主站發送:Stop Remote Node
→ 使設備進入 Stopped 狀態,以利維護與檢修作業。
7. 恢復出廠設定
主站發送:Reset Application
→ 重新執行完整初始化流程並恢復預設狀態。
