引言 運動(dòng)控制器是運動(dòng)控制系統的核心部件。目前,國內的運動(dòng)控制器大致可以分為3類(lèi): 第1類(lèi)是以單片機等微處理器作為控制核心的運動(dòng)控制器。這類(lèi)運動(dòng)控制器速度較慢、精度不高、成本相對較低,只能在一些低速運行和對軌跡要求不高的輪廓運動(dòng)控制場(chǎng)合應用。 第2類(lèi)是以專(zhuān)用芯片(ASIC)作為核心處理器的運動(dòng)控制器,這類(lèi)運動(dòng)控制器結構比較簡(jiǎn)單,大多只能輸出脈沖信號,工作于開(kāi)環(huán)控制方式。由于這類(lèi)控制器不能提供連續插補功能,也沒(méi)有前饋功能,特別是對于大量的小線(xiàn)段連續運動(dòng)的場(chǎng)合不能使用這類(lèi)控制器。 第3類(lèi)是基于PC總線(xiàn)的以DSP或FPGA作為核心處理器的開(kāi)放式運動(dòng)控制器。這類(lèi)開(kāi)放式運動(dòng)控制器以DSP芯片作為運動(dòng)控制器的核心處理器,以PC機作為信息處理平臺,運動(dòng)控制器以插件形式嵌入PC機,即“PC+運動(dòng)控制器”的模式。這樣的運動(dòng)控制器具有信息處理能力強,開(kāi)放程度高,運動(dòng)軌跡控制準確,通用性好的特點(diǎn)。但是這種方式存在以下缺點(diǎn):運動(dòng)控制卡需要插入計算機主板的PCI或者ISA插槽,因此每個(gè)具體應用都必須配置一臺PC機作為上位機。這無(wú)疑對設備的體積、成本和運行環(huán)境都有一定的限制,難以獨立運行和小型化。 針對這些問(wèn)題,設計了一種基于ARM+DSP的嵌入式運動(dòng)控制器。該控制器將嵌入式CPU與專(zhuān)用運動(dòng)控制芯片相結合,將運動(dòng)控制功能以功能模塊的方式嵌入到ARM主控板的架構,把不需要的設備裁減掉,既兼顧功能又節省成本。該控制器是一種可以脫離上位機單獨運行的一種獨立型運動(dòng)控制器,具有良好的應用前景。 1 嵌入式運動(dòng)控制器的硬件平臺設計 嵌入式運動(dòng)控制器的硬件主要包括兩個(gè)部分:ARM主控板和DSP運動(dòng)控制板。這兩塊控制板通過(guò)通用I/O口以總線(xiàn)的方式連接在一起。在設計時(shí),可以分別對ARM主控板和DSP運動(dòng)控制板進(jìn)行設計,最后再調試。這種將 ARM主控板和DSP運動(dòng)控制板分開(kāi)設計和調試的硬件方案,將設計難點(diǎn)分散,使設計和調試更簡(jiǎn)單。 1.1 ARM主控板部分 本系統采用的ARM芯片為Samsung公司推出的16/32位RISC處理器S3C2440A,主頻為400 MHz,最高頻率可達533 MHz。ARM主控板以嵌入式處理器S3C2440A為核心,外擴存儲器和通用設備接口。ARM主控板的硬件結構框圖如圖1所示。 ![]() 通過(guò)通用I/O接口與DSP運動(dòng)控制板通信,實(shí)現ARM主控板與運動(dòng)控制板之間數據的實(shí)時(shí)雙向傳送;外部NAND Flash存儲器(64 MB),用于存儲系統參數及運動(dòng)指令;NOR Flash存儲器(2 MB),用于存放系統運行程序;SDRAM存儲器(64 MB),用于存放臨時(shí)數據;通過(guò)串口、以太網(wǎng)接口、USB接口與上位機系統通信,實(shí)現兩者之間數據的傳送;通過(guò)LCD接口,實(shí)現320×240分辨率液晶屏的圖形與字符顯示,并具有觸摸屏接口,提供友好的人機交互界面;通過(guò)I/O擴展接口,提供可編程的數字I/O通道;通過(guò)JTAG接口與PC機通信,實(shí)現系統運行程序的仿真調試及下載,軟件升級接口。 1.2 DSP運動(dòng)控制板部分 本系統DSP運動(dòng)控制芯片選用PCL6045B。PCL6045B是一種功能十分強大的DSP運動(dòng)控制芯片。芯片能夠控制四軸,并實(shí)現兩軸到四軸直線(xiàn)差補、兩軸圓弧差補。所有插補計算由芯片完成,上位機只需寫(xiě)入圓弧的參數即可,其多軸插補控制功能特別優(yōu)秀。系統硬件采用主從式雙CPU結構模式。主CPU 為ARM處理器,負責鍵盤(pán)、顯示、網(wǎng)絡(luò )通信等管理工作;從CPU為PCL6045B運動(dòng)控制芯片,專(zhuān)門(mén)負責運動(dòng)控制的處理工作。PCL6045B與ARM 的通信是靠讀寫(xiě)I/O總線(xiàn)上的幾個(gè)地址來(lái)進(jìn)行指令和數據的傳輸?刂葡到y硬件結構框圖如圖2所示。 ![]() 1.3 ARM處理器與運動(dòng)控制芯片的連接 通過(guò)設置引腳IF0與IF1,PCL6045B芯片與不同的CPU相連,如表1所列。 ![]() 本系統設置IF1:IF0=0:1,CPU連接如圖3所示。 ![]() 2 嵌入式運動(dòng)控制器的軟件設計 本系統可根據被控對象的特征設計不同的模塊化用戶(hù)軟件,來(lái)滿(mǎn)足不同的運動(dòng)控制任務(wù)。模塊化軟件恰好是Linux操作系統的優(yōu)點(diǎn)。Linux還可以根據用戶(hù)的需求實(shí)現內核的裁減和定制,源碼開(kāi)放,網(wǎng)絡(luò )支持功能強大,價(jià)格上也更具有競爭優(yōu)勢等。所以該控制器選用Linux作為片上系統(SoC)。但是,Linux并不是一個(gè)實(shí)時(shí)操作系統,因此,通過(guò)實(shí)時(shí)內核補丁RTAI(Real Time Application In-terface),在硬件平臺的基礎上增加一個(gè)實(shí)時(shí)內核,將Linux內核當作它的優(yōu)先級最低的任務(wù)執行,從而保證運動(dòng)控制系統的實(shí)時(shí)性。系統的控制軟件分為兩個(gè)區域:非實(shí)時(shí)域和實(shí)時(shí)域。非實(shí)時(shí)域是建立在普通Linux內核基礎上的,其主要包括系統初始化和通信模塊。 ①系統初始化:進(jìn)行微處理器的硬件初始化,包括輸入/輸出接口的配置、具體總線(xiàn)通信方式的配置以及伺服系統相關(guān)的接口參數配置。 ②通信模塊:負責運動(dòng)控制卡和上位機之間的坐標值、速度值、數控系統的I/O接口狀態(tài)、報警狀態(tài)以及數據鏈表的傳輸。 實(shí)時(shí)域建立在RTAI實(shí)時(shí)內核的基礎上。其實(shí)時(shí)任務(wù)通過(guò)實(shí)時(shí)進(jìn)程的方式來(lái)完成,一種為周期性(peri_odic)實(shí)時(shí)進(jìn)程,另一種為一次性(one shot)實(shí)時(shí)進(jìn)程。實(shí)時(shí)域主要包括如下4個(gè)周期性實(shí)時(shí)線(xiàn)程: ①狀態(tài)檢測線(xiàn)程(rt_monitor_thread)。本任務(wù)對設備運行狀態(tài)進(jìn)行檢測,負責從I/O端口讀入各個(gè)連接的I/O設備值,然后將狀態(tài)寫(xiě)入狀態(tài)檢測緩沖區中,對設備急停、伺服報警、限位信號進(jìn)行判斷,并進(jìn)行相應的處理。 ②插補線(xiàn)程(rt_interpolation_thread)。從譯碼緩沖區中順序取得插補數據,然后根據是直線(xiàn)或者圓弧進(jìn)行插補,插補得到下個(gè)周期應該到達的理論坐標值。 ③位置控制線(xiàn)程(rt_position_thread)。讀取計數器中編碼器的數值,得到實(shí)際的位置,并與插補器中的理論位置坐標作比較。根據差值調節PID參數,并將具體脈沖輸出數寫(xiě)入對應的PWM口的脈沖數寄存器中。 ④功能控制線(xiàn)程(rt_function_thread)。功能控制任務(wù)利用RTAI實(shí)時(shí)管道來(lái)傳遞命令和狀態(tài)信息的功能。通過(guò)管道的命令設置實(shí)現Linux操作系統對實(shí)時(shí)部分RTAI的訪(fǎng)問(wèn),從而實(shí)現運動(dòng)控制器的運行、暫停、給定速度等狀態(tài)設置。 2.1 軟件平臺的建立 軟件平臺是系統應用程序開(kāi)發(fā)的基礎。本系統軟件平臺主要包括:ARM-Linux的移植、串行接口驅動(dòng)開(kāi)發(fā)、USB接口驅動(dòng)開(kāi)發(fā)、LCD接口驅動(dòng)開(kāi)發(fā)、觸摸屏接口驅動(dòng)開(kāi)發(fā)、以太網(wǎng)接口驅動(dòng)開(kāi)發(fā)、文件系統的移植等。這些軟件的開(kāi)發(fā)和移植在很多文獻中有詳細的說(shuō)明。 2.2 運動(dòng)控制函數庫的設計 通用運動(dòng)控制器的功能主要取決于運動(dòng)控制函數庫。要做成一個(gè)開(kāi)放式的運動(dòng)控制器,必須編寫(xiě)豐富的運動(dòng)控制函數庫,以滿(mǎn)足不同的應用要求。運動(dòng)控制函數庫要為單軸及多軸的步進(jìn)或伺服控制提供許多運動(dòng)函數,如單軸驅動(dòng)、兩軸直線(xiàn)插補、3軸直線(xiàn)插補、圓弧插補等等。另外,為了配合運動(dòng)控制系統的開(kāi)發(fā),還編寫(xiě)了一些輔助函數,如中斷處理、編碼器反饋、間隙補償、通用開(kāi)關(guān)量的輸入輸出等。這樣,用戶(hù)在開(kāi)發(fā)應用程序時(shí)就不必再關(guān)心底層的東西,只需根據控制系統的要求編制人機界面,并調用運動(dòng)控制函數庫中的函數,就可以開(kāi)發(fā)出滿(mǎn)足要求的多軸運動(dòng)控制系統。 2.3 對Ljnux進(jìn)行實(shí)時(shí)化改造 由于Linux不是一個(gè)實(shí)時(shí)操作系統,所以,利用實(shí)時(shí)內核補丁RTAI(Real Time Application Interface)。RTAI的安裝和使用詳見(jiàn)參考文獻[7]。該控制器所使用的Linux開(kāi)發(fā)環(huán)境為ELDK(Embedded Linux DevelopedKit)3.0。Linux內核為L(cháng)inuxp pc_2_4_devel,而RTAI的版本為24.1.12。由Linux中的init_module()和cleanup_modtde()兩個(gè)函數加載和卸載實(shí)時(shí)任務(wù)模塊,通過(guò)這兩個(gè)函數進(jìn)行實(shí)時(shí)線(xiàn)程及其處理函數的創(chuàng )建和回收。其關(guān)鍵程序如下: ![]() ![]() 2.4 應用軟件設計 應用軟件主要包括人機交互界面的設計、數控指令的編譯解釋、按鍵功能的實(shí)現、運動(dòng)狀態(tài)的監視等。通過(guò)操作系統ARM-Linux,可方便地實(shí)現上述功能,并進(jìn)行多任務(wù)的調度。運動(dòng)控制器根據輸入的數控指令文件,將其存入NAND Flash中。ARM處理器通過(guò)對數控指令進(jìn)行譯碼、速度預處理、粗插補計算等,調用運動(dòng)控制函數,進(jìn)而發(fā)出控制指令控制步進(jìn)或伺服系統去控制執行部件進(jìn)行動(dòng)作,從而達到實(shí)現運動(dòng)控制的目的。 結語(yǔ) 本文綜合應用ARM嵌入式系統技術(shù)、DSP運動(dòng)控制技術(shù)等多種技術(shù)開(kāi)發(fā)出高性能的嵌入式運動(dòng)控制器。該控制器相比傳統的基于PC機的運動(dòng)控制器,具有成本低、體積小、功耗低、功能豐富、運行穩定的特點(diǎn)和優(yōu)勢。以ARM微控器和PCL6045B為核心的嵌入式運動(dòng)控制器,采用Linux操作系統,經(jīng)過(guò)對其進(jìn)行實(shí)時(shí)化改造,使系統能很好地進(jìn)行多任務(wù)處理,保證了系統的實(shí)時(shí)性。該控制器能夠實(shí)現高速和高精度的運動(dòng)控制需求,具有良好的運動(dòng)控制性能。該運動(dòng)控制器的設計,為讀者提供了一種良好的解決方案,在運動(dòng)控制領(lǐng)域具有廣闊的應用前景。 參考文獻 1. 劉建群,劉綠山,羅繼合.嵌入式四軸運動(dòng)控制器的設計[J].制造業(yè)自動(dòng)化,2008(2):52-53. 2. 劉丹,傅建中.基于A(yíng)RM和PCL6045的運動(dòng)控制器設計[J].組合機床與自動(dòng)化加工技術(shù),2006(3):47-49. 3. Samsung公司.S3C2440A使用手冊. 4. 金晟,傅建中,陳子辰.基于A(yíng)RM的嵌入式數控系統設計[J].機電工程,2005(2):56-58. 5. 葉佩青.PCL6045B運動(dòng)控制與數控應用[M].北京:清華大學(xué)出版社,2007:15-18. 6. 王文斌,陳偉.一種新型獨立式運動(dòng)控制器的研究[J].制造技術(shù)與機床,2008(12):75-78. 7. 張巍,李俊,潘金貴.基于RTAI的實(shí)時(shí)linux系統構筑及其嵌入式程序移植[J].計算機科學(xué),2007(11):304-307. 8. Wang Wenbin,Yu Tao,Liu Tan.A research on reconfigurable numerical controller based on embedded system[C].ICM 2006 IEEE InternationalConference on Mechatmnics.2006. 本文來(lái)源:?jiǎn)纹瑱C與嵌入式系統 作者:重慶通信學(xué)院 陳大亮 劉鵬 蘇丹 |