王 鵬,賀健琪,宋 敏
(西安航空學(xué)院 陜西 西安 710077)
開(kāi)放式數(shù)控系統(tǒng)已經(jīng)成為數(shù)控系統(tǒng)發(fā)展的趨勢(shì),以NC嵌入PC的開(kāi)放式數(shù)控系統(tǒng)以其經(jīng)濟(jì)性和實(shí)用性已被廣泛應(yīng)用[1]。在通用的PC機(jī)的擴(kuò)展插槽中加入運(yùn)動(dòng)控制卡,由PC機(jī)發(fā)出控制指令,運(yùn)動(dòng)控制卡根據(jù)接收指令完成各種控制功能。運(yùn)動(dòng)控制和邏輯控制由運(yùn)動(dòng)控制卡完成,因此運(yùn)動(dòng)控制卡的設(shè)計(jì)已經(jīng)成為NC系統(tǒng)性能實(shí)現(xiàn)的關(guān)鍵技術(shù)[2]。目前運(yùn)動(dòng)控制卡多采用專用運(yùn)動(dòng)控制芯片構(gòu)成,例如固高運(yùn)動(dòng)控制卡,但是專用控制芯片擴(kuò)展能力差,系統(tǒng)升級(jí)困難,難以應(yīng)用于開(kāi)放式數(shù)控系統(tǒng);也有采用DSP+CPLD/FPGA為核心構(gòu)成,雖然集合了DSP的強(qiáng)大數(shù)據(jù)處理能力和FPGA的靈活性與可靠性等優(yōu)點(diǎn),但DSP硬件成本較高,內(nèi)部運(yùn)動(dòng)控制算法修改復(fù)雜。
文中選用單片機(jī)+FPGA為核心的控制方案,以此方案設(shè)計(jì)了一種可以實(shí)現(xiàn)在線接觸加工過(guò)程中六軸插補(bǔ)的運(yùn)動(dòng)控制卡。刀具側(cè)刃在完成曲面加工時(shí),刀具端面還可以完成曲線插補(bǔ),提高了曲面加工效率[3]。
核心部分采用由單片機(jī)+FPGA組成,利用單片機(jī)的控制功能和FPGA的快速計(jì)算能力組成運(yùn)動(dòng)控制系統(tǒng)的核心硬件結(jié)構(gòu),系統(tǒng)硬件總體結(jié)構(gòu)如圖1所示。
圖1 運(yùn)動(dòng)控制卡總體結(jié)構(gòu)圖Fig.1 Schematic structure of the motion control card
運(yùn)動(dòng)控制卡包括與PC連接的ISA總線、總線驅(qū)動(dòng)、數(shù)據(jù)鎖存及譯碼電路模塊,雙端口RAM模塊,電源轉(zhuǎn)換模塊以及FPGA芯片的配置模塊。
在線接觸加工運(yùn)動(dòng)控制系統(tǒng)中上位機(jī)和運(yùn)動(dòng)控制板卡通信時(shí),上位機(jī)把數(shù)控代碼傳送給雙端口RAM,單片機(jī)再?gòu)碾p端口RAM里讀取數(shù)控代碼并將其發(fā)送到FPGA內(nèi)部進(jìn)行插補(bǔ)運(yùn)算。
1)ISA總線模塊
由于ISA總線通信協(xié)議簡(jiǎn)單,接口電路易于實(shí)現(xiàn),所以選擇8位ISA數(shù)據(jù)總線來(lái)實(shí)現(xiàn)上位機(jī)與控制卡的數(shù)據(jù)傳輸[4]。
2)總線驅(qū)動(dòng)模塊
采用了74LS245雙向總線驅(qū)動(dòng)芯片,作為數(shù)據(jù)線的信號(hào)增強(qiáng)和驅(qū)動(dòng)器件;用74LS244為單向總線驅(qū)動(dòng)芯片,主要用來(lái)驅(qū)動(dòng)ISA總線的地址線和控制總線信號(hào),提高其扇出能力(帶負(fù)載能力);采用專用譯碼技術(shù)及芯片,以一片可編程邏輯器件GAL16V8為核心完成I/O端口譯碼功能。電路如圖2所示。
圖2 總線驅(qū)動(dòng)、數(shù)據(jù)鎖存及譯碼電路Fig.2 Bus Driver,data latching and decoder circuit
3)數(shù)據(jù)鎖存
該系統(tǒng)屬于實(shí)時(shí)系統(tǒng),需要高速可靠的數(shù)據(jù)傳輸,采用雙端口RAM作為數(shù)據(jù)交換的中介,可以滿足系統(tǒng)要求。IDT公司的高速2K×8bits的雙端口靜態(tài)RAM (IDT7132),該芯片具有BUSY邏輯,可有效的防止兩端訪問(wèn)同一地址產(chǎn)生的競(jìng)爭(zhēng)風(fēng)險(xiǎn)[5]。
2K字的雙端口RAM(范圍0x0000~0x03FF)被分配為如下幾個(gè)區(qū)域,基地址選擇如下述,具體分配如下:
0x000~0x1FF分配為信息數(shù)據(jù)緩沖區(qū),存放上位機(jī)與單片機(jī)交換的信息數(shù)據(jù);
0x200~0x22F分配為信息標(biāo)志緩沖區(qū),存放上位機(jī)與單片機(jī)交換的信息標(biāo)識(shí),信息標(biāo)識(shí)的內(nèi)容包括加工狀態(tài)字、錯(cuò)誤標(biāo)志字等;
0x230~0x33F分配為信息數(shù)據(jù)緩沖區(qū),存放單片機(jī)返回給上位機(jī)的信息數(shù)據(jù);
0x340~0x34F保留;
0x350~0x36F分配為命令緩沖區(qū),存放單片機(jī)與上位機(jī)交換的命令和狀態(tài);
0x370~0x3FF分別被用來(lái)存放上位機(jī)和單片機(jī)中斷。
4)單片機(jī)模塊
單片機(jī)主要作用是接收從上位機(jī)傳送下來(lái)的數(shù)控代碼,把數(shù)控代碼變成相應(yīng)的指令,傳送給FPGA,控制FPGA工作,同時(shí),對(duì)于從FPGA傳送過(guò)來(lái)的加工信息,及時(shí)地傳送給上位機(jī)。單片機(jī)模塊如圖3所示。
1)FPGA總體功能設(shè)計(jì)
FPGA主要是進(jìn)行直線插補(bǔ),圓弧插補(bǔ)和復(fù)合插補(bǔ)等復(fù)雜運(yùn)算,輸出脈沖和方向信號(hào),設(shè)計(jì)選用Altera公司的低成本Cyclone系列的第二代產(chǎn)品Cyclonell系列芯片中的EP2C8Q208芯片來(lái)實(shí)現(xiàn)這些功能,首先EP2C8Q208中含有 4,608至68,416個(gè)邏輯單元和18個(gè)18*18的乘法器,滿足復(fù)合插補(bǔ)的復(fù)雜運(yùn)算的要求;第二因?yàn)檫B續(xù)插補(bǔ)一次要存儲(chǔ)很多條指令,而EP2C8Q208中含有36個(gè)M4KRAM塊,能滿足存儲(chǔ)這些數(shù)據(jù)的要求;第三由于跟單片機(jī)的相連的數(shù)據(jù)線8根,地址線10根,控制總線5根,還有6軸(或擴(kuò)展為更多軸)的輸出信號(hào)12根,還有其他的存儲(chǔ),控制等連線,對(duì)I/O的管腳總數(shù)要求較多,而EP2C8Q208有208個(gè)管腳,可以滿足要求[6]。在本設(shè)計(jì)中FPGA總體結(jié)構(gòu)如圖4所示。
圖3 單片機(jī)模塊電路圖Fig.3 The circuit diagram of SCM
圖4 FPGA內(nèi)部結(jié)構(gòu)設(shè)計(jì)框圖Fig.4 The design of internal structure about FPGA
2)FPGA外圍電路設(shè)計(jì)
本設(shè)計(jì)中采用的EP2C8Q208C7是SRAM工藝的FPGA,在試驗(yàn)階段需不斷對(duì)設(shè)計(jì)進(jìn)行修改和調(diào)整,以逐步完善設(shè)計(jì)功能,在此階段采用JTAG方式直接將SOF文件下載到器件中,這種方式在每次上電時(shí)需要重新下載,因此在設(shè)計(jì)最終完成后,使用配置器件EPCS4來(lái)保存配置信息,即采用主動(dòng)串行方式。配置電路如圖5所示。
每軸設(shè)計(jì)一個(gè)位置計(jì)數(shù)器 ,用來(lái)計(jì)正/負(fù)方向輸出脈沖數(shù),當(dāng)運(yùn)動(dòng)控制卡向外輸出一個(gè)正向脈沖時(shí),計(jì)數(shù)器值加1;當(dāng)運(yùn)動(dòng)控制卡向外輸出一個(gè)負(fù)向脈沖時(shí),計(jì)數(shù)器值減1。這樣可以如實(shí)的反應(yīng)出實(shí)際位置。
圖5 FPGA芯片配置電路圖Fig. 5 The configuration of circuit diagram about FPGA
全數(shù)控?cái)?shù)控系統(tǒng)在速度處理上是通過(guò)將軟件程序給出的速度值(單位:)算出在每個(gè)插補(bǔ)周期上實(shí)際應(yīng)發(fā)脈沖的個(gè)數(shù)。數(shù)控系統(tǒng)中每發(fā)出一個(gè)脈沖,電機(jī)就轉(zhuǎn)過(guò)一定的角度,從而帶動(dòng)機(jī)床坐標(biāo)向前或向后移動(dòng)一個(gè)脈沖所對(duì)應(yīng)的距離(稱之為脈沖當(dāng)量,這里用step表示,單位:μm/P)。通過(guò)全軟件數(shù)控系統(tǒng)速度計(jì)算模塊計(jì)算實(shí)際每毫秒應(yīng)發(fā)的脈沖個(gè)數(shù)是:
V1:每毫秒鐘實(shí)際發(fā)出的脈沖個(gè)數(shù)。
所以根據(jù)所需要的時(shí)鐘脈沖,用VHDL語(yǔ)言編寫可預(yù)置的計(jì)數(shù)器程序,就可以達(dá)到速度控制的目的。仿真波形如圖6所示。
圖6 編譯仿真波形圖Fig.6 Compile the waveform simulation
文中采用模塊化的設(shè)計(jì)思想,設(shè)計(jì)了一種基于單片機(jī)+FPGA的運(yùn)動(dòng)控制卡。單片機(jī)作為控制卡的核心處理器,時(shí)序控制能力極強(qiáng),而且設(shè)計(jì)方便快捷,再結(jié)合FPGA的集成度高,可靠性好,大大提高了控制系統(tǒng)的實(shí)時(shí)性30%和可靠性,并縮小了控制卡的體積。同時(shí)FPGA具有在系統(tǒng)可重構(gòu)的特性,保證了運(yùn)動(dòng)控制系統(tǒng)具有良好的開(kāi)放性,也方便了系統(tǒng)的設(shè)計(jì)和調(diào)試。
[1]李剛,楊繼東.基于PC的開(kāi)放式數(shù)控系統(tǒng)的開(kāi)發(fā)[J].機(jī)床與液壓,2006(4):82-83.LI Gang,YANG Ji-dong.Development of PC-based open CNC system[J].Machine Tool&Hydraulics,2006(4):82-83.
[2]康健,陶濤,梅雪松.基于數(shù)字信號(hào)處理器的多軸運(yùn)動(dòng)控制器設(shè)計(jì)[J].西安交通大學(xué)學(xué)報(bào),2003,5(5):495-498.KANG Jian,TAO Tao,MEI Xue-song.Multi-axis motion controller digital signal processor-based design[J].Xi’an Jiaotong University,2003,5(5):495-498.
[3]WANG Kun-qi,WANG Run-xiao,YU Bing-gao,et al.Research on a novel approach to multi-axis line contact milling[C].International Technology And Innovation Conference,2006(11):1494-1498.
[4]許興存,曾琦琳.微型計(jì)算機(jī)接口技術(shù)[M].北京:電子工業(yè)出版社,2003.
[5]劉琨,孫春亮.單片機(jī)C語(yǔ)言入門[M].北京:人民郵電出版社,2008.
[6]楊恒.FPGA/VHDL快速工程實(shí)踐入門與提高[M].北京:北京航空航天大學(xué)出版社,2003.