新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > RTAI在開(kāi)放式數(shù)控系統(tǒng)運(yùn)動(dòng)控制器中的應(yīng)用

RTAI在開(kāi)放式數(shù)控系統(tǒng)運(yùn)動(dòng)控制器中的應(yīng)用

作者: 時(shí)間:2016-12-12 來(lái)源:網(wǎng)絡(luò) 收藏
0 前言

  在數(shù)控自動(dòng)控制領(lǐng)域中,所謂運(yùn)動(dòng)控制就是對(duì)機(jī)床機(jī)械裝置運(yùn)動(dòng)部件的位置、速度、加速度等參數(shù)進(jìn)行宴時(shí)的控制管理,使其按照預(yù)期的運(yùn)動(dòng)軌跡和規(guī)定的運(yùn)動(dòng)參數(shù)進(jìn)行運(yùn)動(dòng)。由于工業(yè)控制計(jì)算機(jī)IPC(Industrial Personal Computer)強(qiáng)大而完善的功能,基于Pc標(biāo)準(zhǔn)總線運(yùn)動(dòng)控制器已經(jīng)在數(shù)控系統(tǒng)控制領(lǐng)域得到了廣泛的應(yīng)用。但是?;赑C標(biāo)準(zhǔn)總線的運(yùn)動(dòng)控制器由于在硬件設(shè)計(jì)上采用板卡設(shè)計(jì),這種結(jié)構(gòu)的運(yùn)動(dòng)控制器不宜長(zhǎng)期工作在環(huán)境惡劣的工業(yè)現(xiàn)場(chǎng)(有振動(dòng)、粉塵、油污等)。因此近年來(lái),開(kāi)放式運(yùn)動(dòng)控制器成為數(shù)控機(jī)床工業(yè)控制領(lǐng)域研究的熱點(diǎn)。

本文引用地址:http://m.butianyuan.cn/article/201612/328833.htm

  Linux是一個(gè)遵循POSIX(Portable Operating SystemInterface)標(biāo)準(zhǔn)的多用戶多任務(wù)且具有先進(jìn)的網(wǎng)絡(luò)特性開(kāi)源操作系統(tǒng),可以方便的進(jìn)行自主知識(shí)產(chǎn)權(quán)的軟件開(kāi)發(fā)。但Linux不是一個(gè)“硬”實(shí)時(shí)操作系統(tǒng),其內(nèi)核為非搶占式的(no-preemptive),實(shí)時(shí)任務(wù)不能夠得到保證,而運(yùn)動(dòng)控制器本身是綜合性很強(qiáng)的技術(shù),具有明顯的實(shí)時(shí)控制、實(shí)時(shí)交互和實(shí)時(shí)監(jiān)測(cè)特性。本文研究了RTAI(Real-time Application Interface)的實(shí)現(xiàn)原理和基于Mpe5200實(shí)時(shí)嵌入式Linux運(yùn)動(dòng)控制器的架構(gòu)分析,并實(shí)現(xiàn)其在數(shù)控系統(tǒng)中的應(yīng)用。

1 實(shí)時(shí)Linux的實(shí)現(xiàn)

  運(yùn)動(dòng)控制器作為一個(gè)嵌人式系統(tǒng),除了具備一個(gè)高性能的嵌入式微處理器,還應(yīng)該擁有一個(gè)與處理器配合的嵌入式操作系統(tǒng)。嵌入式操作系統(tǒng)除了具備一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機(jī)制、中斷處理和文件功能外,還應(yīng)該具有以下特點(diǎn):可移植性、可裁減性、實(shí)時(shí)性、強(qiáng)穩(wěn)定性和良好的圖形支持。Linux是全面多任務(wù)的32位開(kāi)放式操作系統(tǒng)可以使運(yùn)動(dòng)控制器具有可擴(kuò)充、可移植、可靠性高和兼容性好等優(yōu)點(diǎn),非常適合作為開(kāi)放式運(yùn)動(dòng)控制器的開(kāi)發(fā)平臺(tái)。

  到目前為止,全球在Linux平臺(tái)下開(kāi)發(fā)的具有硬實(shí)時(shí)功能的系統(tǒng)主要有兩個(gè):R1unIlx和RTAI。RTbn一最早是美國(guó)新墨西哥理工學(xué)院的一個(gè)研究項(xiàng)目,它是由Victor Yodaiken提出設(shè)計(jì)思想,由MichaelBambanov實(shí)現(xiàn)的硬實(shí)時(shí)操作系統(tǒng)。RTAI(Real Timepplication Interface)是由意大利米蘭理工學(xué)院航天工程系發(fā)起開(kāi)發(fā)的一個(gè)遵循GNU的開(kāi)源項(xiàng)目,RTAI已經(jīng)支持1386,PowerPC,ARM,MIPS和M68k.nommu等處理器。是目前支持處理器最多的linux實(shí)時(shí)解決方案之一。

  RTAI的實(shí)現(xiàn)機(jī)制與RTLinux非常相似,唯一不同的是RTAI在Linux上定義了一個(gè)實(shí)時(shí)硬件抽象層RTHAL(Real·time Haldwam Abstraction Layer)。并針對(duì)RTAI開(kāi)發(fā)了LXRT(Linux.RT)。讓RTAI可以調(diào)用Linux本身的系統(tǒng)調(diào)用功能,如圖1所示。


