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