嵌入式Linux數控系統設計與實現

時間:2022-09-24 09:37:39

導語:嵌入式Linux數控系統設計與實現一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

嵌入式Linux數控系統設計與實現

摘要:研究基于嵌入式的數控系統。采用單CPU架構進行設計,系統基于linux和ARM,軟件平臺采用Linux,從而豐富了ARM處理器的片上資源。為滿足數控系統高精度控制需求,基于Xenomai對Linux完成了實時性改造,并對系統軟件結構進行設計,以確保數控系統功能的實現。

關鍵詞:Linux系統;嵌入式;數控系統;實現路徑

裝備制造業對數控機床的要求逐漸提高,設備總體功能和性能離不開高效的數控系統,嵌入式系統具備小型化、低功耗、穩定可靠等優勢,應用在數控系統中,可根據實際需要對計算機控制系統進行配置,實現智能控制、遠程控制、故障檢測等功能,作為數控機床的控制中樞,目前主流數控系統多采用單核ARM平臺,數控系統性能的提升受到單核處理器自身不足的限制,因此對于多核平臺的應用成為優化嵌入式數控系統的有效手段。

1現狀分析

數控系統的硬件平臺的構建目前多通過上位機同下位機協調工作的方式實現,上位機的主要功能在于代碼解釋、數據處理等,控制具體的運動以及采集信號則由下位機負責完成,但這種方式存在開發周期過長、成本較高,難以滿足經濟型數控系統的控制需求,隨著嵌入式微處理器的發展與完善,可在同一個處理器上完成所有的數控任務,同時通過外圍接口電路的設計,顯著簡化了數控系統的規范化研發過程,使系統具備較高的拓展性和穩定性[1]。

2系統設計

2.1系統硬件設計。在嵌入式數控系統中使用了S3C2440A,基于ARM920T核的S3C2440A嵌入式微處理器提供完整的通用系統外設,無需配置額外組件,能夠降低整體系統成本,該芯片上集成了豐富的資源,系統硬件設計具體如圖1所示。操作系統及軟件程序都運行在S3C2440A上,系統總線上掛接存儲設備(NANDFLASH,256M),用于存貯各數控程序、文件系統等,采用同步動態隨機存儲器(SDRAM,64M)作為內存,開機后,操作系統及數控程序在開機后會被依次裝入SDRAM中運行,前期硬件可通過JTAG接口實現在線調試,對伺服電動機的控制則通過濾波處理4路PWM(分別控制x,y,z軸及主軸轉速)實現,PWM信號經反相器轉換成兩路差分信號后再通過運算放大器電路得到具有負極性幅值的PWM信號,經濾波放大得到模擬量電壓信號[-10V,10V],從而實現對驅動器轉矩指令的控制(電動機在PWM輸出占空比超過一半時正轉)。采用FPGA進行擴展,轉換編碼器信號(相差90°相位)為計數脈沖信號和方向信號后,經過FPGA的雙向計數器輸出后得到當前編碼器的計數值,控制單元通過讀取相應地址即可完成編碼器信號的采集,從而實現了閉環控制[2]。2.2軟件平臺的建立。軟件平臺是數控系統運行的基礎,搭建工作在PC機上完成,采用Fedora9系統(RedHat公司)作為交叉開發環境,編譯工作通過在PC機上指定的交叉編譯器(arm-l4inux-gcc工具)完成,使其可在ARM處理器中運行,在此基礎上即可完成Bootloader、Linux內核和文件系統的移植過程,系統的軟件平臺如圖2所示。主要由引導裝載程序、Linux內核、GUI(圖形用戶接口)等構成,作為軟件平臺的核心Linux內核的功能在于調度進程、內存管理及通信等;系統運行所需的文件和數控軟件都包含在文件系統內;引導裝載程序(u-boot)的作用功能在于硬件設備的初始化處理、內存空間映射表的建立等,以便于操作系統的后續運行;GUI提供了豐富的接口,顯著降低了軟件實現的難度[3]。2.3實時性改進的實現。由于Linux內核時鐘粒度較為粗糙且不支持完全的搶占,且IRQ中斷需經常關閉,導致Linux的實時性較差,為滿足實時多任務控制要求需對其進行改進,本文采用雙內核法對Linux進行實時擴展,將一個硬件抽象層加入到Linux內核與硬件間(使系統有兩個內核),負責系統所有的硬件中斷,根據進程對實時性的要求分配給實時內核或Linux內核進行處理和調度,采用該方法的Xenomai專注于實時性,兼容性較好可支持多平臺使用,采用基于ADEOS的Xenomai使linux更好的滿足工業實時性的需求,同時使操作系統建的靈活性和可擴展性得以提升,各操作系統運行于獨立的域中,重點在于重新編譯Linux內核及制作Xenomai庫,具體的實時擴展工作流程為:先下載好Xenomai源代碼,在Xe-nomai_root中執行scripts(腳本子目錄)中prepare-kernel.sh,為linux內核源代碼(位于linux_tree目錄中)打上Xeno-mai補丁,指定目標平臺為ARM架構,在此基礎上完成Linux內核的配置及相關所需Xenomai選項的選取(如是否關閉FPU或開啟n-ativeAPI等),makebzImage命令在獲取正確的config文件后即可執行,通過編譯實現最終嵌入式實時Linux內核(支持enomai)的獲取,通過對Xenomai源碼進行編譯即可使用其API編寫實時任務,從而得到相應的實時庫文件,再將庫文件拷貝到/lib目錄中(位于目標平臺文件系統),從而完成了數控系統實時化改造過程[4]。

