欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

開放式結(jié)構(gòu)機(jī)器人控制器的制作方法

文檔序號:6437496閱讀:235來源:國知局
專利名稱:開放式結(jié)構(gòu)機(jī)器人控制器的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別涉及基于實(shí)時Linux的開放式結(jié)構(gòu)機(jī)器人控制器設(shè)計(jì)。
在提出開放式結(jié)構(gòu)控制器概念的早期,許多硬件廠商推出了基于一定標(biāo)準(zhǔn)的可供第三方進(jìn)行二次開發(fā)的控制器硬件產(chǎn)品。這些產(chǎn)品中比較有代表性的有基于視窗(Windows)實(shí)時擴(kuò)展系統(tǒng)的RCS、CX3000、PMAC-NC、OAC500和MOS等控制器;有基于磁盤操作系統(tǒng)(DOS)的DX-32和Sinumerlk 8400控制器;還有基于實(shí)時Unix操作系統(tǒng)的開放式計(jì)算機(jī)數(shù)字控制器(Open CNC)。
應(yīng)用的發(fā)展對于開放式控制器開放性的概念在不斷地發(fā)生變化。雖然對于開放性的定義至今沒有形成共識,近年來不同的觀點(diǎn)普遍認(rèn)為一個開放式機(jī)器人控制器應(yīng)具有如下特征可擴(kuò)展性(Extensibility)、可移植性(Portability)、可定制性(Reconfigurability)和可交互性(Interoperability)。
可擴(kuò)展性任何一個滿足一定標(biāo)準(zhǔn)的控制應(yīng)用模塊可以方便地?cái)U(kuò)充或替換開放式控制器中的應(yīng)用模塊,同時不影響已有的控制模塊。如當(dāng)開放式控制器用于機(jī)器人控制時可以方便地增加關(guān)節(jié)數(shù)、外部設(shè)備、擴(kuò)充機(jī)器人視覺模塊和基于網(wǎng)絡(luò)接口的擴(kuò)展模塊等。
可移植性這種開放式控制器系統(tǒng)軟件在不同層次上未經(jīng)或經(jīng)過最小的修改后,可以運(yùn)行于不同的系統(tǒng)平臺上。分層結(jié)構(gòu)的系統(tǒng)中,最底層(伺服層)的伺服驅(qū)動程序模塊在系統(tǒng)滿足一定標(biāo)準(zhǔn)的情況下(如基于Sercos設(shè)備總線),可以方便地移植到具有不同伺服級的系統(tǒng)中運(yùn)行。中間層的管理調(diào)度模塊、控制算法模塊、軌跡規(guī)劃模塊等具有一定通用性,具有較小的平臺相關(guān)性。與最終用戶相交互接口的應(yīng)用層,與平臺的依賴性將更小。
可定制性用戶可以根據(jù)應(yīng)用的需要定制控制器??啥ㄖ菩跃褪轻槍?yīng)用的特點(diǎn)對于擴(kuò)充后的控制器規(guī)模進(jìn)行合理地裁減。例如根據(jù)需求定制伺服電機(jī)的數(shù)目和外設(shè);根據(jù)機(jī)構(gòu)類型定制運(yùn)動學(xué)解算方法;根據(jù)功能要求定制控制算法。
互操作性開放式控制器系統(tǒng)支持一種實(shí)現(xiàn)控制器軟件與控制器硬件無縫連接的規(guī)范接口。這種規(guī)范接口保證擴(kuò)充進(jìn)系統(tǒng)的軟硬件模塊可以在原有系統(tǒng)平臺上很好地完成系統(tǒng)新的控制功能,而不會影響系統(tǒng)原有的性能。
近些年來,在開放式控制器研究與應(yīng)用方面,由瑞典侖德(Lund)大學(xué)研究完成的開放式機(jī)器人控制器體系結(jié)構(gòu)(ORC)就是其中典型的代表。ORC是一種能夠集成工業(yè)機(jī)器人控制和編程的體系結(jié)構(gòu)框架。這種開放式機(jī)器人控制器體系結(jié)構(gòu)如

圖1所示。整個體系結(jié)構(gòu)從上到下依次可以分成三個層次終端用戶層11、系統(tǒng)層12和伺伏層13。在終端用戶層從上到下依次含有任務(wù)級編程接口模塊、離線編程接口模塊和在線編程接口模塊。在系統(tǒng)層中從上到下依次是系統(tǒng)管理模塊和應(yīng)用控制模塊。在伺服層中從上到下依次是運(yùn)動控制模塊、機(jī)械臂控制模塊、電機(jī)控制模塊和VME總線標(biāo)準(zhǔn)(VME是VersaModule Europa的簡稱。)控制對象。各個層次模塊的功能和對應(yīng)的終端用戶如表1所示。
表1 ORC中不同軟件層次的屬性與相關(guān)用戶對照表

