基于MPC07運動控制卡的步進電機控制系統研究
0 引言
隨著機電一體化的不斷發展,現代工業中運動控制系統也隨之更新換代,從PLC、單片機、運動控制卡到專業的運動控制單元,控制方法越來越先進,控制策略越來越多,并不斷誕生出一代復雜而柔性的設備和機器。
MPC07運動控制卡是基于PC機PCI總線的步進電機或數字式伺服電機的上位控制單元,它與PC機構成主從式控制結構, PC機負責人機交互界面的管理和控制系統的實時監控等方面的工作,MPC07卡完成運動控制的各種細節,譬如每個軸的運動依靠輸出脈沖和方向信號、在運動過程中能夠自動升降速的處理、以及實現回原點起保護作用的限位開關信號等。每塊MPC07卡可控制4軸步進電機或數字式伺服電機,并支持多卡共用以實現多于4個運動軸的控制。該卡是基于FPGA設計,能夠提供各種運動控制功能。
用戶可根據控制系統的要求編制人機界面,并調用MPC07運動函數庫中的指令函數,就可以開發出滿足要求而且成本低廉的多軸運動控制系統。
1 MPC07運動控制卡的原理
MPC07配備了功能強大、內容豐富的Windows驅動程序、DLL函數庫。MPC07在插補算法和運動函數的執行效率方面采用了更有效的方法,提高了插補精度、插補速度和實時性。MPC07運動函數庫用于二次開發,用戶用VisualBasic或VC + +支持Windows標準32位動態鏈接庫(DLL)調用的開發工具編制所需的用戶界面程序,并把它與MPC07運動庫鏈接起來,就可以開發出自己的多軸運動控制系統,例如:數控系統、檢測設備、自動生產線等。MPC07的運動函數庫能夠完成與運動控制有關的復雜細節:升降速計算、行程控制、多軸插補等,這樣就可以大大縮短控制系統的開發周期。
MPC07控制卡的運動控制功能主要取決于運動函數庫。運動函數庫為單軸及多軸的步進或伺服控制提供了許多運動函數:單軸運動、多軸獨立運動、多軸插補運動等等。
另外,為了配合運動控制系統的開發,還提供了間隙補償功能。圖1為MPC07控制卡在三軸步進控制系統中的應用。

2 運動控制系統工作過程
利用MPC07的動態鏈接庫(DLL ) ,開發者可以很快開發出Windows平臺下的運動控制系統。MPC07動態鏈接庫是標準的Windows 32位動態鏈接庫,選用的開發工具應支持Windows標準的32位DLL調用。
首先進行程序初始化,設置運動參數以及板卡參數,運動參數有各種運動速度、加/減速、升降速類型等,板卡參數有卡的數量、各卡上的軸數等。如果硬件設置錯誤,軟件在運行時發生錯誤,則調用失敗,需重新設置。
步進電機的直線運動:獨立運動和插補運動。
獨立運動指各控制軸的運動之間沒有聯動關系,可以是單軸運動,也可以是多軸同時按各自的速度運動。點位運動、連續運動和回原點運動都屬于獨立運動。
插補運動是指兩軸或三軸按照一定的算法進行聯動,被控軸同時啟動,并同時到達目標位置。插補運動以矢量速度運行,矢量速度分為常矢量速度和梯形矢量速度。多軸插補運動(圖2)只有線性運動,它們的運動速度由矢量速度決定,各軸的速度為矢量速度在各軸上的分量。

下面一段代碼是使兩軸以常速度作直線插補:
set_vector conspeed (2000) 設置矢量常速度為2000個脈沖;
con2line2 (1, 2000, 2, 2500) 軸l移動2000個脈沖,軸2移動2500個脈沖。
下面一段代碼是使兩軸以梯形速度作直線插補:
set_vector p rofile (500, 2000, l000)設置矢量梯形速度:低速為500個脈沖,高速為2000個脈沖,加速度為1000個脈沖;
fast_line2 (1, 2000, 2, 4000)軸I移動2000個脈沖,軸2移動4000個脈沖。
3 程序設計
下面利用VB編制圖1三軸電機的運動,運動參數包括軸號、初速度、最高速度、加速度和移動距離等,使得三軸能夠連續運動、回原點,并能夠讀取當前軸號、位置和速度。圖3為用VB編制的三軸運動功能框圖。

部分程序如下:
Op tion Exp licit
Dim AxesNum As Long軸號
Dim lowspeed AsDouble初速度
Dim highspeed AsDouble最高速度
Dim Accel AsDouble加速度
Dim DisAs Long移動距離
′*
********************************************
該函數對板卡進行設置,可在窗體加載時調用:
Private Function SetBoard ( ) As Integer
Dim Rtn As Integer
Rtn = auto_set( ) ′對板卡進行自動設置
If Rtn < = 0 Then ′若自動設置錯誤則返回0
SetBoard = - 1
Exit Function
End If
Rtn = init_board
If Rtn < 0 Then
SetBoard = - 2
Exit Function
End If
SetBoard = 0
End Function
′*
********************************************
′讀取用戶設置的運動參數:
Private Sub GetParam ( )
AxesNum =Val( txtAxesNum. Text)
lowspeed =Val( txtLowSpeed. Text)
highspeed =Val( txtHighSpeed. Text) ′
Accel =Val( txtAccel. Text)
Dis =Val ( txtDis. Text) ′
set_maxspeed AxesNum, highspeed
set_conspeed AxesNum, lowspeed ′設置常速運動參數
set_p rofile AxesNum, lowspeed, highspeed, Accel ′設置梯形速度運動參數
End Sub
讀取并顯示狀態(當前的位置和速度)
Private Sub timGetdata_Timer( )
Dim posAs Long
Dim speed AsDouble
get_abs_posAxesNum, pos ′讀取位置
labPos. Cap tion = pos ′顯示位置
speed = get_rate (AxesNum) ′讀取速度
labSpeed. Cap tion = speed ′顯示速度
End Sub
4 結束語
介紹了MPC07運動控制卡的工作原理及其應用,在VB環境下三軸步進電機的運動,當然,運動控制卡的運動函數庫還能夠完成與運動控制有關的復雜細節,比如升降速直線插補,梯形速度直線插補等,這樣就能夠實現更完善的運動控制系統。
文章版權歸西部工控xbgk所有,未經許可不得轉載。