嵌入式FPGA熱門培訓內容之基于PC和FPGA的運動控制系統

時間:2018-12-12 17:15:27

1 主從式運動控制系統

    本系統的設計目標是實現兩軸聯動的運控系統,主要由PC機、FPGA從控板和電機驅動板三個部分構成,系統結構如圖1所示。上位機(PC)的主要功能是對系統運行過程進行控制規劃和粗插補(曲線加工規劃)。FPGA從控板的主要功能是對加工進行精插補,在此二次插補完成后通過速度補償模塊對插補的執行速度進行補償,進一步減小插補的偏差,產生直接用于驅動步進電機進行直線/圓弧運動的脈沖信號。驅動電路的作用是將脈沖控制信號進行功率放大,以直接驅動電機,同時為了提高控制精度,可以使用其細分電路對電機的步進進行1、2、4、8次的細分。

    主從模塊通過異步串行通信方式RS-232標準進行通信。上位機將一條曲線分割成一組簡單曲線(直線/圓弧)的執行序列,使用自定義的編碼方式將信息下載到FPGA上。對應地,FPGA上設計有接收并存儲這些編碼信息的功能模塊。

2 上位機主控軟件設計

    上位機只需要將一條待加工曲線分解為精插補模塊可執行的直線和圓弧的序列,以FPGA能夠識別的指令傳輸給從控板。以粗插補為目的,配套開發了相應所需的通信模塊、作為示教功能所需的命令控制模塊以及作為數控系統解決方案的G代碼生成與編譯模塊。

    本設計的上位機主控系統是在Windows 7環境下,以Visual Studio 2010作為開發工具,基于Microsoft .NET Framework 4.0開發的。該上位機主控系統主要有5個功能模塊,如圖2所示。

    這5個模塊被設計在一個Windows窗體中,不同功能設計在不同選項卡中,因此只需切換選項卡就可以輕松實現功能的切換。在窗體的右側有一列獨立于選項卡容器的對象,其功能是對串口通信進行設置,控制FPGA執行的起停以及對監視功能進行復位。上位機主控軟件視圖如圖3所示。

    粗插補是將一條曲線分解為一系列的能夠被下位機FPGA執行的直線和圓弧的小段。這樣,控制者可以在PC機上手動繪制一條待運行的曲線,調用粗插補運算函數產生相應的G代碼,再譯碼運行,實現所見即所得。

    G代碼是數控程序中的指令,也稱為G指令。在命令編譯模塊中實現的功能是將之前生成的G代碼,或者從本地文件中讀入的G代碼轉換成FPGA控制板可以識別的自定義命令序列,并發送至從控板。

3 基于FPGA的從控模塊設計

    精插補模塊以硬件方式實現,即將多軸運動控制模塊固化在FPGA中,把上位機從生成步進電機的直接驅動信號時的繁重單調的工作中解放出來,提高執行的速度和效率。其功能結構如圖4所示。 軟件實現的功能是通信協議、命令解析、精插補和速度補償等功能。

3.1 FPGA從控板硬件設計

    作為脈沖控制指令的直接生成者,FPGA從控板在整體的設計中具有核心地位。由于本設計的輸入輸出信號有兩路不共地的電壓輸入,因此電源設計與信號隔離至關重要。簡易鍵盤作為系統控制輸入,主要進行系統運行方式的選擇和控制指令輸入。對于系統中簡單的開關量,直接用LED顯示;而對于復雜的系統狀態,如執行時序狀態機的監視,則需要借助LCD進行監控。FPGA從控板需要接收來自上位機的加工指令序列,串口作為最為常用的通信接口,它能夠保證數據信息以足夠高的速度由上位機發送到FPGA從控板上,完成控制操作[3]。