在ORC中,系統(tǒng)層12和伺服層13的功能模塊在實(shí)現(xiàn)上都是采用編譯方式實(shí)現(xiàn)的,而終端用戶層的模塊在實(shí)現(xiàn)上,首先由用戶給出相應(yīng)的機(jī)器人語言描述,而后在運(yùn)行時采用解釋方式來完成相應(yīng)的功能。
上述體系結(jié)構(gòu)中每一層的模塊都具有兩種類型的接口,首先是提供給相鄰高層的模塊調(diào)用接口,其次是提供給用戶的設(shè)計(jì)、編程和操作接口。由于每一層中不同的模塊對于系統(tǒng)的抽象程度不同,所以在使用時,不同的層次對應(yīng)于不同工程背景的用戶。
首先,ORC雖然在系統(tǒng)的體系結(jié)構(gòu)上提出了分層面向不同用戶的概念,但是由于不同層次不同類型模塊的編程接口要求由不同應(yīng)用背景的用戶進(jìn)行軟件模塊的擴(kuò)充,而系統(tǒng)的高層缺乏統(tǒng)一的擴(kuò)展接口,所以在系統(tǒng)的應(yīng)用上就給系統(tǒng)可擴(kuò)充性的實(shí)現(xiàn)帶來了困難。另外底層的硬件由于是采用VME總線標(biāo)準(zhǔn)的控制設(shè)備和封閉的實(shí)時UNIX操作系統(tǒng),從已有的軟件上講都不具備開放的控制接口,所以系統(tǒng)硬件標(biāo)準(zhǔn)接口的封閉性也影響了開放式控制器可擴(kuò)充性。其次,由于ORC是在實(shí)時UNIX系統(tǒng)上開發(fā)完成的,從軟件的實(shí)現(xiàn)上講,缺乏可移植性的機(jī)制。再次,ORC系統(tǒng)允許不同應(yīng)用背景的用戶對于系統(tǒng)不同層次進(jìn)行一定地?cái)U(kuò)充,但是缺乏對于擴(kuò)充后系統(tǒng)的裁減和定制機(jī)制,所以系統(tǒng)的可定制功能有待于提高。最后,系統(tǒng)最底層所擴(kuò)充的軟件雖然可以與VME總線標(biāo)準(zhǔn)的驅(qū)動控制對象實(shí)現(xiàn)很好的交互性,但由于VME總線標(biāo)準(zhǔn)缺乏真正意義上的開放性,所以O(shè)RC與新擴(kuò)充進(jìn)來的系統(tǒng)驅(qū)動對象的交互能力有待于提高。
本發(fā)明提出的一種開放式結(jié)構(gòu)機(jī)器人控制器,包括由工業(yè)控制計(jì)算機(jī)和與其相連的開放式控制器系統(tǒng)的周邊設(shè)備所組成的硬件部分,對該硬件進(jìn)行控制由開放源碼的實(shí)時操作系統(tǒng)和在該操作系統(tǒng)平臺上運(yùn)行的開放式控制器應(yīng)用軟件系統(tǒng)組成的軟件部分;其特征在于,所說的工業(yè)控制計(jì)算機(jī)采用基于工業(yè)控制環(huán)境標(biāo)準(zhǔn)的微型計(jì)算機(jī);所說的周邊設(shè)備采用國際標(biāo)準(zhǔn)的硬件設(shè)備,包括“硬”SERCOS系統(tǒng)硬件接口卡、數(shù)字信號采集卡、時鐘設(shè)備和模擬信號/數(shù)字信號轉(zhuǎn)換卡、以及基于SERCOS標(biāo)準(zhǔn)的電機(jī)驅(qū)動器和相應(yīng)的電機(jī);所說的開放源碼的實(shí)時操作系統(tǒng)采用國際通用Linux操作系統(tǒng)的實(shí)時擴(kuò)展系統(tǒng)RtLinux;所說的開放式控制器應(yīng)用軟件系統(tǒng)(RTOC)主要由相互獨(dú)立的應(yīng)用層、中間層和基礎(chǔ)層三個運(yùn)行層次組成;其中,基礎(chǔ)層是在各個特殊的設(shè)備驅(qū)動程序之上,抽象出設(shè)備無關(guān)的訪問接口;中間層負(fù)責(zé)管理系統(tǒng)伺服周期的定義和運(yùn)行;應(yīng)用層為高層應(yīng)用程序,通過簡單的方式配置中間層,并監(jiān)控系統(tǒng)狀態(tài);三個層次能夠各自獨(dú)立運(yùn)行,并且在不同的層次為二次開發(fā)人員提供了擴(kuò)展功能模塊的能力,在實(shí)現(xiàn)各自功能的基礎(chǔ)上,每一層為其必要的用戶層提供訪問接口。
本發(fā)明的技術(shù)效果本發(fā)明與已有的控制器相比,是基于開放源碼實(shí)時操作系統(tǒng)RtLinux實(shí)現(xiàn)的,支持對于標(biāo)準(zhǔn)化硬件、通用驅(qū)動軟件模塊和通用算法軟件模塊的可擴(kuò)充性;使用標(biāo)準(zhǔn)C語言的編制策略,支持針對不同層次的不同類型模塊的可移植性;支持用戶以配置文件的形式,根據(jù)應(yīng)用的需要,對系統(tǒng)功能所進(jìn)行的定制;支持系統(tǒng)對新擴(kuò)充進(jìn)的軟、硬件模塊的無縫連接;系統(tǒng)軟件不同層次間的接口保證了系統(tǒng)具有很好的可交互性。由于采用了現(xiàn)代標(biāo)準(zhǔn)開放源代碼的實(shí)時操作系統(tǒng)RtLinux,所以提高了整個系統(tǒng)的開放性,并且大大降低了系統(tǒng)的成本。
在開放性的實(shí)現(xiàn)方面,本發(fā)明專利與國外已有的幾種代表性控制器在開放性實(shí)現(xiàn)方面進(jìn)行了對比。對比結(jié)果如表2所示。
表2 開放性實(shí)現(xiàn)情況對比表

