基于CANopen協(xié)議的救援機(jī)器人調(diào)試系統(tǒng)
在災(zāi)后救援現(xiàn)場,為實(shí)現(xiàn)廢墟環(huán)境下的靈活移動(dòng),增強(qiáng)對各種復(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)的要求,是評價(jià)救援機(jī)器人性能的一個(gè)重要指標(biāo)。為了對機(jī)器人各關(guān)節(jié)運(yùn)動(dòng)性能進(jìn)行測評,通過建立與機(jī)器人各關(guān)節(jié)控制器相連的運(yùn)動(dòng)控制主站,實(shí)現(xiàn)對關(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é)控制性能得以提高。針對運(yùn)動(dòng)控制中對各關(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主站,從而方便對電機(jī)驅(qū)動(dòng)器上的電機(jī)數(shù)據(jù)進(jìn)行監(jiān)測和處理,并發(fā)送調(diào)試系統(tǒng)所發(fā)出的命令;采用NI公司的Labview調(diào)試系統(tǒng)上位機(jī)的程序編寫。
2 CANopen從站設(shè)計(jì)
2.1 硬件設(shè)計(jì)
電機(jī)控制器用來對救援機(jī)器人關(guān)節(jié)進(jìn)行精確控制,是系統(tǒng)的關(guān)鍵??刂破鞑捎肕C56F8322微控制器作為控制核心,圖2為系統(tǒng)框圖。
電機(jī)控制器采集速度、電流、電壓三種參數(shù),各路采用PID閉環(huán)對電機(jī)進(jìn)行精確控制。CAN總線部分采用MC56F8322內(nèi)置MSCAN模塊,實(shí)現(xiàn)了現(xiàn)場總線控制系統(tǒng)的構(gòu)架;CAN總線收發(fā)器與控制器之間采用高速光電隔離器件6N137實(shí)現(xiàn)信號隔離;同時(shí)采用隔離型DC-DC變換器實(shí)現(xiàn)電源隔離,從而提高了現(xiàn)場抗干擾能力。除了以上主要部分以外,還有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è)置、對象字典的定義以及canDispatch()函數(shù)的調(diào)用即可。
CANopen協(xié)議的核心部分是對象字典(Object Dictionary),通過對象字典對設(shè)備功能進(jìn)行描述。CANopen對象字典是一個(gè)有序的對象組,每個(gè)對象采用一個(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ù)對象字典結(jié)構(gòu)應(yīng)定義在制造商特定規(guī)范區(qū)域2000h~5FFFh之間。如表1所示。
3 CANopen主站設(shè)計(jì)
CANopen協(xié)議采用對象字典(OD)、電子數(shù)據(jù)文檔(EDS)等概念來描述設(shè)備和協(xié)議的相關(guān)信息,還規(guī)定了網(wǎng)絡(luò)管理(NMT)、服務(wù)數(shù)據(jù)對象(SDO)、過程數(shù)據(jù)對象PDO等多種通信機(jī)制[1]。在CANopen主站中,利用LabVIEW實(shí)現(xiàn)了NMT、SDO和PDO等功能。
3.1 NMT
NMT是提供對網(wǎng)絡(luò)上所有節(jié)點(diǎn)的狀態(tài)和行為的控制及監(jiān)測機(jī)制,在CANopen網(wǎng)絡(luò)中只允許一個(gè)NMT主節(jié)點(diǎn)處于激活狀態(tài)。只有NMT主節(jié)點(diǎn)能夠傳送NMT模塊控制報(bào)文,所有從設(shè)備必須支持NMT模塊控制服務(wù)[1]。
通過NMT消息可以對節(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)用程序提供訪問對象字典的客戶接口。SDO是一種需要請求和應(yīng)答的點(diǎn)對點(diǎn)通信方式, 允許任意長度的數(shù)據(jù)通信[1]。PC機(jī)上管理控制系統(tǒng)采用SDO方式對通用溫度和整流器控制器參數(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)了對運(yùn)動(dòng)關(guān)節(jié)各項(xiàng)參數(shù)的實(shí)時(shí)監(jiān)控和控制,并且可以對電機(jī)控制參數(shù)進(jìn)行在線配置,對救援機(jī)器人的穩(wěn)定運(yùn)行提供了極大的保障。
評論