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