《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于PC和FPGA的運(yùn)動(dòng)控制系統(tǒng)
基于PC和FPGA的運(yùn)動(dòng)控制系統(tǒng)
來(lái)源:電子技術(shù)應(yīng)用2011年第4期
賴曉豐, 劉敬猛, 顧天宇, 李善鋒
北京航空航天大學(xué) 自動(dòng)化科學(xué)與電氣工程學(xué)院, 北京 100191
摘要: 針對(duì)運(yùn)動(dòng)控制系統(tǒng)對(duì)高速度與高精度的要求,基于二次插補(bǔ)原理及最小偏差插補(bǔ)法,提出一種以PC機(jī)為主控制器、FPGA為從控制器的主從式運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì)。主控制器的功能是對(duì)系統(tǒng)運(yùn)行過(guò)程進(jìn)行控制規(guī)劃和粗插補(bǔ);從控制器的功能是對(duì)加工進(jìn)行精插補(bǔ)和執(zhí)行速度控制。該系統(tǒng)在Matlab環(huán)境下進(jìn)行了插補(bǔ)仿真,并在兩軸數(shù)控雕刻床上進(jìn)行了加工測(cè)試,驗(yàn)證了系統(tǒng)的可靠性與高精度。加工精度可達(dá)0.01 mm,為高精度、高速插補(bǔ)數(shù)控系統(tǒng)提供了有效的解決方案。
中圖分類號(hào): TP24
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)04-0130-03
Motion control system based on PC and FPGA
Lai Xiaofeng, Liu Jingmeng, Gu Tianyu, Li Shanfeng
School of Automation Science and Electrical Engineering, Beihang University, Beijing 100191, China
Abstract: In allusion to the demand for high precision and high speed from the motion control system, based on the twice interpolating algorithm and the least deviation interpolation, a design for master-slave motion control system based on PC as the master controller and FPGA as the slave controller is presented. The function of the master controller is control programme and first interpolation, and the function of the slave controller is second interpolation and velocity compensation. This system has been simulated in Matlab, and tested on the two-axes carving machine. The result shows the system is high reliable and high precise, the machining accuracy is 0.01 mm, and present a perfect solution for high-precision and high-velocity interpolating CNC system.
Key words : motion control; FPGA; least deviation interpolation; velocity compensation


    運(yùn)動(dòng)控制系統(tǒng)被廣泛地運(yùn)用于各個(gè)領(lǐng)域。傳統(tǒng)的運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)有基于PC的中央控制方式和基于微控制器的嵌入式控制方式等?;赑C的運(yùn)動(dòng)控制方式,由于其采用多任務(wù)操作系統(tǒng),對(duì)處理器的分時(shí)復(fù)用會(huì)導(dǎo)致在運(yùn)行高速度和高控制頻率的系統(tǒng)時(shí),實(shí)時(shí)性得不到保證。而基于微控制器的運(yùn)動(dòng)控制系統(tǒng),由于處理器資源有限,對(duì)功能復(fù)雜系統(tǒng)的開發(fā)帶來(lái)很大難度,往往系統(tǒng)中的某個(gè)子功能模塊就占用了整塊芯片的資源。
    隨著計(jì)算機(jī)技術(shù)與嵌入式技術(shù)的日益發(fā)展,出現(xiàn)了各種架構(gòu)互異的運(yùn)控系統(tǒng)設(shè)計(jì)方案,其目標(biāo)都在于對(duì)系統(tǒng)的高速度與高精度的不斷追求。基于這兩種技術(shù),本文提出了一種基于PC+FPGA的多功能主從式運(yùn)動(dòng)控制結(jié)構(gòu),實(shí)現(xiàn)運(yùn)控系統(tǒng)的分工。既滿足了系統(tǒng)的功能多樣性需求,又保證了高頻控制脈沖的生成以及系統(tǒng)運(yùn)行的實(shí)時(shí)性,同時(shí)還降低了系統(tǒng)維護(hù)與升級(jí)的難度[1-2]。
