代訓康,施玉霞
DAI Xun-kang, SHI Yu-xia
(南京航空航天大學 自動化學院,南京 210016)
機械臂控制系統中CANopen協議的應用與開發
The development and application of CANopen protocol in manipulator control system
代訓康,施玉霞
DAI Xun-kang, SHI Yu-xia
(南京航空航天大學 自動化學院,南京 210016)
本文對基于CAN(Controller Area Network)總線的應用層協議CANopen的一些特征以及在國內外的開發與應用狀況進行了分析。總結了其在開發過程中采用的的開發方式,結合機械臂語音指令控制系統,抽象出基于CANopen協議的控制網絡,并對CANopen的初始化和組態過程進行了分析。在CANopen協議的基礎上可以實現不同的控制形式如語音指令、手動控制等對機械臂控制系統的通訊與控制過程,這為今后的智能化人機接口技術的研究提供了基礎。
CAN總線;CANopen協議;現場總線
CANopen[1]是基于CAN總線的應用層協議,在開放的現場總線標準中CANopen是最著名和成功的一種,已經在歐洲和美國獲得廣泛的認可和大量應用。由于CAN只定義了物理層和數據鏈路層,沒有規定應用層,本身并不完整,需要一個高層協議來定義CAN報文中的11/29位標識符、8字節數據的使用。CANopen是建立在CAN(Controller Area Network)串行總線之上的應用層協議。它支持多種傳輸模式,具有良好的開放特性,并能極大程度地降低CAN總線 網絡數據的負荷,從而使CAN總線成為一個更加完善的網絡系統。本文通過CANopen協議的SDO報文命令實現了說話者運用語音指令控制AS-MRobotE智能機械臂完成相對復雜的動作,和以往的基于CAN總線的數據傳輸相比,大大提高了系統的效率,節約了有限的硬件資源,為功能的擴展和用途的延伸提供了方便。
CANopen協議中包含了標準的應用層規范和通信規范,其通信模型如圖1所示。
在CANopen的應用層,設備間通過相互交換通信對象進行通信。良好的分層和面向對象的設計理念使得CANopen協議中的通訊模型條理清晰。

圖1 CANopen協議通信模型
一個CANopen設備模塊可以分為3部分,如圖2所示。

圖2 CANopen設備模型
通信接口和協議軟件提供在總線上收發通信對象的服務。這一部分直接面向CAN控制器進行操作。
對象字典描述了設備使用的所有的數據類型,通信對象和應用對象,是一個CANopen設備的核心部分。應用程序對對象字典進行操作就可以實現CANopen通信。
而應用程序由用戶編寫,包括功能部分和通信部分。通信部分通過對對象字典進行操作實現CANopen通信,而功能部分由用戶根據應用要求實現。
圖3 所示為CANopen 典型的網絡模型,該網絡中有一個主節點,三個從節點以及一個CANopen 網關掛連接的其他設備。由于CANopen是基于CAN 總線的應用層協議,屬于總線型網絡,在布線和維護等方面非常方便,可最大限度地節約組網成本。

圖3 CANopen網絡結構
其中,構建一個CANopen設備至少應該具有(最小能力設備)以下幾個部分: 一個節點ID, 一個對象字典(內容由設備功能決定),一個SDO,能夠訪問對象字典中必需的對象(只讀),支持下列NMT服從設備:復位節點;停止遠程節點;啟動遠程節點; 復位通訊, 進入預操作狀態;缺省的標識符分配。
開發有很多種方法,但歸納起來共三種:
CANopen處理器提供一個具有完善軟件及硬件接口的基于SOC的CANopen協議棧固件嵌入式模塊,比如HMS工業網絡有限公司新近開發的用于CANopen的Anybus-IC。使用這樣的CANopen處理器模塊來與自己的設備相連接,可以快速接入CANopen設備,但這樣的模塊一般購買單價都比較高。優勢是開發周期短,不容易出問題,對于小批量和開發能力弱的用戶比較合適。
開發CANopen節點的一個最常用的途徑是購買CANopen協議棧的源代碼。這種商品化的解決方案可適用于大多數的微控制器、微處理器甚至DSP芯片。利用這些商品化的CANopen協議棧的源代碼可以快速構建系統。但是會增加額外的軟件接口,例如硬件抽象化以及隊列。
在CANopen協議基礎上,大致確定自己的產品所需要的功能,然后選擇最適合自己的硬件系統。這種方法比較適合大批量的公司,且要求開發者的開發能力很強,對協議很熟悉,開發周期相對較長,后期驗證也需要較長的時間,以及對協議的不同理解造成的開發的兼容性差。但這種方法能讓公司真正積累設計能力、后期客戶問題處理能力及產品功能升級能力,應用非常靈活。
由于智能機械臂控制系統AS-MRobotE是一種模塊化的智能機器人,每個模塊都是由獨立的DSP運動控制芯片與通迅模塊組成,模塊之間均采用基于CAN總線的通訊模式。AS-MRobotE的各種運動由各個關節軸系完成,我們可以把AS-MRobotE 各個模塊看成CANopen設備的每一個從站,在機械臂控制系統中建立簡單主站協議棧來完成與各個模塊之間的通訊以及與控制。而開發主站協議棧過程中所采取的簡化與設計心得如下:
1)在開發過程中根據具體的需要來完成有關CANopen協議的編寫即可;
2)組建對象字典時,根據具體的需要來完成必要的功能,預留一定的空間為功能的擴展添加新的功能項;
3)通過簡單引導來實現CANopen標識符的分配。
基于CANopen 協議的嵌入式語音指令控制機械臂的控制網絡是單主站(Master)系統,在工控主板EPCS-8980的CAN接口構造簡單的CANopen協議棧主站,作為從站設備的智能機械臂系統各模塊的運行由主站來控制。CANopen協議棧主站還具有啟動中止總線節點,節點監測等特定功能。

