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