基于USB的高速硬件精插補器設(shè)計
摘要:介紹了一種基于USB通訊的高速硬件精插補器的設(shè)計,設(shè)計中采用FPGA實現(xiàn)精插補,并通過USB接口實現(xiàn)與上位PC機的高速數(shù)據(jù)通訊。該精插補器具有設(shè)計簡單、易于實現(xiàn)、插補速度高等特點,可適用于高速數(shù)控系統(tǒng)的開發(fā)。
關(guān)鍵詞:USB通訊;FPGA;精插補器
前言
數(shù)控系統(tǒng)發(fā)展到90年代后,基于個人計算機(PC)的數(shù)控系統(tǒng)(簡稱PCNC)成為CNC發(fā)展的主要方向[1]。目前PC和NC的連接主要采用兩種形式,一是通過PC機的串口、并口,這種方式接口簡單、連接方便,開發(fā)費用低,但由于傳輸速度低,已不能滿足現(xiàn)代數(shù)控系統(tǒng)的實時性要求。二是采用ISA和PCI插卡的形式,NC功能插卡化,并將其插入PC機的標(biāo)準(zhǔn)ISA/PCI插槽,可方便實現(xiàn)與用戶接口、主機系統(tǒng)通訊的開放化,這是PCNC系統(tǒng)的一種主流形式,但PCI總線接口復(fù)雜,驅(qū)動程序、硬件接口開發(fā)難度大,開發(fā)成本較高,開發(fā)周期也較長,而ISA總線由于速度較慢已隨著計算機的發(fā)展逐漸被淘汰。
隨著計算機總線結(jié)構(gòu)的變革,必將影響數(shù)控系統(tǒng)的體系結(jié)構(gòu),串行總線的應(yīng)用將極大地改變現(xiàn)有的傳統(tǒng)數(shù)控系統(tǒng)的結(jié)構(gòu)形式。串行總線連接引腳數(shù)量少,連接簡單,成本較低,系統(tǒng)可靠性高,USB作為一種新的通用串行總線標(biāo)準(zhǔn),應(yīng)用越來越廣泛[2]。USB總線具有較強的糾錯能力、速度快、不占用系統(tǒng)資源、驅(qū)動程序開發(fā)簡單的特點,較好地滿足了現(xiàn)代數(shù)控系統(tǒng)的要求,因此,本文把USB這種新型接口和通訊方式應(yīng)用到數(shù)控系統(tǒng),設(shè)計了一種基于USB通訊的硬件高速精插補器。
1硬件精插補器的工作原理
硬件精插補器通過USB接口從上位PC機獲取粗插補數(shù)據(jù),由FPGA實現(xiàn)高速精插補輸出。精插補器主要由USB接口芯片、微控制器、數(shù)據(jù)緩存、FPGA等部分組成,如圖1所示。各部分功能如下:
微控制器通過USB從上位PC機獲取粗插補數(shù)據(jù)和機床控制信息,通過數(shù)據(jù)緩存?zhèn)魉徒oFPGA;
USB接口芯片負(fù)責(zé)處理所有與USB總線事務(wù)有關(guān)的任務(wù),如總線喚醒、數(shù)據(jù)接受/發(fā)送、打包、CRC校驗等;
FPGA通過微控制器獲取粗插補數(shù)據(jù)及機床控制信息,實現(xiàn)精插補輸出;
數(shù)據(jù)緩存用于緩存粗插補數(shù)據(jù),以協(xié)調(diào)微控制器和精插補控制器的速度差異。
精插補器通過微控制器的固件程序和上位PC機應(yīng)用程序及驅(qū)動程序的協(xié)調(diào)處理,完成高速的數(shù)據(jù)通訊。
2 硬件設(shè)計
2.1 USB通訊接口設(shè)計
USB 外圍接口芯片采用Philips公司的支持USB1.1協(xié)議的芯片PDIUSBD12(以下簡稱D12), 該芯片性價比高,集成了320字節(jié)的FIFO內(nèi)存、SIE(Serial Interface Engine)、收發(fā)器以及電壓調(diào)整器, 主端點有雙緩存配置,增加吞吐量,容易實現(xiàn)實時數(shù)據(jù)傳輸[3]。由于其為純粹的USB外設(shè)接口芯片僅處理USB總線相關(guān)事務(wù),必須有一個外部微處理器來進行協(xié)議處理和數(shù)據(jù)交換,設(shè)計中采用PHILIPS公司內(nèi)核基于8位80C51單片機增強型派生產(chǎn)品P89C58X2FN ,它完全保留了80C51指令系統(tǒng)和硬件結(jié)構(gòu)的大框架,而且它在多個方面進行了加強、擴展和創(chuàng)新。如片上的FLASH EPROM擴展到32KB,滿足當(dāng)今用嵌入式高級語言對片上大存儲容量的需要;6個中斷源和4個中斷優(yōu)先級滿足數(shù)控系統(tǒng)的多級中斷要求;速度高達33M有利于提高對D12的讀寫速度。D12與P89C58X2FN連接電路如圖2所示。
圖2 D12與P89C58X2FN的連接電路圖
D12采用數(shù)據(jù)/地址總線復(fù)用方式和P89C58X2FN相連接,D12相當(dāng)于一位(兩個地址)的外部RAM,對D12的操作就像對外部RAM操作一樣,低位地址線P0.0通過373地址鎖存后與D12的A0相連,高位P2.5產(chǎn)生片選信號,這樣D12的地址為2000H和2001H, D12的通信采用這樣的方式:一個偶數(shù)地址表示送往D12的是讀/寫數(shù)據(jù),一個奇數(shù)地址表示往D12 寫入一個命令,這是由D12的內(nèi)部邏輯來實現(xiàn)的,即D12的數(shù)據(jù)地址為2000H,命令地址為2001H。D12的中斷引腳接P89C58X2FN的外部中斷1,要注意的是中斷只能采用電平觸發(fā)方式,低電平有效。
2.2 FPGA設(shè)計
隨著集成度高、速度快的可編程門陣列FPGA(FILED ROGRAMABLE GATE ARRAY)的出現(xiàn)和EDA工具的完善,使得硬件電路的設(shè)計過程大大簡化,并可通過波形仿真工具驗證電路的功能正確性,有效地縮短了電路的開發(fā)周期,提高了設(shè)計的靈活性,可彌補傳統(tǒng)硬件插補器的缺點。因此,本文采用FPGA來實現(xiàn)精精插。具體設(shè)計中采用了ALTERA公司的FPGA芯片EPF10K10LC84-4,可實現(xiàn)三軸直線、兩軸圓弧聯(lián)動精插補,產(chǎn)生進給序列脈沖,用于三軸步進或伺服電機的驅(qū)動控制。
2.2.1 精插補原理
精插補器的功能是接收通過粗插補計算得到的一個插補周期內(nèi)各軸的進給量(微段直線),并將其轉(zhuǎn)化成頻率均勻的進給脈沖,輸出給各軸的位置伺服控制器。脈沖轉(zhuǎn)換常用的方法是采用計數(shù)器和分頻器,其主要優(yōu)點是頻率均勻,但存在脈沖截斷誤差。本文采用了基于DDA(數(shù)字微分分析器)插補原理的脈沖轉(zhuǎn)換算法,它不僅實現(xiàn)簡單,消除了脈沖截斷誤差,而且易于實現(xiàn)多坐標(biāo)進給的同步[4]。
DDA插補的原理是通過對進給量X的不斷累加、溢出,產(chǎn)生相應(yīng)的進給脈沖。具體的說,在累加脈沖△T控制下,存儲在N位寄存器中的進給量X不斷累加,累加的溢出脈沖即為驅(qū)動坐標(biāo)軸的進給脈沖。當(dāng)累加次數(shù)達到2N時,溢出脈沖的數(shù)據(jù)量恰好等于進給量X,一次脈沖轉(zhuǎn)換完成。此時,完成一次脈沖轉(zhuǎn)換的周期是T=2N/fin,產(chǎn)生的溢出脈沖頻率為fout=fin*X/2N,其中fin為累加控制脈沖頻率。
2.2.2 FPGA實現(xiàn)
精插補器內(nèi)部結(jié)構(gòu)原理圖如圖3所示。其工作過程如下:精插補的啟動、停止是由單片機來控制的,開始插補時,單片機把本次插補周期的粗插補數(shù)據(jù)發(fā)送給FPGA后,發(fā)出插補開始信號。插補開始信號一到,插補控制邏輯就把插補數(shù)據(jù)送入累加寄存器,并啟動累加器進行累加,同時輸出插補方向信號,然后就向單片機申請中斷,發(fā)送下一個插補周期的數(shù)據(jù)到插補數(shù)據(jù)緩沖區(qū)中。插補周期未到時,累加器不斷累加進行脈沖輸出,計數(shù)器控制每個插補周期脈沖轉(zhuǎn)化的累加次數(shù),一旦本次插補周期一到,計數(shù)器對累加器清零,以免給下一次插補帶來偏差,并重新開始下一個周期的插補。當(dāng)單片機發(fā)出停止插補信號后,控制邏輯立即封鎖插補脈沖源,停止插補脈沖輸出。為了提高溢出脈沖均勻性,減少溢出脈沖的頻率誤差,本文使累加次數(shù)增加Q倍,再對溢出脈沖進行Q倍分頻。
圖3 精插補器內(nèi)部結(jié)構(gòu)原理圖
2.2.2精插補器最高輸出脈沖頻率分析
設(shè)插補周期為0.5ms,若硬件精插補器采用8位累加器,4位分頻器,則每次脈沖轉(zhuǎn)換的累加次數(shù)應(yīng)為212。累加脈沖的輸入頻率是fin=212/T=8.192MHZ,則最高輸出脈沖頻率可達fout=fin*X/212=510KHZ。當(dāng)伺服進給的脈沖量為lum時,最大進給速度可達30.6m/min,而且通過提高累加的頻率還可獲得更高的速度。可見本文提出的硬件精插補器完全可滿足高速加工的進給速度控制要求。
3 固件程序設(shè)計
固件程序(firmware)除了完成USB設(shè)備初始化、USB協(xié)議標(biāo)準(zhǔn)請求處理外,主要的任務(wù)是實現(xiàn)粗插補數(shù)據(jù)及機床控制命令和狀態(tài)反饋信息的傳輸。D12共有3個端點,端點0、端點1和端點2。在設(shè)計中,端點0通過控制傳輸實現(xiàn)設(shè)備的枚舉;端點1通過中斷傳輸方式實現(xiàn)數(shù)控系統(tǒng)的控制信號及數(shù)據(jù)請求信號的傳輸,端點2配置為普通傳輸端點,通過批量傳輸實現(xiàn)數(shù)控系統(tǒng)粗插補數(shù)據(jù)的傳輸工作。數(shù)據(jù)交換是采用中斷機制來實現(xiàn)。微控制器與USB的數(shù)據(jù)交換由外部中斷1來處理,微控制器與FPGA的數(shù)據(jù)交換由外部中斷0來處理?,F(xiàn)主要介紹固件程序?qū)崿F(xiàn)NC粗插補數(shù)據(jù)傳輸?shù)姆椒ā?/P>
由于NC粗插補數(shù)據(jù)量較大,不適合于采用中斷傳輸,盡管同步傳輸速度快,速度恒定,但由于其數(shù)據(jù)傳輸?shù)臏?zhǔn)確性差也滿足不了要求,因此NC粗插補數(shù)據(jù)采用批量傳輸。由于批量傳輸方式優(yōu)先級最低,系統(tǒng)響應(yīng)具有不確定性,傳輸速度也具有一定的不確定性。解決的方法是采用數(shù)據(jù)緩沖,在系統(tǒng)中配置了一個8k的外部RAM,設(shè)置兩個4000字節(jié)的粗插補數(shù)據(jù)緩沖區(qū)。一個插補周期的數(shù)據(jù)占4個字節(jié),可緩沖1000段數(shù)據(jù),系統(tǒng)插補周期為0.5ms,即一次傳輸加工時間為500ms,若按40k/s的批量傳輸速度計算(實際傳輸?shù)乃俣冗h(yuǎn)大于此速度),傳輸4000字節(jié)只需100ms左右,加上NC數(shù)據(jù)請求等待延時,還有足夠的時間余量。另外,系統(tǒng)中沒有同步傳輸,中斷傳輸?shù)臄?shù)據(jù)量少,也保證了USB總線為批量傳輸提供足夠的帶寬。因此,本文采用雙緩沖區(qū)的方式完全可滿足高速加工的插補數(shù)據(jù)通訊要求。
具體實現(xiàn)時,粗插補數(shù)據(jù)通過端點2的批量傳輸來完成的。在一個緩沖區(qū)的數(shù)據(jù)精插補完后,通過端點1向PC主機發(fā)出數(shù)據(jù)請求,PC主機即向該緩沖區(qū)傳輸數(shù)據(jù),固件程序通過端點2 OUT中斷接收該數(shù)據(jù),并存入數(shù)據(jù)緩沖區(qū)。
4 結(jié)束語
高速加工是當(dāng)代數(shù)控加工的發(fā)展趨勢,高速硬件精插補器是實現(xiàn)高速加工進給控制的關(guān)鍵技術(shù)之一。本文采用可編程邏輯器件FPGA實現(xiàn)高速精插補器,充分發(fā)揮了FPGA速度快、設(shè)計靈活、集成度高、性能可靠、開發(fā)成本低等一系列優(yōu)點。采用USB接口實現(xiàn)通訊,完全滿足精插補器的高速數(shù)據(jù)傳輸要求。
參考文獻
[1] 孫斌、楊汝清,基于PC的數(shù)控系統(tǒng)的研究現(xiàn)狀和發(fā)展趨勢,機床與液壓,2001年4期:3~5
[2] 鄭立新,串行總線計算機數(shù)控系統(tǒng),制造技術(shù)與機床,200年4期:9~10。
[3] 周立功等編著. PDIUSBD12 USB 固件編程與驅(qū)動開發(fā) .北京:北京航空航天大學(xué)出版社. 2003年
[4] 羅睿梅著. 高速數(shù)控系統(tǒng)的運動控制技術(shù). 南京航空航天大學(xué)學(xué)位論文,2003年
伺服電機相關(guān)文章:伺服電機工作原理
分頻器相關(guān)文章:分頻器原理
評論