嵌入式Linux數(shù)控系統(tǒng)設(shè)計與實現(xiàn)
時間:2022-09-24 09:37:39
導語:嵌入式Linux數(shù)控系統(tǒng)設(shè)計與實現(xiàn)一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:研究基于嵌入式的數(shù)控系統(tǒng)。采用單CPU架構(gòu)進行設(shè)計,系統(tǒng)基于linux和ARM,軟件平臺采用Linux,從而豐富了ARM處理器的片上資源。為滿足數(shù)控系統(tǒng)高精度控制需求,基于Xenomai對Linux完成了實時性改造,并對系統(tǒng)軟件結(jié)構(gòu)進行設(shè)計,以確保數(shù)控系統(tǒng)功能的實現(xiàn)。
關(guān)鍵詞:Linux系統(tǒng);嵌入式;數(shù)控系統(tǒng);實現(xiàn)路徑
裝備制造業(yè)對數(shù)控機床的要求逐漸提高,設(shè)備總體功能和性能離不開高效的數(shù)控系統(tǒng),嵌入式系統(tǒng)具備小型化、低功耗、穩(wěn)定可靠等優(yōu)勢,應用在數(shù)控系統(tǒng)中,可根據(jù)實際需要對計算機控制系統(tǒng)進行配置,實現(xiàn)智能控制、遠程控制、故障檢測等功能,作為數(shù)控機床的控制中樞,目前主流數(shù)控系統(tǒng)多采用單核ARM平臺,數(shù)控系統(tǒng)性能的提升受到單核處理器自身不足的限制,因此對于多核平臺的應用成為優(yōu)化嵌入式數(shù)控系統(tǒng)的有效手段。
1現(xiàn)狀分析
數(shù)控系統(tǒng)的硬件平臺的構(gòu)建目前多通過上位機同下位機協(xié)調(diào)工作的方式實現(xiàn),上位機的主要功能在于代碼解釋、數(shù)據(jù)處理等,控制具體的運動以及采集信號則由下位機負責完成,但這種方式存在開發(fā)周期過長、成本較高,難以滿足經(jīng)濟型數(shù)控系統(tǒng)的控制需求,隨著嵌入式微處理器的發(fā)展與完善,可在同一個處理器上完成所有的數(shù)控任務,同時通過外圍接口電路的設(shè)計,顯著簡化了數(shù)控系統(tǒng)的規(guī)范化研發(fā)過程,使系統(tǒng)具備較高的拓展性和穩(wěn)定性[1]。
2.1系統(tǒng)硬件設(shè)計。在嵌入式數(shù)控系統(tǒng)中使用了S3C2440A,基于ARM920T核的S3C2440A嵌入式微處理器提供完整的通用系統(tǒng)外設(shè),無需配置額外組件,能夠降低整體系統(tǒng)成本,該芯片上集成了豐富的資源,系統(tǒng)硬件設(shè)計具體如圖1所示。操作系統(tǒng)及軟件程序都運行在S3C2440A上,系統(tǒng)總線上掛接存儲設(shè)備(NANDFLASH,256M),用于存貯各數(shù)控程序、文件系統(tǒng)等,采用同步動態(tài)隨機存儲器(SDRAM,64M)作為內(nèi)存,開機后,操作系統(tǒng)及數(shù)控程序在開機后會被依次裝入SDRAM中運行,前期硬件可通過JTAG接口實現(xiàn)在線調(diào)試,對伺服電動機的控制則通過濾波處理4路PWM(分別控制x,y,z軸及主軸轉(zhuǎn)速)實現(xiàn),PWM信號經(jīng)反相器轉(zhuǎn)換成兩路差分信號后再通過運算放大器電路得到具有負極性幅值的PWM信號,經(jīng)濾波放大得到模擬量電壓信號[-10V,10V],從而實現(xiàn)對驅(qū)動器轉(zhuǎn)矩指令的控制(電動機在PWM輸出占空比超過一半時正轉(zhuǎn))。采用FPGA進行擴展,轉(zhuǎn)換編碼器信號(相差90°相位)為計數(shù)脈沖信號和方向信號后,經(jīng)過FPGA的雙向計數(shù)器輸出后得到當前編碼器的計數(shù)值,控制單元通過讀取相應地址即可完成編碼器信號的采集,從而實現(xiàn)了閉環(huán)控制[2]。2.2軟件平臺的建立。軟件平臺是數(shù)控系統(tǒng)運行的基礎(chǔ),搭建工作在PC機上完成,采用Fedora9系統(tǒng)(RedHat公司)作為交叉開發(fā)環(huán)境,編譯工作通過在PC機上指定的交叉編譯器(arm-l4inux-gcc工具)完成,使其可在ARM處理器中運行,在此基礎(chǔ)上即可完成Bootloader、Linux內(nèi)核和文件系統(tǒng)的移植過程,系統(tǒng)的軟件平臺如圖2所示。主要由引導裝載程序、Linux內(nèi)核、GUI(圖形用戶接口)等構(gòu)成,作為軟件平臺的核心Linux內(nèi)核的功能在于調(diào)度進程、內(nèi)存管理及通信等;系統(tǒng)運行所需的文件和數(shù)控軟件都包含在文件系統(tǒng)內(nèi);引導裝載程序(u-boot)的作用功能在于硬件設(shè)備的初始化處理、內(nèi)存空間映射表的建立等,以便于操作系統(tǒng)的后續(xù)運行;GUI提供了豐富的接口,顯著降低了軟件實現(xiàn)的難度[3]。2.3實時性改進的實現(xiàn)。由于Linux內(nèi)核時鐘粒度較為粗糙且不支持完全的搶占,且IRQ中斷需經(jīng)常關(guān)閉,導致Linux的實時性較差,為滿足實時多任務控制要求需對其進行改進,本文采用雙內(nèi)核法對Linux進行實時擴展,將一個硬件抽象層加入到Linux內(nèi)核與硬件間(使系統(tǒng)有兩個內(nèi)核),負責系統(tǒng)所有的硬件中斷,根據(jù)進程對實時性的要求分配給實時內(nèi)核或Linux內(nèi)核進行處理和調(diào)度,采用該方法的Xenomai專注于實時性,兼容性較好可支持多平臺使用,采用基于ADEOS的Xenomai使linux更好的滿足工業(yè)實時性的需求,同時使操作系統(tǒng)建的靈活性和可擴展性得以提升,各操作系統(tǒng)運行于獨立的域中,重點在于重新編譯Linux內(nèi)核及制作Xenomai庫,具體的實時擴展工作流程為:先下載好Xenomai源代碼,在Xe-nomai_root中執(zhí)行scripts(腳本子目錄)中prepare-kernel.sh,為linux內(nèi)核源代碼(位于linux_tree目錄中)打上Xeno-mai補丁,指定目標平臺為ARM架構(gòu),在此基礎(chǔ)上完成Linux內(nèi)核的配置及相關(guān)所需Xenomai選項的選取(如是否關(guān)閉FPU或開啟n-ativeAPI等),makebzImage命令在獲取正確的config文件后即可執(zhí)行,通過編譯實現(xiàn)最終嵌入式實時Linux內(nèi)核(支持enomai)的獲取,通過對Xenomai源碼進行編譯即可使用其API編寫實時任務,從而得到相應的實時庫文件,再將庫文件拷貝到/lib目錄中(位于目標平臺文件系統(tǒng)),從而完成了數(shù)控系統(tǒng)實時化改造過程[4]。
3數(shù)控系統(tǒng)的實現(xiàn)
數(shù)控系統(tǒng)軟件結(jié)構(gòu)如圖3所示??刂撇糠重撠熗瓿蓪崟r性要求較高的相關(guān)數(shù)控加工任務,管理部分負責提供實時性要求低的外圍支持。3.1控制模塊的實現(xiàn)。該模塊決定著系統(tǒng)的加工性能,需在讀取相應數(shù)控程序代碼的基礎(chǔ)上完成一系列的處理,伺服電動機的驅(qū)動器接收到最終數(shù)據(jù)后,對電動機運轉(zhuǎn)過程進行控制完成加工任務,其中位置控制對實時性的要求最高,可采用Xenomai提供的API編寫實現(xiàn),以位置控制模塊為例具體實現(xiàn)過程如下[5]。(1)首先調(diào)用實時任務創(chuàng)建函數(shù)(位于XenomaiAPI中),函數(shù)在線程創(chuàng)建成功后返回0,具體的函數(shù)表達式如下:rt_task_create(task,constchar*name,intstksize,intprio,mode);(2)位置控制的處理函數(shù)表示如下:voidcontrol_process(void){/*程周期設(shè)為1000μs*/rt_task_set_periodic(NULL,TM_NOW,1000000);while(1)/*處理位置控制的代碼*/……}(3)運行位置控制線程所調(diào)用的函數(shù)表示如下:rt_task_start((void*)control_process,void*arg);接下來開始運行control_process()函數(shù),利用Xenomai的實時管道實現(xiàn)各控制模塊的數(shù)據(jù)通信(實時性要求高),創(chuàng)建如下:intrt_pipe_create(constchar*name,intminor,pool-size)讀寫管道數(shù)據(jù)時實施層調(diào)用函數(shù)如下:ssize_trt_pipe_read(void*buf,size_tsize,timeout);ssize_trt_pipe_write(constvoid*buf,size_tsize,intmode);3.2管理模塊的實現(xiàn)。采用Linux提供的系統(tǒng)調(diào)用API實現(xiàn)管理任務的處理,各管理模塊的連接通過友好的交互界面實現(xiàn)以便于用戶操作,本文采用Qt/Embedded實現(xiàn),具體結(jié)構(gòu)如圖4所示。嵌入式領(lǐng)域的開源GUI項目中的Qt/Em-bedded支持多平臺,基于C++面向?qū)ο?,提供各種圖形用戶界面所需元素,窗口間相互依存關(guān)系在編程時可通過C++的繼承來實現(xiàn),能夠使界面程序代碼的重復部分得以有效降低;窗口中各控件間的通信則可使用Qt中的信號槽機制實現(xiàn),簡化界面程序編寫過程[6]。
4系統(tǒng)測試
為檢測本文所設(shè)計系統(tǒng)的有效性,對系統(tǒng)各模塊的功能進行檢測,檢測結(jié)果表明系統(tǒng)具備友好的人機界面,在PC機上搭建的軟件平臺能夠根據(jù)實際需要調(diào)度進程、管理內(nèi)存等保證了通信質(zhì)量,系統(tǒng)運行所需的文件和數(shù)控軟件都包含在文件系統(tǒng)內(nèi),結(jié)合提供豐富接口的GUI,使數(shù)控系統(tǒng)調(diào)度任務的實時性得以有效提高,為縮短插補周期、提高加工效率打下基礎(chǔ),通過Xenomai提供的API編寫可有效實現(xiàn)代碼解釋、刀具補償、速度規(guī)劃、邏輯運算及位置控制等子模塊的功能,具備較高的實用性和穩(wěn)定性。
5總結(jié)
本文主要研究了基于嵌入式數(shù)控系統(tǒng),采用單CPU架構(gòu)進行設(shè)計,系統(tǒng)基于Linux和ARM,系統(tǒng)的硬件平臺采用FPGA實現(xiàn)相關(guān)控制與應用接口的外圍擴展,軟件平臺采用Linux系統(tǒng),從而豐富了ARM處理器的片上資源,為滿足數(shù)控系統(tǒng)高精度控制需求,基于Xenomai對Linux完成了實時性改造,從而使系統(tǒng)的實時多任務控制要求得以有效滿足,并利用Xenomai提供的豐富API對系統(tǒng)軟件結(jié)構(gòu)進行設(shè)計,以確保數(shù)控系統(tǒng)功能的實現(xiàn),使其具備較高的靈活性和可靠性。
作者:趙明 單位:煙臺汽車工程職業(yè)學院