3數控系統的實現

數控系統軟件結構如圖3所示。控制部分負責完成對實時性要求較高的相關數控加工任務,管理部分負責提供實時性要求低的外圍支持。3.1控制模塊的實現。該模塊決定著系統的加工性能,需在讀取相應數控程序代碼的基礎上完成一系列的處理,伺服電動機的驅動器接收到最終數據后,對電動機運轉過程進行控制完成加工任務,其中位置控制對實時性的要求最高,可采用Xenomai提供的API編寫實現,以位置控制模塊為例具體實現過程如下[5]。(1)首先調用實時任務創建函數(位于XenomaiAPI中),函數在線程創建成功后返回0,具體的函數表達式如下:rt_task_create(task,constchar*name,intstksize,intprio,mode);(2)位置控制的處理函數表示如下:voidcontrol_process(void){/*程周期設為1000μs*/rt_task_set_periodic(NULL,TM_NOW,1000000);while(1)/*處理位置控制的代碼*/……}(3)運行位置控制線程所調用的函數表示如下:rt_task_start((void*)control_process,void*arg);接下來開始運行control_process()函數,利用Xenomai的實時管道實現各控制模塊的數據通信(實時性要求高),創建如下:intrt_pipe_create(constchar*name,intminor,pool-size)讀寫管道數據時實施層調用函數如下:ssize_trt_pipe_read(void*buf,size_tsize,timeout);ssize_trt_pipe_write(constvoid*buf,size_tsize,intmode);3.2管理模塊的實現。采用Linux提供的系統調用API實現管理任務的處理,各管理模塊的連接通過友好的交互界面實現以便于用戶操作,本文采用Qt/Embedded實現,具體結構如圖4所示。嵌入式領域的開源GUI項目中的Qt/Em-bedded支持多平臺,基于C++面向對象,提供各種圖形用戶界面所需元素,窗口間相互依存關系在編程時可通過C++的繼承來實現,能夠使界面程序代碼的重復部分得以有效降低;窗口中各控件間的通信則可使用Qt中的信號槽機制實現,簡化界面程序編寫過程[6]。

4系統測試

為檢測本文所設計系統的有效性,對系統各模塊的功能進行檢測,檢測結果表明系統具備友好的人機界面,在PC機上搭建的軟件平臺能夠根據實際需要調度進程、管理內存等保證了通信質量,系統運行所需的文件和數控軟件都包含在文件系統內,結合提供豐富接口的GUI,使數控系統調度任務的實時性得以有效提高,為縮短插補周期、提高加工效率打下基礎,通過Xenomai提供的API編寫可有效實現代碼解釋、刀具補償、速度規劃、邏輯運算及位置控制等子模塊的功能,具備較高的實用性和穩定性。

5總結

本文主要研究了基于嵌入式數控系統,采用單CPU架構進行設計,系統基于Linux和ARM,系統的硬件平臺采用FPGA實現相關控制與應用接口的外圍擴展,軟件平臺采用Linux系統,從而豐富了ARM處理器的片上資源,為滿足數控系統高精度控制需求,基于Xenomai對Linux完成了實時性改造,從而使系統的實時多任務控制要求得以有效滿足,并利用Xenomai提供的豐富API對系統軟件結構進行設計,以確保數控系統功能的實現,使其具備較高的靈活性和可靠性。

作者:趙明 單位:煙臺汽車工程職業學院