<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于RT-Linux機器人控制系統實(shí)時(shí)性的研究

基于RT-Linux機器人控制系統實(shí)時(shí)性的研究

作者: 時(shí)間:2009-05-15 來(lái)源:網(wǎng)絡(luò ) 收藏

  是能夠在確定的時(shí)間內執行計算或處理事務(wù)并對外部事件作出響應的計算機系統。對工業(yè)機器人控制來(lái)說(shuō),實(shí)時(shí)性是一個(gè)相當重要的內容,尤其是在遠程機器人控制中,如果不能很好地滿(mǎn)足系統所需的實(shí)時(shí)性要求,就失去了研究的基礎和意義。當前專(zhuān)用的實(shí)時(shí)操作系統很多,但是遺憾的是它們的價(jià)格高昂,增加了開(kāi)發(fā)成本。在考慮實(shí)時(shí)操作系統核心的性能之外,更應該對開(kāi)發(fā)工具、編譯器、調試器之類(lèi)的開(kāi)發(fā)環(huán)境進(jìn)行全面考慮,尤其是隨著(zhù)應用的不斷升級,要求實(shí)時(shí)操作系統支持各類(lèi)網(wǎng)絡(luò )協(xié)議和編程語(yǔ)言,系統的通用性和可移植性也應當列入考慮的范圍內。于是力求尋找一種高性能的、低價(jià)的甚至是免費的實(shí)時(shí)操作系統,且功能必須完備,通用性必須強。RT—Linux與Linux的結合是一項比較新穎的技術(shù),一方面它提供了面向非實(shí)時(shí)的POSIX.1的標準功能,另一方面又提供了非常高效的滿(mǎn)足底層硬件設備的實(shí)時(shí)性能需要。這種實(shí)現方法可以充分利用Linux的強大功能和RT—Linux的實(shí)時(shí)性能。而且RT—Linux是免費的,完全開(kāi)放源代碼,可降低開(kāi)發(fā)成本,適用范圍廣泛。

  1 的系統結構

的基本思想就是使Linux運行在實(shí)時(shí)核心之下,見(jiàn)圖1。RT—Linux是一個(gè)可加載的核心模塊。一個(gè)小的實(shí)時(shí)內核同原來(lái)的Linux內核共同控制處理器。實(shí)時(shí)內核直接管理硬件中斷,因此實(shí)時(shí)內核操縱著(zhù)機器的,原來(lái)的Linux就無(wú)法影響實(shí)時(shí)任務(wù)了。在RT- Linux中設計了兩類(lèi)中斷。軟中斷是正常的Linux中斷,硬中斷則是真正的實(shí)時(shí)中斷,執行時(shí)幾乎沒(méi)有任何延遲。實(shí)現時(shí),RT-Linux是通過(guò)在 Linux核心和中斷處理器之間設計一個(gè)仿真軟件來(lái)達到其目的的。

