李一雄,劉建群,陳新度,高偉強,王彩芳
(廣東工業(yè)大學 機電工程學院,廣州 510006)
?
Qt環(huán)境下基于PMAC運動控制器的控制系統(tǒng)開發(fā)與應用*
李一雄,劉建群,陳新度,高偉強,王彩芳
(廣東工業(yè)大學 機電工程學院,廣州 510006)
研究了用Qt工具設計開發(fā)的基于IPC+PMAC運動控制器的控制系統(tǒng)。首先設計了系統(tǒng)的硬件平臺,介紹了IPC與下位機PMAC卡的Ethernet接口通訊方式,然后通過主界面操作完成了對各軸的運動控制,并實現(xiàn)了軟面板上軸的手動、急停等功能,最后在實驗平臺上對控制系統(tǒng)的單軸運動進行了誤差補償,有效提高了系統(tǒng)的定位精度。實踐證明該系統(tǒng)具有很強的擴展性,能滿足工業(yè)生產(chǎn)要求。
控制系統(tǒng);PMAC;誤差補償
PMAC是美國Delta Tau公司遵循開放式系統(tǒng)體系結(jié)構(gòu)標準開發(fā)的開放式可編程多軸運動控制器,可處理運動控制、邏輯控制、資源管理及上位機交互工作。一個PMAC擁有獨立的DSP數(shù)據(jù)處理器,可以最多同時控制32個伺服軸,進行聯(lián)動或者插補運算,并且開放通信端口、存儲結(jié)構(gòu)在內(nèi)的大部分地址空間,增加了用戶使用的靈活性。本文基于PMAC運動控制器,研究在Qt開發(fā)環(huán)境中實現(xiàn)四軸聯(lián)動的CNC控制系統(tǒng)的開發(fā)。Qt是一個跨平臺的C++圖形用戶界面庫,支持Windows、Linux、Max OSX和handheld平臺,擁有豐富的窗口部件集,具有面向?qū)ο蟆⒁子跀U展等特點[1]。Qt信號和槽機制代替了MFC的消息映射,獨立于所有的GUI事件循環(huán),為用戶開發(fā)界面提供了更為簡單的通訊方式。
本控制系統(tǒng)是由IPC(工控機)、多軸運動控制卡(PMAC)、伺服驅(qū)動器、直線電機、激光尺,共同構(gòu)成一個開放性很強的全閉環(huán)控制系統(tǒng),本次軟件系統(tǒng)的開發(fā)利用Qt豐富的GUI設計了符合實際需求和用戶審美的人機交互界面,并通過實驗平臺的測試,利用PMAC的軟件補償功能提高了整個控制系統(tǒng)的定位精度,減小了定位誤差。
本系統(tǒng)采用“IPC+PMAC運動控制器”的模式,IPC與Turbo PMAC Clipper采用Ethernet 接口方式進行通訊,PMAC與伺服驅(qū)動器的連接采用ACC-8ES- 4通道模擬量輸出接口板,對驅(qū)動器輸入模擬信號,來控制電機,并接收從驅(qū)動器反饋回來的脈沖信號。選擇Kollmorgen的AKD-P00606-NBAN-0000型號驅(qū)動器和直線電機,RENISHAW激光尺,硬件連接原理圖如圖1所示。
圖1 硬件連接原理圖
在開發(fā)中,利用Qt開發(fā)的上位界面與下位機的Turbo PMAC連接,在上位機發(fā)送指令后,通過判斷、反饋來將軸的各種運動狀態(tài)顯示到界面上。Turbo PMAC提供了一個封裝庫函數(shù)的組件PcommServer[2],用Qt的dumpcpp工具在Window XP系統(tǒng)的命令提示符界面訪問生成PmacDevice.h和PmacDevice.cpp的文件,生成的庫函數(shù)里面的參數(shù)類型則都是Qt參數(shù)類型,然后將文件導入到工程中,在生成的.pro文件中添加CONFIG += qaxcontainer連接QAxContainer模塊,最后在程序開頭添加“using namespace PCOMMSERVERLib”,并定義 PCOMMSERVERLib::PmacDevice *Pmac指針,然后用指針來調(diào)用庫函數(shù)。在運動控制的初始化函數(shù)中依次用PcommServer提供的SelectDevice()和Open()函數(shù)來選擇并打開運動控制器。
在上位機與PMAC完成通訊后,需要對PMAC中相關變量進行初始化。利用PcommServer的庫函數(shù)DownLoad()函數(shù),下載配置文件,配置文件中包含對I變量的賦值以及特定的運動寄存器、軸寄存器等的M變量及其地址[2]。
在下位機運動控制的實現(xiàn)包括在界面中對各軸的運行狀態(tài)的控制和檢測。本次設計的控制系統(tǒng)可以實現(xiàn)通過PMAC卡來控制X、Y、Z、B四軸的運動,在運動控制時主要實時更新的參數(shù)有各軸在坐標系中的實際位置、剩余進給、進給速度、主軸轉(zhuǎn)速、進給速度倍率、主軸轉(zhuǎn)數(shù)倍率、工件毛坯參數(shù)等,對于這些數(shù)據(jù)用Qt中一個繼承于QThread的MonitorThread類對PMAC的運行狀態(tài)進行監(jiān)控,并將這些數(shù)據(jù)保存到一個新建的AllData類中。
3.1 運動程序設計
運動控制部分是整個系統(tǒng)的核心部分,在本系統(tǒng)中,主要分為上位機運動控制部分和下位機運動程序設計。
3.1.1 上位機運動控制
控制系統(tǒng)的運動控制模塊包含了程序的下載、G代碼的轉(zhuǎn)換、語法檢測、運行、暫停等功能。本系統(tǒng)的G代碼程序編寫格式以華中數(shù)控的數(shù)控G代碼程序格式為標準,在加工運行之前將標準的G代碼程序轉(zhuǎn)換為PMAC可運行的加工代碼。在PMAC運動控制器初始化后,可通過上位機操作完成對軸的運動控制。
在軟件設計中,為了增強系統(tǒng)開發(fā)的可擴展性以及方便后續(xù)開發(fā),利用了虛函數(shù)的多態(tài)性將接口與實現(xiàn)分離,用一個NVG_MotionControl的類包含所有基本的運動控制的函數(shù),然后創(chuàng)建一個繼承于該類的PMAC_MotionControl類實現(xiàn)具體的運動控制,然后在PMAC_MotionControl類中實現(xiàn)軸的各種運動狀態(tài)控制的響應函數(shù)。代碼如下:
class NVG_MotionControl
{
public:
AllData *data;
NVG_MotionControl(AllData *allData); ∥將所有參數(shù)傳進來
virtual boolprogramRun(QString Gcode) = 0; ∥程序運行
virtual boolinitial() = 0; ∥初始化
virtual boolcloseMotionControl() = 0; ∥關閉運動控制器
virtual boolsystemStop() = 0; ∥停止運動控制器
virtual boolstatusGetItems() = 0; ∥狀態(tài)獲取
virtual boolprogramFeedHold(bool feedholdEnabled) = 0; ∥進給量保持
virtual boolprogramStart() = 0; ∥ 程序開始
virtual boolprogramPause() = 0; ∥ 程序暫停
virtual boolprogramLoad(QString filePath) = 0; ∥程序下載
virtual boolprogramStop() = 0; ∥程序停止運行
virtual boolisRunning() = 0; ∥檢測是否在加工
................
};
通過在上位機上實時監(jiān)控獲取軸運動狀態(tài)數(shù)據(jù)并更新,運動狀態(tài)監(jiān)控可以通過QT提供的QThread類來實現(xiàn)。在程序中,重載QThread::run()函數(shù),在函數(shù)中,每隔采樣時間用emit()函數(shù)發(fā)送一個monitorupdate()信號并調(diào)用NVG_MotionControl的成員函數(shù)statusGetItems(),statusGetItems()函數(shù)中利用PMAC提供的GetResponse()或GetResponseEx()函數(shù)發(fā)送指令并返回各種運動狀態(tài),系統(tǒng)的運動狀態(tài)監(jiān)控界面如圖2所示。
圖2 運動狀態(tài)監(jiān)控界面
3.1.2 下位機運動程序設計
圖4 軟控制面板功能圖
數(shù)控機床用數(shù)字化的信息來實現(xiàn)自動控制,將加工零件有關的信息如切削加工的工藝參數(shù)和各種輔助信息用規(guī)定的文字、數(shù)字和符號組成代碼,由數(shù)控裝置經(jīng)過分析處理后發(fā)出相對應的信號和指令控制機床進行自動加工。
Turbo PMAC的運動程序語言結(jié)合了RS-274標準G代碼機床的編程語言,允許機床加工程序把G、M、T和D代碼作為子程序調(diào)用,在運動程序中遇到首字母為G且有數(shù)字的時候,就將這個命令當做運動程序固定緩沖區(qū)PROG 10n0上的調(diào)用[3-5]。另外選擇M代碼使用PROG 10n1,T代碼使用PROG 10n2,D代碼使用PROG 10n3,大多數(shù)情況下打開緩沖區(qū)PROG 1000,PROG 1001,PROG 1002,PROG 1003就可以滿足需要。
本控制系統(tǒng)對于G代碼的處理包括G代碼的語法檢測、編輯、轉(zhuǎn)換、執(zhí)行等過程,G代碼處理流程圖如圖3所示。
圖3 G代碼處理流程圖
3.2 軟控制面板的手動功能
PMAC擁有64個非同步執(zhí)行的PLC程序(32個已編譯的和32個未編譯的),PLC程序下載后將I5=2,前臺PLC關,后臺PLC開,PLC程序會在后臺不斷循環(huán)掃描。PLC大部分的功能依靠觸發(fā)已定義的M、P變量的狀態(tài),用IF、ENDIF、ELSE等判斷語句,在觸發(fā)成功后用command命令完成相應的指令,然后再將M或P變量的狀態(tài)置為初始值。
手動控制的前進方式有兩種,點動和定距移動。點動可以使機床在安全行程內(nèi)自由移動;定距移動可以使機床推進一段用戶預先設定的距離。當定距離移動按鈕按下時,可選擇相對或絕對的方式進給指定的距離。軟控制面板設置旋鈕區(qū)、手動按鈕區(qū)來實現(xiàn)各軸的慢快速移動、定距離移動、回零、急停、倍率調(diào)整等功能,軟控制面板功能圖如圖4所示。
在軟件設計時,軟控制面板上的各個按鈕的響應函數(shù)都封裝在一個繼承于QMainWindow的MenualModel類中,當按鈕按下或釋放時,通過發(fā)送信號來響應槽函數(shù)。Qt的信號槽機制可以使多個信號響應同一個槽函數(shù),將X、Y、Z、B四軸的點動響應和定距移動響應函數(shù)分別集中在兩個槽函數(shù)內(nèi),響應兩種不同的運動方式。
定位精度的高低用定位誤差的大小來衡量。為了滿足高速度和高精度的要求,PMAC提供了包括1維(1D)和2維(2D)的螺距補償(絲杠補償)、間隙誤差補償及力矩補償功能。在執(zhí)行補償功能時將來自激光尺反饋的直線電機位置信息按照PMAC補償表的格式制成補償表下載到運動控制器里,PMAC通過取得源電機即取得補償數(shù)據(jù)的參考電機的位置,在表內(nèi)找到匹配的位置,從而將誤差補償值加到目標電機即需要補償?shù)碾姍C上。補償是在伺服環(huán)(伺服周期)內(nèi)被執(zhí)行的,以獲得最大的速度和最高的精度。
以螺距補償為例,根據(jù)測定的螺距累積誤差,按照1/16脈沖單位計算應該補償?shù)牧坎⑥D(zhuǎn)換為螺距補償表的格式,在程序中定義螺距補償表后將補償表下載到PMAC卡,DEFINE COMP命令創(chuàng)建表,并將其分配給需要補償?shù)碾姍C,然后使補償表生效[6]。每個所測點補償?shù)拿}沖數(shù)根據(jù)公式(1)計算得出,其中ni是補償?shù)拿}沖數(shù),Xi是補償誤差值,單位為毫米。
ni=(16×Xi)/脈沖當量
(1)
在實驗平臺上測試X軸補償前后的定位精度,以單行程1D螺距補償表為例,用激光尺反饋回位置信息,補償?shù)挠行谐淌?00mm,補償如下:
#1->10000X;定義電機1控制X軸,10000個脈沖走1mm
DEFINE COMP 10,3200000 ;320mm的行程,設置16個補償點
-31 -75 -163 -209 -219 -254
-359 -410 -431 -448 -545 -601
-618 -649 -704 01維補償,目標電機和源電機相同,補償前和補償后的定位誤差分別如圖5,圖6所示。
圖5 補償前的定位誤差
圖6 補償后的定位誤差
通過補償后定位誤差從4μ減小到0.6μ,精度明顯提高。為了更好的提高定位精度,減小定位誤差,可以多次往返運動,將在所測點每次測得的補償值根據(jù)公式(2)求平均值。
(2)
然后根據(jù)公式(3),公式(4)求得軸線單向定位精度,根據(jù)公式(5)計算正向標準差Si↑,負向標準差計算類似[7],其中n為測量總次數(shù),i為測量次數(shù),j為測量的點。
(3)
(4)
(5)
本文研究了在Qt平臺上基于IPC+PMAC運動控制器的控制系統(tǒng)的開發(fā)。通過上位機的操作實現(xiàn)了對各軸的運動控制,并進行了運動仿真,在實驗平臺上利用激光干涉儀測得的補償值對系統(tǒng)的單軸運動進行了補償,有效地提高了系統(tǒng)的定位精度。通過實驗證明本系統(tǒng)的開發(fā)能滿足工業(yè)生產(chǎn)要求。
[1]JasminBlanchette,MarkSummerfield著,閆峰欣,曾泉人,張志強等譯.C++GUIQT4編程[M]. 北京:電子工業(yè)出版社,2012.
[2] 郭鼓,李樹軍,徐永新等.一種基于PMAC的開放式數(shù)控系統(tǒng)的設計與實現(xiàn)[J].制造業(yè)自動化,2012,34(2):106-110.
[3] 白海清,彭玉海,何寧.基于PMAC的數(shù)控系統(tǒng)軟件開發(fā)研究[J].機床與液壓,2007,35(2):59-61.
[4] 劉恒娟.基于PMAC的開放式數(shù)控系統(tǒng)的研制[J].組合機床與自動化加工技術, 2004(10):84-86.
[5] 賈旭,盧曉紅.基于PMAC的微銑床數(shù)控系統(tǒng)中G代碼編譯研究[J].組合機床與自動化加工技術, 2012(3):104-107.
[6] 張生芳,王永青,康仁科.基于PMAC開放式數(shù)控系統(tǒng)的定位精度控制[J].組合機床與自動化加工技術,2008(3):38-41.
[7] 歐陽航空.基于PMAC的精密定位控制系統(tǒng)的研究[D]. 上海:上海大學,2005.
(編輯 李秀敏)
Development and Application of the Control System Based on the PMAC Motion Controller Under Qt Environment
LI Yi-xiong ,LIU Jian-qun,CHEN Xin-du,GAO Wei-qiang,WANG Cai-fang
(School of Electromechanical Engineering, Guangdong University of Technology, Guangzhou 510006, China)
The control system based on PMAC motion controller was developed with Qt development tools . Firstly, this paper designed the hardware platform and introduced the means of communication between the IPC(Industrial Personal Computer) and the PMAC motion controller. Then, the motion control of each axis was completed through the main interface operation, and the jogging moves ,emergency stop and other functions were achieved through the soft panel .Finally,error compensation effectively improved the precision of the system in the experimental platform.It has been proved that the system is highly scalable and can meet the requirement of industrial production.
control system; PMAC; error compensation
1001-2265(2014)01-0114-03
10.13462/j.cnki.mmtamt.2014.01.032
2013-05-20
廣東省引進創(chuàng)新科研團隊計劃資助項目(201001G0104781202),廣東省數(shù)控一代項目(2012B011300046, 2012B011300070), 廣東省教育部產(chǎn)學研結(jié)合項目(2012B091100023)
李一雄(1987—),男,湖北仙桃人,廣東工業(yè)大學碩士研究生,研究方向為數(shù)控技術,(E-mail)liyixiong1987@163.com。
TH165;TG65
A