代訓(xùn)康,施玉霞
DAI Xun-kang, SHI Yu-xia
(南京航空航天大學(xué) 自動(dòng)化學(xué)院,南京 210016)
機(jī)械臂控制系統(tǒng)中CANopen協(xié)議的應(yīng)用與開(kāi)發(fā)
The development and application of CANopen protocol in manipulator control system
代訓(xùn)康,施玉霞
DAI Xun-kang, SHI Yu-xia
(南京航空航天大學(xué) 自動(dòng)化學(xué)院,南京 210016)
本文對(duì)基于CAN(Controller Area Network)總線的應(yīng)用層協(xié)議CANopen的一些特征以及在國(guó)內(nèi)外的開(kāi)發(fā)與應(yīng)用狀況進(jìn)行了分析??偨Y(jié)了其在開(kāi)發(fā)過(guò)程中采用的的開(kāi)發(fā)方式,結(jié)合機(jī)械臂語(yǔ)音指令控制系統(tǒng),抽象出基于CANopen協(xié)議的控制網(wǎng)絡(luò),并對(duì)CANopen的初始化和組態(tài)過(guò)程進(jìn)行了分析。在CANopen協(xié)議的基礎(chǔ)上可以實(shí)現(xiàn)不同的控制形式如語(yǔ)音指令、手動(dòng)控制等對(duì)機(jī)械臂控制系統(tǒng)的通訊與控制過(guò)程,這為今后的智能化人機(jī)接口技術(shù)的研究提供了基礎(chǔ)。
CAN總線;CANopen協(xié)議;現(xiàn)場(chǎng)總線
CANopen[1]是基于CAN總線的應(yīng)用層協(xié)議,在開(kāi)放的現(xiàn)場(chǎng)總線標(biāo)準(zhǔn)中CANopen是最著名和成功的一種,已經(jīng)在歐洲和美國(guó)獲得廣泛的認(rèn)可和大量應(yīng)用。由于CAN只定義了物理層和數(shù)據(jù)鏈路層,沒(méi)有規(guī)定應(yīng)用層,本身并不完整,需要一個(gè)高層協(xié)議來(lái)定義CAN報(bào)文中的11/29位標(biāo)識(shí)符、8字節(jié)數(shù)據(jù)的使用。CANopen是建立在CAN(Controller Area Network)串行總線之上的應(yīng)用層協(xié)議。它支持多種傳輸模式,具有良好的開(kāi)放特性,并能極大程度地降低CAN總線 網(wǎng)絡(luò)數(shù)據(jù)的負(fù)荷,從而使CAN總線成為一個(gè)更加完善的網(wǎng)絡(luò)系統(tǒng)。本文通過(guò)CANopen協(xié)議的SDO報(bào)文命令實(shí)現(xiàn)了說(shuō)話(huà)者運(yùn)用語(yǔ)音指令控制AS-MRobotE智能機(jī)械臂完成相對(duì)復(fù)雜的動(dòng)作,和以往的基于CAN總線的數(shù)據(jù)傳輸相比,大大提高了系統(tǒng)的效率,節(jié)約了有限的硬件資源,為功能的擴(kuò)展和用途的延伸提供了方便。
CANopen協(xié)議中包含了標(biāo)準(zhǔn)的應(yīng)用層規(guī)范和通信規(guī)范,其通信模型如圖1所示。
在CANopen的應(yīng)用層,設(shè)備間通過(guò)相互交換通信對(duì)象進(jìn)行通信。良好的分層和面向?qū)ο蟮脑O(shè)計(jì)理念使得CANopen協(xié)議中的通訊模型條理清晰。
圖1 CANopen協(xié)議通信模型
一個(gè)CANopen設(shè)備模塊可以分為3部分,如圖2所示。
圖2 CANopen設(shè)備模型
通信接口和協(xié)議軟件提供在總線上收發(fā)通信對(duì)象的服務(wù)。這一部分直接面向CAN控制器進(jìn)行操作。
對(duì)象字典描述了設(shè)備使用的所有的數(shù)據(jù)類(lèi)型,通信對(duì)象和應(yīng)用對(duì)象,是一個(gè)CANopen設(shè)備的核心部分。應(yīng)用程序?qū)?duì)象字典進(jìn)行操作就可以實(shí)現(xiàn)CANopen通信。
而應(yīng)用程序由用戶(hù)編寫(xiě),包括功能部分和通信部分。通信部分通過(guò)對(duì)對(duì)象字典進(jìn)行操作實(shí)現(xiàn)CANopen通信,而功能部分由用戶(hù)根據(jù)應(yīng)用要求實(shí)現(xiàn)。
圖3 所示為CANopen 典型的網(wǎng)絡(luò)模型,該網(wǎng)絡(luò)中有一個(gè)主節(jié)點(diǎn),三個(gè)從節(jié)點(diǎn)以及一個(gè)CANopen 網(wǎng)關(guān)掛連接的其他設(shè)備。由于CANopen是基于CAN 總線的應(yīng)用層協(xié)議,屬于總線型網(wǎng)絡(luò),在布線和維護(hù)等方面非常方便,可最大限度地節(jié)約組網(wǎng)成本。
圖3 CANopen網(wǎng)絡(luò)結(jié)構(gòu)
其中,構(gòu)建一個(gè)CANopen設(shè)備至少應(yīng)該具有(最小能力設(shè)備)以下幾個(gè)部分: 一個(gè)節(jié)點(diǎn)ID, 一個(gè)對(duì)象字典(內(nèi)容由設(shè)備功能決定),一個(gè)SDO,能夠訪問(wèn)對(duì)象字典中必需的對(duì)象(只讀),支持下列NMT服從設(shè)備:復(fù)位節(jié)點(diǎn);停止遠(yuǎn)程節(jié)點(diǎn);啟動(dòng)遠(yuǎn)程節(jié)點(diǎn); 復(fù)位通訊, 進(jìn)入預(yù)操作狀態(tài);缺省的標(biāo)識(shí)符分配。
開(kāi)發(fā)有很多種方法,但歸納起來(lái)共三種:
CANopen處理器提供一個(gè)具有完善軟件及硬件接口的基于SOC的CANopen協(xié)議棧固件嵌入式模塊,比如HMS工業(yè)網(wǎng)絡(luò)有限公司新近開(kāi)發(fā)的用于CANopen的Anybus-IC。使用這樣的CANopen處理器模塊來(lái)與自己的設(shè)備相連接,可以快速接入CANopen設(shè)備,但這樣的模塊一般購(gòu)買(mǎi)單價(jià)都比較高。優(yōu)勢(shì)是開(kāi)發(fā)周期短,不容易出問(wèn)題,對(duì)于小批量和開(kāi)發(fā)能力弱的用戶(hù)比較合適。
開(kāi)發(fā)CANopen節(jié)點(diǎn)的一個(gè)最常用的途徑是購(gòu)買(mǎi)CANopen協(xié)議棧的源代碼。這種商品化的解決方案可適用于大多數(shù)的微控制器、微處理器甚至DSP芯片。利用這些商品化的CANopen協(xié)議棧的源代碼可以快速構(gòu)建系統(tǒng)。但是會(huì)增加額外的軟件接口,例如硬件抽象化以及隊(duì)列。
在CANopen協(xié)議基礎(chǔ)上,大致確定自己的產(chǎn)品所需要的功能,然后選擇最適合自己的硬件系統(tǒng)。這種方法比較適合大批量的公司,且要求開(kāi)發(fā)者的開(kāi)發(fā)能力很強(qiáng),對(duì)協(xié)議很熟悉,開(kāi)發(fā)周期相對(duì)較長(zhǎng),后期驗(yàn)證也需要較長(zhǎng)的時(shí)間,以及對(duì)協(xié)議的不同理解造成的開(kāi)發(fā)的兼容性差。但這種方法能讓公司真正積累設(shè)計(jì)能力、后期客戶(hù)問(wèn)題處理能力及產(chǎn)品功能升級(jí)能力,應(yīng)用非常靈活。
由于智能機(jī)械臂控制系統(tǒng)AS-MRobotE是一種模塊化的智能機(jī)器人,每個(gè)模塊都是由獨(dú)立的DSP運(yùn)動(dòng)控制芯片與通迅模塊組成,模塊之間均采用基于CAN總線的通訊模式。AS-MRobotE的各種運(yùn)動(dòng)由各個(gè)關(guān)節(jié)軸系完成,我們可以把AS-MRobotE 各個(gè)模塊看成CANopen設(shè)備的每一個(gè)從站,在機(jī)械臂控制系統(tǒng)中建立簡(jiǎn)單主站協(xié)議棧來(lái)完成與各個(gè)模塊之間的通訊以及與控制。而開(kāi)發(fā)主站協(xié)議棧過(guò)程中所采取的簡(jiǎn)化與設(shè)計(jì)心得如下:
1)在開(kāi)發(fā)過(guò)程中根據(jù)具體的需要來(lái)完成有關(guān)CANopen協(xié)議的編寫(xiě)即可;
2)組建對(duì)象字典時(shí),根據(jù)具體的需要來(lái)完成必要的功能,預(yù)留一定的空間為功能的擴(kuò)展添加新的功能項(xiàng);
3)通過(guò)簡(jiǎn)單引導(dǎo)來(lái)實(shí)現(xiàn)CANopen標(biāo)識(shí)符的分配。
基于CANopen 協(xié)議的嵌入式語(yǔ)音指令控制機(jī)械臂的控制網(wǎng)絡(luò)是單主站(Master)系統(tǒng),在工控主板EPCS-8980的CAN接口構(gòu)造簡(jiǎn)單的CANopen協(xié)議棧主站,作為從站設(shè)備的智能機(jī)械臂系統(tǒng)各模塊的運(yùn)行由主站來(lái)控制。CANopen協(xié)議棧主站還具有啟動(dòng)中止總線節(jié)點(diǎn),節(jié)點(diǎn)監(jiān)測(cè)等特定功能。
圖4 CANopen協(xié)議的控制網(wǎng)絡(luò)
結(jié)合CANopen協(xié)議在機(jī)械臂控制系統(tǒng)中的應(yīng)用實(shí)現(xiàn)過(guò)程,CANopen的初始化和組態(tài)過(guò)程如下:
1)主站和從站分別上電,從站自動(dòng)進(jìn)入準(zhǔn)備預(yù)操作狀態(tài);
2)主站初始化CAN 芯片;
3)主站根據(jù)EDS文件向從站發(fā)送SDO,對(duì)每個(gè)從站設(shè)備進(jìn)行組態(tài);
4)主站向從站發(fā)送NMT 命令,指示從站進(jìn)入運(yùn)行運(yùn)行操作狀態(tài);
5)主站和從站通過(guò)PDO和SYNC 數(shù)據(jù)交換控制變量和通訊信息。
本文把幾個(gè)有限的語(yǔ)音指令(左轉(zhuǎn)、右轉(zhuǎn)、上升、下降、加緊、放松)在嵌入式機(jī)器人控制系統(tǒng)平臺(tái)上通過(guò)識(shí)別和理解過(guò)程把語(yǔ)音指令轉(zhuǎn)化成對(duì)應(yīng)的文本活命令,實(shí)現(xiàn)嵌入式語(yǔ)音指令控制機(jī)械臂控制系統(tǒng),使之按說(shuō)話(huà)者完成相應(yīng)的運(yùn)動(dòng)。語(yǔ)音指令與對(duì)應(yīng)的文本活命令之間的關(guān)系如下:左轉(zhuǎn)(0x01)、右轉(zhuǎn)(0x02)、上升(0x03)、下降(0x04)、加緊(0x05)、放松(0x06)。
下面通過(guò)一個(gè)例子來(lái)說(shuō)明如何通過(guò)CANopen協(xié)議實(shí)現(xiàn)嵌入式語(yǔ)音指令對(duì)機(jī)械臂控制系統(tǒng)的控制過(guò)程。
使用下面的SDO消息如表1,表2,表3,表4所示。嵌入式機(jī)器人控制系統(tǒng)平臺(tái)把值0x01(左轉(zhuǎn))通過(guò)CANopen協(xié)議傳輸?shù)綑C(jī)械臂控制模塊控制器中的對(duì)應(yīng)的對(duì)象字典中。比如:寫(xiě)到節(jié)點(diǎn) ID為2的對(duì)象字典中索引為0x1801,子索引為2的對(duì)象中去,使用啟動(dòng)域下載協(xié)議,加速傳輸(1字節(jié)數(shù)據(jù))。
表1 左轉(zhuǎn)節(jié)點(diǎn)2的報(bào)文Clientserver (節(jié)點(diǎn)#2)
表2 左轉(zhuǎn)節(jié)點(diǎn)2的報(bào)文Clientserver(節(jié)點(diǎn)#2)
通過(guò)SDO協(xié)議報(bào)文即可以實(shí)現(xiàn)語(yǔ)音指令的控制。在機(jī)械臂內(nèi)部,通過(guò)讀取碼盤(pán)傳感器的數(shù)據(jù)來(lái)與設(shè)定值之間進(jìn)行比較,來(lái)完成中止這次語(yǔ)音命令控制過(guò)程。實(shí)現(xiàn)過(guò)程正好和上面的過(guò)程相反。
使用下面的SDO消息,同樣的對(duì)象字典中索引0x1401,子索引為2的對(duì)象將被讀出,使用啟動(dòng)域上傳協(xié)議,服務(wù)器使用加速傳輸方式應(yīng)答(1字節(jié)數(shù)據(jù)):
表3 左轉(zhuǎn)節(jié)點(diǎn)2的報(bào)文Clientserver (節(jié)點(diǎn)#2)
表4 左轉(zhuǎn)節(jié)點(diǎn)2的報(bào)文Clientserver(節(jié)點(diǎn)#2)
其他的語(yǔ)音指令命令如右轉(zhuǎn)(0x02)、上升(0x03)、下降(0x04)、加緊(0x05)、放松(0x06)等也可以通過(guò)這個(gè)過(guò)程來(lái)實(shí)現(xiàn)。
通過(guò)在機(jī)械臂控制網(wǎng)絡(luò)中采用CANopen協(xié)議來(lái)傳遞控制參數(shù)比如語(yǔ)音指令等和碼盤(pán)等控制信息,可以達(dá)到很好的實(shí)時(shí)通訊和控制目的。
CAN總線在各個(gè)領(lǐng)域有著很好的應(yīng)用前景,而基于CAN總線的高層協(xié)議CANopen 和CAN構(gòu)成了一個(gè)完整的網(wǎng)絡(luò)協(xié)議,提高了CAN總線的利用率,增強(qiáng)了設(shè)備的可擴(kuò)展性,提高了數(shù)據(jù)傳輸?shù)目煽啃?。在機(jī)械臂控制系統(tǒng)中使用 CANopen 協(xié)議的方案能夠很好的為機(jī)械臂控制系統(tǒng)提供實(shí)時(shí)可靠的數(shù)據(jù)傳輸并具有良好的設(shè)備擴(kuò)充能力和模塊獨(dú)立性。該方案為提高CANopen的應(yīng)用提供了一種新的思路,為集成的和可傳輸?shù)墓I(yè)應(yīng)用具有一定的借鑒意義。
[1] Farsi,M.;Ratcliff,K.;Barbasa,M.,An introduction to CANopen[J],Computering&control Enginer--ing Journal,1994,10(4):161-168.
[2] Barbosa,M.B.M.;da Silva Carvaldo,A.;Farsi,M.,A CANopen I/O module:Simple and efficient system integration[J],Industrial Electronics Society Proceedings of the 24th Annual Conference of the IEEE,1998,1(1):155-159.
[3] 柳吉齡,張宇河,張潔.基于CAN總線的運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì) [J].計(jì)算機(jī)測(cè)量與控制,2005,13(7):683-685.
[4] 王付軍,陶維青.基于CAN的高層協(xié)議CANopen與Devicenet NET的比較[J].現(xiàn)代電子技術(shù),2007,(4):111-117.
[5] 北京博控自動(dòng)化有限公司.Canopen協(xié)議的實(shí)現(xiàn)[J].國(guó)內(nèi)外機(jī)電一體化技術(shù),2006,(3):30-32.
[6] Karl Ratcliff,CANopen Implementation Issues[J],The Institution of Electrical Engineers,1997.
[7] 郇極,楊斌,魏繼光.一種開(kāi)放式的現(xiàn)場(chǎng)總線協(xié)議CANopen[J].制造業(yè)自動(dòng)化,2002,24(10)33-38.
TP336;TN915.04
A
1009-0134(2010)12(上)-0038-04
10.3969/j.issn.1009-0134.2010.12(上).13
2010-06-24
代訓(xùn)康(1987 -),男,安徽宿州人,碩士,研究生,研究方向?yàn)橛?jì)算機(jī)測(cè)控系統(tǒng)。