摘 要: CANopen協(xié)議是由CAN-in-Automation(CiA)定義的標(biāo)準(zhǔn),并且在以CAN為基礎(chǔ)的工業(yè)系統(tǒng)領(lǐng)域中占著主導(dǎo)地位。本文以五軸機(jī)械手的設(shè)計(jì)實(shí)現(xiàn)為背景,結(jié)合CANopen協(xié)議在汽車電子和工業(yè)控制領(lǐng)域中的廣泛應(yīng)用,實(shí)現(xiàn)了對(duì)多電機(jī)系統(tǒng)的實(shí)時(shí)控制。文中提供的以CAN總線控制多個(gè)伺服電機(jī)的設(shè)計(jì)方法,使得硬件電路的設(shè)計(jì)得到很大簡(jiǎn)化,同時(shí)也使得通信效率和可靠性得到大幅提升。本方案在實(shí)際運(yùn)行中已經(jīng)得到充分的驗(yàn)證,對(duì)工業(yè)控制領(lǐng)域有著實(shí)際的應(yīng)用指導(dǎo)意義。
關(guān)鍵詞: CAN;CANopen;多電機(jī)系統(tǒng)控制;現(xiàn)場(chǎng)總線
0 引言
CAN(Controller Area Network,控制器局域網(wǎng))總線是由德國(guó)Bosch公司設(shè)計(jì)的,是一種技術(shù)先進(jìn)、可靠性高、成本低的網(wǎng)絡(luò)通信控制方式。它在離散控制領(lǐng)域得到了廣泛應(yīng)用,是唯一成為國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線[1]。由于CAN只定義了OSI網(wǎng)絡(luò)模型中的第一層(物理層)和第二層(數(shù)據(jù)鏈路層),沒有應(yīng)用層,所以需要高層協(xié)議來具體定義CAN報(bào)文的使用。CANopen協(xié)議是基于CAL協(xié)議的擴(kuò)展,是目前基于CAN的高層通信協(xié)議的一種。CANopen是由CAN-in-Automation(CiA)定義的標(biāo)準(zhǔn),并且在以CAN為基礎(chǔ)的工業(yè)系統(tǒng)領(lǐng)域中占著主導(dǎo)地位[2]。CANopen專門為不同的接口設(shè)備應(yīng)用子協(xié)議定義了行規(guī)(DSP4),其中CiA402是針對(duì)驅(qū)動(dòng)裝置和運(yùn)動(dòng)控制裝置的設(shè)備規(guī)范。本文就是根據(jù)CANopen協(xié)議在伺服驅(qū)動(dòng)設(shè)備上的應(yīng)用進(jìn)行展開討論的。
1 CANopen通信協(xié)議簡(jiǎn)析
CANopen的參考模型如圖1所示。由此圖可以看出CANopen是以CAN為基礎(chǔ)的,CAN數(shù)據(jù)鏈路層提供具有標(biāo)示符的報(bào)文的廣播服務(wù),所以報(bào)文不是發(fā)送到某一個(gè)遠(yuǎn)程節(jié)點(diǎn)的特定的應(yīng)用程序。實(shí)際上,每個(gè)應(yīng)用程序只需要根據(jù)報(bào)文的標(biāo)示符決定是否接受通信對(duì)象所攜帶的數(shù)據(jù),這種特性決定了CAN網(wǎng)絡(luò)是一種基于報(bào)文的協(xié)議,而CANopen協(xié)議中的服務(wù)對(duì)象就是CAN網(wǎng)絡(luò)中傳輸?shù)腃AN報(bào)文。
CANopen的設(shè)備模型如圖2所示。從圖中可以看出,一個(gè)CAN設(shè)備主要分為三部分:通信接口、對(duì)象字典、應(yīng)用程序。通信接口主要定義了四種不同種類的通信對(duì)象:服務(wù)數(shù)據(jù)對(duì)象、過程數(shù)據(jù)對(duì)象、網(wǎng)絡(luò)管理對(duì)象和特殊功能對(duì)象,用來實(shí)現(xiàn)通信、網(wǎng)絡(luò)管理和緊急情況處理等功能[3]。這四類通信對(duì)象(COB)都是由一個(gè)或多個(gè)報(bào)文實(shí)現(xiàn)的。過程數(shù)據(jù)對(duì)象(PDO消息)用來傳輸實(shí)時(shí)的數(shù)據(jù);服務(wù)數(shù)據(jù)對(duì)象(SDO服務(wù)器消息和SDO客戶端消息)用來配置網(wǎng)絡(luò)參數(shù)和訪問節(jié)點(diǎn)的對(duì)象字典,建立兩個(gè)CANopen設(shè)備之間的客戶/服務(wù)器的關(guān)系;網(wǎng)絡(luò)管理對(duì)象(NMT)負(fù)責(zé)網(wǎng)絡(luò)的啟動(dòng)和監(jiān)控設(shè)備;特殊功能對(duì)象是指同步(SYNC)、時(shí)間標(biāo)記對(duì)象、緊急事件、節(jié)點(diǎn)保護(hù)。
CANopen對(duì)象字典(Object Dictionary,OD)是CANopen協(xié)議最為核心的概念。對(duì)象字典就是通過網(wǎng)絡(luò)讀取一組提前定義好的對(duì)象,相當(dāng)于一個(gè)參數(shù)列表,每一個(gè)對(duì)象是用一個(gè)16位的索引和8位的子索引來定位。為了允許訪問數(shù)據(jù)結(jié)構(gòu)中的單個(gè)元素,同時(shí)也定義了一個(gè)8位的子索引。對(duì)象字典是所有數(shù)據(jù)結(jié)構(gòu)的集合,這些數(shù)據(jù)結(jié)構(gòu)涉及設(shè)備的應(yīng)用程序、通信以及狀態(tài)機(jī),也是通信接口與應(yīng)用程序之間的接口。
CANopen由一系列稱為子協(xié)議的文檔組成,這些子協(xié)議主要分為3類,分別是通信子協(xié)議、制造商自定義子協(xié)議和設(shè)備子協(xié)議。子協(xié)議描述對(duì)象字典中的每個(gè)對(duì)象的功能、名字、索引、子索引、數(shù)據(jù)類型、讀寫屬性,以及這個(gè)對(duì)象是否必須等待,從而保證不同制造商的同類設(shè)備能夠相互兼容。根據(jù)這些協(xié)議生產(chǎn)CANopen設(shè)備能夠?qū)崿F(xiàn)不同廠商產(chǎn)品之間的互操作,大大降低了系統(tǒng)通信的開發(fā)難度[4-6]。
2 機(jī)械手的實(shí)現(xiàn)
機(jī)械手主要有三部分組成:手部、運(yùn)動(dòng)機(jī)構(gòu)、控制系統(tǒng)。手部是指用來抓取物體的部件;運(yùn)動(dòng)機(jī)構(gòu)使手部完成各種規(guī)定動(dòng)作;控制系統(tǒng)通過對(duì)各個(gè)電機(jī)的控制來完成所需要的規(guī)定動(dòng)作,同時(shí)通過接收反饋的信息形成閉環(huán)控制??刂葡到y(tǒng)是機(jī)械手實(shí)現(xiàn)的關(guān)鍵部分,本文主要設(shè)計(jì)實(shí)現(xiàn)的是控制系統(tǒng)。
隨著現(xiàn)場(chǎng)總線在工業(yè)控制領(lǐng)域中越來越廣泛的應(yīng)用,以及控制系統(tǒng)向著網(wǎng)絡(luò)化、開放性的方向發(fā)展,所以本文也采用總線的方式進(jìn)行設(shè)計(jì)??刂葡到y(tǒng)與外部設(shè)備的通信分別采用以太網(wǎng)總線和CAN總線。本文設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)如圖3所示。
由圖3可以看出,該系統(tǒng)主要由4部分組成:手持器、控制電路、電機(jī)驅(qū)動(dòng)器及電機(jī)。其運(yùn)行過程大致是手持器通過以太網(wǎng)接口把相應(yīng)的動(dòng)作指令發(fā)給控制電路,該過程采用LWIP協(xié)議;然后控制電路在接收到指令之后,開始解析指令,再通過CAN接口給伺服電機(jī)驅(qū)動(dòng)器發(fā)送指令,該過程采用CANopen協(xié)議;伺服驅(qū)動(dòng)器在得到指令后開始驅(qū)動(dòng)電機(jī),在電機(jī)到達(dá)指定位置后停止。整個(gè)系統(tǒng)運(yùn)行過程中,如何實(shí)現(xiàn)對(duì)5個(gè)電機(jī)的實(shí)時(shí)控制是整個(gè)系統(tǒng)的關(guān)鍵。為保證數(shù)據(jù)在傳輸過程中的可靠性和實(shí)時(shí)性,系統(tǒng)在設(shè)計(jì)時(shí)采用了CAN接口和以太網(wǎng)接口[7]。
3 機(jī)械手CANopen通信的設(shè)計(jì)與實(shí)現(xiàn)
3.1 CANopen通信的硬件設(shè)計(jì)
由圖3可以看出,CANopen通信是在控制電路和電機(jī)驅(qū)動(dòng)器之間實(shí)現(xiàn)的。CANopen只是一個(gè)應(yīng)用層的規(guī)范協(xié)議,與具體總線的物理實(shí)現(xiàn)無關(guān)。由圖1 CANopen的參考模型可以看出,CANopen是以CAN為基礎(chǔ)的,所以CANopen的硬件實(shí)現(xiàn)實(shí)際是CAN總線的設(shè)計(jì)實(shí)現(xiàn)。電機(jī)驅(qū)動(dòng)器自身支持CANopen協(xié)議,所以硬件實(shí)現(xiàn)的關(guān)鍵是控制電路能符合CANopen協(xié)議。CAN的硬件實(shí)現(xiàn)包括兩個(gè)部分:與OSI模型中數(shù)據(jù)鏈路層和物理層分別對(duì)應(yīng)的CAN控制器和CAN收發(fā)器的實(shí)現(xiàn)。本文采用基于Cortex-M4內(nèi)核的STM32系列芯片作為控制電路的MCU,該芯片內(nèi)有CAN控制器,并且完全支持CAN協(xié)議2.0。CAN收發(fā)器選用CTM1050T,其內(nèi)部集成了CAN隔離及收發(fā)器件,將CAN控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平,同時(shí)具有隔離功能機(jī)ESD保護(hù)作用。CAN通信硬件結(jié)構(gòu)如圖4所示[8]。
3.2 CANopen通信程序設(shè)計(jì)
CAN通信硬件設(shè)計(jì)完成后能夠?qū)崿F(xiàn)設(shè)備之間的報(bào)文通信,但是仍需對(duì)傳輸?shù)臄?shù)據(jù)內(nèi)容進(jìn)行定義,主要包括數(shù)據(jù)內(nèi)容的傳輸格式以及數(shù)據(jù)讀取規(guī)則。本部分主要介紹控制電路與伺服電機(jī)驅(qū)動(dòng)器之間CAN通信程序的設(shè)計(jì),程序采用CANopen協(xié)議中的服務(wù)數(shù)據(jù)對(duì)象SDO(Service Data Object)數(shù)據(jù)傳輸機(jī)制。采用該機(jī)制是因?yàn)镾DO為每個(gè)消息都生成一個(gè)應(yīng)答,這樣可以保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。同時(shí)通過每5 ms查詢一次的方式來確保數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。CANopen通信程序設(shè)計(jì)流程圖如圖5所示。首先對(duì)控制電路的CAN接口進(jìn)行配置,選擇波特率,完成CAN接口的初始化。電機(jī)驅(qū)動(dòng)器節(jié)點(diǎn)的配置是通過驅(qū)動(dòng)器的面板進(jìn)行設(shè)定,把各節(jié)點(diǎn)配置為可操作模式,然后再根據(jù)傳送過來的數(shù)據(jù)對(duì)伺服驅(qū)動(dòng)器進(jìn)行相應(yīng)的配置。在整個(gè)通信過程中,由于伺服電機(jī)驅(qū)動(dòng)器內(nèi)部集成標(biāo)準(zhǔn)的CANopen協(xié)議,所以控制電路所發(fā)的數(shù)據(jù)要按照CANopen協(xié)議中的規(guī)定發(fā)送才能被伺服電機(jī)驅(qū)動(dòng)器識(shí)別。同時(shí)這也簡(jiǎn)化了控制電路關(guān)于CANopen協(xié)議方面的程序設(shè)計(jì),使得研發(fā)周期大大縮短。
4 結(jié)束語
CANopen是一個(gè)應(yīng)用層的規(guī)范協(xié)議,與具體總線的物理實(shí)現(xiàn)無關(guān)。CANopen已經(jīng)發(fā)展成具有高度靈活性的標(biāo)準(zhǔn)化嵌入式網(wǎng)絡(luò),基于它提出和實(shí)現(xiàn)的對(duì)象字典、設(shè)備規(guī)范等概念對(duì)現(xiàn)場(chǎng)總線技術(shù)的發(fā)展起到了重要作用。本文主要設(shè)計(jì)實(shí)現(xiàn)了基于CANopen協(xié)議的五軸機(jī)械手控制系統(tǒng),為CANopen協(xié)議在多電機(jī)控制系統(tǒng)的設(shè)計(jì)提供了一種方案,對(duì)工業(yè)控制領(lǐng)域具有實(shí)際的應(yīng)用意義。
參考文獻(xiàn)
[1] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1996.
[2] 李澄,趙輝,聶保錢.基于CANopen協(xié)議實(shí)現(xiàn)多電機(jī)系統(tǒng)實(shí)時(shí)控制[J].微電機(jī),2009,42(9):53-56.
[3] 呂京建,張宏韜.CAN總線的淺析-CANopen協(xié)議[J].電子產(chǎn)品世界,2002(17):25-27.
[4] CAN in Automation. Application Layer and Communication Profile[S]. CiA Draft Standard 301 Version 4.02, 2002.
[5] 王峰.基于嵌入式系統(tǒng)的CANopen協(xié)議分析研究[D].天津:天津理工大學(xué),2010.
[6] 夏勇,葉曉東,趙江海.基于CANopen協(xié)議的數(shù)字伺服控制[J].電氣自動(dòng)化,2014,36(1):57-59.
[7] 趙建光,楊建武,孫樹文.基于CANopen協(xié)議的I/O從站的開發(fā)與應(yīng)用[J].微計(jì)算機(jī)信息,2007,23(8):9-11.
[8] 史久根,張培仁,陳真勇.CAN現(xiàn)場(chǎng)總線系統(tǒng)設(shè)計(jì)技術(shù)[M].北京:國(guó)防工業(yè)出版社,2004.