何明超,曹其新,冷春濤
(上海交通大學(xué)機械與動力工程學(xué)院機器人所,上海 200240)
基于μC/OS-III的工業(yè)機器人嵌入式實時控制系統(tǒng)*
何明超,曹其新,冷春濤
(上海交通大學(xué)機械與動力工程學(xué)院機器人所,上海 200240)
針對工業(yè)機器人控制系統(tǒng)的發(fā)展趨勢和國內(nèi)運動控制器的落后現(xiàn)狀,提出了一種以μC/OS-III實時操作系統(tǒng)作為軟件平臺的機器人控制系統(tǒng)。該系統(tǒng)采用單處理器架構(gòu),利用嵌入式高性能MCU給控制系統(tǒng)提供運算和接口通訊保障,系統(tǒng)軟件采用模塊化設(shè)計,各模塊分配不同的優(yōu)先級,利用μC/OS-III強大的任務(wù)管理功能來保證系統(tǒng)的實時運轉(zhuǎn)。利用μC/OS-III提供的API,采用標準C語言進行編程,可以任意添加和刪除任務(wù)模塊,具有很好的開放性和拓展性,用戶可以方便的自定義控制系統(tǒng)功能和控制算法。通過實驗驗證,基于μC/OS-III的工業(yè)機器人嵌入式實時系統(tǒng)能夠滿足工業(yè)機器人對實時性的要求。
μC/OS-III;機器人控制系統(tǒng);實時系統(tǒng)
控制系統(tǒng)是工業(yè)機器人的核心部分,是決定工業(yè)機器人性能的重要因素。我國工業(yè)機器人研究起步較晚,經(jīng)過幾十年的發(fā)展,已經(jīng)攻克了工業(yè)機器人的一些關(guān)鏈技術(shù),研制出適用于搬運、焊接、噴涂等多種工作的工業(yè)機器人。然而,國產(chǎn)控制器與國外產(chǎn)品還有較大差距,國內(nèi)研制的控制器多為PC+運動控制卡結(jié)構(gòu)[1-2],這些控制器往往結(jié)構(gòu)復(fù)雜,可靠性較差,且價格昂貴。面對已經(jīng)來臨的工業(yè)4.0時代[3]和智能工廠的發(fā)展方向,工業(yè)機器人控制系統(tǒng)已經(jīng)朝著嵌入式、開放化、低成本的方向發(fā)展。國外廠商走在了前面,KUKA公司于2011年推出的新一代控制器KR C4[4],采用多核處理器和軟件功能來取代具有很大使用限制性的專用硬件,具有絕對的開放性和未來的兼容性[5]。
與此同時,工業(yè)機器人正朝著高速、重載方向發(fā)展,要求控制器需要有很好的硬實時性,硬實時操作系統(tǒng)成為控制器軟件部分必須采用的操作系統(tǒng)。KUKA公司的機器人控制器采用了VxWin實時操作系統(tǒng)來實現(xiàn)系統(tǒng)硬實時控制[6],保證機器人系統(tǒng)的可靠性。在國內(nèi),μC/OS-II系統(tǒng)也被應(yīng)用于工業(yè)機器人控制器中[7]。
隨著近些年微控制器的飛速發(fā)展,開放ARM Cortex內(nèi)核、集成DSP功能、同時擁有許多外設(shè)、更多的I/O引腳、能夠滿足不同的接口和總線并具有信號處理能力的微控制器為單一處理器芯片結(jié)構(gòu)的機器人嵌入式控制器提供了可行性。相比使用PC架構(gòu)的機器人控制器[8-9],嵌入式控制器擁有更低的成本,更簡單可靠的結(jié)構(gòu)、更小的體積和發(fā)熱。利用實時操作系統(tǒng)和MCU配合,開發(fā)適用于機器人控制的軟件和算法,這是國內(nèi)機器人控制器一個可行的發(fā)展方向。
本文介紹一種基于Micrium公司新一代嵌入式實時操作系統(tǒng)μC/OS-III的開放式工業(yè)機器人控制系統(tǒng)。該系統(tǒng)硬件使用ARM Cortex-M4架構(gòu)的高性能MCU作為唯一處理器,不需要其他處理器進行相關(guān)運算,系統(tǒng)架構(gòu)簡單且成本較低。系統(tǒng)軟硬件均采用模塊化設(shè)計,有很好的實時性、可擴展性和開放性。
工業(yè)機器人控制系統(tǒng)是一個多任務(wù)并行并具有很高實時性的系統(tǒng)。目前主流控制系統(tǒng)大致分為兩種結(jié)構(gòu)[10]。一是多處理器主從式的控制系統(tǒng)。主機一般為IPC,使用INTEL的CPU,運行的是非實時操作系統(tǒng),例如windows。在主CPU中主要運算一些非實時任務(wù)。從機可能是運動控制卡或運動控制器,負責(zé)執(zhí)行伺服控制等實時性高的任務(wù),其CPU一般為嵌入式的DSP,負責(zé)復(fù)雜的信號處理和伺服控制等運算,再加上FPGA芯片負責(zé)系統(tǒng)I/O信號處理。第二種系統(tǒng)結(jié)構(gòu)是單處理器配合實時操作系統(tǒng)。在這種控制器中,所有的任務(wù)都要在一個CPU上進行,這就對各個任務(wù)如何合理使用CPU時間提出了很高的要求。一開始的機器人多采用單個處理器,但由于當(dāng)時處理器性能不高,且不能運行實時操作系統(tǒng),難以滿足對機器人實時性以及復(fù)雜的伺服控制的要求。所以隨著時間的推移,多處理器結(jié)構(gòu)占據(jù)了主流。近年來,嵌入式實時操作系統(tǒng)的發(fā)展給單機處理器完成機器人控制任務(wù)提供了可能。通過實時操作系統(tǒng)對所有任務(wù)進行CPU時間分配,達到多任務(wù)并行處理的效果和極短的中斷響應(yīng)時間,可以達到機器人控制需求。
本文開發(fā)的工業(yè)機器人控制系統(tǒng)中的運動控制器是采用上述第二種結(jié)構(gòu),采用意法半導(dǎo)體公司的STM32F4高性能MCU作為控制器處理器,以嵌入式實時操作系統(tǒng)μC/OS-III作為軟件平臺,在系統(tǒng)中加入不同的任務(wù)模塊,完成對四軸搬運機器人的運動控制。μC/OS-III是Micrium公司推出的第三代實時操作系統(tǒng)[11],不同于前一代μC/OS-II,專門對Cortex-M4內(nèi)核CPU進行優(yōu)化,能夠利用Cortex-M4的NVIC實現(xiàn)硬件級的中斷響應(yīng)。同時,能夠?qū)崿F(xiàn)1ms的系統(tǒng)時鐘節(jié)拍,具有搶占式和時間片輪轉(zhuǎn)任務(wù)切換,支持無限個進程優(yōu)先級,能夠以最短的時間進入中斷,每個任務(wù)之間的切換時間為微秒級別。同時它采用標準C語言進行編寫,方便用戶進行編程,任務(wù)增減和算法修改。工業(yè)機器人控制系統(tǒng)結(jié)構(gòu)如圖1所示。
STM32F4是采用當(dāng)下最高性能的Cortex-M4微控制器內(nèi)核的MCU,通過MCU自身具有PWM波形生成功能的定時器生成PWM互補信號,發(fā)送給伺服驅(qū)動器來控制伺服電機;通過帶有增量編碼器接口功能的定時器計算驅(qū)動器返回的增量編碼器AB向脈沖信息,由此可計算得到電機每個時刻的位置、速度、加速度信息;通過擁有5V容忍的I/O引腳處理機器人系統(tǒng)數(shù)字輸入信號以及給機器人系統(tǒng)發(fā)送數(shù)字輸出信號;通過MCU自身的A/D外設(shè)將傳感器信號轉(zhuǎn)為MCU可以識別的數(shù)字量;通過MCU的USART外設(shè)與示教器進行串口通信。此外,MCU提供的CAN總線和Ethernet接口使機器人系統(tǒng)具有可拓展性,可以連接其他各種設(shè)備進行通信。由于STM32F4自身帶有的多種外部設(shè)備和相當(dāng)數(shù)量的I/O接口,不需要再添加其他的外設(shè)芯片便可以滿足一臺工業(yè)機器人的控制需要。大大減少了控制器結(jié)構(gòu)的復(fù)雜程度,降低了成本。
控制系統(tǒng)對輸入數(shù)字信號的處理和伺服電機的控制等都在μC/OS-III中編寫用戶應(yīng)用代碼來完成。要使用μC/OS-III,首先要完成μC/OS-III在STM32F4上的移植。這其中涉及對源代碼中與CPU相關(guān)的代碼的修改,包括μC/OS-III中CPU相關(guān)代碼和μC/CPU中相關(guān)代碼。移植好后,通過系統(tǒng)配置模塊來給μC/ OS-III相應(yīng)模塊和用戶代碼文件進行參數(shù)設(shè)置,便可在μC/OS-III系統(tǒng)下,利用μC/OS-III提供的豐富的API函數(shù)來編寫用戶任務(wù)代碼。BSP文件包含控制板上所有外設(shè)的初始化,這樣用戶才能使用這些外設(shè)來輸出輸入相應(yīng)的信號。對用戶代碼,即軟件結(jié)構(gòu)的分析將在下一節(jié)進行。
這樣,系統(tǒng)軟硬件架構(gòu)都是具有模塊化和開放性特征,便于修改和升級。
圖1 工業(yè)機器人控制系統(tǒng)結(jié)構(gòu)
在實時操作系統(tǒng)中,需要把要完成的工作分為多個任務(wù)來實現(xiàn)。每個任務(wù)負責(zé)其中一部分工作,由μC/OS-III負責(zé)多任務(wù)的管理。每個任務(wù)都調(diào)用μC/ OS-III的APIOSTaskCreate()來創(chuàng)建。創(chuàng)建一個任務(wù)時,系統(tǒng)為每個任務(wù)分配了一個任務(wù)控制塊(TCB)、一個堆棧、一個優(yōu)先級和其他一些重要參數(shù)。任務(wù)一般設(shè)計為無限循環(huán)類型任務(wù),每個任務(wù)必須調(diào)用μC/OSIII的服務(wù)函數(shù),使該任務(wù)進入等待某個事件的狀態(tài)。機器人系統(tǒng)需要有中斷處理,每個中斷服務(wù)程序都按照μC/OS-III中中斷函數(shù)進行定義。各個任務(wù)和中斷服務(wù)程序間通過系統(tǒng)信號量OS-SEM和消息隊列OSQ等進行通信。利用實時操作系統(tǒng)的任務(wù)調(diào)度來實現(xiàn)任務(wù)的合理分配,滿足系統(tǒng)硬實時性要求和多任務(wù)并行的要求。
機器人控制系統(tǒng)會有很多中斷請求,比如USART接收到數(shù)據(jù)、以太網(wǎng)控制器接收到數(shù)據(jù)幀、ADC轉(zhuǎn)換器完成傳感器信號轉(zhuǎn)換等,這些外設(shè)會向系統(tǒng)請求中斷,系統(tǒng)會在極短的時間內(nèi)掛起當(dāng)前運行的任務(wù),進入中斷服務(wù)程序。每個中斷服務(wù)程序?qū)⒔o不同的任務(wù)發(fā)布信息,使等待該中斷的任務(wù)進入運行態(tài)。
整個控制系統(tǒng)軟件是采用模塊化的編寫,用戶可以很方便增減模塊,修改軟件功能。整個控制系統(tǒng)的軟件結(jié)構(gòu)如圖2所示,每個矩形框代表一個模塊。
圖2 系統(tǒng)軟件結(jié)構(gòu)
本文的控制系統(tǒng)軟件是用一臺四軸工業(yè)機器人的具體應(yīng)用作為示范。由上圖可知,軟件在運行時,每個系統(tǒng)周期觸發(fā)一次系統(tǒng)節(jié)拍中斷,系統(tǒng)中斷將使能系統(tǒng)狀態(tài)監(jiān)控、系統(tǒng)狀態(tài)顯示和增量編碼器信號處理等任務(wù)。通信中斷服務(wù)負責(zé)接收由示教器或者遠程主機下發(fā)的數(shù)據(jù)幀,并交給任務(wù)定義代碼進行數(shù)據(jù)幀的解析,從而得知用戶希望機器人控制器進行的任務(wù),如系統(tǒng)初始化、系統(tǒng)參數(shù)設(shè)置、原點復(fù)位、數(shù)據(jù)記錄、手動示教和自動碼垛等。軌跡規(guī)劃任務(wù)負責(zé)對碼垛機器人在抓取點和碼垛點之間的運動軌跡進行規(guī)劃,規(guī)劃好的軌跡會發(fā)送給伺服控制任務(wù),伺服控制任務(wù)負責(zé)四軸電機的閉環(huán)控制,使電機精確跟隨規(guī)劃好的軌跡進行運動。外部中斷服務(wù)主要是響應(yīng)數(shù)字輸入口的信號變化,外部中斷服務(wù)將觸發(fā)報警任務(wù)、模式切換任務(wù)等。
每個任務(wù)模塊根據(jù)重要性不同分配不同的優(yōu)先級。例如系統(tǒng)狀態(tài)顯示任務(wù)不需要很高的實時性,給予其較低的優(yōu)先級;伺服控制任務(wù)是極其重要的任務(wù),決定了機器人的運動速度和精度,給予其較高的優(yōu)先級。機器人系統(tǒng)運行時出錯必須急停,所以報警急停任務(wù)使用最高優(yōu)先級。
對于其他用途的工業(yè)機器人,系統(tǒng)軟件結(jié)構(gòu)與本文結(jié)構(gòu)并無太大差別,用戶自行增減任務(wù)和修改算法便可實現(xiàn)對不同機器人的控制。
對于工業(yè)機器人系統(tǒng)朝著更高的運行速度和精度發(fā)展的趨勢,每個關(guān)節(jié)間電機運動的同步性、電機運動軌跡的精確性、對系統(tǒng)中斷的響應(yīng)速度都非常重要。這就意味著控制系統(tǒng)需要很高的實時性,系統(tǒng)軟件必須對相關(guān)任務(wù)進行快速計算,并且任務(wù)之間的切換也要非??臁?/p>
不同的任務(wù)被賦予不同的優(yōu)先級,在每個系統(tǒng)周期內(nèi),先執(zhí)行優(yōu)先級高的任務(wù),再執(zhí)行優(yōu)先級低的任務(wù)。一旦有中斷服務(wù)程序,CPU正在執(zhí)行的任務(wù)將被掛起,先執(zhí)行完中斷服務(wù)程序。如果中斷服務(wù)程序使另一個更高優(yōu)先級的任務(wù)進入就緒態(tài),則先執(zhí)行該任務(wù),后執(zhí)行被中斷的任務(wù)。最后回到最低優(yōu)先級任務(wù)。
評定實時操作系統(tǒng)性能的好壞,具體指標通過任務(wù)切換時間、中斷響應(yīng)時間,任務(wù)執(zhí)行時間等進行評定。在本文介紹的控制系統(tǒng)中,系統(tǒng)時鐘節(jié)拍設(shè)定為為1ms,在一個系統(tǒng)節(jié)拍內(nèi),典型的軟件執(zhí)行時序如圖3所示。
圖3 控制系統(tǒng)典型時序圖
圖3中,A為系統(tǒng)空閑任務(wù),空閑任務(wù)執(zhí)行時間越久說明CPU使用率越低;B為時鐘節(jié)拍中斷;C為時鐘節(jié)拍任務(wù);D為系統(tǒng)狀態(tài)發(fā)送任務(wù);E為串口接收中斷,接收上位機下發(fā)的指令;F為系統(tǒng)消息隊列;G為電機運動任務(wù),負責(zé)閉環(huán)控制,1ms發(fā)送一次指令至驅(qū)動器。
對于系統(tǒng)代碼執(zhí)行時間的測量,μC/OS-III提供了簡單且精確的函數(shù)OS-TS-GET(),此函數(shù)可以記下當(dāng)前處理器的時間戳。在需要測量的代碼前后記錄下時間戳,二者的值之差為處理器在這段時間使用了多少個時鐘周期,對于本文使用的處理器,時鐘周期為1/ 168000000s。將測量的時間通過串口返回到上位機,可以得到,A到B的中斷響應(yīng)時間為1μs左右,A到D的時間為5μs左右,C到D的任務(wù)切換時間為1μs左右,G任務(wù)代碼執(zhí)行時間為10μs左右。對于目前工業(yè)機器人中斷響應(yīng)不超過500μs的需求,本控制系統(tǒng)能在10μs內(nèi)執(zhí)行完中斷服務(wù)并使能相關(guān)任務(wù),完全滿足需求。對于1ms的伺服控制周期來說,本系統(tǒng)10μs內(nèi)便能發(fā)送四路電機的速度指令,每路電機運動的時間差可以忽略,可認為電機實現(xiàn)了同步運行。同時,在測試時,通過μC/OS-III內(nèi)嵌測試功能得到的CPU使用率未超過5%,說明了MCU性能足以保證機器人正常運作,同時有足夠能力運算更復(fù)雜的控制算法。
本文提出的工業(yè)機器人實時控制系統(tǒng)采用μC/ OS-III實時操作系統(tǒng)和單MCU結(jié)構(gòu),利用該實時操作系統(tǒng)API進行各個任務(wù)模塊定義,通過實時內(nèi)核的任務(wù)調(diào)度和中斷處理為系統(tǒng)硬實時性提供了保障,通過MCU強大的運算功能保證了電機運行同步性。同時整個軟件系統(tǒng)采用標準C語言進行編程,方便用戶添加刪除模塊,具有可拓展型和開放性。
[1]陳曦,余超,彭鑫,等.基于DSP的四軸臺式工業(yè)機器人控制器的研究與設(shè)計[J].湖南理工學(xué)院學(xué)報(自然科學(xué)版),2012,25(3):67-68,88.
[2]藍培欽.碼垛機器人控制器系統(tǒng)軟件的設(shè)計和研究[D].上海:上海交通大學(xué),2010.
[3]Kagermann H,W Lukas,W Wahlster.Industrie 4.0:Mitdem Internet der Dinge auf dem Weg zur 4.industriellen Revolution[J].VDI nachrichten,2011.13.
[4]http://www.kuka-robotics.com/china/zh/products/controllers/kr-c4/
[5]自動化變得簡單化—庫卡發(fā)布新一代機器人產(chǎn)品[J].中國包裝工業(yè),2011(9):70,72.
[6]張鳳霞.集成VxWorks和Windows的中間件VxWin[J].今日科苑,2007(02):55.
[7]陳友東,王田苗,魏洪興.工業(yè)機器人嵌入式控制系統(tǒng)的研制[J].機器人技術(shù)與應(yīng)用,2010(5):10-13.
[8]張廣立,付瑩,楊汝清,等.基于Windows NT的開放式機器人實時控制系統(tǒng)[J].上海交通大學(xué)學(xué)報,2003(5):724-728.
[9]張明勇.基于Windows/RTX的碼垛機器人控制系統(tǒng)軟件設(shè)計[D].上海:上海交通大學(xué),2013.
[10]劉志偉.四軸工業(yè)機器人嵌入式運動控制器的設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012.
[11]Labrosse J J.μC/OS-III:The Real-Time Kernel and the Texas Instruments Stellaris MCUs[M].Micrium Press,2010.
(編輯 趙蓉)
An Industrial Robot Embedded Real-Time Control System Based onμC/OS-III
HE Ming-chao,CAO Qi-xin,LENG Chun-tao
(Research Institute of Robotics,School of Mechanical Engineering,Shanghai Jiaotong University,Shanghai 200240,China)
A robot real-time control system based onμC/OS-III is developed in order to follow the tendency of industrial robot control system and to give domestic controller manufacturer a new way to develop new controllers.The system uses only one Cortex-M 4 MCU to provide enough computing power and communication interfaces.The software system is developed in modules;each module has its own priority.Using μC/OS-III's powerful task management function to guarantee the system's real-time characteristic.User can modify the system's function and algorithm conveniently usingμC/OS-III's APIs and ANSIC.The system has good openness and expandability.The control system can meet the real-time requirements of industrial robot through experiments.
μC/OS-III;robot control system;real-time
TH166;TG659
A
1001-2265(2015)06-0049-04 DOI:10.13462/j.cnki.mmtamt.2015.06.014
2014-08-23
上海市科學(xué)技術(shù)委員會科研計劃項目(12111101002)
何明超(1990—),男,廣東高州人,上海交通大學(xué)碩士研究生,研究方向為工業(yè)機器人運動控制,(E-mail)hmcsuperls@126.com。