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