1 主從式運(yùn)動(dòng)控制系統(tǒng)
    本系統(tǒng)的設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)兩軸聯(lián)動(dòng)的運(yùn)控系統(tǒng),主要由PC機(jī)、FPGA從控板和電機(jī)驅(qū)動(dòng)板三個(gè)部分構(gòu)成,系統(tǒng)結(jié)構(gòu)如圖1所示。上位機(jī)(PC)的主要功能是對(duì)系統(tǒng)運(yùn)行過(guò)程進(jìn)行控制規(guī)劃和粗插補(bǔ)(曲線加工規(guī)劃)。FPGA從控板的主要功能是對(duì)加工進(jìn)行精插補(bǔ),在此二次插補(bǔ)完成后通過(guò)速度補(bǔ)償模塊對(duì)插補(bǔ)的執(zhí)行速度進(jìn)行補(bǔ)償,進(jìn)一步減小插補(bǔ)的偏差,產(chǎn)生直接用于驅(qū)動(dòng)步進(jìn)電機(jī)進(jìn)行直線/圓弧運(yùn)動(dòng)的脈沖信號(hào)。驅(qū)動(dòng)電路的作用是將脈沖控制信號(hào)進(jìn)行功率放大,以直接驅(qū)動(dòng)電機(jī),同時(shí)為了提高控制精度,可以使用其細(xì)分電路對(duì)電機(jī)的步進(jìn)進(jìn)行1、2、4、8次的細(xì)分。

    主從模塊通過(guò)異步串行通信方式RS-232標(biāo)準(zhǔn)進(jìn)行通信。上位機(jī)將一條曲線分割成一組簡(jiǎn)單曲線(直線/圓弧)的執(zhí)行序列,使用自定義的編碼方式將信息下載到FPGA上。對(duì)應(yīng)地,F(xiàn)PGA上設(shè)計(jì)有接收并存儲(chǔ)這些編碼信息的功能模塊。
2 上位機(jī)主控軟件設(shè)計(jì)
    上位機(jī)只需要將一條待加工曲線分解為精插補(bǔ)模塊可執(zhí)行的直線和圓弧的序列,以FPGA能夠識(shí)別的指令傳輸給從控板。以粗插補(bǔ)為目的,配套開發(fā)了相應(yīng)所需的通信模塊、作為示教功能所需的命令控制模塊以及作為數(shù)控系統(tǒng)解決方案的G代碼生成與編譯模塊。
    本設(shè)計(jì)的上位機(jī)主控系統(tǒng)是在Windows 7環(huán)境下,以Visual Studio 2010作為開發(fā)工具,基于Microsoft .NET Framework 4.0開發(fā)的。該上位機(jī)主控系統(tǒng)主要有5個(gè)功能模塊,如圖2所示。

    這5個(gè)模塊被設(shè)計(jì)在一個(gè)Windows窗體中,不同功能設(shè)計(jì)在不同選項(xiàng)卡中,因此只需切換選項(xiàng)卡就可以輕松實(shí)現(xiàn)功能的切換。在窗體的右側(cè)有一列獨(dú)立于選項(xiàng)卡容器的對(duì)象,其功能是對(duì)串口通信進(jìn)行設(shè)置,控制FPGA執(zhí)行的起停以及對(duì)監(jiān)視功能進(jìn)行復(fù)位。上位機(jī)主控軟件視圖如圖3所示。

    粗插補(bǔ)是將一條曲線分解為一系列的能夠被下位機(jī)FPGA執(zhí)行的直線和圓弧的小段。這樣,控制者可以在PC機(jī)上手動(dòng)繪制一條待運(yùn)行的曲線,調(diào)用粗插補(bǔ)運(yùn)算函數(shù)產(chǎn)生相應(yīng)的G代碼,再譯碼運(yùn)行,實(shí)現(xiàn)所見(jiàn)即所得。
    G代碼是數(shù)控程序中的指令,也稱為G指令。在命令編譯模塊中實(shí)現(xiàn)的功能是將之前生成的G代碼,或者從本地文件中讀入的G代碼轉(zhuǎn)換成FPGA控制板可以識(shí)別的自定義命令序列,并發(fā)送至從控板。
