基于FPGA的數(shù)字積分法插補(bǔ)控制器設(shè)計(jì)與實(shí)現(xiàn)
摘要:為了提高伺服電機(jī)的步進(jìn)精度,簡化控制器結(jié)構(gòu),采用FPGA器件并運(yùn)用Verilog HDL語言設(shè)計(jì)出的插補(bǔ)控制器,不僅采用數(shù)字積分法實(shí)現(xiàn)直線插補(bǔ)控制和圓弧插補(bǔ)控制,提高了插補(bǔ)速度和插補(bǔ)精度,而且運(yùn)用多軸聯(lián)動(dòng)技術(shù),實(shí)現(xiàn)輸出脈沖的均勻分配。它可接收外部處理器指令,并發(fā)出所需的脈沖到伺服電機(jī)的驅(qū)動(dòng)中,從而控制伺服電機(jī)的運(yùn)轉(zhuǎn),其結(jié)果證明了該控制器的正確性。這種結(jié)構(gòu)的控制器簡化了一般數(shù)字控制器結(jié)構(gòu),具有良好的移植性能和一定的實(shí)用價(jià)值。
關(guān)鍵詞:運(yùn)動(dòng)控制;FPGA;插補(bǔ)控制器;數(shù)字積分法
0 引言
數(shù)控系統(tǒng)的核心技術(shù)是運(yùn)動(dòng)控制技術(shù),隨著機(jī)電一體化的深入發(fā)展,運(yùn)動(dòng)控制技術(shù)已經(jīng)成為推動(dòng)機(jī)電一體化進(jìn)程的重要環(huán)節(jié),是推動(dòng)新的產(chǎn)業(yè)革命的關(guān)鍵技術(shù)碼。
現(xiàn)代高速數(shù)控技術(shù)對(duì)運(yùn)動(dòng)控制器的速度和精度要求日益提高,與運(yùn)用軟件實(shí)現(xiàn)的控制器相比較,基于FPGA設(shè)計(jì)的插補(bǔ)控制器具有控制方便、插補(bǔ)速度快、精度高、通用性好、可移植性的特點(diǎn),并擁有可運(yùn)用硬件描述語言實(shí)現(xiàn)軟硬結(jié)合等多種優(yōu)點(diǎn)。為了提高伺服電機(jī)的精確度,本文設(shè)計(jì)了一個(gè)基于數(shù)字積分法并采用多軸聯(lián)動(dòng)技術(shù)的插補(bǔ)控制器,該控制器可實(shí)現(xiàn)三軸的直線插補(bǔ)和兩軸的圓弧插補(bǔ)。
1 插補(bǔ)控制器的總體設(shè)計(jì)
該控制器的核心部分是DDA插補(bǔ)模塊,整個(gè)插補(bǔ)模塊可分成直線插補(bǔ)模塊和圓弧插補(bǔ)模塊兩部分。每個(gè)插補(bǔ)模塊內(nèi)都由數(shù)據(jù)緩存器、插補(bǔ)積分器和位置計(jì)數(shù)器3個(gè)部分組成。下面分別介紹各個(gè)模塊的設(shè)計(jì)及仿真。
插補(bǔ)控制器具備三軸直線插補(bǔ)及兩軸圓弧插補(bǔ)的能力,2種插補(bǔ)均采用數(shù)字積分法實(shí)現(xiàn)。數(shù)字積分法(DDA)具有邏輯能力強(qiáng)、可實(shí)現(xiàn)多軸聯(lián)動(dòng)控制,且輸出脈沖均勻的特點(diǎn)。如圖1所示,插補(bǔ)控制器接收到外部處理器的控制信號(hào)和數(shù)據(jù),經(jīng)過譯碼及配置寄存器模塊的譯碼和配置后,根據(jù)需要選擇進(jìn)行直線插補(bǔ)或圓弧插補(bǔ),輸出指脈沖和方向信號(hào)。脈沖用于通過伺服電機(jī)驅(qū)動(dòng)控制伺服電機(jī)的轉(zhuǎn)動(dòng),方向信號(hào)則控制伺服電機(jī)的轉(zhuǎn)動(dòng)方向。
2 基于FPGA的模塊設(shè)計(jì)
該插補(bǔ)控制器采用Altera公司的CycloneⅢ-EP3C16Q240C8,運(yùn)用Verilog HDL完成程序設(shè)計(jì),在QuartusⅡ平臺(tái)進(jìn)行編譯、綜合及下載,運(yùn)用Modeisim進(jìn)行程序的仿真和調(diào)試,最終完成整個(gè)控制器的設(shè)計(jì)(如圖1所示)。
2.1 譯碼及配置寄存器模塊
譯碼及配置寄存器模塊主要負(fù)責(zé)譯碼和完成各寄存器間數(shù)據(jù)的分配,并且選擇需要進(jìn)行的插補(bǔ)方式。以下為各個(gè)輸入端口的定義和工作方式:cs為片選信號(hào)。
低電平有效,外部處理器選中插補(bǔ)控制器,使其進(jìn)入待命狀態(tài);rest為復(fù)位信號(hào)。低電平有效,整個(gè)控制器處于復(fù)位狀態(tài),控制器內(nèi)部各個(gè)模塊做初始化操作;wr為寫信號(hào),低電平有效,向插補(bǔ)控制器寫入需要完成插補(bǔ)的初始點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)的數(shù)據(jù);start為插補(bǔ)開始信號(hào),高電平有效,插補(bǔ)控制器開始進(jìn)行插補(bǔ);A3~A0為4位地址信號(hào),通過地址指針的形式,將處理器數(shù)據(jù)分配給插補(bǔ)模塊各軸的數(shù)據(jù)緩存器。其中,高位A3具有選擇插補(bǔ)方式的功能;A3位為“0”時(shí),插補(bǔ)控制器做三軸直線插補(bǔ);A3位為“1”時(shí),做兩軸圓弧插補(bǔ);data為16位數(shù)據(jù)總線端口。
2.2 DDA插補(bǔ)模塊
DDA插補(bǔ)模塊有直線插補(bǔ)和圓弧插補(bǔ)兩部分,兩種插補(bǔ)方式在一次插補(bǔ)過程中,只能有一種處于工作狀態(tài)。直線插補(bǔ)能夠?qū)崿F(xiàn)3個(gè)軸的脈沖輸出,完成二維或三維的直線軌跡,而圓弧插補(bǔ)是實(shí)現(xiàn)兩軸的脈沖輸出,實(shí)現(xiàn)二維的圓弧軌跡。
2.2.1 直線插補(bǔ)模塊
當(dāng)選中直線插補(bǔ)模塊時(shí),該模塊進(jìn)入工作狀態(tài)。直線插補(bǔ)模塊由數(shù)據(jù)緩存器、插補(bǔ)積分器和位置計(jì)數(shù)器3個(gè)部分組成。下面分別介紹各部分的設(shè)計(jì)及其功能。
(1)數(shù)據(jù)緩存器
數(shù)據(jù)緩存器共由6個(gè)16位寄存器構(gòu)成,它們分別存儲(chǔ)x,y,z三個(gè)軸的初始點(diǎn)坐標(biāo)值及終點(diǎn)坐標(biāo)值。數(shù)據(jù)緩存模塊將直線插補(bǔ)的數(shù)據(jù)進(jìn)行自動(dòng)加載,以便于直線插補(bǔ)積分器調(diào)用模塊內(nèi)的數(shù)據(jù)。進(jìn)行緩存的目的是為了保持?jǐn)?shù)據(jù)的流暢性,確保直線插補(bǔ)不因?yàn)閿?shù)據(jù)的轉(zhuǎn)變而出現(xiàn)中斷的情況。這樣大大地提高直線插補(bǔ)的效率,同時(shí)減少因?yàn)闀r(shí)序問題所帶來的誤差。當(dāng)積分器加載緩存器中的數(shù)據(jù)完畢以后,積分器接收到start信號(hào),積分器開始進(jìn)行數(shù)字積分直線插補(bǔ)。當(dāng)數(shù)據(jù)緩存器接收到rest信號(hào)時(shí),緩存器中所有數(shù)據(jù)全部做復(fù)位操作。
fpga相關(guān)文章:fpga是什么
伺服電機(jī)相關(guān)文章:伺服電機(jī)工作原理
評(píng)論