新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于RTX51的排爆機(jī)器人嵌入式控制器軟硬件開(kāi)發(fā)

基于RTX51的排爆機(jī)器人嵌入式控制器軟硬件開(kāi)發(fā)

作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò) 收藏
摘要:介紹遙操作排爆機(jī)器人PBJ-1的控制系統(tǒng)研制情況。敘述了利用RTX51開(kāi)發(fā)排爆機(jī)器人控制系統(tǒng)固件中的一些問(wèn)題和解決辦法。實(shí)踐證明基于實(shí)時(shí)操作系統(tǒng)RTX51開(kāi)發(fā)工作于非結(jié)構(gòu)環(huán)境中的遙操作機(jī)器人控制系統(tǒng)可以有效地提高整個(gè)機(jī)器人系統(tǒng)的性能及開(kāi)發(fā)效率。關(guān)鍵詞:排爆機(jī)器人 實(shí)時(shí)操作系統(tǒng) 微控制器 RTX51 排爆機(jī)器人(EOD robot)是一種遙操作地面移動(dòng)機(jī)器人,操作機(jī)主體一般是由一個(gè)機(jī)械手和一個(gè)可移動(dòng)平臺(tái)組成,主要用于拆除疑似爆炸物品,以減少作業(yè)現(xiàn)場(chǎng)人員傷亡,是軍警部門(mén)必須裝備的設(shè)施。目前國(guó)際上主要流行美國(guó)Remotec公司的Andros系列排爆機(jī)器人、法國(guó)Cybernetics公司研制的TRS200中型排爆機(jī)器人等。但是國(guó)外的排爆機(jī)器人價(jià)格過(guò)高,出現(xiàn)故障后維修特別不方便。因此國(guó)家863專(zhuān)家組已經(jīng)將高性能排爆機(jī)器人的研發(fā)及國(guó)產(chǎn)化列入了重點(diǎn)支持的課題。 由于種種原因,目前的排爆機(jī)器人很多只采用PLC實(shí)現(xiàn)點(diǎn)動(dòng)控制,功能有限且操作性較差。研究高性能控制器成排爆、消防等各種遙操作地面移動(dòng)機(jī)器人的共同課題。利用先進(jìn)的技術(shù)可以較好地解決這類(lèi)問(wèn)題。 本文概述了上海交通大學(xué)機(jī)器人研究所研制的新型遙控移動(dòng)式排爆機(jī)器人PBJ-1的嵌入式控制系統(tǒng)固件的情況。利用技術(shù)開(kāi)發(fā)適合排爆等各類(lèi)遙控地面移動(dòng)機(jī)器人使用的嵌入式控制系統(tǒng)能夠解決上述種種矛盾。 1 PBJ-1功能介紹 目前國(guó)示上比較流行的排爆機(jī)器人,都需要由經(jīng)過(guò)專(zhuān)門(mén)培訓(xùn)的操作人員通過(guò)操作一組分別控制機(jī)械臂上各個(gè)關(guān)節(jié)驅(qū)動(dòng)電機(jī)的按鍵控制,操作很不方便。操作人員需要根據(jù)狀況,判斷出需要機(jī)械手執(zhí)行的動(dòng)作,再經(jīng)過(guò)大腦的轉(zhuǎn)換,手工控制機(jī)械臂各個(gè)關(guān)節(jié)順序動(dòng)作,使機(jī)械手爪擬合出一條空間軌跡以完成作業(yè),大大降低了工作效率。這類(lèi)排爆機(jī)器人一般都需要大量的攝像機(jī),隨時(shí)顯示爆炸物相對(duì)機(jī)械手爪的位置,以便操作人員決定下一步動(dòng)作。 新型排機(jī)器爆人PBJ-1為了使操作人員更加方便,在嵌入式控制器中嵌入式機(jī)器人運(yùn)行學(xué)運(yùn)算,能夠?qū)崿F(xiàn)機(jī)械臂的自主聯(lián)動(dòng)控制。操作者只要通過(guò)觀看控制箱上面的顯示器,直接操縱控制器命令機(jī)器人水平前、后或垂直上、下運(yùn)動(dòng),機(jī)械臂可以實(shí)時(shí)進(jìn)行機(jī)器人運(yùn)動(dòng)學(xué)運(yùn)算和分解運(yùn)行控制,控制機(jī)械手爪完成空間的直線(xiàn)擬合運(yùn)動(dòng)。這種操作方式略過(guò)了操作人員在大腦中進(jìn)行動(dòng)作轉(zhuǎn)換的步驟,大大方便了排爆這一高危險(xiǎn)性作業(yè)現(xiàn)場(chǎng)的作業(yè)。 為了方便現(xiàn)場(chǎng)操作,在其嵌入式控制器系統(tǒng)中還加入了機(jī)器人的一些半自主動(dòng)作功能。例如當(dāng)機(jī)器人完成作業(yè)后機(jī)械臂可以自動(dòng)折又疊歸位;機(jī)械臂可以自動(dòng)進(jìn)入作業(yè)最佳操作姿態(tài);當(dāng)操作不當(dāng)時(shí),控制器可以自主取消操作人員發(fā)送的命令,以避免機(jī)械臂與車(chē)體之間的干涉碰撞等。 為防止爆炸物被恐怖分子遙控引爆,爆炸物品的拆除現(xiàn)場(chǎng)一般都要做電磁屏蔽處理,不能使用無(wú)線(xiàn)遙控型機(jī)器人,只能采用有纜遙操作移動(dòng)機(jī)器人。由于爆炸物品的拆除作業(yè)危險(xiǎn)性很大,所以對(duì)排爆機(jī)器人的有線(xiàn)通訊系統(tǒng)的可靠性要求很高。PBJ-1是通過(guò)RS-485協(xié)議實(shí)現(xiàn)相互之間遠(yuǎn)距離、高速、高可靠性通訊。操作人員可以通過(guò)上位控制箱里的液晶顯示器監(jiān)視作業(yè)現(xiàn)場(chǎng)的狀態(tài);通過(guò)操作各種動(dòng)作按鈕及操縱桿控制機(jī)器從完成各種作業(yè)??刂葡溆辛M4位數(shù)顯LED,分別顯示機(jī)器人型號(hào)(PBJ1)、通訊狀態(tài)(run或Err)、大小臂關(guān)節(jié)角、機(jī)器人及車(chē)體運(yùn)動(dòng)速度、機(jī)器人電源實(shí)時(shí)電壓。這些都保證了操作人員可以全面了解機(jī)器人具體運(yùn)行狀態(tài),順序完成作業(yè)。 2 PBJ-1嵌入式控制系統(tǒng)設(shè)計(jì) 遙操作機(jī)器人由于工作于非結(jié)構(gòu)環(huán)境中,實(shí)際期望運(yùn)動(dòng)軌跡未知,所以需要根據(jù)操作者的實(shí)時(shí)操作情況進(jìn)行動(dòng)態(tài)實(shí)時(shí)的目標(biāo)位置生成及軌跡規(guī)劃,并完成相應(yīng)的運(yùn)動(dòng)控制。 由于這臺(tái)新型排爆機(jī)器人功能增強(qiáng),下位機(jī)微控制器需要實(shí)時(shí)完成機(jī)器人運(yùn)動(dòng)學(xué)及分解運(yùn)動(dòng)控制解算,并驅(qū)動(dòng)各個(gè)接口器件實(shí)時(shí)控制機(jī)器人運(yùn)行,還要保證上、下位機(jī)之間的正常通訊連接,及時(shí)、迅速、高可靠性地響應(yīng)上位機(jī)經(jīng)過(guò)處理的數(shù)據(jù)并且上傳機(jī)器人本估的各種狀態(tài)信息,負(fù)擔(dān)很重。因此如何合理地進(jìn)行系統(tǒng)固件程序設(shè)計(jì)成為決定該機(jī)器人實(shí)際運(yùn)行效果的關(guān)鍵。 要實(shí)現(xiàn)上面所述的功能,微控制器的應(yīng)用必須能夠同時(shí)進(jìn)行多任務(wù)或工作的執(zhí)行。因此,傳統(tǒng)的基于單任務(wù)順序循環(huán)機(jī)制的程序設(shè)計(jì)方法難以勝任,如圖2所示。因此,需要找到一種新的合適的控制器設(shè)計(jì)方法。由于微控制器系統(tǒng)功能通??梢苑纸鉃槎鄠€(gè)相對(duì)獨(dú)立的模塊,將這些模塊理解為任務(wù),從而可引入多任務(wù)機(jī)制進(jìn)行管理。引入多任務(wù)機(jī)制后,可以有效地改善程序結(jié)構(gòu),滿(mǎn)足應(yīng)用程序復(fù)雜的定時(shí)要求。在多任務(wù)機(jī)制下,CPU的運(yùn)行時(shí)間被劃分成許多小的時(shí)間片,由某種調(diào)度算法按不同的優(yōu)先級(jí)別分配給不同的任務(wù)。多個(gè)任務(wù)分別在各自的時(shí)間片內(nèi)訪(fǎng)問(wèn)CPU,從而產(chǎn)生了微觀上輪流運(yùn)行、宏觀上并行運(yùn)行的多任務(wù)效果,如圖3所示。 在多任務(wù)中,合理的任務(wù)調(diào)度必不可少。單純通過(guò)提高處理器速度無(wú)法達(dá)到目的,這樣就要求嵌入式系統(tǒng)的軟件必須具有多任務(wù)調(diào)試能力。因此必須基于多任務(wù)實(shí)時(shí)操作系統(tǒng)進(jìn)行嵌入式系統(tǒng)固件開(kāi)發(fā)。 實(shí)時(shí)操作系統(tǒng)的首要任務(wù)是調(diào)試一切可艇的資源完成實(shí)時(shí)控制任務(wù);其次才著眼于提高計(jì)算機(jī)系統(tǒng)的使用效率。其重要特點(diǎn)是通過(guò)任務(wù)調(diào)度對(duì)重要事件在規(guī)定的時(shí)間內(nèi)作出正確的響應(yīng)。實(shí)時(shí)操作系統(tǒng)既能保證對(duì)外界的信息以足夠快的速度進(jìn)行相應(yīng)處理,又能并行運(yùn)行多個(gè)任務(wù),具有實(shí)時(shí)性和并行性的特點(diǎn),因此能很好地完成對(duì)多個(gè)信息的實(shí)時(shí)測(cè)量、處理并進(jìn)行相應(yīng)的多個(gè)實(shí)時(shí)控制。 PBJ-1上下位機(jī)嵌入式控制器都是以業(yè)界經(jīng)典51內(nèi)核增強(qiáng)型單片機(jī)AT89C55WD為核心;基于嵌入式實(shí)時(shí)操作系統(tǒng)RTX51Tiny開(kāi)發(fā)固件程序。通過(guò)提供必不可少的系統(tǒng)服務(wù),如信號(hào)量管理、消息隊(duì)列、延時(shí)等,實(shí)時(shí)內(nèi)核使CPU的利用更為有效。 2.1 RTX51簡(jiǎn)介 RTX51是德國(guó)Keil公司開(kāi)發(fā)的一種應(yīng)用于MCS51系列單片機(jī)功能強(qiáng)大的、可用于目前世界上所有由Intel 8051標(biāo)準(zhǔn)內(nèi)核派生出的350多種增強(qiáng)微控制器的實(shí)時(shí)操作系統(tǒng)。使用RTX51可實(shí)現(xiàn)程序按時(shí)間片輪轉(zhuǎn)和搶先的任務(wù)調(diào)度,并且支持事件和信號(hào)驅(qū)動(dòng)。 RTX541有四個(gè)版本:RTX51Full和RTX51Tiny。RTX51Full允許4個(gè)優(yōu)先權(quán)任務(wù)的循環(huán)和切換,并且能夠并行地利用中斷功能。RTX51Full可以從內(nèi)存池中申請(qǐng)和釋放內(nèi)存,同時(shí)可以強(qiáng)制一個(gè)任務(wù)停止執(zhí)行等待一個(gè)個(gè)中斷,或者是其它中斷傳來(lái)的信號(hào)量或者消息。RTX51Tiny短小精悍,是RTX51Full的一個(gè)子集,只占用900字節(jié)ROM、7字節(jié)DATA型及3倍于任務(wù)數(shù)量的IDATA型RAM空間,可以很容易地運(yùn)行在沒(méi)有擴(kuò)展外部存儲(chǔ)器的單片機(jī)系統(tǒng)上。使用RTX51Tiny的程序可以訪(fǎng)問(wèn)外部存儲(chǔ)器,允許循環(huán)任務(wù)切換,并且支持信號(hào)傳遞,還能并行地利用中斷功能。RTX51Tiny允許“準(zhǔn)并行”同時(shí)執(zhí)行幾個(gè)任務(wù)。每一個(gè)任務(wù)在預(yù)先定義好的時(shí)間片內(nèi)得以執(zhí)行。時(shí)間到使正在執(zhí)行的任務(wù)掛起,,開(kāi)使另一個(gè)任務(wù)開(kāi)始執(zhí)行。最新的RTX51Tiny2.0重新調(diào)整了內(nèi)核結(jié)構(gòu),使用更靈活、執(zhí)行更快、占用的資源更少,另外還增輯幾個(gè)新的特性。 RTX51Tiny內(nèi)核完全集成在Keil C51編譯器中, 以系統(tǒng)函數(shù)調(diào)用的方式運(yùn)行,因此可以很容易地使用Keil C51語(yǔ)言編寫(xiě)和編譯一個(gè)多任務(wù)程序,并嵌入到實(shí)際應(yīng)用系統(tǒng)中。內(nèi)核主要提供以下函數(shù)供應(yīng)用程序引用,見(jiàn)表1。表1 RTX51Tiny主要系統(tǒng)函數(shù)說(shuō)明 系統(tǒng)函數(shù) 文字說(shuō)明 isr_send_signal 從一個(gè)中斷發(fā)送一個(gè)信號(hào)到一個(gè)任務(wù)。 os_clear_signal 刪除一個(gè)發(fā)送的信息。 os_create_task 移動(dòng)一個(gè)任務(wù)到運(yùn)行隊(duì)列。 os_delete_task 從運(yùn)行隊(duì)列中刪除一個(gè)任務(wù)。 os_running_task_id 返回當(dāng)前運(yùn)行任務(wù)的任務(wù)標(biāo)識(shí)符(task ID)。 os_send_signal 從一個(gè)任務(wù)發(fā)送一個(gè)信號(hào)到另一個(gè)任務(wù)。 os_wait 等待一個(gè)事件。 RTX51Tiny的用戶(hù)任務(wù)具有表2所列的幾個(gè)狀態(tài),它們?nèi)鐖D4所示進(jìn)行切換。 表2 RTX51Tiny任務(wù)狀態(tài)說(shuō)明 狀 態(tài) 說(shuō) 明 RUNNING 當(dāng)前正在運(yùn)行的任務(wù)處于RUNNING狀態(tài)。同一時(shí)間只有一個(gè)任務(wù)可以運(yùn)行。 READY 等待運(yùn)行的任務(wù)處于READY狀態(tài)。在當(dāng)前運(yùn)行的任務(wù)處理完成后,RTX51 Tiny開(kāi)始下一個(gè)處于READY狀態(tài)的任務(wù)。 WAITING 等待一個(gè)事件的任務(wù)處于WAITING狀態(tài)。如果事件發(fā)生的話(huà)任務(wù)進(jìn)入READY狀態(tài)。 DELEFTED 沒(méi)有開(kāi)始的任務(wù)處于刪除狀態(tài)。 TIME-OUT 被時(shí)間片輪轉(zhuǎn)超時(shí)終端的任務(wù)處于TIME-OUT狀態(tài)。這個(gè)狀態(tài)與READY狀態(tài)相同。 為了保證任務(wù)在執(zhí)行順序上的協(xié)調(diào),必須采用同步機(jī)制。內(nèi)核用以下事件進(jìn)行任務(wù)間的通信和同步: (1)SIGNAL:用于任務(wù)之間通訊的位,可以用系統(tǒng)函數(shù)進(jìn)行置位或清除。如果一個(gè)任務(wù)調(diào)用了os_wait函數(shù)等待SIGNAL而SIGNAL未置位,則該任務(wù)被掛起直到SIGNAL置位,才返回到READY狀態(tài),并可被再次執(zhí)行。 (2)TIMEOUT:由os_wait函數(shù)開(kāi)始的時(shí)間延時(shí),其持續(xù)時(shí)間可由定時(shí)節(jié)拍數(shù)確定。帶有TIMEOUT值調(diào)用os_wait函數(shù)的任務(wù)將被掛起,直到延時(shí)結(jié)束,才返回到READY狀態(tài),并可被再次執(zhí)行。 (3)INTERVAL:由os_wait函數(shù)開(kāi)始的時(shí)間間隔,其持續(xù)時(shí)間可由定時(shí)節(jié)拍數(shù)確定。帶有INTERVAL值調(diào)用os_wait函數(shù)的任務(wù)將被掛起,直到間隔時(shí)間結(jié)束,才返回到READY狀態(tài),并可被再次執(zhí)行。與TIMEOUT不同的是,任務(wù)的節(jié)拍計(jì)數(shù)器不復(fù)位。 RTX51Tiny采用微控制器(51)內(nèi)部定時(shí)器T0來(lái)產(chǎn)生定時(shí)節(jié)拍,各任務(wù)只在各自分配的定時(shí)節(jié)拍數(shù)(時(shí)間片)內(nèi)執(zhí)行。當(dāng)時(shí)間片用完后,切換至下一任務(wù)運(yùn)行,因此各任務(wù)是并發(fā)執(zhí)行的。RTX51Tiny調(diào)度程序定義這些任務(wù)按照下面的規(guī)則運(yùn)行: (1)如果出現(xiàn)以下情況,當(dāng)前運(yùn)行任務(wù)中斷: ①任務(wù)調(diào)用os_wait函數(shù)并且指不定期事件沒(méi)有發(fā)生; ②任務(wù)運(yùn)行時(shí)間超過(guò)定義的時(shí)間片輪超時(shí)時(shí)間。 (2)如果出現(xiàn)以下情況,則開(kāi)始另一個(gè)任務(wù); ①?zèng)]有其他的任務(wù)運(yùn)行; ②將要開(kāi)始的任務(wù)處READY或TIME-OUT狀態(tài)。 2.2 嵌入式操作系統(tǒng)的特殊問(wèn)題處理 在RTX51下進(jìn)行多任務(wù)編程與傳統(tǒng)的順序循環(huán)單任務(wù)編程相比有以下幾個(gè)值得注意的不同點(diǎn):(1)多任務(wù)編程CPU是輪流執(zhí)行每個(gè)任務(wù),可以將每個(gè)任務(wù)設(shè)計(jì)成死循環(huán)的模式,不斷重復(fù)地進(jìn)行數(shù)據(jù)計(jì)算或者訪(fǎng)問(wèn)硬件,不會(huì)影響別的任務(wù)的執(zhí)行。當(dāng)一個(gè)任務(wù)的數(shù)據(jù)計(jì)算完成后,可以通過(guò)os_wait函數(shù)將CPU交出執(zhí)行別的任務(wù)。而單任務(wù)模式卻獨(dú)占了所有的CPU資源,時(shí)常要擔(dān)心是否執(zhí)行時(shí)間太長(zhǎng)而不能及時(shí)響應(yīng)外部的異步事件。(2)多任務(wù)編程有一個(gè)缺點(diǎn),即資源沖突和重入問(wèn)題。所謂資源沖突就是任務(wù)A在訪(fǎng)問(wèn)某個(gè)資源時(shí),恰好發(fā)生了任務(wù)切換,任務(wù)B也訪(fǎng)問(wèn)這個(gè)資源,且改變了它的狀態(tài),這樣當(dāng)再次執(zhí)行任務(wù)A就可能發(fā)生沖突或帶來(lái)不確定性。而所謂重入是指假設(shè)任務(wù)A在運(yùn)行某個(gè)函數(shù),發(fā)生任務(wù)切換后,任務(wù)B也運(yùn)行這個(gè)函數(shù),這樣就會(huì)破壞任務(wù)A執(zhí)行這個(gè)函數(shù)的現(xiàn)場(chǎng),從而可能導(dǎo)致任務(wù)A執(zhí)行函數(shù)時(shí)結(jié)果不正確。這種問(wèn)題尤其容易出現(xiàn)在串行接口器件的操作中,例如串口、串行的A/D、D/A器件等。 在本嵌入式機(jī)器人控制器開(kāi)發(fā)過(guò)程中,采用這種處理辦法:將對(duì)每個(gè)獨(dú)立的硬件(例如串行通訊)進(jìn)行操作的驅(qū)動(dòng)程序段放在一個(gè)任務(wù)中,也就是說(shuō)要想對(duì)某個(gè)設(shè)備資源進(jìn)行操作,只有依靠執(zhí)行相應(yīng)的任務(wù)來(lái)實(shí)現(xiàn)。這樣無(wú)論何時(shí)切抽換任務(wù),都不會(huì)對(duì)任何獨(dú)立的“外設(shè)”造成影響。這樣做徹底避免了資源沖突和重入問(wèn)題而且利用系統(tǒng)維護(hù)與升級(jí)。各個(gè)任務(wù)之間要實(shí)現(xiàn)通信,可以調(diào)用os_send_signal函數(shù)及全局變量。 在嵌入式控制系統(tǒng)開(kāi)發(fā)中借鑒了Windows消息驅(qū)動(dòng)的思想,使部分不需要始終執(zhí)行的任務(wù)處于等待信號(hào)狀態(tài),這樣它們不會(huì)占用資源。只有當(dāng)需要進(jìn)行相應(yīng)處理時(shí)通過(guò)需要它們運(yùn)行的任務(wù)發(fā)送給它們SIGNAL,它們才會(huì)進(jìn)入RUNNING任務(wù)隊(duì)列中,得到執(zhí)行。相關(guān)的系統(tǒng)函數(shù)為: os_wait(K_SIG,0,0); //等待信號(hào) os_send_signal(Task_ID)://向Task_ID任務(wù)發(fā)送一個(gè)信號(hào)。 這樣的處理,可以使微控制器在有限的資源下集中精力處理好耗時(shí)且重要的事情。 2.3 排爆機(jī)器人嵌入式控制系統(tǒng)固件開(kāi)發(fā) 上位機(jī)嵌入式控制器固件結(jié)構(gòu)如圖5所示。根據(jù)控制器要完成作業(yè)的獨(dú)立性分割成幾個(gè)任務(wù)片。圖5表示了各任務(wù)之間的關(guān)系、與外設(shè)連接關(guān)系。整個(gè)系統(tǒng)被驅(qū)分成三個(gè)層次。 減少上、下位機(jī)之間數(shù)據(jù)交換的次數(shù)及數(shù)據(jù)量有利于減少下位控制器中斷機(jī)器人的運(yùn)動(dòng)控制轉(zhuǎn)入通訊協(xié)議處理的幾率,可以提高運(yùn)動(dòng)控制的質(zhì)量。所以PBJ-1的通訊部分固件程序設(shè)計(jì)沒(méi)有采用傳統(tǒng)的定時(shí)向下位機(jī)傳送輸入設(shè)備的狀態(tài)這種通訊負(fù)擔(dān)的方法,而是基于消息驅(qū)動(dòng)的思想。通訊任務(wù)依靠輸入設(shè)備檢測(cè)任務(wù)執(zhí)行的結(jié)果來(lái)決定是否激活、進(jìn)入消息隊(duì)列以實(shí)現(xiàn)控制器之間的通訊。這樣只有當(dāng)操作者實(shí)際改變了輸入設(shè)備的狀態(tài),上位機(jī)才向下們機(jī)發(fā)送相應(yīng)的信息。利用消息驅(qū)動(dòng)思想來(lái)開(kāi)發(fā)通訊程序十分方便、可靠,并且大大減少了通訊線(xiàn)路的負(fù)擔(dān)。為了保證數(shù)據(jù)傳輸?shù)母呖煽啃?,每次?shù)據(jù)交換都先經(jīng)過(guò)握手以確保無(wú)誤。 下位機(jī)嵌入式控制器固件結(jié)構(gòu)如圖6所示。由于有些任務(wù)不需要一直執(zhí)行,例如機(jī)器人需要響應(yīng)上位機(jī)的指令完成繼電器的切換等,也將利用os_wait函數(shù)處理,使它們平時(shí)不進(jìn)入RUNNING任務(wù)隊(duì)列中,減少資源浪費(fèi)。在下位機(jī)串品中斷中利用isr_send_signal向該丿發(fā)送信號(hào)激活該任務(wù),使得該要求得到執(zhí)行。具體調(diào)用方法如下: isr_send_signal (Task_ID);//從一個(gè)中斷發(fā)送一個(gè)信號(hào)到Task_ID任務(wù)。 通過(guò)Windows消息驅(qū)動(dòng)的思想和RTX51 Tiny實(shí)時(shí)操作系統(tǒng)的配合,合理分配了系統(tǒng)的資源。下位機(jī)控制器“集中精力”完成機(jī)器人運(yùn)行學(xué)解算及分解運(yùn)動(dòng)控制運(yùn)算這些相當(dāng)耗時(shí)的任務(wù),實(shí)時(shí)控制機(jī)械臂運(yùn)行。 在微控制器固件開(kāi)發(fā)中嵌入控制系統(tǒng)還大大提高了系統(tǒng)的穩(wěn)定性。即使某個(gè)外設(shè)或任務(wù)出現(xiàn)故障,與之無(wú)關(guān)的任務(wù)一般不會(huì)受到影響,不像傳統(tǒng)的順序循環(huán)機(jī)制的程序設(shè)計(jì)方法中如果某一環(huán)節(jié)出現(xiàn)問(wèn)題會(huì)立刻造成整個(gè)系統(tǒng)的崩潰。 實(shí)際整個(gè)系統(tǒng)的上下位機(jī)策控制器都是僅僅利用運(yùn)行于22.1184MHz頻率下的AT89C55WD就很好地達(dá)到了預(yù)期目標(biāo)。該系統(tǒng)在隨意頻繁地分別開(kāi)關(guān)上下位機(jī)電源、受到較強(qiáng)電磁干擾、大功率電機(jī)頻繁啟動(dòng)、制動(dòng)造成系統(tǒng)電源電壓波動(dòng)較大苛記得的運(yùn)行測(cè)試中均表現(xiàn)出了非常高的穩(wěn)定性與數(shù)據(jù)傳國(guó)便準(zhǔn)確性。整個(gè)系統(tǒng)在運(yùn)行中即使出現(xiàn)了通訊失敗(人為切斷通訊線(xiàn)咱或部分電源),當(dāng)故障排除后,上、下位機(jī)可以迅速自動(dòng)恢復(fù)正常的通訊狀態(tài)沒(méi)有出現(xiàn)誤動(dòng)作。 筆者為新型拜師爆機(jī)器人PBJ-1先后開(kāi)發(fā)了兩套控制器固件程序,采用完全一樣的硬件平臺(tái)。一套是基于傳統(tǒng)的順序循環(huán)機(jī)制,開(kāi)始效果不理想,后來(lái)借鑒消息驅(qū)動(dòng)思想改進(jìn)程序架構(gòu)才滿(mǎn)足了要求。開(kāi)發(fā)過(guò)程中花費(fèi)了不少時(shí)間來(lái)調(diào)試。另一套就是本文所述的基于RTX51 Tiny嵌入式實(shí)時(shí)操作系統(tǒng)開(kāi)發(fā)的,實(shí)際運(yùn)行效果相當(dāng)好,但是花費(fèi)的時(shí)間很少,而且很容易增加新的功能。 實(shí)踐表明,在系統(tǒng)復(fù)雜、對(duì)實(shí)時(shí)性和精度要求比較嚴(yán)格,并且需要并行處理的任務(wù)較好的運(yùn)動(dòng)控制系統(tǒng)中,使用RTX51 Tiny是一個(gè)較好的解決辦法。此外,使用RTX51 Tiny實(shí)時(shí)操作系統(tǒng),會(huì)加快嵌入式控制系統(tǒng)的開(kāi)發(fā)速度,降低軟件編寫(xiě)的復(fù)雜度,提高產(chǎn)品的開(kāi)發(fā)效率。維護(hù)和功能擴(kuò)展都非常方便。 linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

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

關(guān)閉