基于DSP的CANopen通訊協議的實現
1 引言
CANopen是一個開放的、標準化的應用層協議,在各種控制系統中得到了廣泛的應用。依靠CANopen協議的支持,可以對不同CAN廠商的設備通過總線進行實時通訊。
本文針對自主研發的全數字電機伺服驅動系統,使用CANopen通訊協議實現了CAN總線數字信號處理器(DSP)系統與上位機CAN卡之間的通訊,并通過測試實驗驗證了信息傳遞的可靠性,保證了全數字網絡化伺服驅動系統中對電機控制的快速性、準確性和實時性。
2 通訊系統實現的基本原理
2.1 LF240x系列DSP的CAN控制器模塊
LF240x系列DSP的CAN控制器模塊,是一個完全的CAN控制器。具有以下特性[6]:
(1)完全支持CAN2.0B協議;
(2)對象有6個郵箱,用于接收和發送信息,其數據長度為0~8個字節;
(3)可編程的中斷配置,位定時器及CAN總線喚醒功能;
(4)當發送出現錯誤或仲裁丟失數據時,CAN控制器有自動重發功能;
(5)總線錯誤自診斷功能;
(6)支持自測試模式。
2.2 CANopen協議
CANopen協議以CAN芯片為硬件基礎,有效利用CAN芯片所提供的簡單通信功能區實現工業控制網絡的復雜應用層協議要求。應用中應該注意以下幾個方面的內容:
2.2.1 對象字典OD(Object Dictionary)
OD是CANopen協議的核心概念[1],它是一個有序的對象組,每個對象用一個16位的索引值和一個8位的子索引尋址。CANopen網絡中的每個節點都有一個OD,包含了描述這個設備和它的網絡行為的所有參數。
2.2.2 CANopen 標識符
CANopen定義了強制性的缺省標識符(COB-ID)分配表。它是基于11位的CAN-ID,包括4位功能段(Function Code)和7位地址段(Node-ID),如圖1所示。文獻[1]中給出了CANopen預定義主/從連接集CAN標識符分配情況。
2.2.3 CANopen通訊機制
CANopen通訊模型定義了四種報文(通訊對象)[1]:
1) 管理報文NMT(Network Management)
用于網絡中主節點對從節點監控和管理。此消息不需要應答。NMT消息格式如表1所示。
2)服務數據對象SDO(Service Data Object)
SDO通過使用索引和子索引來訪問一個設備的OD。協議屬于確認服務類型。根據傳送數據的長度不同,有兩種傳送機制:加速傳送(最多4字節)和分段傳送(大于4字節)。發送和應答報文總是包含8字節信息,基本結構如表2所示:
3) 過程數據對象PDO(Process Data Object)
用于傳輸正常網絡操作中的實時數據。每個PDO在OD中用2個對象描述:PDO通訊參數和PDO映射參數。在此舉例說明PDO的使用方法。假設第二個發送PDO映射如表3所示,如果這個報文被發送,則由3字節組成,報文結構如表4所示。
評論