郭慧晶
(山西機(jī)電職業(yè)技術(shù)學(xué)院,山西 長(zhǎng)治 046011)
隨著新型先進(jìn)制造裝備產(chǎn)業(yè)的快速發(fā)展,運(yùn)動(dòng)控制系統(tǒng)的發(fā)展經(jīng)歷了從直流到交流,從開(kāi)環(huán)到閉環(huán),從模擬到數(shù)字,直到基于PC的伺服控制網(wǎng)絡(luò)(PC-Basedsscnet)系統(tǒng)和基于網(wǎng)絡(luò)的運(yùn)動(dòng)控制系統(tǒng)的發(fā)展過(guò)程[1]。而中國(guó)市場(chǎng)對(duì)運(yùn)動(dòng)控制的需求與日俱增,運(yùn)動(dòng)控制技術(shù)作為相關(guān)工業(yè)自動(dòng)化技術(shù)的核心,起著非常重要的作用,該技術(shù)適用于激光加工、裝配生產(chǎn)、電子加工、機(jī)器人以及數(shù)控機(jī)床等方面。
固高科技是國(guó)內(nèi)首家專(zhuān)業(yè)運(yùn)動(dòng)控制核心技術(shù)平臺(tái)研發(fā)公司,為裝備制造業(yè)的發(fā)展做出了巨大貢獻(xiàn)。本文用到的是固高公司生產(chǎn)的GTS-800-PV-PCIe 運(yùn)動(dòng)控制器,其核心是由DSP和FPGA組成,可以實(shí)現(xiàn)高性能的控制計(jì)算,提供標(biāo)準(zhǔn)的 PCIe 總線接口[2],可以實(shí)現(xiàn)高性能的控制計(jì)算和高速的點(diǎn)位運(yùn)動(dòng),提供Visual C++,Visual Basic,C#,VB.NET 等函數(shù)庫(kù)和 Windows 動(dòng)態(tài)鏈接庫(kù)。
本文利用Visual Studio 2019開(kāi)發(fā)軟件,用C++語(yǔ)言程序?qū)崿F(xiàn)平面籃球圖的MFC界面設(shè)計(jì)以及運(yùn)動(dòng)軌跡的設(shè)定。
需要繪制的平面籃球圖如圖1所示,要求建立相對(duì)于機(jī)械原點(diǎn)坐標(biāo)系的加工坐標(biāo)系,然后以速度50Pulse/ms速度移動(dòng)XY軸,使激光束沿下圖軌跡移動(dòng),盡量使軌跡平滑。絲杠導(dǎo)程為10 mm。
圖1 平面籃球圖
坐標(biāo)位置如下表1所示,單位為毫米,其中2、5、7為圓心位置。
表1 坐標(biāo)位置表 單位:mm
圓弧插補(bǔ)是給出兩個(gè)端點(diǎn)間的插補(bǔ)數(shù)字信息,以一定的算法計(jì)算出逼近實(shí)際圓弧的點(diǎn)群,控制道具沿這些點(diǎn)運(yùn)動(dòng),加工畫(huà)出圓弧曲線[3]。
為完成對(duì)X軸、Y軸和Z軸的正負(fù)限位以及原點(diǎn)的控制,需要在運(yùn)動(dòng)控制平臺(tái)上將X軸、Y軸和Z軸端子按照接線要求進(jìn)行電氣接線。
除此之外,還需要按照要求完成軸-驅(qū)動(dòng)器-編碼器的電氣接線。
MFC是Microsoft Foundation Classes微軟基礎(chǔ)類(lèi)庫(kù)的簡(jiǎn)稱(chēng),封裝了許多的C++類(lèi)庫(kù)[4]。
根據(jù)任務(wù)要求,需要完成平面籃球圖的設(shè)計(jì),運(yùn)動(dòng)控制平臺(tái)通過(guò)Visual Studio 2019軟件的程序完成初始化后,清除狀態(tài),之后對(duì)X軸、Y軸和Z軸進(jìn)行伺服使能,然后X軸、Y軸和Z軸分別完成回零操作,打開(kāi)激光筆后,進(jìn)行平面籃球圖的繪制,繪制完成后,關(guān)閉伺服使能。綜上所述,MFC界面設(shè)計(jì)需要用到初始化、伺服使能、回零、軸運(yùn)動(dòng)、下使能、清除狀態(tài)、軸號(hào)的選擇的功能,應(yīng)對(duì)其分配對(duì)應(yīng)按鈕控件和文本框。
MFC界面的設(shè)計(jì)流程為:創(chuàng)建新項(xiàng)目,選擇MFC應(yīng)用,在應(yīng)用程序類(lèi)型中選擇基于對(duì)話框,完成后進(jìn)入對(duì)話框,將配置文件復(fù)制到項(xiàng)目文件夾,打開(kāi)Visual Studio 2019軟件在頭文件處添加現(xiàn)有項(xiàng),打開(kāi)源文件進(jìn)行聲明,選擇初始化、伺服使能、回零、軸運(yùn)動(dòng)、下使能、清除狀態(tài)按鈕控件,并對(duì)對(duì)應(yīng)按鈕進(jìn)行功能程序編寫(xiě),軸號(hào)的選擇需要在MFC界面中選擇靜態(tài)文本框和實(shí)例編輯框。平面籃球圖的MFC界面設(shè)計(jì)如圖2所示。
圖2 圓弧插補(bǔ)運(yùn)動(dòng)——平面籃球圖的MFC界面
基于實(shí)際工作流程,把平面籃球圖繪制的工作步驟分解成了三個(gè)部分:外圓的繪制、1-7-3圓弧段的繪制和4-7-6圓弧段的繪制。
程序流程圖中,最核心的環(huán)節(jié)是圓弧插補(bǔ)運(yùn)動(dòng)。具體的程序流程圖如圖3所示。
圖3 圓弧插補(bǔ)運(yùn)動(dòng)——平面籃球圖的程序流程圖
首先完成系統(tǒng)的初始化,包括:運(yùn)動(dòng)控制器的打開(kāi)、運(yùn)動(dòng)控制器的復(fù)位、運(yùn)動(dòng)控制器的配置及消除隔周的報(bào)警和限位。具體程序段如下:
voidClineDlg::init()
{
short sRtn;
sRtn = GT_Open();
sRtn = GT_Reset();
sRtn = GT_LoadConfig("GTS800.cfg");
sRtn = GT_ClrSts(1,4);
}
打開(kāi)伺服使能,可通過(guò)sRtn = GT_AxisOn(gAxis); 程序?qū)崿F(xiàn)。
回零運(yùn)動(dòng)需要分別對(duì)X軸、Y軸和Z軸進(jìn)行回零,具體程序如下:
voidClineDlg::zeroPos()
{
short sRtn;
short gAxis = 1;
THomeStatus tHomeSts;
THomePrm tHomePrm;
gAxis = getAxis();
sRtn = GT_ClrSts(gAxis);
sRtn = GT_ZeroPos(gAxis);
sRtn = GT_AxisOn(gAxis);
//設(shè)置 Smart Home 回原點(diǎn)參數(shù)
sRtn = GT_GetHomePrm(gAxis, &tHomePrm);
tHomePrm.mode = 11;
tHomePrm.moveDir = 1;
tHomePrm.edge = 0;
tHomePrm.velHigh = 30;
tHomePrm.velLow = 5;
tHomePrm.acc = 0.3;
tHomePrm.dec = 0.3;
tHomePrm.pad2[0] = 1;
tHomePrm.pad2[1] = 1;
tHomePrm.pad2[2] = 1;
tHomePrm.searchHomeDistance = 0;
tHomePrm.searchIndexDistance = 10000;
tHomePrm.escapeStep = 2000;
sRtn = GT_GoHome(gAxis, &tHomePrm);
do
{
sRtn = GT_GetHomeStatus(gAxis, &tHomeSts);
} while (tHomeSts.run);
sRtn = GT_ZeroPos(gAxis);
}
圓弧插補(bǔ)運(yùn)動(dòng)需要完成兩步操作:建立坐標(biāo)系和緩存區(qū)存入數(shù)據(jù)。運(yùn)動(dòng)控制器在初始狀態(tài)下,所有軸處于單軸運(yùn)動(dòng)模式,兩個(gè)坐標(biāo)系無(wú)效,因此在插補(bǔ)運(yùn)動(dòng)前,必須首先建立坐標(biāo)系,可以通過(guò)GT_SetCrdPrm 指令完成坐標(biāo)系的建立。
運(yùn)動(dòng)控制器插補(bǔ)運(yùn)動(dòng)模式采用緩存區(qū)運(yùn)動(dòng)方式,然后,啟動(dòng)插補(bǔ)運(yùn)動(dòng),運(yùn)動(dòng)控制器會(huì)依次執(zhí)行插補(bǔ)數(shù)據(jù),直到所有的插補(bǔ)數(shù)據(jù)全部運(yùn)動(dòng)完成[5]。向緩存區(qū)寫(xiě)入大圓的圓弧插補(bǔ)數(shù)據(jù),具體指令如下:
sRtn = GT_ArcXYC(1, 10325, 96364, 54610, -30825, 0, 50, 0.1, 0, 0);
1-7-3段圓弧和4-7-6段圓弧的圓弧插補(bǔ)指令為:
//1-7-3圓弧
sRtn = GT_ArcXYR(1, 120418, 97238, 65000, 1, 50, 0.1, 0, 0);
// 4-7-6圓弧
sRtn = GT_ArcXYR(1, 9938, 31508, 65000, 1, 50, 0.1, 0, 0);
需要指出的是:圓弧插補(bǔ)指令有兩種描述方法:半徑描述法和圓心坐標(biāo)描述法。使用半徑描述法時(shí),可以通過(guò)指令 GT_ArcXYR、GT_ArcYZR、GT_ArcZXR來(lái)描述,需要輸入圓弧終點(diǎn)坐標(biāo)和半徑值,但是這種方法不能畫(huà)整圓;圓心坐標(biāo)描述法通過(guò)指令 GT_ArcXYC、GT_ArcYZC、GT_ArcZXC 來(lái)實(shí)現(xiàn),需要輸入圓弧插補(bǔ)終點(diǎn)坐標(biāo)和圓弧插補(bǔ)的圓心相對(duì)于起點(diǎn)位置的偏移量。
最后通過(guò)sRtn = GT_AxisOff(gAxis);指令關(guān)閉使能。
程序代碼檢查無(wú)誤后,對(duì)程序進(jìn)行編譯并調(diào)試,點(diǎn)擊對(duì)應(yīng)控制按鈕對(duì)運(yùn)動(dòng)控制平臺(tái)進(jìn)行控制,經(jīng)檢驗(yàn),可以完成平面籃球圖的繪制。
本文基于固高運(yùn)動(dòng)控制平臺(tái),利用Visual Studio 2019軟件實(shí)現(xiàn)了平面籃球圖的MFC界面設(shè)計(jì)和繪制。此外,還可通過(guò)直線插補(bǔ)運(yùn)動(dòng)和圓弧插補(bǔ)運(yùn)動(dòng)完成復(fù)雜圖形的運(yùn)動(dòng)軌跡,為運(yùn)動(dòng)控制技術(shù)的進(jìn)一步發(fā)展提供便利。