3 基于FPGA的從控模塊設(shè)計(jì)
    精插補(bǔ)模塊以硬件方式實(shí)現(xiàn),即將多軸運(yùn)動(dòng)控制模塊固化在FPGA中,把上位機(jī)從生成步進(jìn)電機(jī)的直接驅(qū)動(dòng)信號(hào)時(shí)的繁重單調(diào)的工作中解放出來(lái),提高執(zhí)行的速度和效率。其功能結(jié)構(gòu)如圖4所示。

    軟件實(shí)現(xiàn)的功能是通信協(xié)議、命令解析、精插補(bǔ)和速度補(bǔ)償?shù)裙δ堋?br/>3.1 FPGA從控板硬件設(shè)計(jì)
    作為脈沖控制指令的直接生成者,F(xiàn)PGA從控板在整體的設(shè)計(jì)中具有核心地位。由于本設(shè)計(jì)的輸入輸出信號(hào)有兩路不共地的電壓輸入,因此電源設(shè)計(jì)與信號(hào)隔離至關(guān)重要。簡(jiǎn)易鍵盤作為系統(tǒng)控制輸入,主要進(jìn)行系統(tǒng)運(yùn)行方式的選擇和控制指令輸入。對(duì)于系統(tǒng)中簡(jiǎn)單的開關(guān)量,直接用LED顯示;而對(duì)于復(fù)雜的系統(tǒng)狀態(tài),如執(zhí)行時(shí)序狀態(tài)機(jī)的監(jiān)視,則需要借助LCD進(jìn)行監(jiān)控。FPGA從控板需要接收來(lái)自上位機(jī)的加工指令序列,串口作為最為常用的通信接口,它能夠保證數(shù)據(jù)信息以足夠高的速度由上位機(jī)發(fā)送到FPGA從控板上,完成控制操作[3]。
3.2 基于最小偏差法的插補(bǔ)設(shè)計(jì)
    因?yàn)槿魏我粭l曲線都可以用直線和圓弧的小段對(duì)其進(jìn)行逼近,因此,直線與圓弧是構(gòu)成運(yùn)動(dòng)控制軌跡的基本要素,直線/圓弧插補(bǔ)就是運(yùn)動(dòng)控制器的基本功能,也是實(shí)現(xiàn)高精控制的基本手段。
    精插補(bǔ)模塊的實(shí)現(xiàn)原理有很多種,對(duì)于直線和圓弧插補(bǔ),常用的插補(bǔ)原理有逐點(diǎn)比較法、最小偏差法、數(shù)字脈沖相乘法等。最小偏差比較法是在逐點(diǎn)比較法的基礎(chǔ)上衍生而來(lái)的,其原理是在進(jìn)給之前先判定向x坐標(biāo)方向或y坐標(biāo)方向進(jìn)給一步的偏差和向?qū)蔷€進(jìn)給一步的偏差(向x軸與y軸同時(shí)進(jìn)給一步),應(yīng)選擇偏差小的那個(gè)方向進(jìn)給[4]。
3.2.1 最小偏差法插補(bǔ)進(jìn)給規(guī)則
    最小偏差法直線插補(bǔ)是將直角坐標(biāo)的每個(gè)象限都用45°斜線分成兩個(gè)區(qū)域,4個(gè)象限共分為8個(gè)區(qū)域,稱為8個(gè)卦限,用0~7表示在某一卦限內(nèi),直線插補(bǔ)根據(jù)軌跡點(diǎn)偏差的大小選擇沿相應(yīng)軸方向或?qū)蔷€方向進(jìn)給。圓弧插補(bǔ)同樣把一個(gè)圓分成8卦限,將圓弧中心作為坐標(biāo)原點(diǎn),在不同的卦限,其進(jìn)給方向不同[5]。如圖5所示為第1象限中0卦限和1卦限的進(jìn)給示意。

3.2.2 插補(bǔ)模塊實(shí)現(xiàn)
    插補(bǔ)模塊在FPGA中實(shí)現(xiàn)的流程圖如圖6所示。

3.2.3 插補(bǔ)模塊的速度補(bǔ)償
    由于最小偏差比較法的進(jìn)給規(guī)則是單次沿軸向或者沿對(duì)角線方向進(jìn)給,系統(tǒng)實(shí)際運(yùn)行時(shí)的速度會(huì)因?yàn)榍€各處斜率的不同而變化,降低了運(yùn)行速度的穩(wěn)定性。為了解決這個(gè)問(wèn)題,可以從驅(qū)動(dòng)狀態(tài)機(jī)的時(shí)鐘輸入上進(jìn)行考慮。由于脈沖的產(chǎn)生是通過(guò)狀態(tài)機(jī)實(shí)現(xiàn)的,因此可以通過(guò)降低沿軸向運(yùn)動(dòng)時(shí)的脈沖源頻率,提高沿對(duì)角線方向的脈沖源頻率來(lái)平衡不同斜率軌跡點(diǎn)的運(yùn)行速度[6]。
    設(shè)脈沖F單獨(dú)驅(qū)動(dòng)單軸運(yùn)動(dòng)的速度為Vf,合成速度為V??梢援嫵鯲/Vf隨α的變化的曲線圖,如圖7(a)所示。由圖可知,當(dāng)角度α=45°時(shí),運(yùn)動(dòng)速度最快。

    設(shè)進(jìn)給脈沖源的頻率為3f,經(jīng)過(guò)1/N分頻器分頻后再作為進(jìn)給脈沖,由此可得新的V/Vf關(guān)系如下:
  


    則這時(shí)V/Vf對(duì)?琢的曲線圖就變?yōu)槿鐖D7(b)所示。對(duì)比圖7(a)、(b),可知其速度穩(wěn)定性有了明顯的提升。
    以上分析是插補(bǔ)模塊設(shè)計(jì)的理論依據(jù),在編寫模塊時(shí)需要考慮許多實(shí)際問(wèn)題。但無(wú)論是直線插補(bǔ)模塊還是圓弧插補(bǔ)模塊,其實(shí)現(xiàn)方式都是通過(guò)狀態(tài)機(jī)對(duì)生成脈沖的程序進(jìn)行循環(huán),根據(jù)原理推演而得到的判斷條件來(lái)產(chǎn)生各軸的驅(qū)動(dòng)脈沖與相應(yīng)旋轉(zhuǎn)方向的控制信號(hào)[7]。
