基于單片機(jī)+FPGA的多軸運動控制卡設(shè)計
摘要:基于曲面線接觸加工中全軟件數(shù)控系統(tǒng)實現(xiàn)多軸運動控制的目的,介紹了一種基于單片機(jī)+FPGA的多軸運動控制卡的設(shè)計方法,該卡可以實現(xiàn)五軸控制。采用模塊化的設(shè)計思想設(shè)計出了運動控制卡的總線、總線驅(qū)動、數(shù)據(jù)鎖存及譯碼電路模塊,雙端口RAM模塊,單片機(jī)模塊,F(xiàn)PGA模塊,電源轉(zhuǎn)換模塊以及FPGA芯片的配置模塊等,實現(xiàn)了硬件電路的連接。通過在QuartusII的平臺下,采用DDA插補原理,通過VHDL編寫程序生成插補模塊,并將這些插補模塊連接成原理圖,從而構(gòu)成了直線插補器,同時在QuartusII下仿真實現(xiàn)了對應(yīng)功能的仿真,采用軟件插補代替?zhèn)鹘y(tǒng)的硬件插補,使得系統(tǒng)更具開放性。
開放式數(shù)控系統(tǒng)已經(jīng)成為數(shù)控系統(tǒng)發(fā)展的趨勢,以NC嵌入PC的開放式數(shù)控系統(tǒng)以其經(jīng)濟(jì)性和實用性已被廣泛應(yīng)用。在通用的PC機(jī)的擴(kuò)展插槽中加入運動控制卡,由PC機(jī)發(fā)出控制指令,運動控制卡根據(jù)接收指令完成各種控制功能。運動控制和邏輯控制由運動控制卡完成,因此運動控制卡的設(shè)計已經(jīng)成為NC系統(tǒng)性能實現(xiàn)的關(guān)鍵技術(shù)。目前運動控制卡多采用專用運動控制芯片構(gòu)成,例如固高運動控制卡,但是專用控制芯片擴(kuò)展能力差,系統(tǒng)升級困難,難以應(yīng)用于開放式數(shù)控系統(tǒng);也有采用DSP+CPLD/FPGA為核心構(gòu)成,雖然集合了DSP的強(qiáng)大數(shù)據(jù)處理能力和FPGA的靈活性與可靠性等優(yōu)點,但DSP硬件成本較高,內(nèi)部運動控制算法修改復(fù)雜。
文中選用單片機(jī)+FPGA為核心的控制方案,以此方案設(shè)計了一種可以實現(xiàn)在線接觸加工過程中六軸插補的運動控制卡。刀具側(cè)刃在完成曲面加工時,刀具端面還可以完成曲線插補,提高了曲面加工效率。
1 系統(tǒng)結(jié)構(gòu)設(shè)計
核心部分采用由單片機(jī)+FPGA組成,利用單片機(jī)的控制功能和FPGA的快速計算能力組成運動控制系統(tǒng)的核心硬件結(jié)構(gòu),系統(tǒng)硬件總體結(jié)構(gòu)如圖1所示。
2 多軸運動控制卡模塊設(shè)計
運動控制卡包括與PC連接的ISA總線、總線驅(qū)動、數(shù)據(jù)鎖存及譯碼電路模塊,雙端口RAM模塊,電源轉(zhuǎn)換模塊以及FPGA芯片的配置模塊。
2.1 ISA總線、總線驅(qū)動、數(shù)據(jù)鎖存及單片機(jī)模塊
在線接觸加工運動控制系統(tǒng)中上位機(jī)和運動控制板卡通信時,上位機(jī)把數(shù)控代碼傳送給雙端口RAM,單片機(jī)再從雙端口RAM里讀取數(shù)控代碼并將其發(fā)送到FPGA內(nèi)部進(jìn)行插補運算。
1)ISA總線模塊
由于ISA總線通信協(xié)議簡單,接口電路易于實現(xiàn),所以選擇8位ISA數(shù)據(jù)總線來實現(xiàn)上位機(jī)與控制卡的數(shù)據(jù)傳輸。
2)總線驅(qū)動模塊
采用了74LS245雙向總線驅(qū)動芯片,作為數(shù)據(jù)線的信號增強(qiáng)和驅(qū)動器件;用74LS244為單向總線驅(qū)動芯片,主要用來驅(qū)動ISA總線的地址線和控制總線信號,提高其扇出能力(帶負(fù)載能力);采用專用譯碼技術(shù)及芯片,以一片可編程邏輯器件GAL16V8為核心完成I/O端口譯碼功能。電路如圖2所示。
3)數(shù)據(jù)鎖存
該系統(tǒng)屬于實時系統(tǒng),需要高速可靠的數(shù)據(jù)傳輸,采用雙端口RAM作為數(shù)據(jù)交換的中介,可以滿足系統(tǒng)要求。IDT公司的高速2Kx8bits的雙端口靜態(tài)RAM(IDT7132),該芯片具有BUSY邏輯,可有效的防止兩端訪問同一地址產(chǎn)生的競爭風(fēng)險。
2K字的雙端口RAM(范圍0x0000~0x03FF)被分配為如下幾個區(qū)域,基地址選擇如下述,具體分配如下:
0x000~0x1FF分配為信息數(shù)據(jù)緩沖區(qū),存放上位機(jī)與單片機(jī)交換的信息數(shù)據(jù);
0x200~0x22F分配為信息標(biāo)志緩沖區(qū),存放上位機(jī)與單片機(jī)交換的信息標(biāo)識,信息標(biāo)識的內(nèi)容包括加工狀態(tài)字、錯誤標(biāo)志字等;
0x230~0x33F分配為信息數(shù)據(jù)緩沖區(qū),存放單片機(jī)返回給上位機(jī)的信息數(shù)據(jù);
0x340~0x34F保留;
0x350~0x36F分配為命令緩沖區(qū),存放單片機(jī)與上位機(jī)交換的命令和狀態(tài);
0x370~0X3FF分別被用來存放上位機(jī)和單片機(jī)中斷。
4)單片機(jī)模塊
單片機(jī)主要作用是接收從上位機(jī)傳送下來的數(shù)控代碼,把數(shù)控代碼變成相應(yīng)的指令,傳送給FPGA,控制FPGA工作,同時,對于從FPGA傳送過來的加工信息,及時地傳送給上位機(jī)。單片機(jī)模塊如圖3所示。
2.2 FPGA模塊設(shè)計
1)FPGA總體功能設(shè)計
FPGA主要是進(jìn)行直線插補,圓弧插補和復(fù)合插補等復(fù)雜運算,輸出脈沖和方向信號,設(shè)計選用Altera公司的低成本Cyclone系列的第二代產(chǎn)品Cyelonell系列芯片中的EP2C8Q 208芯片來實現(xiàn)這些功能,首先EP2C8Q208中含有4,608至68,416個邏輯單元和18個18*18的乘法器,滿足復(fù)合插補的復(fù)雜運算的要求;第二因為連續(xù)插補一次要存儲很多條指令,而EP2C8Q208中含有36個M4KRAM塊,能滿足存儲這些數(shù)據(jù)的要求;第三由于跟單片機(jī)的相連的數(shù)據(jù)線8根,地址線10根,控制總線5根,還有6軸(或擴(kuò)展為更多軸)的輸出信號12根,還有其他的存儲,控制等連線,對I/O的管腳總數(shù)要求較多,而EP2C8Q208有208個管腳,可以滿足要求。
在本設(shè)計中FPGA總體結(jié)構(gòu)如圖4所示。
2)FPGA外圍電路設(shè)計
本設(shè)計中采用的EP2C8Q208C7是SRAM工藝的FPGA,在試驗階段需不斷對設(shè)計進(jìn)行修改和調(diào)整,以逐步完善設(shè)計功能,在此階段采用JTAG方式直接將SOF文件下載到器件中,這種方式在每次上電時需要重新下載,因此在設(shè)計最終完成后,使用配置器件EPCS4來保存配置信息,即采用主動串行方式。配置電路如圖5所示。
3 仿真
3.1 位置控制模塊
每軸設(shè)計一個位置計數(shù)器,用來計正/負(fù)方向輸出脈沖數(shù),當(dāng)運動控制卡向外輸出一個正向脈沖時,計數(shù)器值加1;當(dāng)運動控制卡向外輸出一個負(fù)向脈沖時,計數(shù)器值減1。這樣可以如實的反應(yīng)出實際位置。
3.2 速度模塊
全數(shù)控數(shù)控系統(tǒng)在速度處理上是通過將軟件程序給出的速度值(單位:)算出在每個插補周期上實際應(yīng)發(fā)脈沖的個數(shù)。數(shù)控系統(tǒng)中每發(fā)出一個脈沖,電機(jī)就轉(zhuǎn)過一定的角度,從而帶動機(jī)床坐標(biāo)向前或向后移動一個脈沖所對應(yīng)的距離(稱之為脈沖當(dāng)量,這里用step表示,單位:μm/P)。通過全軟件數(shù)控系統(tǒng)速度計算模塊計算實際每毫秒應(yīng)發(fā)的脈沖個數(shù)是:
V1:每毫秒鐘實際發(fā)出的脈沖個數(shù)。
所以根據(jù)所需要的時鐘脈沖,用VHDL語言編寫可預(yù)置的計數(shù)器程序,就可以達(dá)到速度控制的目的。仿真波形如圖6所示。
4 結(jié)論
文中采用模塊化的設(shè)計思想,設(shè)計了一種基于單片機(jī)+FPGA的運動控制卡。單片機(jī)作為控制卡的核心處理器,時序控制能力極強(qiáng),而且設(shè)計方便快捷,再結(jié)合FPGA的集成度高,可靠性好,大大提高了控制系統(tǒng)的實時性30%和可靠性,并縮小了控制卡的體積。同時FPGA具有在系統(tǒng)可重構(gòu)的特性,保證了運動控制系統(tǒng)具有良好的開放性,也方便了系統(tǒng)的設(shè)計和調(diào)試。