文獻標識碼: A
文章編號: 0258-7998(2011)04-0130-03
運動控制系統(tǒng)被廣泛地運用于各個領域,。傳統(tǒng)的運動控制系統(tǒng)設計有基于PC的中央控制方式和基于微控制器的嵌入式控制方式等,。基于PC的運動控制方式,,由于其采用多任務操作系統(tǒng),,對處理器的分時復用會導致在運行高速度和高控制頻率的系統(tǒng)時,實時性得不到保證,。而基于微控制器的運動控制系統(tǒng),,由于處理器資源有限,對功能復雜系統(tǒng)的開發(fā)帶來很大難度,,往往系統(tǒng)中的某個子功能模塊就占用了整塊芯片的資源,。
隨著計算機技術(shù)與嵌入式技術(shù)的日益發(fā)展,,出現(xiàn)了各種架構(gòu)互異的運控系統(tǒng)設計方案,其目標都在于對系統(tǒng)的高速度與高精度的不斷追求,?;谶@兩種技術(shù),本文提出了一種基于PC+FPGA的多功能主從式運動控制結(jié)構(gòu),,實現(xiàn)運控系統(tǒng)的分工,。既滿足了系統(tǒng)的功能多樣性需求,又保證了高頻控制脈沖的生成以及系統(tǒng)運行的實時性,,同時還降低了系統(tǒng)維護與升級的難度[1-2],。
1 主從式運動控制系統(tǒng)
本系統(tǒng)的設計目標是實現(xiàn)兩軸聯(lián)動的運控系統(tǒng),主要由PC機,、FPGA從控板和電機驅(qū)動板三個部分構(gòu)成,,系統(tǒng)結(jié)構(gòu)如圖1所示。上位機(PC)的主要功能是對系統(tǒng)運行過程進行控制規(guī)劃和粗插補(曲線加工規(guī)劃),。FPGA從控板的主要功能是對加工進行精插補,,在此二次插補完成后通過速度補償模塊對插補的執(zhí)行速度進行補償,進一步減小插補的偏差,,產(chǎn)生直接用于驅(qū)動步進電機進行直線/圓弧運動的脈沖信號,。驅(qū)動電路的作用是將脈沖控制信號進行功率放大,以直接驅(qū)動電機,,同時為了提高控制精度,,可以使用其細分電路對電機的步進進行1、2,、4,、8次的細分。
主從模塊通過異步串行通信方式RS-232標準進行通信,。上位機將一條曲線分割成一組簡單曲線(直線/圓弧)的執(zhí)行序列,,使用自定義的編碼方式將信息下載到FPGA上。對應地,,F(xiàn)PGA上設計有接收并存儲這些編碼信息的功能模塊,。
2 上位機主控軟件設計
上位機只需要將一條待加工曲線分解為精插補模塊可執(zhí)行的直線和圓弧的序列,以FPGA能夠識別的指令傳輸給從控板,。以粗插補為目的,,配套開發(fā)了相應所需的通信模塊、作為示教功能所需的命令控制模塊以及作為數(shù)控系統(tǒng)解決方案的G代碼生成與編譯模塊,。
本設計的上位機主控系統(tǒng)是在Windows 7環(huán)境下,,以Visual Studio 2010作為開發(fā)工具,基于Microsoft .NET Framework 4.0開發(fā)的,。該上位機主控系統(tǒng)主要有5個功能模塊,,如圖2所示,。
這5個模塊被設計在一個Windows窗體中,不同功能設計在不同選項卡中,因此只需切換選項卡就可以輕松實現(xiàn)功能的切換,。在窗體的右側(cè)有一列獨立于選項卡容器的對象,,其功能是對串口通信進行設置,控制FPGA執(zhí)行的起停以及對監(jiān)視功能進行復位,。上位機主控軟件視圖如圖3所示,。
粗插補是將一條曲線分解為一系列的能夠被下位機FPGA執(zhí)行的直線和圓弧的小段。這樣,,控制者可以在PC機上手動繪制一條待運行的曲線,調(diào)用粗插補運算函數(shù)產(chǎn)生相應的G代碼,,再譯碼運行,實現(xiàn)所見即所得。
G代碼是數(shù)控程序中的指令,,也稱為G指令,。在命令編譯模塊中實現(xiàn)的功能是將之前生成的G代碼,或者從本地文件中讀入的G代碼轉(zhuǎn)換成FPGA控制板可以識別的自定義命令序列,,并發(fā)送至從控板,。
3 基于FPGA的從控模塊設計
精插補模塊以硬件方式實現(xiàn),即將多軸運動控制模塊固化在FPGA中,,把上位機從生成步進電機的直接驅(qū)動信號時的繁重單調(diào)的工作中解放出來,,提高執(zhí)行的速度和效率。其功能結(jié)構(gòu)如圖4所示,。
軟件實現(xiàn)的功能是通信協(xié)議,、命令解析、精插補和速度補償?shù)裙δ堋?br/>3.1 FPGA從控板硬件設計
作為脈沖控制指令的直接生成者,,F(xiàn)PGA從控板在整體的設計中具有核心地位,。由于本設計的輸入輸出信號有兩路不共地的電壓輸入,因此電源設計與信號隔離至關重要,。簡易鍵盤作為系統(tǒng)控制輸入,,主要進行系統(tǒng)運行方式的選擇和控制指令輸入。對于系統(tǒng)中簡單的開關量,,直接用LED顯示,;而對于復雜的系統(tǒng)狀態(tài),如執(zhí)行時序狀態(tài)機的監(jiān)視,則需要借助LCD進行監(jiān)控,。FPGA從控板需要接收來自上位機的加工指令序列,,串口作為最為常用的通信接口,,它能夠保證數(shù)據(jù)信息以足夠高的速度由上位機發(fā)送到FPGA從控板上,,完成控制操作[3]。
3.2 基于最小偏差法的插補設計
因為任何一條曲線都可以用直線和圓弧的小段對其進行逼近,,因此,,直線與圓弧是構(gòu)成運動控制軌跡的基本要素,,直線/圓弧插補就是運動控制器的基本功能,也是實現(xiàn)高精控制的基本手段,。
精插補模塊的實現(xiàn)原理有很多種,,對于直線和圓弧插補,常用的插補原理有逐點比較法,、最小偏差法,、數(shù)字脈沖相乘法等。最小偏差比較法是在逐點比較法的基礎上衍生而來的,其原理是在進給之前先判定向x坐標方向或y坐標方向進給一步的偏差和向?qū)蔷€進給一步的偏差(向x軸與y軸同時進給一步),,應選擇偏差小的那個方向進給[4],。
3.2.1 最小偏差法插補進給規(guī)則
最小偏差法直線插補是將直角坐標的每個象限都用45°斜線分成兩個區(qū)域,4個象限共分為8個區(qū)域,,稱為8個卦限,,用0~7表示在某一卦限內(nèi),直線插補根據(jù)軌跡點偏差的大小選擇沿相應軸方向或?qū)蔷€方向進給,。圓弧插補同樣把一個圓分成8卦限,,將圓弧中心作為坐標原點,在不同的卦限,,其進給方向不同[5],。如圖5所示為第1象限中0卦限和1卦限的進給示意。
3.2.2 插補模塊實現(xiàn)
插補模塊在FPGA中實現(xiàn)的流程圖如圖6所示,。
3.2.3 插補模塊的速度補償
由于最小偏差比較法的進給規(guī)則是單次沿軸向或者沿對角線方向進給,,系統(tǒng)實際運行時的速度會因為曲線各處斜率的不同而變化,降低了運行速度的穩(wěn)定性,。為了解決這個問題,,可以從驅(qū)動狀態(tài)機的時鐘輸入上進行考慮。由于脈沖的產(chǎn)生是通過狀態(tài)機實現(xiàn)的,,因此可以通過降低沿軸向運動時的脈沖源頻率,,提高沿對角線方向的脈沖源頻率來平衡不同斜率軌跡點的運行速度[6]。
設脈沖F單獨驅(qū)動單軸運動的速度為Vf,,合成速度為V,。可以畫出V/Vf隨α的變化的曲線圖,,如圖7(a)所示,。由圖可知,當角度α=45°時,,運動速度最快,。
設進給脈沖源的頻率為3f,經(jīng)過1/N分頻器分頻后再作為進給脈沖,,由此可得新的V/Vf關系如下:
則這時V/Vf對?琢的曲線圖就變?yōu)槿鐖D7(b)所示,。對比圖7(a),、(b),可知其速度穩(wěn)定性有了明顯的提升,。
以上分析是插補模塊設計的理論依據(jù),,在編寫模塊時需要考慮許多實際問題。但無論是直線插補模塊還是圓弧插補模塊,,其實現(xiàn)方式都是通過狀態(tài)機對生成脈沖的程序進行循環(huán),,根據(jù)原理推演而得到的判斷條件來產(chǎn)生各軸的驅(qū)動脈沖與相應旋轉(zhuǎn)方向的控制信號[7]。
4 仿真與實驗
4.1 基于Matlab仿真
基于最小偏差法的插補模塊被封裝在FPGA中,,但其算法在Matlab環(huán)境下進行了仿真,,圖8所示為半徑為8個脈沖當量的運行軌跡,實現(xiàn)了實際軌跡與理想曲線之間的最小偏差,。
圖9所示為當插補半徑為800個脈沖當量時軌跡情況,。可以看出,,對于任何實際執(zhí)行的圓弧指令(半徑一般大于1 000個脈沖當量),,如此細小的誤差完全可以忽略不計。使用最小偏差法實現(xiàn)圓弧插補,,流程明確,,又是整數(shù)計算,特別適合基于FPGA的設計,。而且準確性已非常高,,所以使用最小偏差法來進行圓弧的精插補是最優(yōu)方案。
4.2 兩軸聯(lián)動雕刻床測試
實際測試平臺是一個兩軸聯(lián)動雕刻床,,每個軸由步進電機驅(qū)動,,經(jīng)過絲杠將旋轉(zhuǎn)運動轉(zhuǎn)換為直線運動。為便于觀察,,雕刻刀使用鉛筆芯代替,。在上位機軟件上手繪一條待運行曲線,經(jīng)過規(guī)劃處理后轉(zhuǎn)換為G代碼,,并加工執(zhí)行,。
圖3與圖10分別為上位機的手繪曲線與實際運行情況,由圖可見,,系統(tǒng)能夠很完整地跟蹤手繪曲線,。
參考文獻
[1] 吳星明,陳偉海,,于守謙,,等.基于PCI總線的主從式多軸控制器開發(fā)[J].北京航空航天大學學報,2008,34(1):112-116.
[2] 習俊梅,,廖高華.開放式PC型多軸運動控制系統(tǒng)[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] 叢爽,,李澤湘.使用運動控制技術(shù)[M].北京:電子工業(yè)出版社,2006.
[5] 李恩林.數(shù)控系統(tǒng)插補原理通論[M].北京:國防工業(yè)出版社,,2007.
[6] 閆華汪,,木蘭,王保升.基于FPGA的最小偏差法插補器設計與實現(xiàn)[J]. 機械設計與制造,,2008(12):14-16.
[7] 吳振凱.調(diào)頻步進信號回波的速度補償[J].制導與引信,,2010,31(1):37-42.