4 仿真與實(shí)驗(yàn)
4.1 基于Matlab仿真

    基于最小偏差法的插補(bǔ)模塊被封裝在FPGA中,但其算法在Matlab環(huán)境下進(jìn)行了仿真,圖8所示為半徑為8個(gè)脈沖當(dāng)量的運(yùn)行軌跡,實(shí)現(xiàn)了實(shí)際軌跡與理想曲線之間的最小偏差。

    圖9所示為當(dāng)插補(bǔ)半徑為800個(gè)脈沖當(dāng)量時(shí)軌跡情況??梢钥闯?,對(duì)于任何實(shí)際執(zhí)行的圓弧指令(半徑一般大于1 000個(gè)脈沖當(dāng)量),如此細(xì)小的誤差完全可以忽略不計(jì)。使用最小偏差法實(shí)現(xiàn)圓弧插補(bǔ),流程明確,又是整數(shù)計(jì)算,特別適合基于FPGA的設(shè)計(jì)。而且準(zhǔn)確性已非常高,所以使用最小偏差法來(lái)進(jìn)行圓弧的精插補(bǔ)是最優(yōu)方案。

4.2 兩軸聯(lián)動(dòng)雕刻床測(cè)試
    實(shí)際測(cè)試平臺(tái)是一個(gè)兩軸聯(lián)動(dòng)雕刻床,每個(gè)軸由步進(jìn)電機(jī)驅(qū)動(dòng),經(jīng)過(guò)絲杠將旋轉(zhuǎn)運(yùn)動(dòng)轉(zhuǎn)換為直線運(yùn)動(dòng)。為便于觀察,雕刻刀使用鉛筆芯代替。在上位機(jī)軟件上手繪一條待運(yùn)行曲線,經(jīng)過(guò)規(guī)劃處理后轉(zhuǎn)換為G代碼,并加工執(zhí)行。
    圖3與圖10分別為上位機(jī)的手繪曲線與實(shí)際運(yùn)行情況,由圖可見(jiàn),系統(tǒng)能夠很完整地跟蹤手繪曲線。

參考文獻(xiàn)
[1] 吳星明,陳偉海,于守謙,等.基于PCI總線的主從式多軸控制器開發(fā)[J].北京航空航天大學(xué)學(xué)報(bào),2008,34(1):112-116.
[2] 習(xí)俊梅,廖高華.開放式PC型多軸運(yùn)動(dòng)控制系統(tǒng)[J].機(jī)床與液壓,2008,36(11):91-93.
[3] Chen Weihai, Wen Zhaojin, Xu Zhiyue. Implementation of  2-axis circular interpolation for a FPGA-based 4-axis motion controller[C].2007 IEEE International Conference on Control and Automation, 2007:600-605.
[4] 叢爽,李澤湘.使用運(yùn)動(dòng)控制技術(shù)[M].北京:電子工業(yè)出版社,2006.
[5] 李恩林.?dāng)?shù)控系統(tǒng)插補(bǔ)原理通論[M].北京:國(guó)防工業(yè)出版社,2007.
[6] 閆華汪,木蘭,王保升.基于FPGA的最小偏差法插補(bǔ)器設(shè)計(jì)與實(shí)現(xiàn)[J]. 機(jī)械設(shè)計(jì)與制造,2008(12):14-16.
[7] 吳振凱.調(diào)頻步進(jìn)信號(hào)回波的速度補(bǔ)償[J].制導(dǎo)與引信,2010,31(1):37-42.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。