專(zhuān)利名稱(chēng):開(kāi)放式結(jié)構(gòu)機(jī)器人控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別涉及基于實(shí)時(shí)Linux的開(kāi)放式結(jié)構(gòu)機(jī)器人控制器設(shè)計(jì)。
在提出開(kāi)放式結(jié)構(gòu)控制器概念的早期,許多硬件廠商推出了基于一定標(biāo)準(zhǔn)的可供第三方進(jìn)行二次開(kāi)發(fā)的控制器硬件產(chǎn)品。這些產(chǎn)品中比較有代表性的有基于視窗(Windows)實(shí)時(shí)擴(kuò)展系統(tǒng)的RCS、CX3000、PMAC-NC、OAC500和MOS等控制器;有基于磁盤(pán)操作系統(tǒng)(DOS)的DX-32和Sinumerlk 8400控制器;還有基于實(shí)時(shí)Unix操作系統(tǒng)的開(kāi)放式計(jì)算機(jī)數(shù)字控制器(Open CNC)。
應(yīng)用的發(fā)展對(duì)于開(kāi)放式控制器開(kāi)放性的概念在不斷地發(fā)生變化。雖然對(duì)于開(kāi)放性的定義至今沒(méi)有形成共識(shí),近年來(lái)不同的觀點(diǎn)普遍認(rèn)為一個(gè)開(kāi)放式機(jī)器人控制器應(yīng)具有如下特征可擴(kuò)展性(Extensibility)、可移植性(Portability)、可定制性(Reconfigurability)和可交互性(Interoperability)。
可擴(kuò)展性任何一個(gè)滿足一定標(biāo)準(zhǔn)的控制應(yīng)用模塊可以方便地?cái)U(kuò)充或替換開(kāi)放式控制器中的應(yīng)用模塊,同時(shí)不影響已有的控制模塊。如當(dāng)開(kāi)放式控制器用于機(jī)器人控制時(shí)可以方便地增加關(guān)節(jié)數(shù)、外部設(shè)備、擴(kuò)充機(jī)器人視覺(jué)模塊和基于網(wǎng)絡(luò)接口的擴(kuò)展模塊等。
可移植性這種開(kāi)放式控制器系統(tǒng)軟件在不同層次上未經(jīng)或經(jīng)過(guò)最小的修改后,可以運(yùn)行于不同的系統(tǒng)平臺(tái)上。分層結(jié)構(gòu)的系統(tǒng)中,最底層(伺服層)的伺服驅(qū)動(dòng)程序模塊在系統(tǒng)滿足一定標(biāo)準(zhǔn)的情況下(如基于Sercos設(shè)備總線),可以方便地移植到具有不同伺服級(jí)的系統(tǒng)中運(yùn)行。中間層的管理調(diào)度模塊、控制算法模塊、軌跡規(guī)劃模塊等具有一定通用性,具有較小的平臺(tái)相關(guān)性。與最終用戶相交互接口的應(yīng)用層,與平臺(tái)的依賴(lài)性將更小。
可定制性用戶可以根據(jù)應(yīng)用的需要定制控制器??啥ㄖ菩跃褪轻槍?duì)應(yīng)用的特點(diǎn)對(duì)于擴(kuò)充后的控制器規(guī)模進(jìn)行合理地裁減。例如根據(jù)需求定制伺服電機(jī)的數(shù)目和外設(shè);根據(jù)機(jī)構(gòu)類(lèi)型定制運(yùn)動(dòng)學(xué)解算方法;根據(jù)功能要求定制控制算法。
互操作性開(kāi)放式控制器系統(tǒng)支持一種實(shí)現(xiàn)控制器軟件與控制器硬件無(wú)縫連接的規(guī)范接口。這種規(guī)范接口保證擴(kuò)充進(jìn)系統(tǒng)的軟硬件模塊可以在原有系統(tǒng)平臺(tái)上很好地完成系統(tǒng)新的控制功能,而不會(huì)影響系統(tǒng)原有的性能。
近些年來(lái),在開(kāi)放式控制器研究與應(yīng)用方面,由瑞典侖德(Lund)大學(xué)研究完成的開(kāi)放式機(jī)器人控制器體系結(jié)構(gòu)(ORC)就是其中典型的代表。ORC是一種能夠集成工業(yè)機(jī)器人控制和編程的體系結(jié)構(gòu)框架。這種開(kāi)放式機(jī)器人控制器體系結(jié)構(gòu)如
圖1所示。整個(gè)體系結(jié)構(gòu)從上到下依次可以分成三個(gè)層次終端用戶層11、系統(tǒng)層12和伺伏層13。在終端用戶層從上到下依次含有任務(wù)級(jí)編程接口模塊、離線編程接口模塊和在線編程接口模塊。在系統(tǒng)層中從上到下依次是系統(tǒng)管理模塊和應(yīng)用控制模塊。在伺服層中從上到下依次是運(yùn)動(dòng)控制模塊、機(jī)械臂控制模塊、電機(jī)控制模塊和VME總線標(biāo)準(zhǔn)(VME是VersaModule Europa的簡(jiǎn)稱(chēng)。)控制對(duì)象。各個(gè)層次模塊的功能和對(duì)應(yīng)的終端用戶如表1所示。
表1 ORC中不同軟件層次的屬性與相關(guān)用戶對(duì)照表
在ORC中,系統(tǒng)層12和伺服層13的功能模塊在實(shí)現(xiàn)上都是采用編譯方式實(shí)現(xiàn)的,而終端用戶層的模塊在實(shí)現(xiàn)上,首先由用戶給出相應(yīng)的機(jī)器人語(yǔ)言描述,而后在運(yùn)行時(shí)采用解釋方式來(lái)完成相應(yīng)的功能。
上述體系結(jié)構(gòu)中每一層的模塊都具有兩種類(lèi)型的接口,首先是提供給相鄰高層的模塊調(diào)用接口,其次是提供給用戶的設(shè)計(jì)、編程和操作接口。由于每一層中不同的模塊對(duì)于系統(tǒng)的抽象程度不同,所以在使用時(shí),不同的層次對(duì)應(yīng)于不同工程背景的用戶。
首先,ORC雖然在系統(tǒng)的體系結(jié)構(gòu)上提出了分層面向不同用戶的概念,但是由于不同層次不同類(lèi)型模塊的編程接口要求由不同應(yīng)用背景的用戶進(jìn)行軟件模塊的擴(kuò)充,而系統(tǒng)的高層缺乏統(tǒng)一的擴(kuò)展接口,所以在系統(tǒng)的應(yīng)用上就給系統(tǒng)可擴(kuò)充性的實(shí)現(xiàn)帶來(lái)了困難。另外底層的硬件由于是采用VME總線標(biāo)準(zhǔn)的控制設(shè)備和封閉的實(shí)時(shí)UNIX操作系統(tǒng),從已有的軟件上講都不具備開(kāi)放的控制接口,所以系統(tǒng)硬件標(biāo)準(zhǔn)接口的封閉性也影響了開(kāi)放式控制器可擴(kuò)充性。其次,由于ORC是在實(shí)時(shí)UNIX系統(tǒng)上開(kāi)發(fā)完成的,從軟件的實(shí)現(xiàn)上講,缺乏可移植性的機(jī)制。再次,ORC系統(tǒng)允許不同應(yīng)用背景的用戶對(duì)于系統(tǒng)不同層次進(jìn)行一定地?cái)U(kuò)充,但是缺乏對(duì)于擴(kuò)充后系統(tǒng)的裁減和定制機(jī)制,所以系統(tǒng)的可定制功能有待于提高。最后,系統(tǒng)最底層所擴(kuò)充的軟件雖然可以與VME總線標(biāo)準(zhǔn)的驅(qū)動(dòng)控制對(duì)象實(shí)現(xiàn)很好的交互性,但由于VME總線標(biāo)準(zhǔn)缺乏真正意義上的開(kāi)放性,所以O(shè)RC與新擴(kuò)充進(jìn)來(lái)的系統(tǒng)驅(qū)動(dòng)對(duì)象的交互能力有待于提高。
本發(fā)明提出的一種開(kāi)放式結(jié)構(gòu)機(jī)器人控制器,包括由工業(yè)控制計(jì)算機(jī)和與其相連的開(kāi)放式控制器系統(tǒng)的周邊設(shè)備所組成的硬件部分,對(duì)該硬件進(jìn)行控制由開(kāi)放源碼的實(shí)時(shí)操作系統(tǒng)和在該操作系統(tǒng)平臺(tái)上運(yùn)行的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)組成的軟件部分;其特征在于,所說(shuō)的工業(yè)控制計(jì)算機(jī)采用基于工業(yè)控制環(huán)境標(biāo)準(zhǔn)的微型計(jì)算機(jī);所說(shuō)的周邊設(shè)備采用國(guó)際標(biāo)準(zhǔn)的硬件設(shè)備,包括“硬”SERCOS系統(tǒng)硬件接口卡、數(shù)字信號(hào)采集卡、時(shí)鐘設(shè)備和模擬信號(hào)/數(shù)字信號(hào)轉(zhuǎn)換卡、以及基于SERCOS標(biāo)準(zhǔn)的電機(jī)驅(qū)動(dòng)器和相應(yīng)的電機(jī);所說(shuō)的開(kāi)放源碼的實(shí)時(shí)操作系統(tǒng)采用國(guó)際通用Linux操作系統(tǒng)的實(shí)時(shí)擴(kuò)展系統(tǒng)RtLinux;所說(shuō)的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)(RTOC)主要由相互獨(dú)立的應(yīng)用層、中間層和基礎(chǔ)層三個(gè)運(yùn)行層次組成;其中,基礎(chǔ)層是在各個(gè)特殊的設(shè)備驅(qū)動(dòng)程序之上,抽象出設(shè)備無(wú)關(guān)的訪問(wèn)接口;中間層負(fù)責(zé)管理系統(tǒng)伺服周期的定義和運(yùn)行;應(yīng)用層為高層應(yīng)用程序,通過(guò)簡(jiǎn)單的方式配置中間層,并監(jiān)控系統(tǒng)狀態(tài);三個(gè)層次能夠各自獨(dú)立運(yùn)行,并且在不同的層次為二次開(kāi)發(fā)人員提供了擴(kuò)展功能模塊的能力,在實(shí)現(xiàn)各自功能的基礎(chǔ)上,每一層為其必要的用戶層提供訪問(wèn)接口。
本發(fā)明的技術(shù)效果本發(fā)明與已有的控制器相比,是基于開(kāi)放源碼實(shí)時(shí)操作系統(tǒng)RtLinux實(shí)現(xiàn)的,支持對(duì)于標(biāo)準(zhǔn)化硬件、通用驅(qū)動(dòng)軟件模塊和通用算法軟件模塊的可擴(kuò)充性;使用標(biāo)準(zhǔn)C語(yǔ)言的編制策略,支持針對(duì)不同層次的不同類(lèi)型模塊的可移植性;支持用戶以配置文件的形式,根據(jù)應(yīng)用的需要,對(duì)系統(tǒng)功能所進(jìn)行的定制;支持系統(tǒng)對(duì)新擴(kuò)充進(jìn)的軟、硬件模塊的無(wú)縫連接;系統(tǒng)軟件不同層次間的接口保證了系統(tǒng)具有很好的可交互性。由于采用了現(xiàn)代標(biāo)準(zhǔn)開(kāi)放源代碼的實(shí)時(shí)操作系統(tǒng)RtLinux,所以提高了整個(gè)系統(tǒng)的開(kāi)放性,并且大大降低了系統(tǒng)的成本。
在開(kāi)放性的實(shí)現(xiàn)方面,本發(fā)明專(zhuān)利與國(guó)外已有的幾種代表性控制器在開(kāi)放性實(shí)現(xiàn)方面進(jìn)行了對(duì)比。對(duì)比結(jié)果如表2所示。
表2 開(kāi)放性實(shí)現(xiàn)情況對(duì)比表
表格中“√”代表支持相關(guān)的屬性;“×”代表不支持相關(guān)的屬性。
通過(guò)表1的分析比較結(jié)果中可以看出,與已有的相關(guān)領(lǐng)域的控制器相比,本發(fā)明專(zhuān)利在實(shí)現(xiàn)控制器的開(kāi)放性方面具有一定的特點(diǎn)。
圖2為本發(fā)明的開(kāi)放式結(jié)構(gòu)機(jī)器人控制器總體結(jié)構(gòu)示意圖。
圖3為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)結(jié)構(gòu)圖。
圖4為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的基礎(chǔ)層和中間層接口示意圖。
圖5為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的基礎(chǔ)層和應(yīng)用層接口示意圖。
圖6為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的中間層和應(yīng)用層接口示意圖。
圖7為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的CCM總體流程圖。
圖8為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的變量池結(jié)構(gòu)示意圖。
圖9為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的變量池管理器內(nèi)部流程圖。
圖10為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的伺服循環(huán)管理器結(jié)構(gòu)圖。
圖11為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的伺服循環(huán)管理器流程圖。
圖12為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的異常處理器模塊流程圖。
圖13為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的數(shù)據(jù)采集器模塊流程圖。
圖14為本發(fā)明的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的數(shù)據(jù)回寫(xiě)器模塊流程圖。
本發(fā)明的基本工作原理如下首先,整個(gè)系統(tǒng)加電運(yùn)行后,開(kāi)放源碼的實(shí)時(shí)操作系統(tǒng)RtLinux加載實(shí)時(shí)系統(tǒng)內(nèi)核。其次,開(kāi)放式控制器應(yīng)用軟件系統(tǒng)啟動(dòng),并進(jìn)行初始化工作。開(kāi)放式控制器應(yīng)用軟件系統(tǒng)將首先初始化開(kāi)放式控制器系統(tǒng)的周邊硬件設(shè)備,初始化用戶事先設(shè)定的任務(wù)列表,構(gòu)建整個(gè)開(kāi)放式控制器應(yīng)用軟件系統(tǒng)的伺服循環(huán),并在其中加載相應(yīng)的軟件功能模塊。第三,在系統(tǒng)初始化工作完成后,系統(tǒng)將按照用戶已經(jīng)設(shè)定的控制循環(huán)周期,執(zhí)行伺服循環(huán)中的功能模塊。完成整個(gè)開(kāi)放式控制系統(tǒng)的控制功能。另外,開(kāi)放式控制器應(yīng)用軟件系統(tǒng)向用戶提供了統(tǒng)一的接口,用戶可以根據(jù)應(yīng)用的需要通過(guò)修改開(kāi)放式控制器系統(tǒng)的配置文件,實(shí)現(xiàn)擴(kuò)充和定制系統(tǒng)的目的。另外,根據(jù)應(yīng)用的需要,用戶可以更改應(yīng)用軟件系統(tǒng)伺服循環(huán)中的控制模塊配置。實(shí)現(xiàn)開(kāi)放式控制器系統(tǒng)可以面向不同應(yīng)用對(duì)象的目的。
本發(fā)明系統(tǒng)的硬件部分實(shí)施例中,工業(yè)控制計(jì)算機(jī)是采用基于工業(yè)控制環(huán)境標(biāo)準(zhǔn)的微型計(jì)算機(jī);開(kāi)放式控制器系統(tǒng)的周邊設(shè)備包括“硬”SERCOS系統(tǒng)硬件接口卡(SERCOS卡)、數(shù)字信號(hào)采集卡(數(shù)字I/O卡)、時(shí)鐘設(shè)備和模擬信號(hào)/數(shù)字信號(hào)轉(zhuǎn)換卡(A/D卡)、以及與SERCOS硬件接口卡相連接的基于SERCOS標(biāo)準(zhǔn)的電機(jī)驅(qū)動(dòng)器和相應(yīng)的電機(jī)等外圍周邊設(shè)備。系統(tǒng)的軟件部分實(shí)施例中,開(kāi)放源碼的實(shí)時(shí)操作系統(tǒng)主要是指使用基于開(kāi)放源碼的實(shí)時(shí)擴(kuò)展內(nèi)核的操作系統(tǒng)RtLinux作為本發(fā)明中的操作系統(tǒng)平臺(tái)。在此操作系統(tǒng)平臺(tái)上,開(kāi)放式控制器應(yīng)用軟件系統(tǒng)主要是指用標(biāo)準(zhǔn)C語(yǔ)言開(kāi)發(fā)完成的開(kāi)放式機(jī)器人控制器應(yīng)用軟件系統(tǒng)(RTOC)。
由于本發(fā)明實(shí)施例中,硬件部分都是采用國(guó)際標(biāo)準(zhǔn)的硬件設(shè)備,而軟件部分的開(kāi)放源碼的實(shí)時(shí)操作系統(tǒng)也是采用國(guó)際通用Linux操作系統(tǒng)的實(shí)時(shí)擴(kuò)展系統(tǒng)RtLinux。軟件部分的開(kāi)放式機(jī)器人控制器應(yīng)用軟件系統(tǒng)(RTOC)為本發(fā)明的特征技術(shù),這部分詳細(xì)說(shuō)明如下本實(shí)施例中RTOC的總體結(jié)構(gòu)如圖3所示。從總體上講,RTOC主要由相互獨(dú)立的三個(gè)運(yùn)行層次組成應(yīng)用層31、中間層32和基礎(chǔ)層33?;A(chǔ)層是在各個(gè)特殊的設(shè)備驅(qū)動(dòng)程序之上,抽象出設(shè)備無(wú)關(guān)的訪問(wèn)接口。中間層是整個(gè)系統(tǒng)的核心,負(fù)責(zé)管理系統(tǒng)伺服周期的定義和運(yùn)行。應(yīng)用層是高層應(yīng)用程序,通過(guò)簡(jiǎn)單的方式配置中間層,并監(jiān)控系統(tǒng)狀態(tài)。
三個(gè)層次能夠各自獨(dú)立運(yùn)行,并且在不同的層次為二次開(kāi)發(fā)人員提供了擴(kuò)展功能模塊的能力。在實(shí)現(xiàn)各自功能的基礎(chǔ)上,每一層為其必要的用戶層(如果A層使用到B層提供的功能,就稱(chēng)A層是B層的用戶層)提供訪問(wèn)接口。圖3中應(yīng)用層31、中間層32中的用戶定義函數(shù)模塊和基礎(chǔ)層33中的用戶自定義設(shè)備驅(qū)動(dòng)模塊,是系統(tǒng)希望用戶根據(jù)具體應(yīng)用的需要進(jìn)行功能擴(kuò)充的模塊。
本實(shí)施例的每個(gè)層次的組成結(jié)構(gòu)、功能和對(duì)外界接口的方式分別說(shuō)明如下1、基礎(chǔ)層基礎(chǔ)層33位于控制器軟件系統(tǒng)的最底層,由控制器的所有硬件設(shè)備的驅(qū)動(dòng)程序和與其相連的向上層提供的硬件無(wú)關(guān)接口所組成。其中,所說(shuō)的驅(qū)動(dòng)程序包括I/O卡驅(qū)動(dòng)周期采樣程序、SERCOS卡驅(qū)動(dòng)中斷采樣程序、提供精確的實(shí)時(shí)時(shí)鐘控制程序及A/D卡驅(qū)動(dòng)周期采樣程序;基礎(chǔ)層的接口包括與中間層的接口以及與應(yīng)用層的接口。
基礎(chǔ)層與中間層、應(yīng)用層的接口方式如圖4和圖5所示。中間層和應(yīng)用層通過(guò)基礎(chǔ)層提供的硬件無(wú)關(guān)接口訪問(wèn)基礎(chǔ)層的功能模塊。針對(duì)中間層和應(yīng)用層的不同實(shí)現(xiàn)特點(diǎn),基礎(chǔ)層分別以不同的形式提供設(shè)備無(wú)關(guān)接口。中間層的實(shí)現(xiàn)完全由C語(yǔ)言編寫(xiě),因此基礎(chǔ)層為其提供了一套硬件無(wú)關(guān)的C語(yǔ)言應(yīng)用程序接口(API),如圖4所示,在編寫(xiě)中間層的過(guò)程中可以方便地直接調(diào)用,同時(shí)能夠獲得很高的效率;相對(duì)而言,應(yīng)用層的程序目標(biāo)可能比較多樣,實(shí)現(xiàn)方式也可能各個(gè)不同,因此基礎(chǔ)層以Linux操作系統(tǒng)設(shè)備文件的形式為應(yīng)用層提供設(shè)備無(wú)關(guān)接口,即基礎(chǔ)層把每個(gè)設(shè)備映射到一個(gè)Linux文件系統(tǒng)中的節(jié)點(diǎn)(系統(tǒng)本身支持),應(yīng)用層只需對(duì)這些文件進(jìn)行標(biāo)準(zhǔn)的讀寫(xiě)操作,就可以控制硬件行為或者獲取硬件狀態(tài),如圖5所示。這種接口方式的效率要比直接的函數(shù)調(diào)用方式低,但是其優(yōu)點(diǎn)在于為應(yīng)用層的實(shí)現(xiàn)提供了很大的自由度,使得應(yīng)用層幾乎可以用所有的高級(jí)語(yǔ)言來(lái)編寫(xiě)。
基礎(chǔ)層的主要設(shè)計(jì)目的是在內(nèi)部隱藏設(shè)備相關(guān)的代碼(即各個(gè)設(shè)備的實(shí)際驅(qū)動(dòng)程序),而為上層提供設(shè)備無(wú)關(guān)的接口,使得具體硬件細(xì)節(jié)對(duì)于上層來(lái)說(shuō)是透明的。通過(guò)使用這種硬件無(wú)關(guān)接口,中間層和應(yīng)用層能夠完全由硬件無(wú)關(guān)的代碼來(lái)實(shí)現(xiàn),從而使系統(tǒng)的各個(gè)層次獨(dú)立性更好,邏輯更清晰,擴(kuò)展性更好。用戶可以在這一層通過(guò)編寫(xiě)特定設(shè)備的驅(qū)動(dòng)程序來(lái)進(jìn)行系統(tǒng)的功能擴(kuò)展。
2、中間層中間層32是整個(gè)控制器軟件系統(tǒng)的核心部分,主要負(fù)責(zé)系統(tǒng)狀態(tài)的維護(hù)和控制周期的調(diào)度,并為上層(應(yīng)用層)提供訪問(wèn)接口。
中間層為應(yīng)用層提供了接口,其接口如圖6所示。為了讓?xiě)?yīng)用層的實(shí)現(xiàn)具有更大的自由度,中間層提供接口的方式也參照了基礎(chǔ)層為應(yīng)用層提供的接口方式,采用了Linux設(shè)備文件。由于中間層實(shí)際上并不涉及到實(shí)際的硬件設(shè)備,因此具體實(shí)現(xiàn)方法是,中間層注冊(cè)一個(gè)偽硬件設(shè)備,并為這個(gè)偽設(shè)備實(shí)現(xiàn)了一個(gè)設(shè)備驅(qū)動(dòng)程序。中間層把這個(gè)偽設(shè)備映射到Linux設(shè)備文件,應(yīng)用層通過(guò)讀寫(xiě)設(shè)備文件來(lái)訪問(wèn)中間層功能,獲取中間層狀態(tài)。
本實(shí)施例中間層主要由中央控制模塊及與其相連的變量池、伺服循環(huán)模塊、數(shù)據(jù)采集器、數(shù)據(jù)回寫(xiě)器和異常處理器組成。中央控制模塊內(nèi)部又包括變量池管理器模塊和伺服循環(huán)管理器模塊兩個(gè)子模塊以及與應(yīng)用層的接口。
中央控制模塊(Central Control Module,CCM)是中間層的核心組成部分,負(fù)責(zé)維護(hù)系統(tǒng)運(yùn)行中的各種狀態(tài)變量,為應(yīng)用層提供訪問(wèn)接口,以及控制系統(tǒng)周期性執(zhí)行的伺服循環(huán)過(guò)程。
中央控制模塊的執(zhí)行流程如圖7所示。其總體運(yùn)行步驟如圖7A所示,包括1、加載中央控制模塊(CCM)。主要是為內(nèi)部各種數(shù)據(jù)結(jié)構(gòu)分配存儲(chǔ)空間,并進(jìn)行必要的數(shù)據(jù)初始化。
2、注冊(cè)用來(lái)描述自身狀態(tài)的狀態(tài)變量。這些狀態(tài)變量可能包括調(diào)度周期的時(shí)間長(zhǎng)度等。
3、初始化中間層與應(yīng)用層的接口。注冊(cè)一個(gè)代表中間層信息的虛擬硬件設(shè)備,并把該設(shè)備映射到一個(gè)Linux設(shè)備文件,以便應(yīng)用層通過(guò)讀寫(xiě)這個(gè)文件來(lái)訪問(wèn)中間層的功能。
4、對(duì)用戶編寫(xiě)的其它中間層模塊(通用算法模塊)進(jìn)行功能的自注冊(cè)。通用算法模塊可以通過(guò)直接調(diào)用CCM提供的內(nèi)部API來(lái)向系統(tǒng)注冊(cè)自身能夠提供的功能。
5、通用算法模塊根據(jù)需要注冊(cè)狀態(tài)變量。通用算法模塊可能需要一些用來(lái)描述自身狀態(tài)信息的全局變量,模塊可以通過(guò)直接調(diào)用CCM提供的內(nèi)部API,在變量池中注冊(cè)這些狀態(tài)變量。
6、應(yīng)用層的配置程序參與定義伺服循環(huán)。應(yīng)用層的配置程序,可以通過(guò)調(diào)用中間層提供的面向應(yīng)用層的接口(即讀寫(xiě)Linux設(shè)備文件),指示中間層把系統(tǒng)中現(xiàn)有的控制算法,按照一定的要求串聯(lián)成伺服循環(huán),從而構(gòu)建完成伺服循環(huán)模塊。
7、中間層的準(zhǔn)備工作結(jié)束,系統(tǒng)暫時(shí)掛起,等待應(yīng)用層程序來(lái)通知其啟動(dòng)周期性調(diào)度。
8、應(yīng)用層通知中間層啟動(dòng)伺服循環(huán)模塊。當(dāng)應(yīng)用層通知中間層啟動(dòng)伺服循環(huán)模塊后,中央控制模塊根據(jù)既定的調(diào)度周期,等待啟動(dòng)伺服循環(huán)模塊時(shí)刻的到來(lái)。
9、根據(jù)用戶所構(gòu)建的伺服循環(huán)模塊,執(zhí)行一個(gè)完整的伺服循環(huán)周期。
10、每個(gè)伺服循環(huán)周期結(jié)束后,檢查是否收到了來(lái)自應(yīng)用層的掛起或者終止的消息,如果沒(méi)有收到通知,則繼續(xù)執(zhí)行下一個(gè)周期;如果收到了消息,則根據(jù)需要或者掛起伺服循環(huán),或者終止中間層的運(yùn)行并釋放資源。
執(zhí)行一個(gè)伺服周期的步驟如圖7B所示,包括1、數(shù)據(jù)采集器對(duì)控制對(duì)象的相關(guān)參數(shù)進(jìn)行采樣。
2、順序執(zhí)行預(yù)先定義的伺服周期中的各個(gè)步驟。
3、數(shù)據(jù)回寫(xiě)器把新的控制參數(shù)輸出到基礎(chǔ)層。
變量池是內(nèi)核中被管理的內(nèi)存緩沖區(qū),一般用來(lái)存儲(chǔ)控制系統(tǒng)中全局的狀態(tài)變量。變量池的結(jié)構(gòu)如圖8所示。變量池主要包括變量標(biāo)識(shí)符域、數(shù)據(jù)大小域、起始地址域、描述信息域,以及中間層內(nèi)部訪問(wèn)接口和應(yīng)用層訪問(wèn)接口。變量標(biāo)識(shí)符域存放的是變量的標(biāo)識(shí)符,即變量的名稱(chēng)。它唯一地指明了當(dāng)前所存儲(chǔ)的變量。數(shù)據(jù)大小域中指明了該變量在內(nèi)存緩沖區(qū)中所占據(jù)的物理空間大小。起始地址域指明了該變量在內(nèi)存緩沖區(qū)中的物理起始存儲(chǔ)地址。描述信息域是對(duì)該變量的功能性描述,它指明了變量用途。中間層內(nèi)部訪問(wèn)接口則是變量池提供給中間層CCM模塊的訪問(wèn)接口。應(yīng)用層訪問(wèn)接口是變量池提供給用戶的訪問(wèn)接口。
變量池由中央控制模塊中的變量池管理器來(lái)管理的。變量池可以用來(lái)存儲(chǔ)任意類(lèi)型的數(shù)據(jù)結(jié)構(gòu),其大小在理論上僅僅取決于系統(tǒng)中可用的物理內(nèi)存大小。變量池管理器負(fù)責(zé)記錄各個(gè)變量的標(biāo)識(shí)符、變量數(shù)據(jù)所需的內(nèi)存空間大小、變量在內(nèi)存中的起始地址和描述信息,并且提供注冊(cè)、注銷(xiāo)變量,以及讀取和修改變量值的功能。
變量池管理器包括兩個(gè)典型的執(zhí)行流程,即注冊(cè)變量和讀取變量。變量池管理器內(nèi)部用鏈表來(lái)維護(hù)變量信息。注冊(cè)變量的流程如圖9A所示,包括1.首先在池中檢查是否有相同標(biāo)識(shí)符的變量存在。標(biāo)識(shí)符是在變量池中代表一個(gè)變量的唯一標(biāo)識(shí),因此需要保證全局唯一。如果已經(jīng)存在相同標(biāo)識(shí)符的變量,則注冊(cè)失敗,返回錯(cuò)誤代碼;2.否則繼續(xù)執(zhí)行,為新變量分配內(nèi)存;根據(jù)新變量的大小,在系統(tǒng)中為其分配足夠的內(nèi)存,如果無(wú)法完成內(nèi)存分配,則注冊(cè)失敗,返回錯(cuò)誤代碼;
3.否則繼續(xù)執(zhí)行,更新變量信息鏈表;在完成內(nèi)存分配之后,系統(tǒng)已經(jīng)得到了新變量在內(nèi)存中的起始地址,進(jìn)而可以把新變量的標(biāo)識(shí)符、大小、起始地址和描述信息這些數(shù)據(jù)構(gòu)成一個(gè)鏈表節(jié)點(diǎn),添加到系統(tǒng)的變量信息鏈表中去。
讀取變量的流程如圖9B所示,包括1、首先遍歷變量信息鏈表,檢查是否存在指定名稱(chēng)(標(biāo)識(shí)符)的變量,如果沒(méi)有,則讀取失敗,返回錯(cuò)誤代碼;2、如果找到了指定的變量,則根據(jù)變量信息鏈表中描述的該變量的起始地址和大小,返回變量的值。
伺服循環(huán)模塊是系統(tǒng)中周期性執(zhí)行的控制功能模塊,包括庫(kù)內(nèi)置控制功能模塊和用戶定義控制功能模塊等。伺服循環(huán)模塊由CCM中的伺服循環(huán)管理器維護(hù)。庫(kù)內(nèi)置控制功能模塊包括基礎(chǔ)層已經(jīng)提供的不同功能的模塊,例如I/O卡驅(qū)動(dòng)周期采樣模塊、SERCOS卡驅(qū)動(dòng)中斷采樣模塊、A/D卡驅(qū)動(dòng)周期采樣模塊。用戶定義控制功能模塊則主要包括用戶根據(jù)應(yīng)用的需要所擴(kuò)充的一些軟件功能模塊,例如根據(jù)機(jī)器人運(yùn)動(dòng)控制的需要,用戶會(huì)擴(kuò)充一些軌跡規(guī)劃模塊等。CCM中的伺服循環(huán)管理器將來(lái)自控制器周邊硬件設(shè)備的相關(guān)參數(shù)經(jīng)過(guò)各種控制、規(guī)劃算法的順序計(jì)算處理,最終返回給控制器的周邊硬件設(shè)備,構(gòu)成了一個(gè)完整的閉環(huán)反饋系統(tǒng)。
伺服循環(huán)管理器結(jié)構(gòu)如圖10所示。伺服循環(huán)管理器包括內(nèi)部數(shù)據(jù)結(jié)構(gòu)管理器、控制功能鏈表和伺服周期鏈表??刂乒δ苕湵碇校饕娣帕酥虚g層中目前所有能夠被調(diào)用的控制函數(shù),以及這些函數(shù)的名稱(chēng)、入口地址和描述信息。伺服周期鏈表是由控制功能鏈表中被選定的元素按照一定執(zhí)行的流程組成的一個(gè)函數(shù)鏈。伺服循環(huán)鏈表中的入口和出口分別對(duì)應(yīng)了一個(gè)伺服循環(huán)周期的入口與出口。內(nèi)部數(shù)據(jù)結(jié)構(gòu)管理器負(fù)責(zé)管理和維護(hù)這兩張鏈表??刂乒δ苕湵碇械目刂坪瘮?shù)可能是系統(tǒng)中間層提供的,也可能是由用戶后來(lái)開(kāi)發(fā)的,對(duì)于新的功能函數(shù)信息,此時(shí)就需要數(shù)據(jù)結(jié)構(gòu)管理器來(lái)進(jìn)行維護(hù)了。
伺服循環(huán)管理器流程如圖11所示,主要包括控制功能的注冊(cè)和伺服周期的定義兩部分。
控制功能注冊(cè)流程如圖11A所示,包括1、首先檢查控制功能鏈表中是否存在重名的函數(shù)。函數(shù)名稱(chēng)是伺服循環(huán)模塊中用來(lái)代表一個(gè)控制功能的唯一標(biāo)識(shí),因此必須保證全局唯一。如果該函數(shù)名稱(chēng)已經(jīng)存在,則注冊(cè)失敗,返回錯(cuò)誤代碼;2、否則繼續(xù)執(zhí)行,更新控制功能鏈表,根據(jù)注冊(cè)者提供的函數(shù)名稱(chēng)、描述和入口地址,構(gòu)成一個(gè)新的控制功能鏈表節(jié)點(diǎn),并加入到控制功能鏈表中去。
伺服循環(huán)模塊的定義流程如圖11B所示,包括1、首先清空伺服周期鏈表;2、準(zhǔn)備在伺服周期中加入一個(gè)控制功能函數(shù);3、遍歷控制功能鏈表,檢查是否存在指定名稱(chēng)的控制功能;由于要求伺服周期中的控制功能元素集合是控制功能鏈表中所有元素集合的子集,因此只有在控制功能鏈表中存在的節(jié)點(diǎn),才能被加入到伺服周期鏈表中;如果在控制功能鏈表中找不到指定名稱(chēng)的控制功能,則定義伺服周期失敗,返回錯(cuò)誤代碼;4、否則繼續(xù)執(zhí)行,更新伺服周期鏈表,根據(jù)需要加入的控制功能的函數(shù)名稱(chēng)、描述信息和入口地址,構(gòu)成一個(gè)新的伺服周期鏈表節(jié)點(diǎn),并加入到伺服周期鏈表中去;5、如果還有其他控制功能需要被加入到伺服周期中,則轉(zhuǎn)2準(zhǔn)備加入一個(gè)新的控制功能函數(shù),否則結(jié)束。
異常處理器負(fù)責(zé)處理系統(tǒng)運(yùn)行中的異常情況。異常通常是由硬件中斷或者來(lái)自應(yīng)用層的消息來(lái)觸發(fā)的。中央控制模塊在捕獲異常之后,直接把異常傳遞給異常處理器處理。異常處理器內(nèi)部維護(hù)著一個(gè)異常處理過(guò)程鏈表,鏈表中包含著每一個(gè)異常處理過(guò)程能夠處理的異常類(lèi)型和過(guò)程的入口地址。異常處理器的處理流程如圖12所示,包括1.中央控制模塊捕獲異常。由于異常由硬件中斷或者來(lái)自應(yīng)用層的異常消息,中央控制模塊一般通過(guò)響應(yīng)中斷或者監(jiān)聽(tīng)異常消息來(lái)捕獲異常。在捕獲異常之后,中間層首先保存當(dāng)前的運(yùn)行狀態(tài),然后把異常交給異常處理器處理;2.異常處理器檢查異常類(lèi)型,并調(diào)用合適的異常處理過(guò)程。異常處理器在得知異常之后,首先檢查當(dāng)前異常處理過(guò)程鏈表中是否存在能夠處理該異常類(lèi)型的處理過(guò)程;a)如果存在,則先保存中央控制模塊當(dāng)前運(yùn)行的狀態(tài),然后調(diào)用合適的異常處理過(guò)程,由該異常處理過(guò)程決定系統(tǒng)是否繼續(xù)運(yùn)行;b)如果不存在,則根據(jù)一定的策略,或者忽略異常,或者直接終止整個(gè)系統(tǒng)的運(yùn)行。
異常處理器的抽象,有助于在系統(tǒng)設(shè)計(jì)中,把正常執(zhí)行過(guò)程的代碼和異常處理的代碼很好地分割開(kāi),保證邏輯的盡量清晰。
數(shù)據(jù)采集器和數(shù)據(jù)回寫(xiě)器是在中間層中獨(dú)立劃分出來(lái)的、直接面向基礎(chǔ)層的子模塊。數(shù)據(jù)采集器運(yùn)行流程如圖13所示,包括1.啟動(dòng)數(shù)據(jù)采集器;2.直接調(diào)用基礎(chǔ)層的硬件無(wú)關(guān)接口,從基礎(chǔ)層獲得各種相關(guān)硬件設(shè)備的最新數(shù)據(jù);3.用從基礎(chǔ)層獲得的數(shù)據(jù),更新變量池中相應(yīng)的變量;中間層在初始化的過(guò)程中,一般會(huì)為基礎(chǔ)層的各種硬件設(shè)備,在變量池中注冊(cè)相應(yīng)的狀態(tài)變量,因此,基礎(chǔ)層的一個(gè)設(shè)備,一般是與中間層變量池中的一組變量相對(duì)應(yīng)的;4.數(shù)據(jù)采集完畢,啟動(dòng)伺服周期的一次執(zhí)行過(guò)程,依次執(zhí)行各個(gè)控制過(guò)程。
數(shù)據(jù)回寫(xiě)器的運(yùn)行流程如圖14所示,包括1.啟動(dòng)數(shù)據(jù)回寫(xiě)器。
2.從變量池中獲取最新的代表硬件設(shè)備數(shù)據(jù)的變量值。
3.把新獲取的數(shù)據(jù),通過(guò)基礎(chǔ)層的硬件無(wú)關(guān)接口,輸出到相應(yīng)的基礎(chǔ)層設(shè)備驅(qū)動(dòng)程序。結(jié)束一個(gè)伺服周期的執(zhí)行過(guò)程,系統(tǒng)進(jìn)入暫時(shí)掛起的狀態(tài)。
3、應(yīng)用層應(yīng)用層主要由中間層監(jiān)控模塊和基礎(chǔ)層監(jiān)控模塊所組成?;A(chǔ)層監(jiān)控模塊主要為用戶提供了一個(gè)硬件配置和監(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++語(yǔ)言、Perl腳本和C/C++語(yǔ)言的形式給用戶提供一個(gè)監(jiān)控系統(tǒng)中間層的接口界面。
在基礎(chǔ)層和應(yīng)用層提供的靈活的接口基礎(chǔ)上,應(yīng)用層的功能是由用戶用各種高級(jí)語(yǔ)言或者腳本語(yǔ)言來(lái)實(shí)現(xiàn)的,而不必局限于C語(yǔ)言程序。對(duì)于系統(tǒng)狀態(tài)的監(jiān)控用戶可以采用QT圖形庫(kù)以圖形化的方式刷新和顯示系統(tǒng)的狀態(tài);對(duì)于系統(tǒng)的調(diào)試或者遠(yuǎn)程監(jiān)控系統(tǒng)狀態(tài),用戶可以使用C/C++語(yǔ)言程序來(lái)實(shí)現(xiàn)。而對(duì)于中間層的配置,系統(tǒng)可以用Perl腳本以圖形化方式來(lái)實(shí)現(xiàn)配置程序模塊,配置操作變量池和定義伺服周期的目的。面向硬件層,用戶可以使用Shell腳本來(lái)配置硬件和監(jiān)控程序。
權(quán)利要求
1.一種開(kāi)放式結(jié)構(gòu)機(jī)器人控制器,包括由工業(yè)控制計(jì)算機(jī)和與其相連的開(kāi)放式控制器系統(tǒng)的周邊設(shè)備所組成的硬件部分,對(duì)該硬件進(jìn)行控制由開(kāi)放源碼的實(shí)時(shí)操作系統(tǒng)和在該操作系統(tǒng)平臺(tái)上運(yùn)行的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)組成的軟件部分;其特征在于,所說(shuō)的工業(yè)控制計(jì)算機(jī)采用基于工業(yè)控制環(huán)境標(biāo)準(zhǔn)的微型計(jì)算機(jī);所說(shuō)的周邊設(shè)備采用國(guó)際標(biāo)準(zhǔn)的硬件設(shè)備,包括“硬”SERCOS系統(tǒng)硬件接口卡、數(shù)字信號(hào)采集卡、時(shí)鐘設(shè)備和模擬信號(hào)/數(shù)字信號(hào)轉(zhuǎn)換卡、以及基于SERCOS標(biāo)準(zhǔn)的電機(jī)驅(qū)動(dòng)器和相應(yīng)的電機(jī);所說(shuō)的開(kāi)放源碼的實(shí)時(shí)操作系統(tǒng)采用國(guó)際通用Linux操作系統(tǒng)的實(shí)時(shí)擴(kuò)展系統(tǒng)RtLinux;所說(shuō)的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)RTOC主要由相互獨(dú)立的應(yīng)用層、中間層和基礎(chǔ)層三個(gè)運(yùn)行層次組成;其中,基礎(chǔ)層是在各個(gè)特殊的設(shè)備驅(qū)動(dòng)程序之上,抽象出設(shè)備無(wú)關(guān)的訪問(wèn)接口;中間層負(fù)責(zé)管理系統(tǒng)伺服周期的定義和運(yùn)行;應(yīng)用層為高層應(yīng)用程序,通過(guò)簡(jiǎn)單的方式配置中間層,并監(jiān)控系統(tǒng)狀態(tài);三個(gè)層次能夠各自獨(dú)立運(yùn)行,并且在不同的層次為二次開(kāi)發(fā)人員提供了擴(kuò)展功能模塊的能力,在實(shí)現(xiàn)各自功能的基礎(chǔ)上,每一層為其必要的用戶層提供訪問(wèn)接口。
2.如權(quán)利要求1所述的開(kāi)放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說(shuō)的基礎(chǔ)層由控制器的所有硬件設(shè)備的驅(qū)動(dòng)程序和與其相連的向上層提供的硬件無(wú)關(guān)接口所組成;其中,所說(shuō)的驅(qū)動(dòng)程序包括I/O卡驅(qū)動(dòng)周期采樣程序、SERCOS卡驅(qū)動(dòng)中斷采樣程序、提供精確的實(shí)時(shí)時(shí)鐘控制程序及A/D卡驅(qū)動(dòng)周期采樣程序;基礎(chǔ)層的接口包括與中間層的硬件無(wú)關(guān)的C語(yǔ)言應(yīng)用程序接口以及與以Linux操作系統(tǒng)設(shè)備文件的形式為應(yīng)用層提供設(shè)備無(wú)關(guān)接口。
3.如權(quán)利要求1所述的開(kāi)放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說(shuō)的中間層由中央控制模塊(CCM),及與其相連的變量池、伺服循環(huán)模塊、數(shù)據(jù)采集器、數(shù)據(jù)回寫(xiě)器和異常處理器組成,所說(shuō)的中央控制模塊內(nèi)部又包括變量池管理器模塊和伺服循環(huán)管理器模塊兩個(gè)子模塊以及與應(yīng)用層的采用Linux設(shè)備文件的接口;該中央控制模塊負(fù)責(zé)維護(hù)系統(tǒng)運(yùn)行中的各種狀態(tài)變量,為應(yīng)用層提供訪問(wèn)接口,以及控制系統(tǒng)周期性執(zhí)行的伺服循環(huán)過(guò)程;該變量池是內(nèi)核中被管理的內(nèi)存緩沖區(qū),用來(lái)存儲(chǔ)控制系統(tǒng)中全局的狀態(tài)變量;該伺服循環(huán)模塊是系統(tǒng)中周期性執(zhí)行的控制功能模塊,由中央控制模塊中的伺服循環(huán)管理器維護(hù);該異常處理器負(fù)責(zé)處理系統(tǒng)運(yùn)行中的異常情況。
4.如權(quán)利要求3所述的開(kāi)放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說(shuō)的變量池主要包括變量標(biāo)識(shí)符域、數(shù)據(jù)大小域、起始地址域、描述信息域,以及中間層內(nèi)部訪問(wèn)接口和應(yīng)用層訪問(wèn)接口;該變量標(biāo)識(shí)符域存放的是變量的名稱(chēng);數(shù)據(jù)大小域中指明了該變量在內(nèi)存緩沖區(qū)中所占據(jù)的物理空間大小;起始地址域指明了該變量在內(nèi)存緩沖區(qū)中的物理起始存儲(chǔ)地址;描述信息域是對(duì)該變量的功能性描述,指明了變量用途;中間層內(nèi)部訪問(wèn)接口則是變量池提供給中間層CCM模塊的訪問(wèn)接口;應(yīng)用層訪問(wèn)接口是變量池提供給用戶的訪問(wèn)接口。
5.如權(quán)利要求3所述的開(kāi)放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說(shuō)的伺服循環(huán)模塊包括庫(kù)內(nèi)置控制功能模塊和用戶定義控制功能模塊;該庫(kù)內(nèi)置控制功能模塊包括基礎(chǔ)層已經(jīng)提供的不同功能的模塊;用戶定義控制功能模塊主要包括用戶根據(jù)應(yīng)用的需要所擴(kuò)充的一些軟件功能模塊。CCM中的伺服循環(huán)管理器模塊負(fù)責(zé)維護(hù)伺服循環(huán)模塊的運(yùn)行,它將來(lái)自控制器周邊硬件設(shè)備的相關(guān)參數(shù)經(jīng)過(guò)各種控制、規(guī)劃算法的順序計(jì)算處理,最終還會(huì)傳送給控制器的周邊硬件設(shè)備,構(gòu)成了一個(gè)完整的閉環(huán)反饋系統(tǒng)。
6.如權(quán)利要求3所述的開(kāi)放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說(shuō)的伺服循環(huán)管理器包括內(nèi)部數(shù)據(jù)結(jié)構(gòu)管理器及其管理和維護(hù)的控制功能鏈表和伺服周期鏈表;該控制功能鏈表中,主要存放了中間層中目前所有能夠被調(diào)用的控制函數(shù),以及這些函數(shù)的名稱(chēng)、入口地址和描述信息;該伺服周期鏈表是由控制功能鏈表中被選定的元素按照一定的執(zhí)行流程組成的一個(gè)函數(shù)鏈;伺服循環(huán)鏈表中的入口和出口分別對(duì)應(yīng)了一個(gè)伺服循環(huán)周期的入口與出口。
7.如權(quán)利要求1所述的開(kāi)放式結(jié)構(gòu)機(jī)器人控制器,其特征在于,所說(shuō)的應(yīng)用層主要由中間層監(jiān)控模塊和基礎(chǔ)層監(jiān)控模塊所組成;其中,基礎(chǔ)層監(jiān)控模塊主要為用戶提供了一個(gè)硬件配置和監(jiān)控程序的接口;中間層監(jiān)控模塊主要包括系統(tǒng)狀態(tài)監(jiān)控程序、系統(tǒng)調(diào)式程序、中間層配置程序、遠(yuǎn)程監(jiān)控程序,各程序分別以QT圖形界面、C/C++語(yǔ)言、Perl腳本和C/C++語(yǔ)言的形式給用戶提供一個(gè)監(jiān)控系統(tǒng)中間層的接口界面。
全文摘要
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,涉及開(kāi)放式結(jié)構(gòu)機(jī)器人控制器。包括由工業(yè)控制計(jì)算機(jī)和開(kāi)放式控制器系統(tǒng)的周邊設(shè)備所組成的硬件部分,由開(kāi)放源碼的實(shí)時(shí)操作系統(tǒng)和開(kāi)放式控制器應(yīng)用軟件系統(tǒng)組成的軟件部分;所說(shuō)的開(kāi)放式控制器應(yīng)用軟件系統(tǒng)RTOC主要由三個(gè)運(yùn)行層次組成;基礎(chǔ)層是在各個(gè)特殊的設(shè)備驅(qū)動(dòng)程序之上,抽象出設(shè)備無(wú)關(guān)的訪問(wèn)接口;中間層負(fù)責(zé)管理系統(tǒng)伺服周期的定義和運(yùn)行;應(yīng)用層為高層應(yīng)用程序,通過(guò)簡(jiǎn)單的方式配置中間層,并監(jiān)控系統(tǒng)狀態(tài);本發(fā)明可以用于對(duì)機(jī)器人的控制,也可以用于對(duì)其它運(yùn)動(dòng)控制系統(tǒng)的控制。具有可擴(kuò)展性、可移植性、可定制性和互操作性四個(gè)方面的特征,并且大大降低了系統(tǒng)的成本。
文檔編號(hào)G06F9/00GK1424649SQ0310007
公開(kāi)日2003年6月18日 申請(qǐng)日期2003年1月9日 優(yōu)先權(quán)日2003年1月9日
發(fā)明者徐華, 楊澤紅, 賈培發(fā), 趙雁南, 王家廞, 曹亦明, 李明 申請(qǐng)人:清華大學(xué)