圖4 CANopen協議的控制網絡
結合CANopen協議在機械臂控制系統中的應用實現過程,CANopen的初始化和組態過程如下:
1)主站和從站分別上電,從站自動進入準備預操作狀態;
2)主站初始化CAN 芯片;
3)主站根據EDS文件向從站發送SDO,對每個從站設備進行組態;
4)主站向從站發送NMT 命令,指示從站進入運行運行操作狀態;
5)主站和從站通過PDO和SYNC 數據交換控制變量和通訊信息。
本文把幾個有限的語音指令(左轉、右轉、上升、下降、加緊、放松)在嵌入式機器人控制系統平臺上通過識別和理解過程把語音指令轉化成對應的文本活命令,實現嵌入式語音指令控制機械臂控制系統,使之按說話者完成相應的運動。語音指令與對應的文本活命令之間的關系如下:左轉(0x01)、右轉(0x02)、上升(0x03)、下降(0x04)、加緊(0x05)、放松(0x06)。
下面通過一個例子來說明如何通過CANopen協議實現嵌入式語音指令對機械臂控制系統的控制過程。
使用下面的SDO消息如表1,表2,表3,表4所示。嵌入式機器人控制系統平臺把值0x01(左轉)通過CANopen協議傳輸到機械臂控制模塊控制器中的對應的對象字典中。比如:寫到節點 ID為2的對象字典中索引為0x1801,子索引為2的對象中去,使用啟動域下載協議,加速傳輸(1字節數據)。

表1 左轉節點2的報文Clientserver (節點#2)

表2 左轉節點2的報文Clientserver(節點#2)

通過SDO協議報文即可以實現語音指令的控制。在機械臂內部,通過讀取碼盤傳感器的數據來與設定值之間進行比較,來完成中止這次語音命令控制過程。實現過程正好和上面的過程相反。
使用下面的SDO消息,同樣的對象字典中索引0x1401,子索引為2的對象將被讀出,使用啟動域上傳協議,服務器使用加速傳輸方式應答(1字節數據):

表3 左轉節點2的報文Clientserver (節點#2)

表4 左轉節點2的報文Clientserver(節點#2)
其他的語音指令命令如右轉(0x02)、上升(0x03)、下降(0x04)、加緊(0x05)、放松(0x06)等也可以通過這個過程來實現。
通過在機械臂控制網絡中采用CANopen協議來傳遞控制參數比如語音指令等和碼盤等控制信息,可以達到很好的實時通訊和控制目的。
CAN總線在各個領域有著很好的應用前景,而基于CAN總線的高層協議CANopen 和CAN構成了一個完整的網絡協議,提高了CAN總線的利用率,增強了設備的可擴展性,提高了數據傳輸的可靠性。在機械臂控制系統中使用 CANopen 協議的方案能夠很好的為機械臂控制系統提供實時可靠的數據傳輸并具有良好的設備擴充能力和模塊獨立性。該方案為提高CANopen的應用提供了一種新的思路,為集成的和可傳輸的工業應用具有一定的借鑒意義。
[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總線的運動控制系統的設計 [J].計算機測量與控制,2005,13(7):683-685.
[4] 王付軍,陶維青.基于CAN的高層協議CANopen與Devicenet NET的比較[J].現代電子技術,2007,(4):111-117.
[5] 北京博控自動化有限公司.Canopen協議的實現[J].國內外機電一體化技術,2006,(3):30-32.
[6] Karl Ratcliff,CANopen Implementation Issues[J],The Institution of Electrical Engineers,1997.
[7] 郇極,楊斌,魏繼光.一種開放式的現場總線協議CANopen[J].制造業自動化,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
代訓康(1987 -),男,安徽宿州人,碩士,研究生,研究方向為計算機測控系統。