3.2 基于最小偏差法的插補設計

    因為任何一條曲線都可以用直線和圓弧的小段對其進行逼近,因此,直線與圓弧是構成運動控制軌跡的基本要素,直線/圓弧插補就是運動控制器的基本功能,也是實現高精控制的基本手段。

    精插補模塊的實現原理有很多種,對于直線和圓弧插補,常用的插補原理有逐點比較法、最小偏差法、數字脈沖相乘法等。最小偏差比較法是在逐點比較法的基礎上衍生而來的,其原理是在進給之前先判定向x坐標方向或y坐標方向進給一步的偏差和向對角線進給一步的偏差(向x軸與y軸同時進給一步),應選擇偏差小的那個方向進給[4]。

3.2.1 最小偏差法插補進給規則

    最小偏差法直線插補是將直角坐標的每個象限都用45°斜線分成兩個區域,4個象限共分為8個區域,稱為8個卦限,用0~7表示在某一卦限內,直線插補根據軌跡點偏差的大小選擇沿相應軸方向或對角線方向進給。圓弧插補同樣把一個圓分成8卦限,將圓弧中心作為坐標原點,在不同的卦限,其進給方向不同[5]。如圖5所示為第1象限中0卦限和1卦限的進給示意。

3.2.2 插補模塊實現

    插補模塊在FPGA中實現的流程圖如圖6所示。

3.2.3 插補模塊的速度補償

    由于最小偏差比較法的進給規則是單次沿軸向或者沿對角線方向進給,系統實際運行時的速度會因為曲線各處斜率的不同而變化,降低了運行速度的穩定性。為了解決這個問題,可以從驅動狀態機的時鐘輸入上進行考慮。由于脈沖的產生是通過狀態機實現的,因此可以通過降低沿軸向運動時的脈沖源頻率,提高沿對角線方向的脈沖源頻率來平衡不同斜率軌跡點的運行速度[6]。

    設脈沖F單獨驅動單軸運動的速度為Vf,合成速度為V。可以畫出V/Vf隨α的變化的曲線圖,如圖7(a)所示。由圖可知,當角度α=45°時,運動速度最快。

    設進給脈沖源的頻率為3f,經過1/N分頻器分頻后再作為進給脈沖,由此可得新的V/Vf關系如下:

    則這時V/Vf對?琢的曲線圖就變為如圖7(b)所示。對比圖7(a)、(b),可知其速度穩定性有了明顯的提升。

    以上分析是插補模塊設計的理論依據,在編寫模塊時需要考慮許多實際問題。但無論是直線插補模塊還是圓弧插補模塊,其實現方式都是通過狀態機對生成脈沖的程序進行循環,根據原理推演而得到的判斷條件來產生各軸的驅動脈沖與相應旋轉方向的控制信號[7]。

4 仿真與實驗

4.1 基于Matlab仿真

    基于最小偏差法的插補模塊被封裝在FPGA中,但其算法在Matlab環境下進行了仿真,圖8所示為半徑為8個脈沖當量的運行軌跡,實現了實際軌跡與理想曲線之間的最小偏差。

    圖9所示為當插補半徑為800個脈沖當量時軌跡情況。可以看出,對于任何實際執行的圓弧指令(半徑一般大于1 000個脈沖當量),如此細小的誤差完全可以忽略不計。使用最小偏差法實現圓弧插補,流程明確,又是整數計算,特別適合基于FPGA的設計。而且準確性已非常高,所以使用最小偏差法來進行圓弧的精插補是最優方案。

4.2 兩軸聯動雕刻床測試

    實際測試平臺是一個兩軸聯動雕刻床,每個軸由步進電機驅動,經過絲杠將旋轉運動轉換為直線運動。為便于觀察,雕刻刀使用鉛筆芯代替。在上位機軟件上手繪一條待運行曲線,經過規劃處理后轉換為G代碼,并加工執行。

    圖3與圖10分別為上位機的手繪曲線與實際運行情況,由圖可見,系統能夠很完整地跟蹤手繪曲線。

? 江苏快3号码表