文杰棱 韓震宇 王詠麒 田海林
(四川大學(xué)制造科學(xué)與工程學(xué)院,四川 成都610065)
桌面數(shù)控設(shè)備對(duì)小尺寸零件加工在成本、功耗和占地面積等方面有著巨大優(yōu)勢(shì)。桌面數(shù)控設(shè)備大致有3種實(shí)現(xiàn)方案:第一種為微型機(jī)床搭配傳統(tǒng)數(shù)控系統(tǒng),但是桌面數(shù)控設(shè)備對(duì)成本敏感;第二種為基于PC的數(shù)控系統(tǒng)軟件及其相應(yīng)接口卡控制微型機(jī)床[1],由于軟件設(shè)置復(fù)雜,很難針對(duì)不同需求進(jìn)行修改,結(jié)果表現(xiàn)為精度差、穩(wěn)定性不高;第三種方案為在一定硬件平臺(tái)下,自行完成數(shù)控系統(tǒng)設(shè)計(jì)。
方案三中,根據(jù)硬件平臺(tái)的不同,可分為基于PC[2-3]和基于嵌入式芯片[4-7]?;赑C的數(shù)控系統(tǒng)可簡(jiǎn)化在任務(wù)調(diào)度和通信等方面的工作,實(shí)現(xiàn)仿真加工、軌跡顯示等復(fù)雜的人機(jī)交互功能。但是引入PC不僅增大體積和成本,同時(shí)由于通用操作系統(tǒng)不滿足數(shù)控系統(tǒng)實(shí)時(shí)性要求,需要增加實(shí)時(shí)性內(nèi)核補(bǔ)丁或者使用硬件實(shí)現(xiàn)數(shù)控系統(tǒng)中高實(shí)時(shí)性任務(wù)[8-9]。嵌入式芯片在單個(gè)芯片上高度集成了CPU、RAM、ROM以及豐富的外設(shè),在體積、功耗和成本上相對(duì)與PC有巨大的優(yōu)勢(shì)。STM32是基于Cortex?-M內(nèi)核開發(fā)的一系列32位微處理器,主頻從32 MHz到480 MHz,可以平衡嵌入式數(shù)控系統(tǒng)對(duì)CPU實(shí)時(shí)計(jì)算能力和成本的要求。因此本設(shè)計(jì)采用STM32完成數(shù)控系統(tǒng)設(shè)計(jì),使用FPGA輔助STM32控制具體執(zhí)行器,并設(shè)計(jì)桌面車床[10]進(jìn)行驗(yàn)證。
傳統(tǒng)數(shù)控系統(tǒng)模式邊界模糊,易使初學(xué)者混淆。對(duì)這些模式的功能及其實(shí)現(xiàn)方式分析可概括為兩種模式:手動(dòng)加工和自動(dòng)加工。
合理的功能分類有助于理清任務(wù)內(nèi)容,降低使用門檻。在具體實(shí)現(xiàn)中,兩模式存在實(shí)現(xiàn)方式的重疊,部分硬件和軟件可以共用。依據(jù)客戶機(jī)-服務(wù)器設(shè)計(jì)模式(Client-Server(C/S)),將數(shù)控車床控制系統(tǒng)劃分為客戶機(jī)和服務(wù)器兩部分。客戶機(jī)主要完成人機(jī)交互類工作,服務(wù)器主要完成參數(shù)修改、動(dòng)作執(zhí)行以及數(shù)控系統(tǒng)的核心功能,G代碼執(zhí)行。兩部分主要通過自定的不對(duì)稱通信協(xié)議實(shí)現(xiàn)服務(wù)器接收?qǐng)?zhí)行客戶機(jī)指令,并返回執(zhí)行結(jié)果,協(xié)同實(shí)現(xiàn)兩種加工模式。
硬件是數(shù)控系統(tǒng)的基礎(chǔ),硬件設(shè)計(jì)要滿足數(shù)控系統(tǒng)在數(shù)據(jù)處理能力、多軸聯(lián)動(dòng)同步性、存儲(chǔ)能力和抗電磁干擾等方面的要求。限于篇幅,這里不對(duì)具體電路原理圖展開,僅從需求角度對(duì)數(shù)控系統(tǒng)硬件部分進(jìn)行分析設(shè)計(jì)。
客戶機(jī)部分的主要任務(wù)是人機(jī)交互,而屏幕顯示和虛擬按鍵是人機(jī)交互的主要設(shè)備。為了降低工作量,提高開發(fā)效率,許多嵌入式設(shè)計(jì)采用串口屏實(shí)現(xiàn)人機(jī)交互[4,11-12],但是設(shè)計(jì)受限且串口屏面向一般工業(yè)應(yīng)用場(chǎng)景,不滿足坐標(biāo)顯示等高實(shí)時(shí)要求。因此在客戶機(jī)硬件設(shè)計(jì)中采用STM32F429+觸摸屏自行進(jìn)行人機(jī)交互開發(fā)。同時(shí)充分利用STM32豐富的外設(shè),增加USB、SD接口用于U盤、鍵盤以及SD卡等外部G代碼輸入;使用Flash實(shí)現(xiàn)G代碼板內(nèi)存儲(chǔ);添加32MB的SDRAM拓展STM32F429內(nèi)存,同時(shí)作為顯示屏顯存;拓展手輪接口用于外接電子手輪;預(yù)留以太網(wǎng)、RS485接口增加系統(tǒng)開放性以及功能可拓展性。
由于服務(wù)器承擔(dān)自動(dòng)加工中絕大部分任務(wù),所以服務(wù)器硬件需要滿足數(shù)控系統(tǒng)實(shí)時(shí)性、同步性以及穩(wěn)定性要求。采用主頻高達(dá)216 MHz、支持浮點(diǎn)運(yùn)算的STM32F767以達(dá)到數(shù)控系統(tǒng)的實(shí)時(shí)性要求。采用EP4CE15F484同步發(fā)送各軸運(yùn)動(dòng)指令到電機(jī)驅(qū)動(dòng)器。添加SDRAM拓展內(nèi)存,提高最大G代碼行數(shù)避免系統(tǒng)死機(jī);使用FMC進(jìn)行STM32和FPGA的主從通信;由于FPGA直接與執(zhí)行器和傳感器連接,增加光耦隔離避免外部信號(hào)干擾等。
雖然通過兩個(gè)MCU完成客戶機(jī)和服務(wù)器任務(wù),但是考慮到體積和安裝,將兩部分集成在同一塊PCB電路中,共用必需的電源、時(shí)鐘、急停、指示燈等模塊。數(shù)控系統(tǒng)整體的硬件架構(gòu)如圖1所示:
軟件設(shè)計(jì)主要對(duì)客戶機(jī)功能、服務(wù)器任務(wù)進(jìn)行分析設(shè)計(jì)。限于篇幅,且有許多文獻(xiàn)[13-16]對(duì)譯碼、刀補(bǔ)和插補(bǔ)等進(jìn)行介紹,這里不對(duì)所有子功能模塊詳細(xì)闡述。
emWin是針對(duì)嵌入式平臺(tái)開發(fā)的圖形軟件庫。使用emWin控件可以如同搭積木一般完成界面編輯,再由STM32的LTDC控制器驅(qū)動(dòng)顯示屏實(shí)現(xiàn)界面顯示。emWin支持觸摸屏,周期性檢測(cè)觸摸交互,并獲取屏幕坐標(biāo)系下的點(diǎn)擊位置坐標(biāo),通過點(diǎn)擊位置與界面控件位置比較判斷是否該控件被操作,在控件回調(diào)函數(shù)中編寫響應(yīng)函數(shù)實(shí)現(xiàn)虛擬按鈕功能。通過對(duì)不同按鈕類控件編碼,在按鈕控件回調(diào)函數(shù)中將對(duì)應(yīng)編碼寫入內(nèi)存即可完成標(biāo)準(zhǔn)G代碼或者其他類型數(shù)據(jù)的虛擬按鍵輸入。傳統(tǒng)數(shù)控車床支持使用電子手輪,相對(duì)于按鈕,電子手輪可以實(shí)現(xiàn)靈活微進(jìn)給,根據(jù)搖動(dòng)速度控制電機(jī)進(jìn)給速度,為對(duì)刀等操作提供極大便利。FatFs是針對(duì)嵌入式系統(tǒng)設(shè)計(jì)的文件系統(tǒng)模塊,F(xiàn)atFs根據(jù)扇區(qū)信息完成數(shù)據(jù)讀寫,并做必要的數(shù)據(jù)保護(hù),對(duì)不同的存儲(chǔ)介質(zhì)提供泛型操作??蛻魴C(jī)與服務(wù)器之間使用4Mbps串口通信,以滿足大數(shù)據(jù)指令響應(yīng)的實(shí)時(shí)性。服務(wù)器返回的結(jié)果類型較多,串口接收中斷解析可能會(huì)導(dǎo)致客戶機(jī)系統(tǒng)有較大的時(shí)間抖動(dòng),所以需要將除顯示實(shí)時(shí)性要求高的(如坐標(biāo))結(jié)果使用FIFO緩沖區(qū)暫時(shí)存儲(chǔ),待其他任務(wù)完成后再對(duì)結(jié)果解析。觸摸檢測(cè)、屏幕顯示和結(jié)果解析在宏觀上是并行任務(wù),因此借用嵌入式操作系統(tǒng)μC/OS-Ⅲ進(jìn)行任務(wù)調(diào)度,同時(shí)emWin和FatFs亦可以使用操作系統(tǒng)提供的信號(hào)量等共享資源保護(hù)機(jī)制進(jìn)行資源保護(hù)。
限于服務(wù)器內(nèi)存大小需要將譯碼、刀補(bǔ)和插補(bǔ)等模塊并行執(zhí)行以降低對(duì)緩沖區(qū)需求,因此帶來任務(wù)調(diào)度、共享資源管理問題。隨著硬件的發(fā)展,MCU片上RAM大小增加,而且可以外擴(kuò)RAM增加系統(tǒng)內(nèi)存,因此許多并行任務(wù)可以轉(zhuǎn)為串行執(zhí)行,從而簡(jiǎn)化設(shè)計(jì),降低系統(tǒng)耦合,增加系統(tǒng)魯棒性。
由于服務(wù)器被動(dòng)響應(yīng)客戶端指令,所以在服務(wù)器空暇時(shí),應(yīng)該不停查詢是否存在指令通過數(shù)據(jù)通信送達(dá),根據(jù)指令內(nèi)容通過函數(shù)指針調(diào)用執(zhí)行參數(shù)修改、動(dòng)作執(zhí)行、G代碼執(zhí)行等服務(wù)類任務(wù)。參數(shù)修改任務(wù)不僅提供對(duì)刀數(shù)據(jù)等自動(dòng)加工時(shí)必需參數(shù)修改,也可以修改電機(jī)參數(shù)(最大速度、加速度等)以及機(jī)床參數(shù)(最大行程、前/后置刀架、螺距等),提高數(shù)控系統(tǒng)柔性。動(dòng)作指令發(fā)送的先后必然破壞聯(lián)動(dòng)的同步性,所以動(dòng)作執(zhí)行任務(wù)僅需考慮同一時(shí)間下單軸動(dòng)作,即對(duì)應(yīng)手動(dòng)加工模式。
G代碼任務(wù)包括譯碼、刀補(bǔ)、速度規(guī)劃、G代碼解釋等子任務(wù)[16]。通過FatFs讀入系統(tǒng)的文本文件是以字符數(shù)組保存的,如果在G代碼解釋時(shí)再尋找指令,無法滿足加工速度提出的實(shí)時(shí)性要求。因此,譯碼需要預(yù)先從字符數(shù)組中提取并檢查指令及其數(shù)據(jù)。刀具長(zhǎng)度補(bǔ)償是指當(dāng)?shù)毒唛L(zhǎng)度因?yàn)閾Q刀、磨損導(dǎo)致切削不到工件時(shí),補(bǔ)償這部分缺失而不需要重新對(duì)刀,節(jié)省時(shí)間;速度控制主要指加減速控制,也有針對(duì)連續(xù)微小線段進(jìn)行速度前瞻控制[17],G代碼中描述的軌跡,都是從零速度開始,零速度結(jié)束。根據(jù)牛頓定律,必然存在加速和減速過程,對(duì)于步進(jìn)電機(jī),在啟動(dòng)頻率之下,加工精度要求不高,可以不考慮加減速。頻繁的啟停影響加工效率,速度前瞻控制引入轉(zhuǎn)接速度避免電機(jī)啟停。G代碼解釋將G代碼轉(zhuǎn)換為具體指令驅(qū)動(dòng)執(zhí)行器運(yùn)動(dòng)。對(duì)于簡(jiǎn)單執(zhí)行器,如冷卻液、照明等,只需控制FPGA產(chǎn)生相應(yīng)的高低電平;對(duì)于單個(gè)復(fù)雜執(zhí)行器,如直流無刷電機(jī),控制FPGA產(chǎn)生相應(yīng)的使能、方向電平信號(hào)以及速度脈沖信號(hào)序列發(fā)送給直流無刷驅(qū)動(dòng)器;對(duì)于多個(gè)復(fù)雜執(zhí)行器聯(lián)動(dòng),使用逐點(diǎn)比較插補(bǔ)分解出各軸位移,再控制FPGA產(chǎn)生相應(yīng)的方向電平信號(hào)以及包含位移速度信息的脈沖序列發(fā)送給步進(jìn)電機(jī)驅(qū)動(dòng)器。
急停用于危急情況下機(jī)床的緊急停止,如果急停僅僅給主回路斷電,存在急停復(fù)位后電機(jī)繼續(xù)運(yùn)動(dòng)的可能性,所以急停信號(hào)同時(shí)需要提供給數(shù)控系統(tǒng),用于控制停止電機(jī),對(duì)于主軸這種大慣量部分,必要時(shí)適當(dāng)反轉(zhuǎn)電磁力矩或者增加機(jī)械抱死裝置。綜上所述,服務(wù)器部分的參考模型如圖2所示。
客戶機(jī)服務(wù)器模式下的系統(tǒng)本質(zhì)上是主從系統(tǒng),這決定了相互之間通信協(xié)議具有不對(duì)稱性??蛻魴C(jī)需要按照服務(wù)器協(xié)議調(diào)用服務(wù)器提供的服務(wù),由于G代碼數(shù)據(jù)具有不確定性,如果服務(wù)器采用不定長(zhǎng)方式接收數(shù)據(jù),時(shí)間抖動(dòng)較大,為了實(shí)現(xiàn)定長(zhǎng)接收需要客戶機(jī)先發(fā)送一個(gè)指令告訴服務(wù)器G代碼長(zhǎng)度,然后在下一個(gè)指令發(fā)送對(duì)應(yīng)長(zhǎng)度G代碼。
為了驗(yàn)證修改本嵌入式數(shù)控系統(tǒng),分別采用了兩臺(tái)機(jī)床,其一為南京翼馬ET100-ZT數(shù)控裝調(diào)實(shí)訓(xùn)車床,選配電機(jī)和刀具后完成切削實(shí)驗(yàn);其二為自設(shè)計(jì)機(jī)床。使用如圖3所示零件圖進(jìn)行車削實(shí)驗(yàn)。
加工成果圖如圖4、圖5所示,加工零件數(shù)據(jù)如表1所示。
表1 實(shí)驗(yàn)數(shù)據(jù) mm
自設(shè)計(jì)機(jī)床X軸剛度較差,導(dǎo)致零件在X軸方向的尺寸精度相對(duì)較差且加工表面質(zhì)量不如ET100-ZT。
傳統(tǒng)數(shù)控系統(tǒng)使用PLC完成大部分輸入輸出信號(hào)處理,如數(shù)控面板編譯、限位信號(hào)采集以及主軸換刀控制等,本系統(tǒng)通過FPGA和觸摸屏替代PLC完成相關(guān)工作,使用STM32F4驅(qū)動(dòng)觸摸屏完成人機(jī)交互,使用STM32F7解釋執(zhí)行操作員指令。減少在PLC、數(shù)控面板以及PC等部分的開銷,同時(shí)在A4大小的PCB板中集成所有硬件,滿足桌面機(jī)床體積要求。實(shí)驗(yàn)證明本嵌入式數(shù)控系統(tǒng)滿足一般自動(dòng)化加工要求,達(dá)到桌面數(shù)控車床在成本和體積上的要求。但是,由于在設(shè)計(jì)階段多方取舍,本數(shù)控系統(tǒng)必然存在許多不足:采用基于Cortex .-M內(nèi)核的MCU犧牲了部分人機(jī)交互功能,如軌跡顯示、仿真加工;同時(shí)在客戶機(jī)端采集電子手輪脈沖必然存在電機(jī)執(zhí)行滯后于手輪一個(gè)采集周期問題,這可能帶來安全隱患,將在后續(xù)設(shè)計(jì)完善。