文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2011)07-0054-03
在災(zāi)后救援現(xiàn)場(chǎng),,為實(shí)現(xiàn)廢墟環(huán)境下的靈活移動(dòng),,增強(qiáng)對(duì)各種復(fù)雜地形的適應(yīng)性,機(jī)器人需要具有多個(gè)關(guān)節(jié),,并且各關(guān)節(jié)需要獨(dú)立運(yùn)動(dòng),。在搜索和救援過程中,為了能在諸如陡坡,、樓梯,、管道及廢墟等復(fù)雜環(huán)境下自由移動(dòng),要求機(jī)器人具備多種運(yùn)動(dòng)姿態(tài)并且能迅速改變姿態(tài)以滿足不同環(huán)境的需求,。因此要求機(jī)器人的各關(guān)節(jié)具有良好的運(yùn)動(dòng)特性,。
關(guān)節(jié)運(yùn)動(dòng)性能的好壞決定了機(jī)器人能否適應(yīng)在復(fù)雜環(huán)境中靈活運(yùn)動(dòng)的要求,是評(píng)價(jià)救援機(jī)器人性能的一個(gè)重要指標(biāo),。為了對(duì)機(jī)器人各關(guān)節(jié)運(yùn)動(dòng)性能進(jìn)行測(cè)評(píng),,通過建立與機(jī)器人各關(guān)節(jié)控制器相連的運(yùn)動(dòng)控制主站,實(shí)現(xiàn)對(duì)關(guān)節(jié)控制器的組態(tài)與監(jiān)視,,并通過分析機(jī)器人運(yùn)動(dòng)關(guān)節(jié)反饋回的數(shù)據(jù)優(yōu)化控制參數(shù),,使得運(yùn)動(dòng)關(guān)節(jié)控制性能得以提高。針對(duì)運(yùn)動(dòng)控制中對(duì)各關(guān)節(jié)電機(jī)控制實(shí)時(shí)性與同步性以及結(jié)構(gòu)靈活性的要求,,提出了一種基于CANopen協(xié)議的救援機(jī)器人調(diào)試系統(tǒng)。
CANopen為基于CAN的高層協(xié)議,,是最初由BOSCH公司提出的一種串行數(shù)據(jù)通信總線,。其具有可靠性高,、抗干擾性強(qiáng)、開發(fā)簡單,、造價(jià)低廉及其短幀傳輸和無破壞仲裁技術(shù)等特點(diǎn),,應(yīng)用極為廣泛。CANopen是一個(gè)基于CAL的子協(xié)議,,采用面向?qū)ο蟮乃枷朐O(shè)計(jì),,具有很好的模塊化特性和很高的適應(yīng)性,通過擴(kuò)展可以適用于大量的應(yīng)用領(lǐng)域[1],。
1 方案設(shè)計(jì)
圖1所示為救援機(jī)器人調(diào)試系統(tǒng)框圖,,包含電機(jī)控制器、基于CAN總線的網(wǎng)絡(luò)構(gòu)架和PC機(jī)上的調(diào)試系統(tǒng),。
電機(jī)驅(qū)動(dòng)器控制方法采用了三個(gè)基本控制環(huán),,即位置環(huán)、轉(zhuǎn)速環(huán)和轉(zhuǎn)矩環(huán),,各閉環(huán)采用PID算法控制,,以便更加精確地控制電機(jī);同時(shí)建立了CANopen從站,,通過CAN總線將各電機(jī)驅(qū)動(dòng)器和PC機(jī)上的調(diào)試軟件之間進(jìn)行數(shù)據(jù)交換,;PC機(jī)則通過PCI-CAN卡實(shí)現(xiàn)了CANopen主站,從而方便對(duì)電機(jī)驅(qū)動(dòng)器上的電機(jī)數(shù)據(jù)進(jìn)行監(jiān)測(cè)和處理,,并發(fā)送調(diào)試系統(tǒng)所發(fā)出的命令,;采用NI公司的Labview調(diào)試系統(tǒng)上位機(jī)的程序編寫。
2 CANopen從站設(shè)計(jì)
2.1 硬件設(shè)計(jì)
電機(jī)控制器用來對(duì)救援機(jī)器人關(guān)節(jié)進(jìn)行精確控制,,是系統(tǒng)的關(guān)鍵,。控制器采用MC56F8322微控制器作為控制核心,,圖2為系統(tǒng)框圖,。
電機(jī)控制器采集速度、電流,、電壓三種參數(shù),,各路采用PID閉環(huán)對(duì)電機(jī)進(jìn)行精確控制。CAN總線部分采用MC56F8322內(nèi)置MSCAN模塊,,實(shí)現(xiàn)了現(xiàn)場(chǎng)總線控制系統(tǒng)的構(gòu)架,;CAN總線收發(fā)器與控制器之間采用高速光電隔離器件6N137實(shí)現(xiàn)信號(hào)隔離;同時(shí)采用隔離型DC-DC變換器實(shí)現(xiàn)電源隔離,,從而提高了現(xiàn)場(chǎng)抗干擾能力,。除了以上主要部分以外,還有CPU監(jiān)控器、功能選擇開關(guān)以及LED指示部分,。LED分別用于電源指示,、CAN接口當(dāng)前的收發(fā)狀態(tài)指示以及接口的通信故障(如總線關(guān)閉)指示。
2.2 軟件設(shè)計(jì)
CANopen從站移植了CANopen協(xié)議的開源代碼CanFestival,,該開源代碼實(shí)現(xiàn)了CANopen協(xié)議的全部內(nèi)容,。在系統(tǒng)軟件設(shè)計(jì)時(shí),只需完成CAN的硬件設(shè)置,、對(duì)象字典的定義以及canDispatch()函數(shù)的調(diào)用即可,。
CANopen協(xié)議的核心部分是對(duì)象字典(Object Dictionary),通過對(duì)象字典對(duì)設(shè)備功能進(jìn)行描述,。CANopen對(duì)象字典是一個(gè)有序的對(duì)象組,,每個(gè)對(duì)象采用一個(gè)16位的索引來尋址,其范圍在0x1000~0x9FFF之間,。為了允許訪問數(shù)據(jù)結(jié)構(gòu)中的單個(gè)元素,,定義了一個(gè)8 bit的子索引。CANopen設(shè)備的功能及特性用電子數(shù)據(jù)表單(EDS)的形式描述,,實(shí)際的設(shè)備設(shè)置通過設(shè)備配置文件(DCF)進(jìn)行描述[1],。系統(tǒng)中電機(jī)的速度、電流,、電壓是最重要的監(jiān)控信息,,故將其定義在如下結(jié)構(gòu)體中:
typedef struct{
float voltage; //電壓
float Current,; //電流
float velocity,; //速度
}MotorPara;
本系統(tǒng)的電機(jī)控制器是以非標(biāo)準(zhǔn)設(shè)備設(shè)計(jì)的,,根據(jù)對(duì)象字典結(jié)構(gòu)應(yīng)定義在制造商特定規(guī)范區(qū)域2000h~5FFFh之間,。如表1所示。
3 CANopen主站設(shè)計(jì)
CANopen協(xié)議采用對(duì)象字典(OD),、電子數(shù)據(jù)文檔(EDS)等概念來描述設(shè)備和協(xié)議的相關(guān)信息,,還規(guī)定了網(wǎng)絡(luò)管理(NMT)、服務(wù)數(shù)據(jù)對(duì)象(SDO),、過程數(shù)據(jù)對(duì)象PDO等多種通信機(jī)制[1],。在CANopen主站中,利用LabVIEW實(shí)現(xiàn)了NMT,、SDO和PDO等功能,。
3.1 NMT
NMT是提供對(duì)網(wǎng)絡(luò)上所有節(jié)點(diǎn)的狀態(tài)和行為的控制及監(jiān)測(cè)機(jī)制,在CANopen網(wǎng)絡(luò)中只允許一個(gè)NMT主節(jié)點(diǎn)處于激活狀態(tài),。只有NMT主節(jié)點(diǎn)能夠傳送NMT模塊控制報(bào)文,,所有從設(shè)備必須支持NMT模塊控制服務(wù)[1]。
通過NMT消息可以對(duì)節(jié)點(diǎn)狀態(tài)進(jìn)行操作,LabVIEW中的具體實(shí)現(xiàn)如圖3所示,。首先根據(jù)NMT消息格式通過數(shù)組函數(shù)將COB-ID,、RTR、LEN,、Node-ID及STATUS捆綁為U8數(shù)組,由于VISA僅支持U8字符串發(fā)送數(shù)據(jù),,因此需要將U8數(shù)組轉(zhuǎn)換為U8字符串,。然后調(diào)用VISA Write函數(shù)實(shí)現(xiàn)USB的數(shù)據(jù)發(fā)送。
3.2 SDO
SDO采用客戶(Client)/服務(wù)器(Server)通信方式, 通過索引和子索引向應(yīng)用程序提供訪問對(duì)象字典的客戶接口,。SDO是一種需要請(qǐng)求和應(yīng)答的點(diǎn)對(duì)點(diǎn)通信方式, 允許任意長度的數(shù)據(jù)通信[1],。PC機(jī)上管理控制系統(tǒng)采用SDO方式對(duì)通用溫度和整流器控制器參數(shù)進(jìn)行配置, 完成控制器工藝參數(shù)的配置和控制模式的切換等。
CANopen協(xié)議規(guī)定SDO消息為8 B長度,,第1個(gè)字節(jié)為命令碼,,第2、3個(gè)字節(jié)為索引,,第4個(gè)字節(jié)為子索引,,其余字節(jié)為消息所攜帶的數(shù)據(jù)。與NMT消息處理類似,,SDO消息也是先通過數(shù)組函數(shù)根據(jù)SDO的消息格式創(chuàng)建一個(gè)U8數(shù)組,,之后將數(shù)組轉(zhuǎn)換為U8字符串,最后通過USB發(fā)送,。具體實(shí)現(xiàn)如圖4所示,。
在CANopen通信機(jī)制中,服務(wù)器收到SDO信息后必將應(yīng)答,,所以主站必須處理服務(wù)器返回的SDO消息,。消息的處理過程為,首先根據(jù)COB-ID攜帶的功能碼判斷是否為SDO消息,,然后判斷SDO消息中的命令字字節(jié),,根據(jù)不同的命令字做出相應(yīng)的處理。
3.3 PDO
PDO采用生產(chǎn)者/消費(fèi)者通信方式, 數(shù)據(jù)從一個(gè)生產(chǎn)者傳到一個(gè)或多個(gè)消費(fèi)者,,數(shù)據(jù)長度限制在8個(gè)字節(jié)之內(nèi),。PDO 通信沒有協(xié)議規(guī)定, PDO報(bào)文的內(nèi)容是預(yù)定義或者在網(wǎng)絡(luò)啟動(dòng)時(shí)配置,因此多用于實(shí)時(shí)數(shù)據(jù)傳輸,,工藝過程中工藝參數(shù)的傳送由PDO實(shí)現(xiàn),。CANopen中定義的PDO消息與正常的CAN幀格式相同, LabVIEW下實(shí)現(xiàn)方法可參考NMT及SDO,。
調(diào)試系統(tǒng)上位機(jī)可以監(jiān)視在不同的PID參數(shù)控制時(shí)電機(jī)的響應(yīng)特性,,從而為控制參數(shù)優(yōu)化提供直觀的依據(jù)。由此可見,基于CANopen網(wǎng)絡(luò)的救援機(jī)器人調(diào)試系統(tǒng)成功地實(shí)現(xiàn)了對(duì)運(yùn)動(dòng)關(guān)節(jié)各項(xiàng)參數(shù)的實(shí)時(shí)監(jiān)控和控制,,并且可以對(duì)電機(jī)控制參數(shù)進(jìn)行在線配置,,對(duì)救援機(jī)器人的穩(wěn)定運(yùn)行提供了極大的保障。
參考文獻(xiàn)
[1] Boterenbrood H.CANopen high-level protocol for CAN-bus[C].N IKHFF Internal Documentation,,2000(9).
[2] 王俊波,,胥布工.CANopen協(xié)議分析與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006,,22(6-2):104-106.