表格中“√”代表支持相關(guān)的屬性;“×”代表不支持相關(guān)的屬性。
通過表1的分析比較結(jié)果中可以看出,與已有的相關(guān)領(lǐng)域的控制器相比,本發(fā)明專利在實(shí)現(xiàn)控制器的開放性方面具有一定的特點(diǎn)。
圖2為本發(fā)明的開放式結(jié)構(gòu)機(jī)器人控制器總體結(jié)構(gòu)示意圖。
圖3為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)結(jié)構(gòu)圖。
圖4為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的基礎(chǔ)層和中間層接口示意圖。
圖5為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的基礎(chǔ)層和應(yīng)用層接口示意圖。
圖6為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的中間層和應(yīng)用層接口示意圖。
圖7為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的CCM總體流程圖。
圖8為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的變量池結(jié)構(gòu)示意圖。
圖9為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的變量池管理器內(nèi)部流程圖。
圖10為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的伺服循環(huán)管理器結(jié)構(gòu)圖。
圖11為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的伺服循環(huán)管理器流程圖。
圖12為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的異常處理器模塊流程圖。
圖13為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的數(shù)據(jù)采集器模塊流程圖。
圖14為本發(fā)明的開放式控制器應(yīng)用軟件系統(tǒng)的數(shù)據(jù)回寫器模塊流程圖。
本發(fā)明的基本工作原理如下首先,整個系統(tǒng)加電運(yùn)行后,開放源碼的實(shí)時操作系統(tǒng)RtLinux加載實(shí)時系統(tǒng)內(nèi)核。其次,開放式控制器應(yīng)用軟件系統(tǒng)啟動,并進(jìn)行初始化工作。開放式控制器應(yīng)用軟件系統(tǒng)將首先初始化開放式控制器系統(tǒng)的周邊硬件設(shè)備,初始化用戶事先設(shè)定的任務(wù)列表,構(gòu)建整個開放式控制器應(yīng)用軟件系統(tǒng)的伺服循環(huán),并在其中加載相應(yīng)的軟件功能模塊。第三,在系統(tǒng)初始化工作完成后,系統(tǒng)將按照用戶已經(jīng)設(shè)定的控制循環(huán)周期,執(zhí)行伺服循環(huán)中的功能模塊。完成整個開放式控制系統(tǒng)的控制功能。另外,開放式控制器應(yīng)用軟件系統(tǒng)向用戶提供了統(tǒng)一的接口,用戶可以根據(jù)應(yīng)用的需要通過修改開放式控制器系統(tǒng)的配置文件,實(shí)現(xiàn)擴(kuò)充和定制系統(tǒng)的目的。另外,根據(jù)應(yīng)用的需要,用戶可以更改應(yīng)用軟件系統(tǒng)伺服循環(huán)中的控制模塊配置。實(shí)現(xiàn)開放式控制器系統(tǒng)可以面向不同應(yīng)用對象的目的。
本發(fā)明系統(tǒng)的硬件部分實(shí)施例中,工業(yè)控制計(jì)算機(jī)是采用基于工業(yè)控制環(huán)境標(biāo)準(zhǔn)的微型計(jì)算機(jī);開放式控制器系統(tǒng)的周邊設(shè)備包括“硬”SERCOS系統(tǒng)硬件接口卡(SERCOS卡)、數(shù)字信號采集卡(數(shù)字I/O卡)、時鐘設(shè)備和模擬信號/數(shù)字信號轉(zhuǎn)換卡(A/D卡)、以及與SERCOS硬件接口卡相連接的基于SERCOS標(biāo)準(zhǔn)的電機(jī)驅(qū)動器和相應(yīng)的電機(jī)等外圍周邊設(shè)備。系統(tǒng)的軟件部分實(shí)施例中,開放源碼的實(shí)時操作系統(tǒng)主要是指使用基于開放源碼的實(shí)時擴(kuò)展內(nèi)核的操作系統(tǒng)RtLinux作為本發(fā)明中的操作系統(tǒng)平臺。在此操作系統(tǒng)平臺上,開放式控制器應(yīng)用軟件系統(tǒng)主要是指用標(biāo)準(zhǔn)C語言開發(fā)完成的開放式機(jī)器人控制器應(yīng)用軟件系統(tǒng)(RTOC)。
由于本發(fā)明實(shí)施例中,硬件部分都是采用國際標(biāo)準(zhǔn)的硬件設(shè)備,而軟件部分的開放源碼的實(shí)時操作系統(tǒng)也是采用國際通用Linux操作系統(tǒng)的實(shí)時擴(kuò)展系統(tǒng)RtLinux。軟件部分的開放式機(jī)器人控制器應(yīng)用軟件系統(tǒng)(RTOC)為本發(fā)明的特征技術(shù),這部分詳細(xì)說明如下本實(shí)施例中RTOC的總體結(jié)構(gòu)如圖3所示。從總體上講,RTOC主要由相互獨(dú)立的三個運(yùn)行層次組成應(yīng)用層31、中間層32和基礎(chǔ)層33。基礎(chǔ)層是在各個特殊的設(shè)備驅(qū)動程序之上,抽象出設(shè)備無關(guān)的訪問接口。中間層是整個系統(tǒng)的核心,負(fù)責(zé)管理系統(tǒng)伺服周期的定義和運(yùn)行。應(yīng)用層是高層應(yīng)用程序,通過簡單的方式配置中間層,并監(jiān)控系統(tǒng)狀態(tài)。
三個層次能夠各自獨(dú)立運(yùn)行,并且在不同的層次為二次開發(fā)人員提供了擴(kuò)展功能模塊的能力。在實(shí)現(xiàn)各自功能的基礎(chǔ)上,每一層為其必要的用戶層(如果A層使用到B層提供的功能,就稱A層是B層的用戶層)提供訪問接口。圖3中應(yīng)用層31、中間層32中的用戶定義函數(shù)模塊和基礎(chǔ)層33中的用戶自定義設(shè)備驅(qū)動模塊,是系統(tǒng)希望用戶根據(jù)具體應(yīng)用的需要進(jìn)行功能擴(kuò)充的模塊。
本實(shí)施例的每個層次的組成結(jié)構(gòu)、功能和對外界接口的方式分別說明如下1、基礎(chǔ)層基礎(chǔ)層33位于控制器軟件系統(tǒng)的最底層,由控制器的所有硬件設(shè)備的驅(qū)動程序和與其相連的向上層提供的硬件無關(guān)接口所組成。其中,所說的驅(qū)動程序包括I/O卡驅(qū)動周期采樣程序、SERCOS卡驅(qū)動中斷采樣程序、提供精確的實(shí)時時鐘控制程序及A/D卡驅(qū)動周期采樣程序;基礎(chǔ)層的接口包括與中間層的接口以及與應(yīng)用層的接口。
基礎(chǔ)層與中間層、應(yīng)用層的接口方式如圖4和圖5所示。中間層和應(yīng)用層通過基礎(chǔ)層提供的硬件無關(guān)接口訪問基礎(chǔ)層的功能模塊。針對中間層和應(yīng)用層的不同實(shí)現(xiàn)特點(diǎn),基礎(chǔ)層分別以不同的形式提供設(shè)備無關(guān)接口。中間層的實(shí)現(xiàn)完全由C語言編寫,因此基礎(chǔ)層為其提供了一套硬件無關(guān)的C語言應(yīng)用程序接口(API),如圖4所示,在編寫中間層的過程中可以方便地直接調(diào)用,同時能夠獲得很高的效率;相對而言,應(yīng)用層的程序目標(biāo)可能比較多樣,實(shí)現(xiàn)方式也可能各個不同,因此基礎(chǔ)層以Linux操作系統(tǒng)設(shè)備文件的形式為應(yīng)用層提供設(shè)備無關(guān)接口,即基礎(chǔ)層把每個設(shè)備映射到一個Linux文件系統(tǒng)中的節(jié)點(diǎn)(系統(tǒng)本身支持),應(yīng)用層只需對這些文件進(jìn)行標(biāo)準(zhǔn)的讀寫操作,就可以控制硬件行為或者獲取硬件狀態(tài),如圖5所示。這種接口方式的效率要比直接的函數(shù)調(diào)用方式低,但是其優(yōu)點(diǎn)在于為應(yīng)用層的實(shí)現(xiàn)提供了很大的自由度,使得應(yīng)用層幾乎可以用所有的高級語言來編寫。
基礎(chǔ)層的主要設(shè)計(jì)目的是在內(nèi)部隱藏設(shè)備相關(guān)的代碼(即各個設(shè)備的實(shí)際驅(qū)動程序),而為上層提供設(shè)備無關(guān)的接口,使得具體硬件細(xì)節(jié)對于上層來說是透明的。通過使用這種硬件無關(guān)接口,中間層和應(yīng)用層能夠完全由硬件無關(guān)的代碼來實(shí)現(xiàn),從而使系統(tǒng)的各個層次獨(dú)立性更好,邏輯更清晰,擴(kuò)展性更好。用戶可以在這一層通過編寫特定設(shè)備的驅(qū)動程序來進(jìn)行系統(tǒng)的功能擴(kuò)展。
2、中間層中間層32是整個控制器軟件系統(tǒng)的核心部分,主要負(fù)責(zé)系統(tǒng)狀態(tài)的維護(hù)和控制周期的調(diào)度,并為上層(應(yīng)用層)提供訪問接口。
中間層為應(yīng)用層提供了接口,其接口如圖6所示。為了讓應(yīng)用層的實(shí)現(xiàn)具有更大的自由度,中間層提供接口的方式也參照了基礎(chǔ)層為應(yīng)用層提供的接口方式,采用了Linux設(shè)備文件。由于中間層實(shí)際上并不涉及到實(shí)際的硬件設(shè)備,因此具體實(shí)現(xiàn)方法是,中間層注冊一個偽硬件設(shè)備,并為這個偽設(shè)備實(shí)現(xiàn)了一個設(shè)備驅(qū)動程序。中間層把這個偽設(shè)備映射到Linux設(shè)備文件,應(yīng)用層通過讀寫設(shè)備文件來訪問中間層功能,獲取中間層狀態(tài)。
本實(shí)施例中間層主要由中央控制模塊及與其相連的變量池、伺服循環(huán)模塊、數(shù)據(jù)采集器、數(shù)據(jù)回寫器和異常處理器組成。中央控制模塊內(nèi)部又包括變量池管理器模塊和伺服循環(huán)管理器模塊兩個子模塊以及與應(yīng)用層的接口。
中央控制模塊(Central Control Module,CCM)是中間層的核心組成部分,負(fù)責(zé)維護(hù)系統(tǒng)運(yùn)行中的各種狀態(tài)變量,為應(yīng)用層提供訪問接口,以及控制系統(tǒng)周期性執(zhí)行的伺服循環(huán)過程。
中央控制模塊的執(zhí)行流程如圖7所示。其總體運(yùn)行步驟如圖7A所示,包括1、加載中央控制模塊(CCM)。主要是為內(nèi)部各種數(shù)據(jù)結(jié)構(gòu)分配存儲空間,并進(jìn)行必要的數(shù)據(jù)初始化。
2、注冊用來描述自身狀態(tài)的狀態(tài)變量。這些狀態(tài)變量可能包括調(diào)度周期的時間長度等。
3、初始化中間層與應(yīng)用層的接口。注冊一個代表中間層信息的虛擬硬件設(shè)備,并把該設(shè)備映射到一個Linux設(shè)備文件,以便應(yīng)用層通過讀寫這個文件來訪問中間層的功能。
4、對用戶編寫的其它中間層模塊(通用算法模塊)進(jìn)行功能的自注冊。通用算法模塊可以通過直接調(diào)用CCM提供的內(nèi)部API來向系統(tǒng)注冊自身能夠提供的功能。
5、通用算法模塊根據(jù)需要注冊狀態(tài)變量。通用算法模塊可能需要一些用來描述自身狀態(tài)信息的全局變量,模塊可以通過直接調(diào)用CCM提供的內(nèi)部API,在變量池中注冊這些狀態(tài)變量。
6、應(yīng)用層的配置程序參與定義伺服循環(huán)。應(yīng)用層的配置程序,可以通過調(diào)用中間層提供的面向應(yīng)用層的接口(即讀寫Linux設(shè)備文件),指示中間層把系統(tǒng)中現(xiàn)有的控制算法,按照一定的要求串聯(lián)成伺服循環(huán),從而構(gòu)建完成伺服循環(huán)模塊。
7、中間層的準(zhǔn)備工作結(jié)束,系統(tǒng)暫時掛起,等待應(yīng)用層程序來通知其啟動周期性調(diào)度。
8、應(yīng)用層通知中間層啟動伺服循環(huán)模塊。當(dāng)應(yīng)用層通知中間層啟動伺服循環(huán)模塊后,中央控制模塊根據(jù)既定的調(diào)度周期,等待啟動伺服循環(huán)模塊時刻的到來。
9、根據(jù)用戶所構(gòu)建的伺服循環(huán)模塊,執(zhí)行一個完整的伺服循環(huán)周期。
10、每個伺服循環(huán)周期結(jié)束后,檢查是否收到了來自應(yīng)用層的掛起或者終止的消息,如果沒有收到通知,則繼續(xù)執(zhí)行下一個周期;如果收到了消息,則根據(jù)需要或者掛起伺服循環(huán),或者終止中間層的運(yùn)行并釋放資源。
執(zhí)行一個伺服周期的步驟如圖7B所示,包括1、數(shù)據(jù)采集器對控制對象的相關(guān)參數(shù)進(jìn)行采樣。
2、順序執(zhí)行預(yù)先定義的伺服周期中的各個步驟。
3、數(shù)據(jù)回寫器把新的控制參數(shù)輸出到基礎(chǔ)層。
變量池是內(nèi)核中被管理的內(nèi)存緩沖區(qū),一般用來存儲控制系統(tǒng)中全局的狀態(tài)變量。變量池的結(jié)構(gòu)如圖8所示。變量池主要包括變量標(biāo)識符域、數(shù)據(jù)大小域、起始地址域、描述信息域,以及中間層內(nèi)部訪問接口和應(yīng)用層訪問接口。變量標(biāo)識符域存放的是變量的標(biāo)識符,即變量的名稱。它唯一地指明了當(dāng)前所存儲的變量。數(shù)據(jù)大小域中指明了該變量在內(nèi)存緩沖區(qū)中所占據(jù)的物理空間大小。起始地址域指明了該變量在內(nèi)存緩沖區(qū)中的物理起始存儲地址。描述信息域是對該變量的功能性描述,它指明了變量用途。中間層內(nèi)部訪問接口則是變量池提供給中間層CCM模塊的訪問接口。應(yīng)用層訪問接口是變量池提供給用戶的訪問接口。
變量池由中央控制模塊中的變量池管理器來管理的。變量池可以用來存儲任意類型的數(shù)據(jù)結(jié)構(gòu),其大小在理論上僅僅取決于系統(tǒng)中可用的物理內(nèi)存大小。變量池管理器負(fù)責(zé)記錄各個變量的標(biāo)識符、變量數(shù)據(jù)所需的內(nèi)存空間大小、變量在內(nèi)存中的起始地址和描述信息,并且提供注冊、注銷變量,以及讀取和修改變量值的功能。
變量池管理器包括兩個典型的執(zhí)行流程,即注冊變量和讀取變量。變量池管理器內(nèi)部用鏈表來維護(hù)變量信息。注冊變量的流程如圖9A所示,包括1.首先在池中檢查是否有相同標(biāo)識符的變量存在。標(biāo)識符是在變量池中代表一個變量的唯一標(biāo)識,因此需要保證全局唯一。如果已經(jīng)存在相同標(biāo)識符的變量,則注冊失敗,返回錯誤代碼;2.否則繼續(xù)執(zhí)行,為新變量分配內(nèi)存;根據(jù)新變量的大小,在系統(tǒng)中為其分配足夠的內(nèi)存,如果無法完成內(nèi)存分配,則注冊失敗,返回錯誤代碼;
3.否則繼續(xù)執(zhí)行,更新變量信息鏈表;在完成內(nèi)存分配之后,系統(tǒng)已經(jīng)得到了新變量在內(nèi)存中的起始地址,進(jìn)而可以把新變量的標(biāo)識符、大小、起始地址和描述信息這些數(shù)據(jù)構(gòu)成一個鏈表節(jié)點(diǎn),添加到系統(tǒng)的變量信息鏈表中去。
讀取變量的流程如圖9B所示,包括1、首先遍歷變量信息鏈表,檢查是否存在指定名稱(標(biāo)識符)的變量,如果沒有,則讀取失敗,返回錯誤代碼;2、如果找到了指定的變量,則根據(jù)變量信息鏈表中描述的該變量的起始地址和大小,返回變量的值。
伺服循環(huán)模塊是系統(tǒng)中周期性執(zhí)行的控制功能模塊,包括庫內(nèi)置控制功能模塊和用戶定義控制功能模塊等。伺服循環(huán)模塊由CCM中的伺服循環(huán)管理器維護(hù)。庫內(nèi)置控制功能模塊包括基礎(chǔ)層已經(jīng)提供的不同功能的模塊,例如I/O卡驅(qū)動周期采樣模塊、SERCOS卡驅(qū)動中斷采樣模塊、A/D卡驅(qū)動周期采樣模塊。用戶定義控制功能模塊則主要包括用戶根據(jù)應(yīng)用的需要所擴(kuò)充的一些軟件功能模塊,例如根據(jù)機(jī)器人運(yùn)動控制的需要,用戶會擴(kuò)充一些軌跡規(guī)劃模塊等。CCM中的伺服循環(huán)管理器將來自控制器周邊硬件設(shè)備的相關(guān)參數(shù)經(jīng)過各種控制、規(guī)劃算法的順序計(jì)算處理,最終返回給控制器的周邊硬件設(shè)備,構(gòu)成了一個完整的閉環(huán)反饋系統(tǒng)。
伺服循環(huán)管理器結(jié)構(gòu)如圖10所示。伺服循環(huán)管理器包括內(nèi)部數(shù)據(jù)結(jié)構(gòu)管理器、控制功能鏈表和伺服周期鏈表。控制功能鏈表中,主要存放了中間層中目前所有能夠被調(diào)用的控制函數(shù),以及這些函數(shù)的名稱、入口地址和描述信息。伺服周期鏈表是由控制功能鏈表中被選定的元素按照一定執(zhí)行的流程組成的一個函數(shù)鏈。伺服循環(huán)鏈表中的入口和出口分別對應(yīng)了一個伺服循環(huán)周期的入口與出口。內(nèi)部數(shù)據(jù)結(jié)構(gòu)管理器負(fù)責(zé)管理和維護(hù)這兩張鏈表??刂乒δ苕湵碇械目刂坪瘮?shù)可能是系統(tǒng)中間層提供的,也可能是由用戶后來開發(fā)的,對于新的功能函數(shù)信息,此時就需要數(shù)據(jù)結(jié)構(gòu)管理器來進(jìn)行維護(hù)了。
伺服循環(huán)管理器流程如圖11所示,主要包括控制功能的注冊和伺服周期的定義兩部分。
控制功能注冊流程如圖11A所示,包括1、首先檢查控制功能鏈表中是否存在重名的函數(shù)。函數(shù)名稱是伺服循環(huán)模塊中用來代表一個控制功能的唯一標(biāo)識,因此必須保證全局唯一。如果該函數(shù)名稱已經(jīng)存在,則注冊失敗,返回錯誤代碼;2、否則繼續(xù)執(zhí)行,更新控制功能鏈表,根據(jù)注冊者提供的函數(shù)名稱、描述和入口地址,構(gòu)成一個新的控制功能鏈表節(jié)點(diǎn),并加入到控制功能鏈表中去。
伺服循環(huán)模塊的定義流程如圖11B所示,包括1、首先清空伺服周期鏈表;2、準(zhǔn)備在伺服周期中加入一個控制功能函數(shù);3、遍歷控制功能鏈表,檢查是否存在指定名稱的控制功能;由于要求伺服周期中的控制功能元素集合是控制功能鏈表中所有元素集合的子集,因此只有在控制功能鏈表中存在的節(jié)點(diǎn),才能被加入到伺服周期鏈表中;如果在控制功能鏈表中找不到指定名稱的控制功能,則定義伺服周期失敗,返回錯誤代碼;4、否則繼續(xù)執(zhí)行,更新伺服周期鏈表,根據(jù)需要加入的控制功能的函數(shù)名稱、描述信息和入口地址,構(gòu)成一個新的伺服周期鏈表節(jié)點(diǎn),并加入到伺服周期鏈表中去;5、如果還有其他控制功能需要被加入到伺服周期中,則轉(zhuǎn)2準(zhǔn)備加入一個新的控制功能函數(shù),否則結(jié)束。
異常處理器負(fù)責(zé)處理系統(tǒng)運(yùn)行中的異常情況。異常通常是由硬件中斷或者來自應(yīng)用層的消息來觸發(fā)的。中央控制模塊在捕獲異常之后,直接把異常傳遞給異常處理器處理。異常處理器內(nèi)部維護(hù)著一個異常處理過程鏈表,鏈表中包含著每一個異常處理過程能夠處理的異常類型和過程的入口地址。異常處理器的處理流程如圖12所示,包括1.中央控制模塊捕獲異常。由于異常由硬件中斷或者來自應(yīng)用層的異常消息,中央控制模塊一般通過響應(yīng)中斷或者監(jiān)聽異常消息來捕獲異常。在捕獲異常之后,中間層首先保存當(dāng)前的運(yùn)行狀態(tài),然后把異常交給異常處理器處理;2.異常處理器檢查異常類型,并調(diào)用合適的異常處理過程。異常處理器在得知異常之后,首先檢查當(dāng)前異常處理過程鏈表中是否存在能夠處理該異常類型的處理過程;a)如果存在,則先保存中央控制模塊當(dāng)前運(yùn)行的狀態(tài),然后調(diào)用合適的異常處理過程,由該異常處理過程決定系統(tǒng)是否繼續(xù)運(yùn)行;b)如果不存在,則根據(jù)一定的策略,或者忽略異常,或者直接終止整個系統(tǒng)的運(yùn)行。
異常處理器的抽象,有助于在系統(tǒng)設(shè)計(jì)中,把正常執(zhí)行過程的代碼和異常處理的代碼很好地分割開,保證邏輯的盡量清晰。
數(shù)據(jù)采集器和數(shù)據(jù)回寫器是在中間層中獨(dú)立劃分出來的、直接面向基礎(chǔ)層的子模塊。數(shù)據(jù)采集器運(yùn)行流程如圖13所示,包括1.啟動數(shù)據(jù)采集器;2.直接調(diào)用基礎(chǔ)層的硬件無關(guān)接口,從基礎(chǔ)層獲得各種相關(guān)硬件設(shè)備的最新數(shù)據(jù);3.用從基礎(chǔ)層獲得的數(shù)據(jù),更新變量池中相應(yīng)的變量;中間層在初始化的過程中,一般會為基礎(chǔ)層的各種硬件設(shè)備,在變量池中注冊相應(yīng)的狀態(tài)變量,因此,基礎(chǔ)層的一個設(shè)備,一般是與中間層變量池中的一組變量相對應(yīng)的;4.數(shù)據(jù)采集完畢,啟動伺服周期的一次執(zhí)行過程,依次執(zhí)行各個控制過程。
數(shù)據(jù)回寫器的運(yùn)行流程如圖14所示,包括1.啟動數(shù)據(jù)回寫器。
2.從變量池中獲取最新的代表硬件設(shè)備數(shù)據(jù)的變量值。
3.把新獲取的數(shù)據(jù),通過基礎(chǔ)層的硬件無關(guān)接口,輸出到相應(yīng)的基礎(chǔ)層設(shè)備驅(qū)動程序。結(jié)束一個伺服周期的執(zhí)行過程,系統(tǒng)進(jìn)入暫時掛起的狀態(tài)。
3、應(yīng)用層應(yīng)用層主要由中間層監(jiān)控模塊和基礎(chǔ)層監(jiān)控模塊所組成。基礎(chǔ)層監(jiān)控模塊主要為用戶提供了一個硬件配置和監(jiān)控程序的接口,它可以用Linux操作系統(tǒng)中Shell腳本的形式提供給用戶。中間層監(jiān)控模塊主要包括系統(tǒng)狀態(tài)監(jiān)控程序、系統(tǒng)調(diào)式程序、中間層配置程序、遠(yuǎn)程監(jiān)控程序。它們分別以QT圖形界面、C/C++語言、Perl腳本和C/C++語言的形式給用戶提供一個監(jiān)控系統(tǒng)中間層的接口界面。
在基礎(chǔ)層和應(yīng)用層提供的靈活的接口基礎(chǔ)上,應(yīng)用層的功能是由用戶用各種高級語言或者腳本語言來實(shí)現(xiàn)的,而不必局限于C語言程序。對于系統(tǒng)狀態(tài)的監(jiān)控用戶可以采用QT圖形庫以圖形化的方式刷新和顯示系統(tǒng)的狀態(tài);對于系統(tǒng)的調(diào)試或者遠(yuǎn)程監(jiān)控系統(tǒng)狀態(tài),用戶可以使用C/C++語言程序來實(shí)現(xiàn)。而對于中間層的配置,系統(tǒng)可以用Perl腳本以圖形化方式來實(shí)現(xiàn)配置程序模塊,配置操作變量池和定義伺服周期的目的。面向硬件層,用戶可以使用Shell腳本來配置硬件和監(jiān)控程序。
權(quán)利要求
1.一種開放式結(jié)構(gòu)機(jī)器人控制器,包括由工業(yè)控制計(jì)算機(jī)和與其相連的開放式控制器系統(tǒng)的周邊設(shè)備所組成的硬件部分,對該硬件進(jìn)行控制由開放源碼的實(shí)時操作系統(tǒng)和在該操作系統(tǒng)平臺上運(yùn)行的開放式控制器應(yīng)用軟件系統(tǒng)組成的軟件部分;其特征在于,所說的工業(yè)控制計(jì)算機(jī)采用基于工業(yè)控制環(huán)境標(biāo)準(zhǔn)的微型計(jì)算機(jī);所說的周邊設(shè)備采用國際標(biāo)準(zhǔn)的硬件設(shè)備,包括“硬”SERCOS系統(tǒng)硬件接口卡、數(shù)字信號采集卡、時鐘設(shè)備和模擬信號/數(shù)字信號轉(zhuǎn)換卡、以及基于SERCOS標(biāo)準(zhǔn)的電機(jī)驅(qū)動器和相應(yīng)的電機(jī);所說的開放源碼的實(shí)時操作系統(tǒng)采用國際通用Linux操作系統(tǒng)的實(shí)時擴(kuò)展系統(tǒng)RtLinux;所說的開放式控制器應(yīng)用軟件系統(tǒng)RTOC主要由相互獨(dú)立的應(yīng)用層、中間層和基礎(chǔ)層三個運(yùn)行層次組成;其中,基礎(chǔ)層是在各個特殊的設(shè)備驅(qū)動程序之上,抽象出設(shè)備無關(guān)的訪問接口;中間層負(fù)責(zé)管理系統(tǒng)伺服周期的定義和運(yùn)行;應(yīng)用層為高層應(yīng)用程序,通過簡單的方式配置中間層,并監(jiān)控系統(tǒng)狀態(tài);三個層次能夠各自獨(dú)立運(yùn)行,并且在不同的層次為二次開發(fā)人員提供了擴(kuò)展功能模塊的能力,在實(shí)現(xiàn)各自功能的基礎(chǔ)上,每一層為其必要的用戶層提供訪問接口。
2.如權(quán)利要求1所述的開放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說的基礎(chǔ)層由控制器的所有硬件設(shè)備的驅(qū)動程序和與其相連的向上層提供的硬件無關(guān)接口所組成;其中,所說的驅(qū)動程序包括I/O卡驅(qū)動周期采樣程序、SERCOS卡驅(qū)動中斷采樣程序、提供精確的實(shí)時時鐘控制程序及A/D卡驅(qū)動周期采樣程序;基礎(chǔ)層的接口包括與中間層的硬件無關(guān)的C語言應(yīng)用程序接口以及與以Linux操作系統(tǒng)設(shè)備文件的形式為應(yīng)用層提供設(shè)備無關(guān)接口。
3.如權(quán)利要求1所述的開放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說的中間層由中央控制模塊(CCM),及與其相連的變量池、伺服循環(huán)模塊、數(shù)據(jù)采集器、數(shù)據(jù)回寫器和異常處理器組成,所說的中央控制模塊內(nèi)部又包括變量池管理器模塊和伺服循環(huán)管理器模塊兩個子模塊以及與應(yīng)用層的采用Linux設(shè)備文件的接口;該中央控制模塊負(fù)責(zé)維護(hù)系統(tǒng)運(yùn)行中的各種狀態(tài)變量,為應(yīng)用層提供訪問接口,以及控制系統(tǒng)周期性執(zhí)行的伺服循環(huán)過程;該變量池是內(nèi)核中被管理的內(nèi)存緩沖區(qū),用來存儲控制系統(tǒng)中全局的狀態(tài)變量;該伺服循環(huán)模塊是系統(tǒng)中周期性執(zhí)行的控制功能模塊,由中央控制模塊中的伺服循環(huán)管理器維護(hù);該異常處理器負(fù)責(zé)處理系統(tǒng)運(yùn)行中的異常情況。
4.如權(quán)利要求3所述的開放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說的變量池主要包括變量標(biāo)識符域、數(shù)據(jù)大小域、起始地址域、描述信息域,以及中間層內(nèi)部訪問接口和應(yīng)用層訪問接口;該變量標(biāo)識符域存放的是變量的名稱;數(shù)據(jù)大小域中指明了該變量在內(nèi)存緩沖區(qū)中所占據(jù)的物理空間大?。黄鹗嫉刂酚蛑该髁嗽撟兞吭趦?nèi)存緩沖區(qū)中的物理起始存儲地址;描述信息域是對該變量的功能性描述,指明了變量用途;中間層內(nèi)部訪問接口則是變量池提供給中間層CCM模塊的訪問接口;應(yīng)用層訪問接口是變量池提供給用戶的訪問接口。
5.如權(quán)利要求3所述的開放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說的伺服循環(huán)模塊包括庫內(nèi)置控制功能模塊和用戶定義控制功能模塊;該庫內(nèi)置控制功能模塊包括基礎(chǔ)層已經(jīng)提供的不同功能的模塊;用戶定義控制功能模塊主要包括用戶根據(jù)應(yīng)用的需要所擴(kuò)充的一些軟件功能模塊。CCM中的伺服循環(huán)管理器模塊負(fù)責(zé)維護(hù)伺服循環(huán)模塊的運(yùn)行,它將來自控制器周邊硬件設(shè)備的相關(guān)參數(shù)經(jīng)過各種控制、規(guī)劃算法的順序計(jì)算處理,最終還會傳送給控制器的周邊硬件設(shè)備,構(gòu)成了一個完整的閉環(huán)反饋系統(tǒng)。
6.如權(quán)利要求3所述的開放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說的伺服循環(huán)管理器包括內(nèi)部數(shù)據(jù)結(jié)構(gòu)管理器及其管理和維護(hù)的控制功能鏈表和伺服周期鏈表;該控制功能鏈表中,主要存放了中間層中目前所有能夠被調(diào)用的控制函數(shù),以及這些函數(shù)的名稱、入口地址和描述信息;該伺服周期鏈表是由控制功能鏈表中被選定的元素按照一定的執(zhí)行流程組成的一個函數(shù)鏈;伺服循環(huán)鏈表中的入口和出口分別對應(yīng)了一個伺服循環(huán)周期的入口與出口。
7.如權(quán)利要求1所述的開放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說的應(yīng)用層主要由中間層監(jiān)控模塊和基礎(chǔ)層監(jiān)控模塊所組成;其中,基礎(chǔ)層監(jiān)控模塊主要為用戶提供了一個硬件配置和監(jiān)控程序的接口;中間層監(jiān)控模塊主要包括系統(tǒng)狀態(tài)監(jiān)控程序、系統(tǒng)調(diào)式程序、中間層配置程序、遠(yuǎn)程監(jiān)控程序,各程序分別以QT圖形界面、C/C++語言、Perl腳本和C/C++語言的形式給用戶提供一個監(jiān)控系統(tǒng)中間層的接口界面。
全文摘要
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,涉及開放式結(jié)構(gòu)機(jī)器人控制器。包括由工業(yè)控制計(jì)算機(jī)和開放式控制器系統(tǒng)的周邊設(shè)備所組成的硬件部分,由開放源碼的實(shí)時操作系統(tǒng)和開放式控制器應(yīng)用軟件系統(tǒng)組成的軟件部分;所說的開放式控制器應(yīng)用軟件系統(tǒng)RTOC主要由三個運(yùn)行層次組成;基礎(chǔ)層是在各個特殊的設(shè)備驅(qū)動程序之上,抽象出設(shè)備無關(guān)的訪問接口;中間層負(fù)責(zé)管理系統(tǒng)伺服周期的定義和運(yùn)行;應(yīng)用層為高層應(yīng)用程序,通過簡單的方式配置中間層,并監(jiān)控系統(tǒng)狀態(tài);本發(fā)明可以用于對機(jī)器人的控制,也可以用于對其它運(yùn)動控制系統(tǒng)的控制。具有可擴(kuò)展性、可移植性、可定制性和互操作性四個方面的特征,并且大大降低了系統(tǒng)的成本。
文檔編號G06F9/00GK1424649SQ0310007
公開日2003年6月18日 申請日期2003年1月9日 優(yōu)先權(quán)日2003年1月9日
發(fā)明者徐華, 楊澤紅, 賈培發(fā), 趙雁南, 王家廞, 曹亦明, 李明 申請人:清華大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
涿鹿县| 山东省| 洛宁县| 桓仁| 云林县| 米脂县| 麦盖提县| 乌什县| 耒阳市| 赤水市| 德保县| 远安县| 伊春市| 奇台县| 米易县| 六安市| 犍为县| 莱芜市| 陆良县| 崇仁县| 宁河县| 阿拉尔市| 金山区| 道孚县| 花垣县| 文成县| 禄劝| 湾仔区| 镇原县| 拉萨市| 福海县| 西峡县| 岳普湖县| 三亚市| 蓝山县| 电白县| 额济纳旗| 崇阳县| 祁连县| 北宁市| 许昌市|