宋珂煒 田海林 方 輝 文杰棱
(四川大學制造科學與工程學院,四川成都610065)
隨著制造技術(shù)的發(fā)展和制造行業(yè)需求的變化,高精度微小尺寸零件的需求越來越大。實際生產(chǎn)中使用傳統(tǒng)的精密加工設備制造精密微小尺寸零件時,無法克服其功耗大,成本高,效率低,占地面積大等缺陷。為了解決傳統(tǒng)數(shù)控機床加工微小尺寸零件所帶來的問題,微細切削加工技術(shù)及其微小化機床的研究已經(jīng)成為了制造加工領域的前沿和熱點研究問題[1]。目前,對于微型數(shù)控機床的研究大多局限于結(jié)構(gòu)設計[2~4],而其控制系統(tǒng)廣泛沿用傳統(tǒng)數(shù)控機床所用的數(shù)控系統(tǒng),即基于PC(personal computer,PC)的數(shù)控系統(tǒng)。
目前,基于PC的開放式數(shù)控系統(tǒng)是數(shù)控技術(shù)發(fā)展的主流方向,由于其利用了通用計算機自身豐富的軟、硬件資源,強大的處理能力,以及自帶的成熟的外部通訊接口,極大地簡化了數(shù)控系統(tǒng)的設計周期和設計難度,提高了數(shù)控系統(tǒng)的數(shù)據(jù)處理能力和開放性[5~6]。
盡管如此,對于在微型數(shù)控機床上的應用,基于PC的數(shù)控系統(tǒng)架構(gòu)依然存在很大的局限性和不足,可以總結(jié)為:
(1)由于通用計算機本身開放性的不足,使得該體系架構(gòu)無法依據(jù)機床自身的特點而進行升級和配合[7]。
(2)基于PC的數(shù)控系統(tǒng)多利用通用的桌面操作系統(tǒng),即使對其進行必要的升級和擴展,其實時性、穩(wěn)定性和可靠性相比嵌入式的操作系統(tǒng)依然不足[8]。
(3)基于PC的數(shù)控系統(tǒng)要求機床配套相應的工業(yè)控制計算機,增大了成本,并不適用于微型結(jié)構(gòu)的數(shù)控機床,且占地面積相對較大,無法體現(xiàn)微型數(shù)控機床結(jié)構(gòu)優(yōu)勢和應用優(yōu)勢。
近年來,以ARM、FPGA、DSP等為代表的新一代嵌入式微處理芯片憑借其小體積、低功耗、高主頻、較強的處理能力以及片上外設豐富等優(yōu)點,實現(xiàn)了嵌入式片上高度集成;與此同時,嵌入式操作系統(tǒng)的時序性能、系統(tǒng)管理能力、實時性計算與控制能力,以及多線程多任務管理功能不斷升級;這些使得嵌入式數(shù)控系統(tǒng)不僅具有了運算速度快,處理數(shù)據(jù)寬度較大,運行效率高,可好性好,穩(wěn)定性高的特點,還保留了較高的開放性[9~10]。
基于上述的分析,為了彌補基于PC數(shù)控系統(tǒng)的不足,更好地適應微型數(shù)控機床的結(jié)構(gòu)特點和控制需求,并探索用于微型機床數(shù)控系統(tǒng)的軟硬件架構(gòu),本文將設計基于STM32+FPGA的微型車床嵌入式數(shù)控系統(tǒng),并通過微型數(shù)控車床機械平臺進行實驗和驗證。
本嵌入式數(shù)控系統(tǒng)采用STM32+FPGA雙核心的硬件架構(gòu)同時搭載多任務實時嵌入式操作系統(tǒng)(embedded operating system,EOS)UC/OS-III(micro C OS three,UC/OS-III)軟件核心,實現(xiàn)整個數(shù)控系統(tǒng)的數(shù)據(jù)處理,數(shù)據(jù)管理,數(shù)據(jù)傳輸以及相關的控制功能?;赟TM32+FPGA嵌入式數(shù)控系統(tǒng)結(jié)構(gòu)如圖1所示。
意大利意法半導體公司生產(chǎn)的STM32系列微控制器基于專為要求高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex-M內(nèi)核,具有豐富的外設,一流的數(shù)據(jù)處理能力和管理能力[11]。
本系統(tǒng)選用該系列最新STM32F767微處理器,該處理器具有帶FPU的ARM 32位Cortex-M7 CPU、自適應實時加速器和L1高速緩存。除了內(nèi)核的性能大幅度升級外,其他外設性能也有很大的提高。
FPGA選用Altera公司設計制造的Cyclone系列的EP4CE15F23C8N器件,該芯片建立在一個優(yōu)化的低功耗工藝基礎之上,擁有超過150 K的邏輯單元,高達6.3 MB的嵌入式存儲器。與此同時,該器件還具有484個通用I/O,8個鎖相環(huán)(PLL),支持高達200 MHz的DDR2 SDRAM接口和豐富的常用工業(yè)協(xié)議[12]。
在實際運行中,STM32將通過FATFS文件操作系統(tǒng)讀取儲存在SD卡或U盤中的G代碼文件,通過G代碼譯碼,刀具半徑補償以及插補等模塊處理后生產(chǎn)16位的控制指令,通過 FSMC總線傳輸給 FPGA。FPGA通過指令解釋模塊對指令進行分類和解釋,最后發(fā)送給不同的指令執(zhí)行模塊產(chǎn)生相應的電信號驅(qū)動機床工作。
考慮到整個系統(tǒng)的研發(fā)周期和成本,人機交互的平臺將采用工業(yè)串口屏通過RS485接口與STM32進行數(shù)據(jù)交互,并通過FATFS實時的接收和管理輸入的數(shù)據(jù)實現(xiàn)G代碼的在線輸入、修改和儲存。
除此之外,系統(tǒng)中預留了USB2.0總線模塊便于多電動機控制的擴展,以及 Ethernet接口從而便于在工業(yè)現(xiàn)場與其他設備的通訊和連接,增加了硬件的開放性和可擴展性。而UART串行接口,將有助于設計前期的調(diào)試和糾錯。
本嵌入式數(shù)控系統(tǒng),將傳統(tǒng)的“上位機”與“下位機 "在硬件結(jié)構(gòu)上合二為一,集成于同一硬件主控板卡之上,故片上各功能系統(tǒng)硬件電路之間的配合對于整個控制系統(tǒng)的性能影響十分的關鍵。基于STM32+FPGA的嵌入式控制系統(tǒng)的硬件電路主要包括電源電路、時鐘電路、STM32核心電路、FPGA核心電路、FSMC通訊電路、全數(shù)字步進電動機驅(qū)動電路、直流無刷控制電路以及相關的外部接口電路和工控領域常用的通訊接口。這其中,由于STM32和FPGA的核心電路均可參照廠商推薦電路設計,這里由于篇幅關系不再詳述。
基于STM32+FPGA的雙核心數(shù)控硬件架構(gòu)當中,需要多種電壓幅值的數(shù)字或模擬電源供電。其中,STM32主控芯片的工作電壓為3.3 V的數(shù)字電壓,參考電平為2.5 V的模擬電壓基準;FPGA的I/O電壓為3.3 V數(shù)字電壓,而FPGA的內(nèi)核電壓為1.2 V的數(shù)字電壓,與此同時FPGA內(nèi)部的鎖相環(huán)功能模塊還需要2.5 V模擬電壓進行供電;除了雙核心的供電需求外,主控板上還有RAM、USB2.0總線、USART串口通訊模塊等硬件系統(tǒng)需要不同幅值的數(shù)字電源或者模擬電源進行供給。高質(zhì)量,穩(wěn)定,精準的電源對于整個雙核心硬件架構(gòu)的性能至關重要,基于上述的分析,該數(shù)控系統(tǒng)硬件電源模塊的設計將引進電源監(jiān)控模塊,從而保證整個硬件電路電源的穩(wěn)定。電源電路系統(tǒng)的設計思想和結(jié)構(gòu)如圖2所示,整個電源系統(tǒng)設計有兩個外部電源接口,在實際使用時,24 V的外部直流電源經(jīng)過LM2576-5電源芯片輸出5 V電源,再分別通過MP1584電源芯片,RT9166電源芯片,RT8008電源芯片和TL431A電壓基準芯片得到STM32和FPGA需要的3.3 V數(shù)字電源,2.5 V模擬電源,1.2 V數(shù)字電源以及2.5 V的參考電平。同時,5 V和24 V的電源也可以對電動機驅(qū)動電路等其他外設進行供電。在進行硬件調(diào)試時,整個硬件系統(tǒng)可以通過電源選擇模塊選擇USART串口的5 V電源進行供電,同時整個系統(tǒng)的電流都將進行采樣檢測,從而保證整個系統(tǒng)平穩(wěn)運行。
時鐘電路是數(shù)字處理電路的心臟。精準,穩(wěn)定的時鐘信號對于STM32和FPGA的處理性能十分的重要。由于本數(shù)控硬件主控板上面搭載了多塊需要時鐘信號驅(qū)動的集成芯片,考慮到晶振的負載能力,本主控板設計了50 M和24 M兩個獨立的有源晶振時鐘,和一個25 m的無源晶振,如圖3所示。有源晶振具有很好的抗干擾性,從而保證stm32與FPGA運行的可靠性,而在實際工作時STM32可以通過倍頻配置成243 M頻率的時鐘,F(xiàn)PGA則可以通過鎖相環(huán)倍頻成180 M頻率的時鐘信號,極大地提高系統(tǒng)的運行速度和準確性。
在AltiumDesigner軟件當中設計完成原理圖后,通過阻抗匹配,布板,布線,最終完成主控板卡的制作。主控板的實拍圖以及各功能模塊示意如圖4所示。
UC/OS-III嵌入式操作系統(tǒng)基于ANSI-C語言編寫,是一個可升級,可固化,基于優(yōu)先級的實時內(nèi)核。它在資源管理,多任務同步,任務間的通信等方面的表現(xiàn)卓越,被設計用于32位處理器,但是也能在16位或者8位處理器中很好地運行,除此之外移植整個操作系統(tǒng)所需內(nèi)存較小,核心代碼和API接口函數(shù)編寫風格清晰,具有較好的可操作性[13]。UC/OS-III所提供的諸如運行時間測量,直接發(fā)送信號或消息到任務、多任務同時等待多個內(nèi)核對象等功能是其他嵌入式實時內(nèi)核所不具備的,因此更加適合作為數(shù)控系統(tǒng)的運行內(nèi)核[14]。本設計將利用該實時內(nèi)核的任務管理,多任務調(diào)度,中斷管理,時間管理和資源管理等功能進行嵌入式數(shù)控系統(tǒng)的軟件研究與設計。
整個嵌入式數(shù)控系統(tǒng),可以分為4個拓撲層,位于核心的即為UC/OS-III軟件核心,它負責進行整個系統(tǒng)的任務管理,時間管理,各個任務之間的調(diào)度,數(shù)據(jù)管理以及中斷管理。位于應用層的為實現(xiàn)數(shù)控功能的應用程序,通過將這些應用程序定義為操作系統(tǒng)中的任務,實現(xiàn)與UC/OS-III操作系統(tǒng)的鏈接,而接口即為UC/OS-III操作系統(tǒng)當中所提供的應用接口函數(shù)(API)。位于軟件驅(qū)動層的為各個硬件的底層驅(qū)動代碼,通過這個拓撲結(jié)構(gòu)實現(xiàn)硬件與軟件的結(jié)合。圖5為嵌入式數(shù)控系統(tǒng)的軟件體系結(jié)構(gòu)示意圖。
3.1.1 譯碼模塊軟件設計
譯碼模塊的數(shù)據(jù)流程圖如圖6所示,G代碼文件讀入緩存區(qū)后,經(jīng)過預處理(大寫化處理,去除空格、多余字符和注釋),詞法檢查,語義分析與G代碼解釋后生成中間代碼并存入緩沖區(qū)。每一行G代碼經(jīng)譯碼模塊處理后的結(jié)果將是包含本行所有加工信息的數(shù)據(jù)結(jié)構(gòu)體。其中,為了保證后續(xù)數(shù)據(jù)處理流程的方便和加工時序,將每一行G代碼的行號作為每一個數(shù)據(jù)結(jié)構(gòu)體特有的識別編號。
3.1.2 刀補模塊軟件設計
本設計采用C刀補[15],在標準G代碼中,G41為刀尖半徑左補償,G42為刀尖半徑右補償,而G40為取消刀尖半徑補償。在該應用模塊中,設置6位刀補狀態(tài)位,其中,第0位為刀補使能位,用于判斷該行G代碼是否需要進行刀補;第1位表示刀補方式,0為左刀補,1為右刀補;而剩余的高四位位表示刀具號。在處理數(shù)據(jù)時,通過判斷刀補信息狀態(tài)位調(diào)用刀補建立、刀補進行、刀補撤銷,3個子程序進行處理。刀補模塊應用軟件路程圖如圖7所示。刀補處理完后的數(shù)據(jù)結(jié)構(gòu)與譯碼完成后結(jié)構(gòu)相同,相比于中間代碼數(shù)據(jù)結(jié)構(gòu)體,與運動軌跡無關參數(shù)不改變,運動參數(shù)用刀補后相應數(shù)據(jù)替換。
3.1.3 插補模塊軟件設計
插補是數(shù)控系統(tǒng)的核心,它直接影響數(shù)控機床加工的精度。本數(shù)控系統(tǒng)選擇逐點比較法插補。逐點比較插補法是目前數(shù)控加工中最常用也是最為成熟的插補算法之一,它通過比較刀具移動的實際位置與理論位置,獲得偏差情況,從而判斷下一步的移動位置,實現(xiàn)對工件的加工[16-18]。
為了滿足加工的需要,本系統(tǒng)將實現(xiàn)四象限任意直線插補和圓弧插補,逐點比較法的算法思想和基本原理由于篇幅關系不再詳述。具體如圖8所示。
對于雙核心架構(gòu)而言,兩個CPU之間的通訊和時序配合十分的重要。STM32系列采用一種新型的存儲器擴展技術(shù)——FSMC,在外部存儲器擴展方面具有獨特的優(yōu)勢,可將FPGA作為STM32的外部大容量靜態(tài)存儲器,進行讀寫。
FSMC即靈活的靜態(tài)存儲控制器,支持的存儲器類型有SRAM、PSRAM等外部芯片擴展。設計時,STM32端通過 FSMC總線的獨立地址模式實現(xiàn)STM32與FPGA之間的通信。地址由8位地址總線(AB)傳輸;數(shù)據(jù)由16位數(shù)據(jù)總線(DB)傳輸[19]。通過在STM32配置相應的引腳模式,定義偽函數(shù)的形式實現(xiàn)STM32將處理完的數(shù)據(jù)實時的發(fā)送給FPGA,并實時的接收FPGA端通過編碼器等傳感器采集到的信息。STM32與FPGA之間通訊采用ILI9325的8080接口的協(xié)議,其信號類型和通訊時序如圖9所示,F(xiàn)SMC通訊模塊在FPGA中綜合后的硬件原理如圖10所示,仿真效果圖如圖11所示。
圖9中:CSn為片選信號,高電平失能,低電平有效;NADV為地址有效信號,上升沿鎖存地址低位;RDn為讀使能信號,高電平失能,上升沿鎖存數(shù)據(jù),低電平信號有效;WRn為寫使能信號,高電平失能,上升沿鎖存數(shù)據(jù),低電平信號有效;DB[15∶0]為16位數(shù)據(jù)信號線;AB[24∶16]為8位地址信號線。
UC/OS-III是一個可搶占、基于優(yōu)先級的內(nèi)核,相比于其他的嵌入式操作系統(tǒng),該系統(tǒng)支持采用時間片輪轉(zhuǎn)的方式使得至多無限個任務擁有相同的優(yōu)先級[20]。本設計中,在UC/OS-III操作系統(tǒng)任務調(diào)度管理器下,分別定義用戶控制命令輸入任務、指令發(fā)送任務、插補任務、刀補任務、邏輯控制任務、譯碼任務、數(shù)據(jù)管理任務、顯示刷新任務、空閑任務、各任務之間的優(yōu)先級如圖12所示。其中,從數(shù)控加工的層面來考慮,這些任務可以分為實時性較強的運動控制任務和實時性要求較弱的系統(tǒng)管理任務,為了優(yōu)先保證強實時性任務,應將這些任務置于較高的優(yōu)先級。
數(shù)控系統(tǒng)中,為了保證數(shù)據(jù)流通的完整性和穩(wěn)定性,在每個任務之間都設置了數(shù)據(jù)緩沖區(qū),這些數(shù)據(jù)緩沖區(qū)都可由相鄰的兩個任務進行共享。為了防止共享資源被同時訪問,UC/OS-III操作系統(tǒng)提供了4種保護共享資源的機制分別為:(1)關中斷;(2)鎖調(diào)度器;(3)信號量;(4)Mutex方式。為了科學地訪問數(shù)據(jù)緩沖區(qū),并保證任務調(diào)度的時序性,本系統(tǒng)選擇信號量的方式進行任務的調(diào)度和共享資源的訪問,任務調(diào)度機制如圖13所示。
圖13中:
(1)譯碼任務正在運行,從SD卡中讀取G代碼進行譯碼。
(2)當譯碼模塊將所有G代碼處理完成后,獲得信號量1。
(3)譯碼任務訪問中間代碼緩存區(qū),將譯碼后的數(shù)據(jù)結(jié)構(gòu)體存入中間代碼緩存區(qū)。
(4)譯碼任務將結(jié)果存入中間代碼緩存區(qū)后,釋放信號量1,同時刀補任務接收信號量1。
(5)刀補任務訪問中間代碼緩沖區(qū),查找關鍵字G42或G43后,讀出需要修正的數(shù)據(jù)。
(6)刀補任務處理進行相應的刀具半徑補償值計算并更新數(shù)據(jù),將更新過的結(jié)構(gòu)體存入刀補緩沖區(qū)。
(7)刀補任務釋放信號量2,同時插補任務接收信號量2。
(8)插補任務訪問刀補緩沖區(qū),并讀取一行G代碼的加工信息結(jié)構(gòu)體。
(9)插補任務運行,進行插補。
(10)一行G代碼的加工信息結(jié)束后,插補任務掛起。
(11)指令發(fā)送任務發(fā)送插補指令給FPGA執(zhí)行。
(12)發(fā)送完畢后,發(fā)布信號量2并掛起指令發(fā)送任務。
(13)讀取新的一個加工指令結(jié)構(gòu)體。
(14)插補任務運行。
FPGA端的主要任務是實現(xiàn)對電動機等執(zhí)行件的控制和編碼器等傳感器的信號接收,故在FPGA端共設計有主軸指令處理模塊、進給軸指令處理模塊、邏輯指令處理模塊、脈沖生成發(fā)生器以及位置信號處理模塊等功能模塊。通過Verilog代碼編寫的功能模塊,將綜合成相應的功能電路,實現(xiàn)直流無刷電動機的占空比控制、步進電動機的高細分脈沖控制,以及切削液和光照的邏輯控制等功能,F(xiàn)PGA功能模塊如圖14所示。
為了驗證所設計嵌入式數(shù)控系統(tǒng)的功能完整性和性能,將數(shù)控系統(tǒng)與電動機、傳感器等執(zhí)行部件進行接線,并與微型車床機械結(jié)構(gòu)進行裝配后進行聯(lián)調(diào)聯(lián)試。組裝、接線完成的車床系統(tǒng)實拍圖如圖15所示。所加工出的工件實拍圖如圖16所示。
基于STM32+FPGA的嵌入式數(shù)控系統(tǒng)很好的彌補了基于PC通用數(shù)控系統(tǒng)自身的不足且可以更好地適配微型數(shù)控機床。通過仿真調(diào)試與實際的車削測試,本系統(tǒng)可以較好地滿足數(shù)控車床的控制要求,并具有實時性強,時序準確,車削過程穩(wěn)定,插補軌跡精準,可靈活擴展的優(yōu)勢。與此同時,提高了整個微型數(shù)控車床的自動化程度,降低了車床的制造成本,具有較好的發(fā)展前景和研究價值。但是,數(shù)控系統(tǒng)本身是一個復雜的系統(tǒng),他的整體性能與執(zhí)行器、控制板卡、軟件算法設計等諸多因素皆有關系,因此在實際的車削實驗當中也暴露了許多問題,在以后的調(diào)試和實驗過程中將逐步的完善。