夏勇,葉曉東,趙江海
(1.中國科學院合肥物質(zhì)科學研究院先進制造技術(shù)研究所,江蘇 常州 213164;2.南通大學 電氣工程學院,江蘇 南通 226019)
CAN即控制器局域網(wǎng),是一種多主總線,被公認為最有前途的現(xiàn)場總線之一[1]。CAN協(xié)議一個最大特點是廢除了傳統(tǒng)的站地址編碼,取而代之的是對通信數(shù)據(jù)塊進行編碼[2]。CANopen是CAN網(wǎng)絡的一種應用層協(xié)議,是開放的、標準化的高層協(xié)議,是目前應用最廣泛的嵌入式網(wǎng)絡。CANopen建立在CAN的數(shù)據(jù)鏈路層之上,除了對應層規(guī)范(DS 301)進行定義外,CANopen還專門為不同的接口設備應用子協(xié)議定義了行規(guī)(DSP4),其中CiA 402是針對驅(qū)動裝置和運動控制裝置的設備規(guī)范。本文正是針對CANopen在伺服上的運用展開的。
CANopen協(xié)議包括對象字典(Object Dictionary,OD)、通信模型和設備模型三大部分,設備對象字典是中心概念[3]253。
CANopen設備如圖1所示,可以視作為一個抽象設備,一邊接CAN總線,另一邊接應用設備的I/O數(shù)據(jù)端口。應用部分設備制造商已經(jīng)提供了相關(guān)設備規(guī)范。為了訪問CANopen設備的對象字典,必須實現(xiàn)CANopen協(xié)議棧的相關(guān)功能[3]260。
圖1 CANopen設備模型
每個設備都擁有一個對象字典,對象字典提供了完全訪問應用程序的途徑,提供了設備使用的所有數(shù)據(jù)類型、通信參數(shù)、應用數(shù)據(jù)和參數(shù)配置。對象字典中常用索引:1000-1FFF,對應的對象為通訊子協(xié)議區(qū)域(如設備類型,錯誤寄存器,支持的PDO數(shù)量);索引:6000-9FFF,對應的對象為標準設備子協(xié)議區(qū)域(例如“DSP-402運動控制裝置的設備規(guī)范”中的控制字、速度、位置等)。
CANopen通訊模型定義了4種通訊對象:管理消息、服務數(shù)據(jù)對象、過程數(shù)據(jù)對象、預定義的消息或者特殊功能對象[4]。值得注意的是對象字典中對象的訪問是使用對象字典索引和子索引,通訊對象或者消息的訪問是通過 COB-ID。COB-ID本質(zhì)上還是標識符(CAN-ID),它只是被規(guī)劃了特殊的含義。
1.3.1 服務數(shù)據(jù)對象(Service Data Object,SDO)
SDO用來訪問一個設備的對象字典。訪問者被稱作客戶(client),被訪問且提供所請求的設備稱作服務器(Server)。SDO是以Server的角度去理解的,從服務器上獲得數(shù)據(jù)叫做上傳,往服務器上寫數(shù)據(jù)叫做下載。SDO主要用于一些實時性要求不高的數(shù)據(jù),一般用來配置和獲得節(jié)點的參數(shù)。
1.3.2 過程數(shù)據(jù)對象(Process Data Object,PDO)
PDO用來傳輸實時數(shù)據(jù),每個PDO在對象字典中用PDO通訊參數(shù)和PDO映射參數(shù)這2個對象描述。
通俗的講,PDO只是一個載體,它里面裝載什么對象是可以配置的,這些都是由PDO映射來完成。PDO映射用來把指定的對象字典裝進PDO,或者從接收的PDO中將數(shù)據(jù)放到配置的對象中。
PDO分為TPDO和RPDO,但都是針對從站來說的。TPDO:主站←從站;RPDO:主站→從站。
1.3.3 管理消息(Network Management,NMT)
管理消息包括 Boot- up 消息,Heartbeat協(xié)議以及 NMT[3]254。
CANopen狀態(tài)機定義了初始化狀態(tài),就緒狀態(tài),運行狀態(tài)和停止狀態(tài)。上電后每個CANopen節(jié)點處于初始化狀態(tài),然后自動轉(zhuǎn)入就緒狀態(tài),并發(fā)出Boot-up消息通知NMT主節(jié)點已經(jīng)到就緒狀態(tài)。在就緒狀態(tài)SDO傳輸是允許的。主節(jié)點發(fā)送NMT消息啟動從節(jié)點后,從節(jié)點就可以傳輸和發(fā)送PDO了。在停止狀態(tài),除了NMT消息外不允許傳輸和接收其他消息。
實驗平臺由上位機,USBCAN-2A,Accelnet伺服驅(qū)動器,伺服電機構(gòu)成,如圖2所示。
圖2 實驗平臺
上位機和CAN卡構(gòu)成CANopen主站,負責整個網(wǎng)路的監(jiān)控和管理,監(jiān)控伺服系統(tǒng)的運行狀態(tài),并將上位機運動規(guī)劃之后的運動參數(shù)發(fā)送給伺服。伺服系統(tǒng)構(gòu)成從站,從站主要是執(zhí)行主站發(fā)來的數(shù)據(jù)信息,并將必要的運動參數(shù)返回給主站進行相關(guān)的運動決策。
主站開發(fā)環(huán)境選用 VC6.0,主要實現(xiàn)兩部分內(nèi)容:1)實現(xiàn)CAN的數(shù)據(jù)通信;2)實現(xiàn)CANopen數(shù)據(jù)幀的解析。前者的實現(xiàn)主要是調(diào)用USBCAN-2A的接口函數(shù)庫,先打開CAN設備,然后對設備進行初始化,之后啟動CAN卡,最后進行數(shù)據(jù)發(fā)送和接收,函數(shù)調(diào)用流程如圖3所示。
后者的實現(xiàn)主要是對CAN數(shù)據(jù)幀的解析,這里的數(shù)據(jù)幀主要就是CANopen通訊模型定義的4種通訊對象。
對象字典中每個對象采用一個16位的索引值來尋址,為了允許訪問數(shù)據(jù)結(jié)構(gòu)中的單個元素,同時定義了一個8位的子索引[3]253。對象字典可用 SDO直接進行讀寫,也可以配置到 PDO映射中進行讀寫。
圖4為SDO的使用方法。以上傳和下載伺服控制器中參數(shù)目標速度為例,對象字典索引為60FF,子索引為00,大小為4字節(jié),值為0x3E8。對應的SDO操作信息如圖4所示。
圖3 接口庫函數(shù)使用流程
圖4 SDO的上傳和下載
返回的SDO命令字為80時為錯誤,具體的錯誤內(nèi)容可參見SDO錯誤碼。加速傳送機制,最多傳送4字節(jié)數(shù)據(jù)。大于4字節(jié)接著的數(shù)據(jù)都運用分段傳送結(jié)構(gòu)為SDO命令字+最多7字節(jié)數(shù)據(jù)[5],多個分段只由1個確認報文應答以增加總線吞吐量。
圖5為Copley伺服驅(qū)動器PDO配置方法。通訊參數(shù)和映射內(nèi)容為預定義,可以用 SDO進行讀取驗證,配置RPDO映射與TPDO類似,以TPDO2,Node-ID等于2為例,配置TPDO步驟如圖5所示。
實際運用當中,PDO傳輸類型常用的是:
(1)同步傳輸:在收到一個或者多個SYNC消息后觸發(fā)PDO發(fā)送[6]。
(2)定時發(fā)送:有別于SYNC,它是節(jié)點本身定時發(fā)送,通過設置通訊參數(shù)eventtime來實現(xiàn)。但是,并不是所有設備都支持這項服務。
(3)事件觸發(fā):當節(jié)點的某個時間發(fā)生觸發(fā)的一次數(shù)據(jù)發(fā)送,該方式是實時性最好的一種傳輸方式。
實驗中以伺服的兩種位置模式為例,驗證CANopen協(xié)議在伺服上的運用。上位機以SDO方式發(fā)送運動參數(shù),啟動遠程節(jié)點,配置控制字來啟動停止,控制界面在運動過程中定周期地發(fā)送SDO查詢實時位置,速度和電流等。若使用PDO方式,必須先啟動遠程節(jié)點,并設置相關(guān)通訊參數(shù)。伺服調(diào)試的控制界面如圖6所示。
圖5 TPDO配置
圖6 伺服調(diào)試的控制界面
離散位置模式經(jīng)過計算設定的參數(shù)是:梯形模式,目標位置:36 000 Counts,配置最大速度:3 000 r/min,最大加速度:1 000 r/s2,最大減速度:500 r/s2。通過實驗發(fā)現(xiàn)數(shù)據(jù)傳輸正確,伺服有較好的響應。實驗數(shù)據(jù)如圖7所示,圖中1表示目標位置,2表示配置的速度曲線,3表示實時速度曲線,4線表示實時位置。
圖7 離散位置模式曲線
為觀測伺服對CANopen協(xié)議的動態(tài)響應,又實驗了連續(xù)位置模式,通過計算設定的參數(shù)是:梯形模式,起始最大加速度:1 000 r/s2。最大速度:3 000 r/min。第二段最大加速度為333.33 r/s2。最大速度:4 000 r/min。最大減速度:1 333.33 r/s2。最終位置124 633 Counts。實驗結(jié)果如圖8所示,曲線顏色分配同上。通過實驗發(fā)現(xiàn)數(shù)據(jù)傳送無誤,伺服能按照計算的模式進行運動。最終位置由于上位機定時器的不精確有少量的偏差。
圖8 連續(xù)位置模式
CANopen面向?qū)ο蟮脑O計思想,協(xié)議公開透明,便于理解和開發(fā)的優(yōu)點,在多軸運動控制上是一種高效的數(shù)據(jù)傳輸方法。
本文利用CANopen協(xié)議實現(xiàn)了由上位機和USBCAN-2A組成的主站與從站數(shù)字伺服之間的數(shù)據(jù)通訊,通過實例驗證了CANopen協(xié)議在伺服控制上的可行性和較高的可靠性。同時,通過具體的實驗和系統(tǒng)調(diào)試為基于CANopen協(xié)議多電機運動控制的實現(xiàn)奠定了理論和實踐基礎。
[1]宋海亮 CAN總線的特點及發(fā)展趨勢[J].應用科學,2010(8):6-8.
[2]左永文.CAN總線通訊在汽車電子控制系統(tǒng)上的應用[J].計算機光盤軟件與應用,2012(4):92-93.
[3]史久根,張培仁,陳真勇.CAN現(xiàn)場總線系統(tǒng)設計技術(shù)[M].北京:國防工業(yè)出版社,2004:251-260.
[4]CAN in Automation.CANopen Application Layer and Communication Profile[S].CiA Draft Standard 301,Version 4.02,2002(2).
[5]鄧遵義,寧祎.基于CANopen協(xié)議的主節(jié)點通訊實現(xiàn)[J].微計算機信息,2008,25(23):62 -64,65.
[6]CAN in Automation.Device Profile Drivers and Motion Control[S].CiA Draft Standard Proposal 402,Version 2.0,2005(3).