RT-Linux的系統結構

  實(shí)時(shí)中斷不經(jīng)過(guò)中斷仿真器,標準Linux的所有硬件中斷首先被中斷仿真器捕獲,所以也根本無(wú)法影響實(shí)時(shí)進(jìn)程的處理。當實(shí)時(shí)內核禁止中斷時(shí),仿真器中的一個(gè)標志位被置0。當有其它非實(shí)時(shí)中斷產(chǎn)生時(shí),仿真器檢查那個(gè)標志位,如果為0,說(shuō)明不允許中斷,否則可以立即執~Linux中斷處理程序。筒而言之,Linux不能中斷自身,但是RT-Linux可以中斷Linux,這也就達到了所謂的”RT—Linux的核心可搶占機制”。實(shí)時(shí)任務(wù)與普通進(jìn)程之間的通信是通過(guò)封鎖,釋放隊列來(lái)完成的。具體地說(shuō)就是當有實(shí)時(shí)任務(wù)要完成時(shí),實(shí)時(shí)操作系統運行實(shí)時(shí)內核下的任務(wù);當沒(méi)有實(shí)時(shí)任務(wù)時(shí),實(shí)時(shí)內核調度 Linux運行。所以L(fǎng)inux是實(shí)時(shí)內核中優(yōu)先級最低的一個(gè)任務(wù)。

  目前為止,在RT-Linux中采用兩種調度策略。一種是基于優(yōu)先級的搶占式調度算法;另一種是lsmaelRipoll實(shí)現的 EDF(EarliestDeadlineFirst)算法。對于周期性任務(wù)可以采用單調率調度算法,即周期短的任務(wù)能夠獲得較高的優(yōu)先級。調度策略將 Linux視為賦予最低優(yōu)先級的實(shí)時(shí)任務(wù)。

  Linux僅僅在沒(méi)有其它任務(wù)時(shí)運行。Linux和實(shí)時(shí)任務(wù)之間的轉換依據上述提及的軟中斷狀態(tài)而定。RT-Linux通過(guò)這樣一種設計方法,將標準的Linux核心改成一個(gè)可搶占的、具有低延遲中斷處理的。

  2 實(shí)時(shí)機器人控制系統的軟/硬件結構

  2.1硬件系統結構

  整個(gè)實(shí)時(shí)機器人控制系統主要的硬件部件為:與IBM—PC兼容PentiumIII733MHzq-業(yè)控制微機(IPC),內存l28MB;三軸位置控制卡(PCL一832);l0/100M自適應網(wǎng)卡、集線(xiàn)器等以太網(wǎng)連接設備;機器人本體為具有5個(gè)自由度的日產(chǎn)PT500機器人。

  運行于一臺工業(yè)控制微型計算機(IPC)上。在該IPC上安裝了兩塊三軸位置控制卡。每塊三軸位置控制卡能對三軸進(jìn)行聯(lián)動(dòng)插補控制。每軸有專(zhuān)用位置芯片控制,構成一個(gè)伺服位置和速度環(huán)。三軸位置控制卡以插補時(shí)間為周期連續發(fā)出中斷,我們需要在DDA周期開(kāi)始之前,將位置信息寫(xiě)入位置控制卡動(dòng)作控制芯片的緩沖區中。放在DDA脈沖緩沖器中的脈沖數被傳到DDA發(fā)生器,在下一個(gè)DDA周期中輸出。然后由三軸位置控制卡將各軸對應的脈沖數解釋為相應的電平信號,驅動(dòng)伺服驅動(dòng)器以驅動(dòng)機器人本體的運動(dòng)。

  2.2軟件系統結構

軟件系統結構

  整個(gè)機器人實(shí)時(shí)控制器的系統結構如圖2所示,整個(gè)系統分為2個(gè)域:實(shí)時(shí)域和非實(shí)時(shí)域。實(shí)時(shí)域中實(shí)現的是實(shí)時(shí)設備驅動(dòng)程序,負責PCL-832位置控制卡的控制與中斷響應,驅動(dòng)機器人本體運動(dòng);非實(shí)時(shí)域中實(shí)現的是上層的機器人控制界面和遠程監控子系統;二者之問(wèn)通過(guò)實(shí)時(shí)先進(jìn)先出(RT-FIFO)緩沖隊列進(jìn)行數據交換。內核調度策略將Linux視為賦予最低優(yōu)先級的實(shí)時(shí)任務(wù),Linux中的非實(shí)時(shí)任務(wù)僅僅在實(shí)時(shí)系統沒(méi)有其它任務(wù)時(shí)運行,以確保實(shí)時(shí)任務(wù)的最高實(shí)時(shí)優(yōu)先級。

 ?。?)RT-Linux中的實(shí)時(shí)模塊

  實(shí)時(shí)域中的軟件模塊主要是三軸位置控制卡(PCL一832)的設備驅動(dòng)程序。驅動(dòng)程序是能夠直接訪(fǎng)問(wèn)硬件的模塊,具有應用程序不具備的處理中斷和讀寫(xiě)端口的能力,是嵌入操作系統核心的底層軟件。三軸位置控制卡以毫秒級發(fā)出DDA中斷請求,對DDA中斷的響應的快慢是決定整個(gè)實(shí)時(shí)性能的關(guān)鍵指標。我們開(kāi)發(fā)的實(shí)時(shí)設備驅動(dòng)程序位于RT-Linux的實(shí)時(shí)域中,享有系統最高實(shí)時(shí)優(yōu)先級。它是整個(gè)實(shí)時(shí)機器人控制系統的前提和基礎。RT-Linux中的三軸位置控制卡的實(shí)時(shí)設備驅動(dòng)程序必須處理以下事務(wù):

