李松,李迪,翟振坤
(華南理工大學(xué)機(jī)械與汽車工程學(xué)院,廣東廣州510640)
數(shù)控機(jī)床高速加工的運(yùn)動(dòng)控制是提高加工質(zhì)量和加工效率的重要手段,在諸多高速加工的相關(guān)技術(shù)取得突破的情況下,適應(yīng)高速加工的CNC控制器的研制成為影響高速加工技術(shù)應(yīng)用的重要課題。與傳統(tǒng)的控制器相比,高速加工對(duì)CNC控制器提出新的要求,這些要求主要包括高速處理程序段、高速處理控制信息流、自動(dòng)平滑加減速、強(qiáng)大工況監(jiān)控能力、高速通信能力、高可靠性和安全性等方面[1]。目前在數(shù)控系統(tǒng)領(lǐng)域主要有兩種實(shí)現(xiàn)模式。第一種是基于通用PC機(jī)+運(yùn)動(dòng)控制卡的模式。使用這種數(shù)控技術(shù)的PC機(jī)價(jià)格昂貴、系統(tǒng)資源與需求不匹配、操作系統(tǒng)不適合實(shí)時(shí)控制、可靠性低、系統(tǒng)核心軟硬件不具有自主知識(shí)產(chǎn)權(quán)等問(wèn)題,所以很難適用于中低檔高速數(shù)控系統(tǒng)[2-3]。另一方面,近年來(lái)嵌入式技術(shù)得到了飛速發(fā)展,各種高性能的嵌入式微控制器層出不窮,芯片運(yùn)算速度,不斷提高,片上的集成資源越來(lái)越豐富。其中以基于32位RISC架構(gòu)的ARM核微控制器和數(shù)字信號(hào)處理器 (DSP)為主代表的嵌入式控制器在工控、消費(fèi)電子、網(wǎng)絡(luò)設(shè)備等領(lǐng)域取得了輝煌的市場(chǎng)業(yè)績(jī)[4]。嵌入式技術(shù)具有很好的應(yīng)用性、很強(qiáng)的適應(yīng)性、資源利用充分、系統(tǒng)緊湊、開(kāi)發(fā)和調(diào)試方便等明顯的特點(diǎn)。因此,國(guó)內(nèi)外許多數(shù)控系統(tǒng)開(kāi)發(fā)研究人員對(duì)嵌入式技術(shù)在數(shù)控系統(tǒng)中的應(yīng)用投入了極大的研究熱情,嵌入式數(shù)控技術(shù)成為未來(lái)數(shù)控系統(tǒng)發(fā)展的一個(gè)嶄新方向[5-7]。為了降低硬件成本,增強(qiáng)穩(wěn)定性,并能適應(yīng)高速高精數(shù)控系統(tǒng)的多任務(wù)和實(shí)時(shí)性調(diào)度,作者開(kāi)發(fā)了一種基于“ARM+DSP+FPGA+MCU”結(jié)構(gòu)的嵌入式數(shù)控系統(tǒng)。該系統(tǒng)能夠滿足高速加工對(duì)CNC控制器提出新的要求,而且結(jié)構(gòu)輕便,適用性強(qiáng)。
基于“ARM+DSP+FPGA+MCU”結(jié)構(gòu)的嵌入式數(shù)控系統(tǒng),功能框架圖如圖1所示。
圖中ARM使用的是三星公司生產(chǎn)的S3C2440,400MHz主頻,ARM920T內(nèi)核,負(fù)責(zé)LCD、串口、以太網(wǎng)和USB接口的處理,運(yùn)行嵌入式Linux操作系統(tǒng),實(shí)現(xiàn)譯碼、文件系統(tǒng)、網(wǎng)絡(luò)、圖形顯示和PLC編輯功能。DSP采用TMS320C6713,是TI公司推出的浮點(diǎn)DSP中的一款芯片。TMS320C6713每周期可以執(zhí)行8條32位指令;支持32/64位數(shù)據(jù);具有300MHz、指令周期的運(yùn)行速度和 2400MIPS或1800MFLOPS的處理能力[8]。它負(fù)責(zé)插補(bǔ)計(jì)算、電機(jī)運(yùn)動(dòng)控制和PLC執(zhí)行系統(tǒng),通過(guò)HPI接口與ARM進(jìn)行通信,并且通過(guò)自身的外部總線 (EMIF)與FPGA模塊通信。FPGA由于其強(qiáng)大的邏輯處理功能,一方面,接受ARM和外部RAM送來(lái)的控制指令和數(shù)據(jù)信息執(zhí)行運(yùn)算,產(chǎn)生控制步進(jìn)電機(jī)運(yùn)轉(zhuǎn)的脈沖序列,并通過(guò)接口將脈沖序列送到電機(jī)驅(qū)動(dòng)器或轉(zhuǎn)化為模擬量輸給驅(qū)動(dòng)器,從而控制電機(jī)。另一方面,負(fù)責(zé)與外圍編碼器相連接,識(shí)別其輸出的信號(hào)并計(jì)數(shù),計(jì)數(shù)結(jié)果存放在寄存器中,供DSP讀取。MCU模塊由高性能、低功耗的AVR 8位微處理器ATmage128和CPLD組成,主要負(fù)責(zé)系統(tǒng)操作面板、鍵盤(pán)、LED等信號(hào)的處理,通過(guò)串口RS485和主處理器ARM通信。
圖1 功能框架圖
根據(jù)一般高速數(shù)控機(jī)床對(duì)數(shù)控系統(tǒng)功能的要求,本系統(tǒng)軟件功能模塊劃分如圖2所示。
人機(jī)界面模塊運(yùn)行在應(yīng)用程序的前臺(tái),主要實(shí)現(xiàn)用戶與系統(tǒng)的交互功能,其主要的功能包括機(jī)床加工狀態(tài)信息顯示 (手動(dòng)、MDI、自動(dòng)、手輪、回參考點(diǎn)等方式)、系統(tǒng)參數(shù)管理、刀具管理、文件管理、程序輸入、加工仿真、網(wǎng)絡(luò)功能等。其數(shù)據(jù)接口主要是實(shí)現(xiàn)與內(nèi)核模塊各種信息的交互,人機(jī)界面模塊從內(nèi)核模塊讀取系統(tǒng)的狀態(tài)信息、報(bào)警信息顯示給用戶;同時(shí)可以將用戶輸入和對(duì)參數(shù)的設(shè)置修改信息傳送給內(nèi)核模塊或譯碼模塊,并將用戶的對(duì)參數(shù)和刀具修改的信息保存到一定的配置文件中;譯碼模塊主要把用戶編制的NC代碼程序翻譯成NC系統(tǒng)可以識(shí)別的數(shù)控指令信息,經(jīng)過(guò)語(yǔ)法檢查和數(shù)據(jù)轉(zhuǎn)換后解釋成CNC數(shù)控指令,存放在指定的內(nèi)存專用區(qū)間;刀補(bǔ)功能模塊包括刀具長(zhǎng)度和刀具半徑補(bǔ)償。本模塊先進(jìn)行長(zhǎng)度補(bǔ)償后采用C(半徑)刀具補(bǔ)償。C刀具補(bǔ)償需要判斷兩段軌跡之間的轉(zhuǎn)接情況,根據(jù)轉(zhuǎn)接情況計(jì)算相應(yīng)的運(yùn)動(dòng)軌跡;前瞻處理模塊是對(duì)連續(xù)多段的加工代碼進(jìn)行預(yù)處理,分析其幾何特性,包括相鄰程序段間的轉(zhuǎn)角,單段長(zhǎng)度,在考慮機(jī)床各軸的加減速能力的基礎(chǔ)上,獲得程序段內(nèi)的最大進(jìn)給速度及最大加速度,同時(shí)對(duì)程序段間的銜接速度進(jìn)行優(yōu)化,使進(jìn)給速度盡量平滑;插補(bǔ)模塊對(duì)譯碼刀補(bǔ)后的CNC數(shù)控指令數(shù)據(jù)進(jìn)行處理,輸出插補(bǔ)運(yùn)算的結(jié)果,對(duì)NC數(shù)控指令的執(zhí)行過(guò)程進(jìn)行控制和調(diào)整。其具體功能:CNC數(shù)控指令的讀入,前加減速預(yù)處理,插補(bǔ)計(jì)算,數(shù)據(jù)輸出;位置控制模塊實(shí)現(xiàn)對(duì)各個(gè)控制軸的位置采集,PID控制,DAC輸出計(jì)算等功能;內(nèi)置PLC模塊接收來(lái)自操作面板、機(jī)床上的各行程開(kāi)關(guān)、傳感器、按鈕、強(qiáng)電柜里的繼電器以及主軸控制、刀庫(kù)控制等有關(guān)信號(hào),經(jīng)處理后輸出去控制相應(yīng)器件的運(yùn)行,實(shí)現(xiàn)數(shù)控系統(tǒng)的I/O的數(shù)字邏輯控制及機(jī)床S、M、T功能等;通訊信息主要有系統(tǒng)參數(shù)信息、報(bào)警信息、數(shù)控指令信息和機(jī)床及操作面板輸入輸出信息。
圖2 軟件系統(tǒng)功能模塊
整個(gè)ARM系統(tǒng)支持的總體架構(gòu)如圖3所示,從上到下有依賴關(guān)系,由于篇幅限制,文中只對(duì)應(yīng)用程序任務(wù)調(diào)度和內(nèi)部通訊進(jìn)行介紹。
圖3 系統(tǒng)支持的框架結(jié)構(gòu)
應(yīng)用程序的任務(wù)調(diào)度采用Linux系統(tǒng)的多線程處理,把各任務(wù)功能模塊放入線程體內(nèi)部運(yùn)行,直接依靠操作系統(tǒng)自身的多線程調(diào)度機(jī)制來(lái)實(shí)現(xiàn),系統(tǒng)使用任務(wù)過(guò)程循環(huán)、信號(hào)量來(lái)實(shí)現(xiàn)任務(wù)線程的同步互斥,使用定時(shí)中斷實(shí)現(xiàn)多線程的并行處理。內(nèi)核模塊功能區(qū)的任務(wù)調(diào)度,把內(nèi)核任務(wù)放入中斷服務(wù)程序之中,任務(wù)的優(yōu)先級(jí)直接依靠對(duì)應(yīng)的中斷優(yōu)先級(jí),所以內(nèi)核任務(wù)的調(diào)度也直接使用Linux內(nèi)核的模塊調(diào)度機(jī)制,采用觸發(fā)系統(tǒng)實(shí)時(shí)中斷的方法實(shí)現(xiàn)對(duì)任務(wù)的調(diào)度。
ARM應(yīng)用程序內(nèi)各線程或任務(wù)間的通信,主要通過(guò)信號(hào)量、全局變量、FIFO來(lái)進(jìn)行通信交互;使用信號(hào)量完成線程之間的同步與互斥,全局變量和FIFO實(shí)現(xiàn)線程間的數(shù)據(jù)傳遞及其與內(nèi)核模塊的數(shù)據(jù)傳遞。在數(shù)控加工時(shí),CNC系統(tǒng)各模塊之間需要傳遞大量的數(shù)據(jù)信息,主要通過(guò)各種緩沖存儲(chǔ)區(qū)實(shí)現(xiàn)數(shù)據(jù)信息的交換。首先讀入數(shù)控加工程序到數(shù)控加工程序緩沖器,從中逐個(gè)讀入字符,經(jīng)譯碼處理送到譯碼結(jié)果緩沖器,再經(jīng)一系列插補(bǔ)準(zhǔn)備 (包括刀補(bǔ)計(jì)算和速度前瞻處理),送到插補(bǔ)緩沖器中,插補(bǔ)程序執(zhí)行插補(bǔ)運(yùn)算時(shí),把插補(bǔ)緩沖存儲(chǔ)區(qū)的內(nèi)容讀入到插補(bǔ)工作存儲(chǔ)區(qū),然后用插補(bǔ)工作區(qū)的數(shù)據(jù)進(jìn)行插補(bǔ)計(jì)算,并將結(jié)果送到插補(bǔ)輸出寄存器。緩沖區(qū)統(tǒng)一數(shù)據(jù)結(jié)構(gòu)如下 (省略數(shù)據(jù)類型):
typedef struct{
Flag;//總體
M1[8];//代碼前 M 指令
M2[8];//代碼后 M 指令
ToolNUM;//刀偏
Tooloffset;//刀號(hào)
S;//主軸速度,
link;//D0:在此作同標(biāo)志 //D1:表示換刀
指令段的后段是G0//D2:多段螺紋標(biāo)志
MainG;//運(yùn)動(dòng)類G代碼指令
bRefAndOft;//偏置值
bSwitchG;//G指令模態(tài)值
bAxisValidData;//軸映像
bAssociatedData;//軸關(guān)聯(lián)
AxisInc[AxisNum];//軸增量
FeedVelo;//0.5轉(zhuǎn)進(jìn)給F1:分進(jìn)給F2:
EndVelo;//本段結(jié)束速度
Dly;//延時(shí)時(shí)間
II;//I(圓弧);I(螺紋長(zhǎng)軸退尾)
JK;//J(圓弧);K(螺紋短軸退尾)
反沖質(zhì)子磁譜儀的性能模擬結(jié)合了中子探測(cè)和反沖質(zhì)子的動(dòng)量分析等物理過(guò)程。首先,根據(jù)中子與反沖聚乙烯靶相互作用機(jī)理,采用蒙特卡羅方法模擬不同能量的中子在聚乙烯靶中的輸運(yùn)過(guò)程,獲得反沖質(zhì)子的能量和角分布;其次,以束流光學(xué)計(jì)算為基礎(chǔ),模擬反沖質(zhì)子在磁分析單元中的色散、偏轉(zhuǎn)和聚焦過(guò)程;最后,獲得反沖質(zhì)子在焦平面上的空間分布。模擬計(jì)算主要分為5個(gè)過(guò)程:
KInc;//K(圓弧);
RNn;//R(半徑);Nn多頭螺紋偏移角/L;
NextL;//下一段螺距標(biāo)志
AngleInc;//起始角/下段螺螺紋短軸退尾K
SegAdd;//段地址
INT32SBusy;//忙標(biāo)志
}InterruptPara;
DSP功能區(qū)主要有4個(gè)周期性任務(wù)在DSP上面運(yùn)行:插補(bǔ)模塊任務(wù),位控模塊任務(wù),PLC模塊任務(wù)和數(shù)據(jù)監(jiān)控管理模塊。各級(jí)任務(wù)屬性如表1所示。
表1 DSP任務(wù)屬性
圖4 任務(wù)調(diào)度策略
為保證任務(wù)調(diào)度的強(qiáng)實(shí)時(shí)性,使用中斷服務(wù)程序?qū)崿F(xiàn)任務(wù)調(diào)度策略。C6713有14個(gè)中斷,分成3種類型:復(fù)位中斷(RESET-最高級(jí)中斷)、不可屏蔽中斷 (NMI-第二級(jí))、可屏蔽中斷(INT4-INT15-第三級(jí))[8]。C6713響應(yīng)一個(gè)可屏蔽中斷(INT4-INT15)的中斷請(qǐng)求時(shí),進(jìn)入對(duì)應(yīng)的中斷服務(wù)程序,這個(gè)中斷服務(wù)程序可以設(shè)置成可重入的。根據(jù)該DSP的這個(gè)特點(diǎn),在可屏蔽中斷 (INT4-INT15)中斷服務(wù)程序內(nèi)部采用中斷嵌套和軟件控制的方法實(shí)現(xiàn)搶占式優(yōu)先級(jí)多任務(wù)調(diào)度策略。如下設(shè)計(jì)實(shí)現(xiàn)N個(gè)實(shí)時(shí)任務(wù)的優(yōu)先級(jí)調(diào)度。如圖4所示,任務(wù)優(yōu)先級(jí)0~N從高到低,每級(jí)每個(gè)任務(wù)有自己的中斷調(diào)度時(shí)鐘周期,設(shè)置每0.25 ms的定時(shí)中斷;當(dāng)進(jìn)入定時(shí)中斷服務(wù)程序后,保存相關(guān)的寄存器,并開(kāi)中斷;按優(yōu)先級(jí)從高到低檢查任務(wù)是否在執(zhí)行或可被調(diào)度,如果沒(méi)有,執(zhí)行之,否則檢查或調(diào)度下一優(yōu)先級(jí)任務(wù);當(dāng)新的中斷出現(xiàn)后,該層中斷服務(wù)程序會(huì)保存現(xiàn)場(chǎng),執(zhí)行新層的中斷服務(wù)程序 (即代碼重入),執(zhí)行完新層同層高優(yōu)先級(jí)任務(wù)后調(diào)度低優(yōu)先級(jí)任務(wù),最后退出該次中斷,回到以前保護(hù)的現(xiàn)場(chǎng),繼續(xù)執(zhí)行被中斷的上一層次中斷服務(wù)程序。這樣可以實(shí)現(xiàn)高優(yōu)先級(jí)的任務(wù),可以在新的中斷層次中中斷上一層次低優(yōu)先級(jí)的任務(wù),同時(shí)保證當(dāng)任務(wù)對(duì)應(yīng)的時(shí)鐘周期到來(lái)時(shí)被調(diào)度一次,從而達(dá)到實(shí)現(xiàn)搶占式優(yōu)先級(jí)多任務(wù)調(diào)度策略的目的。
DSP實(shí)時(shí)任務(wù)間的通信主要通過(guò)全局變量和共享內(nèi)存來(lái)完成通信交互;任務(wù)之間的同步與互斥使用全局變量,數(shù)據(jù)傳遞通信使用共享內(nèi)存,通信機(jī)制如圖5所示。
圖5 DSP實(shí)時(shí)任務(wù)間的通信
該系統(tǒng)芯片間的通訊主要有ARM與DSP,F(xiàn)PGA與DSP和ARM與MCU之間通訊,ARM與MCU模塊通過(guò)RS485串口通訊,F(xiàn)PGA與DSP通過(guò)共享內(nèi)存進(jìn)行通訊。文中主要介紹ARM和DSP之間的通訊。
該系統(tǒng)主要用主機(jī)接口HPI(The Host-port Interface)實(shí)現(xiàn)ARM與DSP兩個(gè)處理器主從式通信。HPI是TMS320C6713芯片接口部件,是一種高效的并行口。對(duì)于主處理器ARM來(lái)說(shuō),DSP的HPI接口對(duì)應(yīng)16位異步存儲(chǔ)接口的I/O設(shè)備。ARM通過(guò)尋址HPI接口中的數(shù)據(jù)寄存器 (HPID)、地址寄存器(HPIA)、控制寄存器 (HPIC)訪問(wèn)DSP的整個(gè)存儲(chǔ)空間,與DSP進(jìn)行握手通信。寄存器是通過(guò)HPI接口的HCNTL0、HCNTL1選擇。HHWIL決定讀取的是第1個(gè)或第2個(gè)半字;HPIC的HWOB決定哪個(gè)半字是高半字還是低半字。S3C2440A的nGCS2接到HPI的片選信號(hào) HCS,而 I/O接口 BANK2的地址為0x10000000~0x18000000。LADDR4與 HPI上的 HR/W相連接,LADDR4高低電平對(duì)于HPI是讀狀態(tài)/寫(xiě)狀態(tài)。S3C2440的中斷 7與 HPI的 HINT相連。HRDY信號(hào)經(jīng)過(guò)反相器后與nWAIT相連接,這樣DSP沒(méi)有準(zhǔn)備好數(shù)據(jù)的時(shí)候可以延長(zhǎng)ARM的讀寫(xiě)周期,使ARM處于等待DSP就緒的狀態(tài)。
ARM采用Linux操作系統(tǒng)。Linux字符驅(qū)動(dòng)主要是填寫(xiě)file_operation結(jié)構(gòu)體,該結(jié)構(gòu)的成員函數(shù)包括open()、write()、read()、close()等[9],因此對(duì) HPI的操作就是數(shù)據(jù)讀寫(xiě)的操作。
hpi_read函數(shù)部分代碼如下:
基于ARM+DSP+FPGA+MCU嵌入式數(shù)控系統(tǒng),硬件方面減少了系統(tǒng)的外圍器件,具有結(jié)構(gòu)輕便、性價(jià)比高、穩(wěn)定性好等優(yōu)點(diǎn)。軟件設(shè)計(jì)方面,該系統(tǒng)具有高性能的高速控制,系統(tǒng)功能強(qiáng)大,軟硬件數(shù)據(jù)流結(jié)構(gòu)清晰,減少不必要的數(shù)據(jù)流交互。該系統(tǒng)能夠滿足高速加工對(duì)CNC控制器提出的新要求。
【1】劉艷霞,李淑芬.基于ARM的嵌入式數(shù)控系統(tǒng)[J].微計(jì)算機(jī)信息,2006,22(35):90 -91.
【2】朱曉潔,舒志兵.基于ARM+FPGA的嵌入式數(shù)控系統(tǒng)[J].機(jī)床與液壓,2008,36(7):311 -313.
【3】王田苗,陳友東,孫愷,等.基于UC/OS-2嵌入式數(shù)控系統(tǒng)研制[J].北京航空航天大學(xué)學(xué)報(bào),2006,32(4):471 -480.
【4】周祖德,龍毅宏,劉泉,等.嵌入式網(wǎng)絡(luò)數(shù)控系統(tǒng)[J].機(jī)械工程學(xué)報(bào),2007,5(5):1 -7.
【5】ZHOU Z D,YIN Y,LONG Y H,et al.Embedded NC System Based on ARM and DSP[C]//Proceedings of the 2nd IEEE/ASME International Conference on Mechatronic and Embedded Systems and Applications,2006:1 -3.
【6】REN Qiang,JIANG Tingbiao.Research on Embedded Networked Numerical Control System Based on ARM and DSP[C]//11th IEEE International Conference on Communication Technology,2008:631 -633.
【7】王應(yīng)莉.基于ARM+DSP構(gòu)架的視頻處理系統(tǒng)[D].成都:電子科技大學(xué),2004.
【8】TMS320C6713,TMS320C6713B Floating-Point Digital Signal Processors[R].Texas Instruments Inc.,2004.
【9】CORBET Jonathan,RUBIN Alessandro,KROAH-HARTMAN Greeg.Linux設(shè)備驅(qū)動(dòng)程序[M].3版.魏永明,等,譯.北京:中國(guó)電力出版社,2006.