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