圖1加載RTAI的Linux內(nèi)核結(jié)構(gòu)

  RTAI修改了linux/arch/i386中與體系結(jié)構(gòu)相關(guān)的代碼而形成了RTHAL層,RTHAL的作用是使RTAI能夠在實(shí)時(shí)任務(wù)需要運(yùn)行的任何時(shí)刻中斷Linux。引入RTAI后,Linux的功能沒(méi)有改變,但是作為優(yōu)先級(jí)最低的任務(wù)運(yùn)行,并且只有在沒(méi)有實(shí)時(shí)任務(wù)的時(shí)候它才能執(zhí)行。這樣做的好處在于將直接修改linux核心的代碼減到最小,這使得將RTAI移植到linux內(nèi)核的工作量減至最低。

  RTAI實(shí)現(xiàn)的主要模塊有RTAI模塊、SCHED模塊、FIFO模塊、SHM模塊、LXRT模塊,它們能動(dòng)態(tài)裝入和卸載。用戶自己的實(shí)時(shí)任務(wù)是在RTAI裝入后再載人??梢酝ㄟ^(guò)編輯/etc/rc.sysinit文件,在系統(tǒng)啟動(dòng)時(shí)將RTAI模塊和用戶實(shí)時(shí)模塊加載到Linux內(nèi)核中,當(dāng)實(shí)時(shí)模塊加人到內(nèi)核后,實(shí)時(shí)模塊中創(chuàng)建的線程和函數(shù)就可以訪問(wèn)系統(tǒng)的底層資源。

2 運(yùn)動(dòng)控制器系統(tǒng)設(shè)計(jì)

  運(yùn)動(dòng)控制器由硬件系統(tǒng)和軟件系統(tǒng)兩大部分組成。按照模塊化設(shè)計(jì)思路,將運(yùn)動(dòng)控制器的體系結(jié)構(gòu)劃分為用戶層、內(nèi)核層和設(shè)備層(圖2所示)。其中內(nèi)核層和設(shè)備層兩部分組成了運(yùn)動(dòng)控制器的開(kāi)放式平臺(tái)。這種獨(dú)立的層次結(jié)構(gòu)使得運(yùn)動(dòng)控制器易于實(shí)現(xiàn)數(shù)控系統(tǒng)上的開(kāi)放式應(yīng)用。


圖2運(yùn)動(dòng)控制器平臺(tái)體系示意圖

  用戶層(虛框內(nèi))就是開(kāi)放式運(yùn)動(dòng)控制器的用戶程序空間,運(yùn)動(dòng)控制器的用戶軟件是根據(jù)應(yīng)用對(duì)象進(jìn)行特殊化設(shè)計(jì)的,可以靈活更換。開(kāi)放式運(yùn)動(dòng)控制器的設(shè)計(jì)思路是:無(wú)需更改底層軟/硬件模塊,根據(jù)被控對(duì)象的特征設(shè)計(jì)不同的模塊化用戶軟件就能夠滿足不同的運(yùn)動(dòng)控制任務(wù),體現(xiàn)出運(yùn)動(dòng)控制器開(kāi)放式的特性。“用戶軟件模塊化”是開(kāi)放式運(yùn)動(dòng)控制器最大的特征,而“用戶軟件模塊化”恰好也是Linux提供的一種機(jī)制:Linux的內(nèi)核和用戶程序是完全分離的,用戶程序通過(guò)調(diào)用設(shè)備操作接口就能夠?qū)崿F(xiàn)對(duì)硬件設(shè)備的操作。

  內(nèi)核層的設(shè)計(jì)按照兩條相互獨(dú)立的線路展開(kāi):移植Linux操作系統(tǒng)和開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序。從圖2可以看到,運(yùn)動(dòng)控制器的內(nèi)核層設(shè)計(jì)最為復(fù)雜.這部分的設(shè)計(jì)是與Linux內(nèi)核機(jī)制緊密相關(guān)的。運(yùn)動(dòng)控制器大量的硬件設(shè)備是由Linux設(shè)備驅(qū)動(dòng)程序提供用戶軟件設(shè)備操作接口的.圖2中內(nèi)核層的“運(yùn)動(dòng)控制接口”和“現(xiàn)場(chǎng)通信接口”是開(kāi)放式運(yùn)動(dòng)控制器最主要的設(shè)備接口。設(shè)備驅(qū)動(dòng)程序由于處于Linux內(nèi)核的最底層,因此相對(duì)于上層用戶軟件又稱之為底層軟件。


