本站小編為你精心準(zhǔn)備了工業(yè)機(jī)器人嵌入式實(shí)時控制系統(tǒng)參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
1控制系統(tǒng)結(jié)構(gòu)
工業(yè)機(jī)器人控制系統(tǒng)是一個多任務(wù)并行并具有很高實(shí)時性的系統(tǒng)。目前主流控制系統(tǒng)大致分為兩種結(jié)構(gòu)[10]。一是多處理器主從式的控制系統(tǒng)。主機(jī)一般為IPC,使用INTEL的CPU,運(yùn)行的是非實(shí)時操作系統(tǒng),例如windows。在主CPU中主要運(yùn)算一些非實(shí)時任務(wù)。從機(jī)可能是運(yùn)動控制卡或運(yùn)動控制器,負(fù)責(zé)執(zhí)行伺服控制等實(shí)時性高的任務(wù),其CPU一般為嵌入式的DSP,負(fù)責(zé)復(fù)雜的信號處理和伺服控制等運(yùn)算,再加上FPGA芯片負(fù)責(zé)系統(tǒng)I/O信號處理。第二種系統(tǒng)結(jié)構(gòu)是單處理器配合實(shí)時操作系統(tǒng)。在這種控制器中,所有的任務(wù)都要在一個CPU上進(jìn)行,這就對各個任務(wù)如何合理使用CPU時間提出了很高的要求。一開始的機(jī)器人多采用單個處理器,但由于當(dāng)時處理器性能不高,且不能運(yùn)行實(shí)時操作系統(tǒng),難以滿足對機(jī)器人實(shí)時性以及復(fù)雜的伺服控制的要求。所以隨著時間的推移,多處理器結(jié)構(gòu)占據(jù)了主流。近年來,嵌入式實(shí)時操作系統(tǒng)的發(fā)展給單機(jī)處理器完成機(jī)器人控制任務(wù)提供了可能。通過實(shí)時操作系統(tǒng)對所有任務(wù)進(jìn)行CPU時間分配,達(dá)到多任務(wù)并行處理的效果和極短的中斷響應(yīng)時間,可以達(dá)到機(jī)器人控制需求。
本文開發(fā)的工業(yè)機(jī)器人控制系統(tǒng)中的運(yùn)動控制器是采用上述第二種結(jié)構(gòu),采用意法半導(dǎo)體公司的STM32F4高性能MCU作為控制器處理器,以嵌入式實(shí)時操作系統(tǒng)μC/OS-III作為軟件平臺,在系統(tǒng)中加入不同的任務(wù)模塊,完成對四軸搬運(yùn)機(jī)器人的運(yùn)動控制。μC/OS-III是Micrium公司推出的第三代實(shí)時操作系統(tǒng)[11],不同于前一代μC/OS-II,專門對Cortex-M4內(nèi)核CPU進(jìn)行優(yōu)化,能夠利用Cortex-M4的NVIC實(shí)現(xiàn)硬件級的中斷響應(yīng)。同時,能夠?qū)崿F(xiàn)1ms的系統(tǒng)時鐘節(jié)拍,具有搶占式和時間片輪轉(zhuǎn)任務(wù)切換,支持無限個進(jìn)程優(yōu)先級,能夠以最短的時間進(jìn)入中斷,每個任務(wù)之間的切換時間為微秒級別。同時它采用標(biāo)準(zhǔn)C語言進(jìn)行編寫,方便用戶進(jìn)行編程,任務(wù)增減和算法修改。工業(yè)機(jī)器人控制系統(tǒng)結(jié)構(gòu)如圖1所示。STM32F4是采用當(dāng)下最高性能的Cortex-M4微控制器內(nèi)核的MCU,通過MCU自身具有PWM波形生成功能的定時器生成PWM互補(bǔ)信號,發(fā)送給伺服驅(qū)動器來控制伺服電機(jī);通過帶有增量編碼器接口功能的定時器計算驅(qū)動器返回的增量編碼器AB向脈沖信息,由此可計算得到電機(jī)每個時刻的位置、速度、加速度信息;通過擁有5V容忍的I/O引腳處理機(jī)器人系統(tǒng)數(shù)字輸入信號以及給機(jī)器人系統(tǒng)發(fā)送數(shù)字輸出信號;通過MCU自身的A/D外設(shè)將傳感器信號轉(zhuǎn)為MCU可以識別的數(shù)字量;通過MCU的USART外設(shè)與示教器進(jìn)行串口通信。此外,MCU提供的CAN總線和Ethernet接口使機(jī)器人系統(tǒng)具有可拓展性,可以連接其他各種設(shè)備進(jìn)行通信。由于STM32F4自身帶有的多種外部設(shè)備和相當(dāng)數(shù)量的I/O接口,不需要再添加其他的外設(shè)芯片便可以滿足一臺工業(yè)機(jī)器人的控制需要。大大減少了控制器結(jié)構(gòu)的復(fù)雜程度,降低了成本。
控制系統(tǒng)對輸入數(shù)字信號的處理和伺服電機(jī)的控制等都在μ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)模塊和用戶代碼文件進(jìn)行參數(shù)設(shè)置,便可在μC/OS-III系統(tǒng)下,利用μC/OS-III提供的豐富的API函數(shù)來編寫用戶任務(wù)代碼。BSP文件包含控制板上所有外設(shè)的初始化,這樣用戶才能使用這些外設(shè)來輸出輸入相應(yīng)的信號。對用戶代碼,即軟件結(jié)構(gòu)的分析將在下一節(jié)進(jìn)行。這樣,系統(tǒng)軟硬件架構(gòu)都是具有模塊化和開放性特征,便于修改和升級。
2控制系統(tǒng)軟件結(jié)構(gòu)
在實(shí)時操作系統(tǒng)中,需要把要完成的工作分為多個任務(wù)來實(shí)現(xiàn)。每個任務(wù)負(fù)責(zé)其中一部分工作,由μC/OS-III負(fù)責(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/OS-III的服務(wù)函數(shù),使該任務(wù)進(jìn)入等待某個事件的狀態(tài)。機(jī)器人系統(tǒng)需要有中斷處理,每個中斷服務(wù)程序都按照μC/OS-III中中斷函數(shù)進(jìn)行定義。各個任務(wù)和中斷服務(wù)程序間通過系統(tǒng)信號量OS_SEM和消息隊(duì)列OS_Q等進(jìn)行通信。利用實(shí)時操作系統(tǒng)的任務(wù)調(diào)度來實(shí)現(xiàn)任務(wù)的合理分配,滿足系統(tǒng)硬實(shí)時性要求和多任務(wù)并行的要求。機(jī)器人控制系統(tǒng)會有很多中斷請求,比如USART接收到數(shù)據(jù)、以太網(wǎng)控制器接收到數(shù)據(jù)幀、ADC轉(zhuǎn)換器完成傳感器信號轉(zhuǎn)換等,這些外設(shè)會向系統(tǒng)請求中斷,系統(tǒng)會在極短的時間內(nèi)掛起當(dāng)前運(yùn)行的任務(wù),進(jìn)入中斷服務(wù)程序。每個中斷服務(wù)程序?qū)⒔o不同的任務(wù)信息,使等待該中斷的任務(wù)進(jìn)入運(yùn)行態(tài)。整個控制系統(tǒng)軟件是采用模塊化的編寫,用戶可以很方便增減模塊,修改軟件功能。整個控制系統(tǒng)的軟件結(jié)構(gòu)如圖2所示,每個矩形框代表一個模塊。本文的控制系統(tǒng)軟件是用一臺四軸工業(yè)機(jī)器人的具體應(yīng)用作為示范。由上圖可知,軟件在運(yùn)行時,每個系統(tǒng)周期觸發(fā)一次系統(tǒng)節(jié)拍中斷,系統(tǒng)中斷將使能系統(tǒng)狀態(tài)監(jiān)控、系統(tǒng)狀態(tài)顯示和增量編碼器信號處理等任務(wù)。通信中斷服務(wù)負(fù)責(zé)接收由示教器或者遠(yuǎn)程主機(jī)下發(fā)的數(shù)據(jù)幀,并交給任務(wù)定義代碼進(jìn)行數(shù)據(jù)幀的解析,從而得知用戶希望機(jī)器人控制器進(jìn)行的任務(wù),如系統(tǒng)初始化、系統(tǒng)參數(shù)設(shè)置、原點(diǎn)復(fù)位、數(shù)據(jù)記錄、手動示教和自動碼垛等。軌跡規(guī)劃任務(wù)負(fù)責(zé)對碼垛機(jī)器人在抓取點(diǎn)和碼垛點(diǎn)之間的運(yùn)動軌跡進(jìn)行規(guī)劃,規(guī)劃好的軌跡會發(fā)送給伺服控制任務(wù),伺服控制任務(wù)負(fù)責(zé)四軸電機(jī)的閉環(huán)控制,使電機(jī)精確跟隨規(guī)劃好的軌跡進(jìn)行運(yùn)動。外部中斷服務(wù)主要是響應(yīng)數(shù)字輸入口的信號變化,外部中斷服務(wù)將觸發(fā)報警任務(wù)、模式切換任務(wù)等。每個任務(wù)模塊根據(jù)重要性不同分配不同的優(yōu)先級。例如系統(tǒng)狀態(tài)顯示任務(wù)不需要很高的實(shí)時性,給予其較低的優(yōu)先級;伺服控制任務(wù)是極其重要的任務(wù),決定了機(jī)器人的運(yùn)動速度和精度,給予其較高的優(yōu)先級。機(jī)器人系統(tǒng)運(yùn)行時出錯必須急停,所以報警急停任務(wù)使用最高優(yōu)先級。對于其他用途的工業(yè)機(jī)器人,系統(tǒng)軟件結(jié)構(gòu)與本文結(jié)構(gòu)并無太大差別,用戶自行增減任務(wù)和修改算法便可實(shí)現(xiàn)對不同機(jī)器人的控制。
3系統(tǒng)實(shí)時性分析和性能測試
對于工業(yè)機(jī)器人系統(tǒng)朝著更高的運(yùn)行速度和精度發(fā)展的趨勢,每個關(guān)節(jié)間電機(jī)運(yùn)動的同步性、電機(jī)運(yùn)動軌跡的精確性、對系統(tǒng)中斷的響應(yīng)速度都非常重要。這就意味著控制系統(tǒng)需要很高的實(shí)時性,系統(tǒng)軟件必須對相關(guān)任務(wù)進(jìn)行快速計算,并且任務(wù)之間的切換也要非常快。不同的任務(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ù)進(jìn)入就緒態(tài),則先執(zhí)行該任務(wù),后執(zhí)行被中斷的任務(wù)。最后回到最低優(yōu)先級任務(wù)。評定實(shí)時操作系統(tǒng)性能的好壞,具體指標(biāo)通過任務(wù)切換時間、中斷響應(yīng)時間,任務(wù)執(zhí)行時間等進(jìn)行評定。在本文介紹的控制系統(tǒng)中,系統(tǒng)時鐘節(jié)拍設(shè)定為為1ms,在一個系統(tǒng)節(jié)拍內(nèi),典型的軟件執(zhí)行時序如圖3所示。圖3中,A為系統(tǒng)空閑任務(wù),空閑任務(wù)執(zhí)行時間越久說明CPU使用率越低;B為時鐘節(jié)拍中斷;C為時鐘節(jié)拍任務(wù);D為系統(tǒng)狀態(tài)發(fā)送任務(wù);E為串口接收中斷,接收上位機(jī)下發(fā)的指令;F為系統(tǒng)消息隊(duì)列;G為電機(jī)運(yùn)動任務(wù),負(fù)責(zé)閉環(huán)控制,1ms發(fā)送一次指令至驅(qū)動器。
對于系統(tǒng)代碼執(zhí)行時間的測量,μC/OS-III提供了簡單且精確的函數(shù)OS_TS_GET(),此函數(shù)可以記下當(dāng)前處理器的時間戳。在需要測量的代碼前后記錄下時間戳,二者的值之差為處理器在這段時間使用了多少個時鐘周期,對于本文使用的處理器,時鐘周期為1/168000000s。將測量的時間通過串口返回到上位機(jī),可以得到,A到B的中斷響應(yīng)時間為1μs左右,A到D的時間為5μs左右,C到D的任務(wù)切換時間為1μs左右,G任務(wù)代碼執(zhí)行時間為10μs左右。對于目前工業(yè)機(jī)器人中斷響應(yīng)不超過500μs的需求,本控制系統(tǒng)能在10μs內(nèi)執(zhí)行完中斷服務(wù)并使能相關(guān)任務(wù),完全滿足需求。對于1ms的伺服控制周期來說,本系統(tǒng)10μs內(nèi)便能發(fā)送四路電機(jī)的速度指令,每路電機(jī)運(yùn)動的時間差可以忽略,可認(rèn)為電機(jī)實(shí)現(xiàn)了同步運(yùn)行。同時,在測試時,通過μC/OS-III內(nèi)嵌測試功能得到的CPU使用率未超過5%,說明了MCU性能足以保證機(jī)器人正常運(yùn)作,同時有足夠能力運(yùn)算更復(fù)雜的控制算法。
4結(jié)束語
本文提出的工業(yè)機(jī)器人實(shí)時控制系統(tǒng)采用μC/OS-III實(shí)時操作系統(tǒng)和單MCU結(jié)構(gòu),利用該實(shí)時操作系統(tǒng)API進(jìn)行各個任務(wù)模塊定義,通過實(shí)時內(nèi)核的任務(wù)調(diào)度和中斷處理為系統(tǒng)硬實(shí)時性提供了保障,通過MCU強(qiáng)大的運(yùn)算功能保證了電機(jī)運(yùn)行同步性。同時整個軟件系統(tǒng)采用標(biāo)準(zhǔn)C語言進(jìn)行編程,方便用戶添加刪除模塊,具有可拓展型和開放性。
作者:何明超 曹其新 冷春濤 單位:上海交通大學(xué) 機(jī)械與動力工程學(xué)院機(jī)器人所