1)響應三軸位置卡的插補周期中斷(DDA),并輸出位置脈沖數值;

2)響應三軸位置卡的誤差溢出中斷(Ov),通知應用程序進(jìn)行相應處理;

3)為應用程序提供服務(wù),如讀寫(xiě)I/O端口、設置參數、讀取狀態(tài)等。

 ?。?)Linux中的非實(shí)時(shí)模塊

  非實(shí)時(shí)域中的軟件模塊由和遠程監控子系統組成。本地的機器人控制器負責將文本機器人指令解釋成相應的位置脈沖數據,通過(guò)先進(jìn)先出(RT- FIFO)緩沖隊列發(fā)送給實(shí)時(shí)域中的驅動(dòng)程序驅動(dòng)機器人本體運動(dòng)。圖形仿真與監控系統運行于另一臺微機上,它能夠接收來(lái)自機器人控制器或者離線(xiàn)編程與仿真數據發(fā)生器的機器人實(shí)時(shí)狀態(tài),通過(guò)三維圖形仿真的方式實(shí)時(shí)顯示出來(lái),給用戶(hù)一個(gè)直觀(guān)的機器人運行狀態(tài)信息,隨時(shí)監視機器人的運動(dòng)狀態(tài)。同時(shí)具有權限的用戶(hù)能夠以離線(xiàn)編程方式或在線(xiàn)操作方式通過(guò)高速以太網(wǎng)分別與離線(xiàn)編程與仿真數據發(fā)生器和機器人控制器進(jìn)行連接,實(shí)現離線(xiàn)編程和對機器人的實(shí)際控制。

  3 實(shí)時(shí)系統的性能評估

  實(shí)時(shí)系統的性能評估主要在8個(gè)方面進(jìn)行。它們分別是任務(wù)換道性能、任務(wù)優(yōu)先級性能、內存分配性能、任務(wù)內部通信性能、中斷延遲時(shí)間、操作系統運行時(shí)效率、初始化時(shí)間和關(guān)機時(shí)間。而在機器人控制中最講究的就是中斷響應時(shí)問(wèn)。因為就本項目而言,我們最關(guān)I~,RT-Linux系統對三軸位置控制卡(PCL一 832)的DDA中斷的,所有工作的目的就是為了盡量減少中斷。

  3.1測試環(huán)境及方法

  用于測試的工業(yè)控制微機的硬件配置為IntelPentium(clockl20MHz),RAM64MB;服務(wù)器軟件是用 RedHatLinux6.0(內核版本號2.2.5一l5),RT-Linux的版本號2.2;網(wǎng)絡(luò )環(huán)境l0/100M自適應網(wǎng)卡。中斷響應時(shí)間的快慢直接反映了這樣一個(gè)過(guò)程的快慢:在用戶(hù)層的用戶(hù)進(jìn)程通過(guò)系統調用將脈沖數據寫(xiě)入位于核心層的實(shí)時(shí)驅動(dòng)程序的數據緩沖隊列,在下一個(gè)DDA中斷請求到來(lái)時(shí),中斷服務(wù)例程將數據緩沖隊列中的脈沖數據寫(xiě)入三軸位置控制卡的動(dòng)作控制芯片的緩沖區,驅動(dòng)機器人本體運行。因此,我們將用戶(hù)層的用戶(hù)進(jìn)程開(kāi)始調用系統調用發(fā)送脈沖數據的時(shí)刻作為測試開(kāi)始時(shí)刻,將下一個(gè)DDA中斷請求到來(lái)時(shí),相應的DDA中斷服務(wù)例程將數據寫(xiě)入三軸位置控制卡的動(dòng)作控制芯片的緩沖區,以驅動(dòng)機器人本體運行的時(shí)刻作為測試結束的時(shí)刻。圖3反映了上述過(guò)程。