圖3 MPC5200微處理器功能框圖

  設(shè)備層是運(yùn)動(dòng)控制器的硬件層,在這部分設(shè)計(jì)過(guò)程中需要完成運(yùn)動(dòng)控制器的硬件設(shè)計(jì),電路設(shè)計(jì)。嵌入式運(yùn)動(dòng)控制器的硬件設(shè)計(jì)與傳統(tǒng)的基于PC機(jī)的運(yùn)動(dòng)控制器設(shè)計(jì)有很大不同之處??紤]到面向特殊領(lǐng)域的應(yīng)用特性,嵌入式系統(tǒng)不能使用桌面系統(tǒng)那樣豐富的硬件資源,因此標(biāo)準(zhǔn)的Pc機(jī)硬件無(wú)法直接應(yīng)用到嵌入式運(yùn)動(dòng)控制器中去,這些決定了開(kāi)放式運(yùn)動(dòng)控制器的硬件設(shè)計(jì)具有其特殊性。

  2.1 硬件結(jié)構(gòu)設(shè)計(jì)

  運(yùn)動(dòng)控制器微處理器采用的是摩托羅拉公司于2003年下半年推出的新型的具有廣泛發(fā)展前景的PowerPC MPC5200.其內(nèi)部采用了雙處理器結(jié)構(gòu),有一個(gè)專門負(fù)責(zé)通信的協(xié)處理器,體現(xiàn)了數(shù)據(jù)通信的專業(yè)構(gòu)架。并通過(guò)雙端口內(nèi)存(這是種極快的數(shù)據(jù)交換方式)與主處理器通信,從而使主處理器負(fù)擔(dān)大幅度下降。其芯片內(nèi)部含有豐富的實(shí)用型外設(shè)。

  基于PowerPC內(nèi)核的MPC5200”“是一顆低功耗、處理速度達(dá)760MIPS的嵌入式處理器。它支持以太網(wǎng)、USB、PCI、ATA、12S、12C、SPI、串行接口、J1850和控制區(qū)域網(wǎng)(CAN)。同時(shí),它還支持DDR存儲(chǔ)器,并集成了一個(gè)雙精度的浮點(diǎn)單元(FPU),如圖3所示。

  MPC5200運(yùn)動(dòng)控制器是一款非常適合于工業(yè)控制領(lǐng)域應(yīng)用的運(yùn)動(dòng)控制器,開(kāi)放化的特點(diǎn)使其能夠應(yīng)用于多種機(jī)械設(shè)備上,而通過(guò)CAN總線互連組建的現(xiàn)場(chǎng)總線運(yùn)動(dòng)控制系統(tǒng)是一種全新的分布式控制系統(tǒng)。因此Mpc5200運(yùn)動(dòng)控制器完全可以滿足現(xiàn)代數(shù)控系統(tǒng)高速化、智能化、網(wǎng)絡(luò)化、集成化、開(kāi)放化的需求。

  2.2 軟件結(jié)構(gòu)設(shè)計(jì)

  在實(shí)時(shí)Linux下,為了保證數(shù)控系統(tǒng)的實(shí)時(shí)任務(wù)能夠即時(shí)響應(yīng)。所有和實(shí)時(shí)相關(guān)的任務(wù)都必須放在內(nèi)核層下,每個(gè)任務(wù)用一個(gè)獨(dú)立的內(nèi)核進(jìn)程來(lái)執(zhí)行,實(shí)時(shí)進(jìn)程是通過(guò)調(diào)用RTAI的rt—task—init()函數(shù)來(lái)實(shí)現(xiàn)的。而非實(shí)時(shí)任務(wù)則放在用戶層下,它們?cè)谌魏螘r(shí)候都不會(huì)打斷實(shí)時(shí)任務(wù)的運(yùn)行,只有在實(shí)時(shí)任務(wù)結(jié)束后才會(huì)執(zhí)行。

  嵌入式數(shù)控的基本功能由各種功能模塊共同來(lái)實(shí)現(xiàn)的。在以linux為操作系統(tǒng)的開(kāi)放式平臺(tái)上集成RTAI的實(shí)時(shí)內(nèi)核。通過(guò)模塊化的設(shè)計(jì)思想,可以將整個(gè)控制系統(tǒng)按照實(shí)時(shí)性的要求分為用戶層模塊,內(nèi)核層實(shí)時(shí)模塊兩個(gè)大的模塊,同時(shí)在兩個(gè)大的模塊下又根據(jù)不同的子功能分為代碼解釋模塊,人機(jī)交互及刀具仿真圖形模塊,文件管理模塊,位置控制模塊,插補(bǔ)運(yùn)算模塊,狀態(tài)監(jiān)測(cè)模塊等,如圖4所示。


