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