中斷響應

  3.2測試結果

  我們分別設置DDA周期為8、12、16、24ms的4種情況作了測試,經(jīng)過(guò)計算,可以得出表1所示的結果。

表1 低負載下D DA中斷響應處理時(shí)問(wèn)測試結果

  可見(jiàn),在低負載下RT-Linux的測量時(shí)間要比Linux下快0.5—0.6ms左右,證明了采用RT—Linux系統確實(shí)能夠提高系統的實(shí)時(shí)性能。在這里有幾點(diǎn)需要說(shuō)明:

(1)RT—Linux直接接受硬件中斷,所以我們將PCL一832卡的DDA中斷和OV中斷安裝在實(shí)時(shí)域中,目的就是讓RT-Linux最先捕獲這兩個(gè)實(shí)時(shí)中斷,進(jìn)行處理。但是在標準Linux下采用的是軟中斷的概念,也就是說(shuō)無(wú)法保證DDA中斷和OV中斷最先執行。我們的機器人控制器一旦加上網(wǎng)絡(luò )通信模塊,進(jìn)行監視和仿真時(shí),則在運行過(guò)程中DDA中斷和OV中斷要受到來(lái)自網(wǎng)卡中斷的影響。所以在這種情況下,為了保證機器人運動(dòng)的實(shí)時(shí)性,采用RT- Linux的優(yōu)勢就體現出來(lái)了。如果在網(wǎng)卡干預的情況下測試,標準Linux下的中斷處理時(shí)間將比RT.Linux下要來(lái)得更長(cháng)。

(2)如果用戶(hù)應用層開(kāi)辟大量的用戶(hù)進(jìn)程,則對于分時(shí)的標準Linux來(lái)說(shuō)會(huì )受到很大程度的影響。但是對于RT-Linux來(lái)說(shuō),實(shí)時(shí)進(jìn)程不會(huì )受到非實(shí)時(shí)域中用戶(hù)進(jìn)程的影響,所以在這種重負載情況下,RT-Linux的實(shí)時(shí)性比標準Linux下要高。

  由測試結果可以看出,RT-Linux系統中斷響應比標準Linux延時(shí)時(shí)間短,這個(gè)結果也預示在系統高負載情況下RT-Linux系統中的實(shí)時(shí)性能的優(yōu)勢將更為明顯。實(shí)際使用該實(shí)時(shí)機器人控制器時(shí),機器人運行非常穩定,能滿(mǎn)足實(shí)時(shí)控制的需要。

  4 總結

  在機器人控制器的設計中,如何最大程度的提高機器人控制的實(shí)時(shí)性是一個(gè)關(guān)鍵問(wèn)題。本文中我們運用了將軟件任務(wù)劃分實(shí)時(shí)域與非實(shí)時(shí)域的思想,提出并實(shí)現了一種將RT-Linux與Linux結合的實(shí)時(shí)機器人控制系統。該系統的優(yōu)點(diǎn)是:一方面提供了非常高效的滿(mǎn)足底層硬件設備的實(shí)時(shí)性能,另一方面可以充分利用 Linux的強大功能。而且RT-Linux是完全開(kāi)放源代碼的免費軟件,降低了開(kāi)發(fā)成本。因此該技術(shù)具有非常廣泛的產(chǎn)業(yè)化前景。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>