圖4系統(tǒng)軟件結(jié)構(gòu)圖

  內(nèi)核層和用戶層之間進(jìn)程的通訊主要是依靠RTAI提供的實(shí)時(shí)nFo,通過(guò)調(diào)用函數(shù)rlf_create()來(lái)創(chuàng)建管道實(shí)現(xiàn)數(shù)據(jù)傳輸。FIFO的通信是單向的,因此用戶層和內(nèi)核層的信息交互必須至少創(chuàng)建兩條管道才能實(shí)現(xiàn)。

3 實(shí)時(shí)控制的軟件實(shí)現(xiàn)

  根據(jù)對(duì)開(kāi)放式運(yùn)動(dòng)控制器的運(yùn)行機(jī)制分析,將各實(shí)時(shí)任務(wù)模塊分別設(shè)置相應(yīng)的定時(shí)器工作方式。優(yōu)先級(jí)及通信隊(duì)列等。

  實(shí)時(shí)功能模塊實(shí)現(xiàn)方式如下:位置控制任務(wù)moor()決定電機(jī)控制精度。計(jì)算下一周期的實(shí)際坐標(biāo)增量,輸出到伺服單元驅(qū)動(dòng)步進(jìn)電機(jī)工作。因此將其設(shè)計(jì)成周期性RTAI線程.運(yùn)行周期為4ms,1級(jí)優(yōu)先權(quán)。

  功能控制任務(wù)control()是利用fifo從用戶層向內(nèi)核層傳遞控制命令,并實(shí)現(xiàn)對(duì)I/O口的控制。此任務(wù)采用實(shí)時(shí)中斷策略,在接受到控制命令,內(nèi)核掛起位置控制任務(wù)。

  狀態(tài)檢測(cè)任務(wù)monitor()要對(duì)狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控。因此設(shè)置此任務(wù)運(yùn)行周期為lOms.優(yōu)先級(jí)為3級(jí)。運(yùn)動(dòng)控制器軟件的所有實(shí)時(shí)任務(wù)和函數(shù)包含在實(shí)時(shí)模塊main—program.o中。通過(guò)編{t}/etc/rc.sysinit文件,在系統(tǒng)啟動(dòng)時(shí)加載到Linux內(nèi)核中。當(dāng)實(shí)時(shí)模塊加入到內(nèi)核中。實(shí)時(shí)模塊中創(chuàng)建的線程和函數(shù)就可以訪問(wèn)系統(tǒng)的底層資源。

  實(shí)時(shí)任務(wù)模塊的加載和卸載在Linux中由initmodule()和cleanup—module()兩個(gè)函數(shù)實(shí)現(xiàn)的,同時(shí)可以通過(guò)這兩個(gè)函數(shù)進(jìn)行資源的分配和回收,以及線程和處理函數(shù)的創(chuàng)建。


4 結(jié)束語(yǔ)

  本文在深入研究Linux實(shí)時(shí)操作系統(tǒng)的基礎(chǔ)上。將Linux操作系統(tǒng)移植到數(shù)控機(jī)床上具有實(shí)用價(jià)值的嵌人式微處理器MPC5200上,證明了數(shù)控嵌人式系統(tǒng)完全可以實(shí)現(xiàn)一定程度的開(kāi)放性,且移植Linux也是開(kāi)發(fā)嵌人式數(shù)控運(yùn)動(dòng)控制器操作平臺(tái)一種比較好的方案。具有明顯的先進(jìn)性和實(shí)用性。

  通過(guò)一系列的實(shí)驗(yàn)分析和應(yīng)用研究,現(xiàn)已成功將MPC5200運(yùn)動(dòng)控制器應(yīng)用于自主開(kāi)發(fā)的一種基于CAN總線的嵌入式線束機(jī)控制系統(tǒng),該系列機(jī)床已經(jīng)通過(guò)項(xiàng)目成果鑒定,目前正在進(jìn)行產(chǎn)業(yè)化推廣工作。在此也希望本文能為開(kāi)發(fā)和推廣我國(guó)具有自主知識(shí)產(chǎn)權(quán)的嵌人式Linux運(yùn)動(dòng)控制系統(tǒng)提供一定的借鑒和幫助。



評(píng)論


技術(shù)專區(qū)

關(guān)閉