999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PMAC的大容量G代碼加載及同步顯示技術(shù)研究*

2014-03-08 02:09:51黎良田
關(guān)鍵詞:程序

黎良田

基于PMAC的大容量G代碼加載及同步顯示技術(shù)研究*

黎良田

(深圳職業(yè)技術(shù)學(xué)院 機(jī)電工程學(xué)院,廣東 深圳 518055)

開(kāi)放式數(shù)控系統(tǒng)軟件用戶(hù)界面的開(kāi)發(fā),除了一些實(shí)時(shí)數(shù)據(jù)的采集與顯示外,在數(shù)控加工中往往需要進(jìn)行超大容量G代碼加載及G代碼的同步高亮顯示.本文針對(duì)用于薄壁回轉(zhuǎn)體零件測(cè)量與加工的專(zhuān)用設(shè)備開(kāi)發(fā)的基于PMAC開(kāi)放式數(shù)控系統(tǒng)的實(shí)際需要,提出利用分割法進(jìn)行超大容量G代碼程序加載的新方法,同時(shí)研究了加工過(guò)程中G代碼程序的實(shí)時(shí)同步高亮顯示和進(jìn)度顯示技術(shù),使系統(tǒng)得到了優(yōu)化,提高了系統(tǒng)的穩(wěn)定性.

PMAC;開(kāi)放式數(shù)控系統(tǒng);G代碼加載;同步顯示

在工業(yè)生產(chǎn)中,一些特殊零部件的測(cè)量與加工對(duì)設(shè)備及控制系統(tǒng)有特殊的要求,通用的設(shè)備及數(shù)控系統(tǒng)無(wú)法滿(mǎn)足其特殊的加工需要,需要開(kāi)發(fā)專(zhuān)用設(shè)備及專(zhuān)用的數(shù)控系統(tǒng)來(lái)完成.開(kāi)放式數(shù)控系統(tǒng)由于重構(gòu)性好,開(kāi)發(fā)成本低,得到了廣泛應(yīng)用[1-2].在開(kāi)放式數(shù)控系統(tǒng)結(jié)構(gòu)中,以“PC+運(yùn)動(dòng)控制卡”模式應(yīng)用最為廣泛[3].美國(guó)DELTA TAU公司的PMAC作為全球技術(shù)領(lǐng)先的多軸運(yùn)動(dòng)控制卡在工業(yè)上被大量使用.然而,PMAC提供給用戶(hù)的是指令式的后臺(tái)軟件,用戶(hù)需要根據(jù)特定的系統(tǒng)功能要求開(kāi)發(fā)出專(zhuān)用界面軟件.在用戶(hù)界面軟件與PMAC的通訊中需要解決超大容量數(shù)據(jù)處理與G代碼加載,以及用戶(hù)界面的同步顯示等技術(shù)問(wèn)題.

1 PMAC與上位機(jī)的通訊方式

PMAC是美國(guó)DELTA TAU公司生產(chǎn)的多軸運(yùn)動(dòng)控制卡,它與主機(jī)之間的通訊主要采用2種方式:一種是總線通訊方式;另一種是利用DPRAM方式.其中,以PC總線通訊為主,主機(jī)通過(guò)設(shè)置PMAC上的跳線到指定的地址上去找到PMAC,PC總線為PMAC提供數(shù)字電源等信號(hào);而DPRAM則主要用來(lái)與PMAC進(jìn)行快速數(shù)據(jù)通訊和命令通訊[4].DPRAM通過(guò)一塊空白的共享存儲(chǔ)空間為主機(jī)與總線通訊提供了一條高速的通訊路徑,當(dāng)每秒鐘有超過(guò)大約100條數(shù)據(jù)信息在控制器和主機(jī)之間傳輸時(shí),DPRAM就會(huì)被利用.在進(jìn)行數(shù)據(jù)存取時(shí)不需經(jīng)過(guò)通訊口發(fā)送命令或等待響應(yīng),因而能夠在實(shí)時(shí)狀態(tài)下將位置數(shù)據(jù)、程序等信息快速地下載到PMAC中,同時(shí)快速地獲取PMAC中的系統(tǒng)狀態(tài)信息(包括伺服系統(tǒng)狀態(tài)信息、后臺(tái)常量狀態(tài)信息等).用戶(hù)還可以用PMAC中的M變量和主機(jī)的指針變量來(lái)指定DPRAM中使用的寄存器,來(lái)實(shí)現(xiàn)自定義的通訊功能[5].

2 超大容量G代碼加載技術(shù)

2.1PMAC運(yùn)動(dòng)程序加載問(wèn)題

PMAC為用戶(hù)提供了許多程序緩沖器來(lái)存儲(chǔ)運(yùn)動(dòng)程序代碼,包括256個(gè)常規(guī)運(yùn)動(dòng)程序緩沖器(motion program buffer),8個(gè)循環(huán)運(yùn)動(dòng)程序緩沖器(rotary motion program buffer)(每一個(gè)只能對(duì)應(yīng)一個(gè)坐標(biāo)系),32個(gè)PLC程序緩沖器(PLC program buffer)[6].然而,PMAC提供給運(yùn)動(dòng)程序的共享空間卻是有限的,PMAC只提供地址為$1800-$BBFF段內(nèi)存空間作為用戶(hù)緩沖器存儲(chǔ)空間,其中用戶(hù)程序存儲(chǔ)總?cè)萘恐挥?52 kB(相當(dāng)于能容納編譯前的txt文件約300 kB左右),而且單個(gè)運(yùn)動(dòng)程序緩沖器的最大容量只有50 kB左右.對(duì)于超大容量的運(yùn)動(dòng)程序,無(wú)法一次性全部加載到一個(gè)運(yùn)動(dòng)程序緩沖器中去,因而需要在程序中巧妙設(shè)計(jì)運(yùn)動(dòng)程序的下載和執(zhí)行,保證程序能夠正確下載和連續(xù)執(zhí)行,加工過(guò)程能夠連續(xù)、有序、穩(wěn)定地進(jìn)行.

2.2 大容量G代碼程序加載的解決方法

要解決大容量運(yùn)動(dòng)程序加載問(wèn)題可以有兩種方法:一種是利用循環(huán)運(yùn)動(dòng)程序緩沖器(rot buffer)下載代碼,另一種是把運(yùn)動(dòng)程序文件分割成小容量文件下載到常規(guī)運(yùn)動(dòng)程序緩沖器中.

PMAC提供的循環(huán)運(yùn)動(dòng)程序緩沖器是專(zhuān)門(mén)為了執(zhí)行大于PMAC可利用的存儲(chǔ)容量的運(yùn)動(dòng)程序而設(shè)計(jì)的.它允許在運(yùn)動(dòng)程序執(zhí)行期間對(duì)程序進(jìn)行同時(shí)下載,下載到同一個(gè)rot緩沖器中,覆蓋已經(jīng)執(zhí)行完的運(yùn)動(dòng)程序行.每一個(gè)坐標(biāo)系只能擁有一個(gè)循環(huán)緩沖器,每個(gè)循環(huán)緩沖器的最大容量不超過(guò)約100 kB,因而可以把不超過(guò)循環(huán)緩沖器容量的前部分運(yùn)動(dòng)程序先下載到循環(huán)緩沖器中,開(kāi)始執(zhí)行運(yùn)動(dòng)程序后,再利用定時(shí)器把剩余部分程序按行陸續(xù)下載到循環(huán)緩沖器中,下載程序時(shí)先利用CString 對(duì)象的成員函數(shù)Find(),以及Left(),Mid()截取運(yùn)動(dòng)程序文件中的程序行,然后利用PCOMM32.DLL庫(kù)函數(shù)PmacDPRAsciiStrToRot()把程序行下載到循環(huán)緩沖器中,利用&1R指令執(zhí)行運(yùn)動(dòng)程序,如圖1所示.

利用循環(huán)緩沖器下載和執(zhí)行程序,再加上后面敘述的加工代碼同步高亮跟蹤顯示技術(shù),由于涉及到大量字符操作,占用內(nèi)存較大,加重了系統(tǒng)的運(yùn)算負(fù)擔(dān),也容易出現(xiàn)不穩(wěn)定因素,因而本文專(zhuān)門(mén)設(shè)計(jì)了另一種更加高效、可靠的文件下載與執(zhí)行方法,即利用分割法把運(yùn)動(dòng)程序文件分離分割下載.

圖1 利用循環(huán)緩沖器下載執(zhí)行G代碼流程圖

圖2 利用分割法加載執(zhí)行G代碼流程圖

該方法實(shí)質(zhì)是把用于用戶(hù)界面顯示的G代碼文件與用于PMAC執(zhí)行的G代碼文件分離,同時(shí)把用于PMAC執(zhí)行的G代碼文件分割成一定大小的小文件下載到常規(guī)運(yùn)動(dòng)程序緩沖器中.在后處理結(jié)束生成G代碼時(shí),同時(shí)生成2類(lèi)文件:一類(lèi)是用于顯示在用戶(hù)界面程序RichTextBox控件中的txt格式文件,它是可以讓用戶(hù)自命名的單個(gè)文件,它的大小不受限制.另一類(lèi)是用于下載到PMAC運(yùn)動(dòng)程序緩沖器中用來(lái)執(zhí)行加工的pmc格式文件,在內(nèi)容上與前面生成的文件中的代碼是完全一致的,但格式有差異,它根據(jù)總代碼多少被分割成若干個(gè)文件,每個(gè)文件的大小是50 k,可以通過(guò)函數(shù)GetCompressedFileSize(pFileName, lpFileSizeHigh)來(lái)判斷文件大小.由于運(yùn)動(dòng)程序內(nèi)存空間總?cè)萘恐荒苋菁{約300 kB的txt文件,因而即使分割成小文件,一次最多也只能加載6個(gè)文件,通過(guò)函數(shù)PmacDownload()或PmacDownloadFile()分別把程序文件下載到第1~6個(gè)緩沖器中,當(dāng)G代碼超過(guò)300KB,分割文件數(shù)超過(guò)6個(gè)時(shí),需要設(shè)定一個(gè)定時(shí)器,在一個(gè)運(yùn)動(dòng)程序執(zhí)行完,開(kāi)始執(zhí)行下一個(gè)程序的同時(shí),把剩余文件中連接最后下載的程序的下一個(gè)程序下載到已執(zhí)行完的程序所在的緩沖器中,覆蓋已執(zhí)行完的程序.由于PMAC會(huì)根據(jù)程序文件中的指令“OPNE PROG i CLEAR”中的變量i來(lái)確定下載到哪個(gè)緩沖器中,因而在寫(xiě)運(yùn)動(dòng)程序文件的時(shí)候該語(yǔ)句中的i必須按7取模加1,也就是說(shuō)到第七個(gè)文件的時(shí)候該語(yǔ)句中的i應(yīng)該重新變?yōu)?,即當(dāng)?shù)?個(gè)運(yùn)動(dòng)程序執(zhí)行完后,把第7個(gè)運(yùn)動(dòng)程序下載到第1個(gè)緩沖器中,覆蓋已執(zhí)行完的第1個(gè)運(yùn)動(dòng)程序,后面的以此類(lèi)推.兩個(gè)程序之間的連接可以通過(guò)PMAC的變量M180(運(yùn)動(dòng)程序運(yùn)行標(biāo)志位)來(lái)實(shí)現(xiàn).定義一個(gè)50 ms的定時(shí)器,在運(yùn)動(dòng)開(kāi)始執(zhí)行后實(shí)時(shí)讀取M180值,當(dāng)M180為0時(shí)說(shuō)明運(yùn)動(dòng)已結(jié)束,此時(shí)馬上發(fā)“&1BmR”(m為下一段程序號(hào))指令來(lái)接著執(zhí)行下一個(gè)運(yùn)動(dòng)程序文件.這個(gè)過(guò)程的間隔不超過(guò)50ms,因而運(yùn)動(dòng)仍是連續(xù)的,不存在連接的停頓問(wèn)題.如圖2所示.

3 G代碼同步高亮顯示技術(shù)

在數(shù)控加工過(guò)程中,系統(tǒng)除了能對(duì)加工過(guò)程的參數(shù)、狀態(tài)等進(jìn)行實(shí)時(shí)監(jiān)控外,所開(kāi)發(fā)的面向?qū)ο笥脩?hù)界面還應(yīng)具有對(duì)加工代碼和進(jìn)程的同步跟蹤顯示功能,來(lái)使得加工過(guò)程更加“透明化”、“可視化”,幫助用戶(hù)能夠更清晰地獲得當(dāng)前的加工進(jìn)程和運(yùn)動(dòng)程序正在執(zhí)行的指令行等信息.

一種方法可以通過(guò)PMAC提供的命令“LIST PE”來(lái)獲得G代碼當(dāng)前執(zhí)行行的地址和清單等有關(guān)信息.這種方法的優(yōu)點(diǎn)是簡(jiǎn)單,易于編程.然而,該方法只能在用戶(hù)界面上顯示G代碼當(dāng)前執(zhí)行行的信息,用戶(hù)無(wú)法從界面中看到加工程序文件的所有G代碼,同時(shí)也不便于用來(lái)顯示加工進(jìn)程的進(jìn)度條的編程.

為了能獲得G代碼當(dāng)前執(zhí)行行的信息的同時(shí)還能讓用戶(hù)從界面上看到包括已執(zhí)行完和待執(zhí)行的所有加工代碼,以及加工進(jìn)程,本文采用了另一種G代碼同步高亮顯示方法來(lái)實(shí)現(xiàn).PMAC提供的同步M變量可以允許用戶(hù)將其定義為一個(gè)DPRAM的寄存器,因而可以通過(guò)M變量的操作讓用戶(hù)可以自定義運(yùn)動(dòng)程序中的G代碼行號(hào),并且可以通過(guò)實(shí)時(shí)讀取M變量值來(lái)獲得G代碼當(dāng)前執(zhí)行行的行號(hào).由于本文是把運(yùn)動(dòng)程序文件分離下載的,因而就可以在PMAC執(zhí)行的運(yùn)動(dòng)程序文件中使用同步M變量來(lái)定義行號(hào).首先自定義一個(gè)M變量,如M900→D:$0D53,然后在生成G代碼文件時(shí),將用于PMAC執(zhí)行的運(yùn)動(dòng)程序文件的每一行G代碼后面加上M900的賦值語(yǔ)句,把該行的行號(hào)按順序賦給M900.當(dāng)程序執(zhí)行時(shí),會(huì)在該行代碼實(shí)際執(zhí)行的開(kāi)始將這個(gè)行號(hào)值寫(xiě)到M900所在的DPRAM寄存器中.此時(shí)通過(guò)實(shí)時(shí)查詢(xún)M900變量的值即可知道G代碼當(dāng)前執(zhí)行行的行號(hào).同時(shí)在運(yùn)動(dòng)程序文件生成時(shí),就可以通過(guò)最后一行代碼的M900的值得到整個(gè)程序G代碼的總行數(shù).至此就已完全具備了實(shí)現(xiàn)G代碼同步高亮顯示的基本條件.

程序設(shè)計(jì)思路是先把用于顯示的程序文件加載到RichTextBox控件中,開(kāi)始執(zhí)行程序后,在定時(shí)器中實(shí)時(shí)查詢(xún)變量M900的值以獲得當(dāng)前執(zhí)行行的行號(hào),然后用Find(),Left()等方法獲得當(dāng)前執(zhí)行行的G代碼范圍,然后用API函數(shù)SendMessage()來(lái)使當(dāng)前執(zhí)行行背景高亮顯示,并且把當(dāng)前執(zhí)行行行號(hào)除以總行數(shù)來(lái)得到加工進(jìn)度.m_fM800是一個(gè)中間變量,每次更新后都把m_M800值賦給m_fM800,當(dāng)高亮顯示的代碼行仍在執(zhí)行時(shí),M800值未改變,m_M800-m_fM800為0,不進(jìn)入if()表達(dá)式語(yǔ)句中,高亮顯示行不變化;當(dāng)下一行代碼開(kāi)始執(zhí)行時(shí),M800值更新(加1),此時(shí)m_M800-m_fM800>0條件成立,進(jìn)入if()表達(dá)式語(yǔ)句中,執(zhí)行下一行代碼的高亮顯示.以下是同步跟蹤定時(shí)器中所編寫(xiě)的高亮顯示和進(jìn)度條顯示部分程序代碼(其效果如圖3左側(cè)文本框及進(jìn)度條顯示所示):

圖3 開(kāi)放式數(shù)控系統(tǒng)用戶(hù)軟件主界面

void CMGMView::OnTimer(UINT nIDEvent)

{

……

DeviceDPRVarBufRead(GetDocument()->m_dwDevice,m_handle,0,m_data);

m_M800=DeviceDPRLFixed(m_data,1.0); //讀M800值經(jīng)數(shù)據(jù)轉(zhuǎn)換后賦給變量

if(m_M800-m_fM800>0) //m_fM800是一個(gè)中間轉(zhuǎn)換變量,初值為0

{

int num=m_GetText.Find(" "); //m_GetText為存放控件中字符串的變量

CString LeftText=m_GetText.Left(num); //截取當(dāng)G代碼前執(zhí)行行內(nèi)容

CString RightText=m_GetText.Mid(num+1); //截取剩余G代碼內(nèi)容

m_GetText=RightText;

m_RichTextCtl1.SetFocus();

::SendMessage((HWND)m_RichTextCtl1.GetHwnd(), EM_SETSEL,m_nump,m_nump+num+1);

//讓當(dāng)前執(zhí)行行高亮顯示

m_nump=m_nump+num+1;

k=n_pi%13;

if(m_M800>1 && k==0)

::SendMessage((HWND)m_RichTextCtl1.GetHwnd(), EM_LINESCROLL,0,13); //滾動(dòng)條滾動(dòng)

13行,即翻1頁(yè)

n_pi+=1; //計(jì)算代碼執(zhí)行到第幾行了

if(n_pi==(n_i-1)) //如果到了最后一行

{

KillTimer(IDT_READ_TIMER);

m_Proctl.SetPos(100);

m_PgrTxt.SetText("100%");

m_PgrTxt.SetTextColor(RGB(0,0,255));

UpdateData(FALSE);

break;

}

CString m_Spos;

int pos=(n_pi*100/(n_i-1)); //根據(jù)行數(shù)設(shè)置當(dāng)前加工進(jìn)度

m_Proctl.SetPos(pos);

m_Spos.Format("%d%%",pos); //進(jìn)度條顯示

m_PgrTxt.SetText(m_Spos); //進(jìn)度百分?jǐn)?shù)同步顯示

m_PgrTxt.SetTextColor(RGB(0,0,255));

UpdateData(FALSE);

m_fM800=m_M800; //M800值更新后將值賦給中間變量m_fM800

}

break;

}

[1] 郭鼓,李樹(shù)軍,徐永新,等.一種基于PMAC的開(kāi)放式數(shù)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].制造業(yè)自動(dòng)化,2012,34(4):106-110.

[2] 賈旭,盧曉紅,王鑫鑫,等.基于PMAC的微銑床數(shù)控系統(tǒng)中G代碼編譯研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2012,(3):104-107.

[3] 陳穎,謝富春,張從鵬,等.基于PMAC的折彎?rùn)C(jī)送料測(cè)長(zhǎng)系統(tǒng)設(shè)計(jì)[J].機(jī)床與液壓,2012,40(2):4-6.

[4] 宓方偉,陳功福.PMAC多軸運(yùn)動(dòng)控制器應(yīng)用研究[J].機(jī)床與液壓,2004(12):129-131.

[5] 唐小會(huì),謝寄石,黃大貴,等.基于PMAC的開(kāi)放式數(shù)控系統(tǒng)實(shí)驗(yàn)平臺(tái)的研究與開(kāi)發(fā)[J].中國(guó)測(cè)試技術(shù),2003(1):61-62.

[6] DELTA TAU Data System Inc. PMAC REFERENCE GUIDE[R].USA, 2012.

[7] David J Kruglinski.Visual C++技術(shù)內(nèi)幕(第四版)[M].清華大學(xué)出版社,1999.

Exceeding G-codes Downloading and Synchronous High-bright Display Technique Based on PMAC

LI Liangtian

(School of Mechanical and Electrical Engineering, Shenzhen Polytechnic, Shenzhen, Guangdong 518055, China)

PMAC motion controller was widely used in the development of open numerical control system. Various NC system software interfaces, in accordance with the requirements of special machine tools can be developed. Exceeding G-codes program is to be downloaded in the machining processing. In addition, synchronous high-bright display of G-code was necessary. A new method was proposed to allow exceeding G-codes program to be downloaded in this paper. The technology was studied on synchronous high-bright display of G-code and display of progress on the user interface in the machining processing. The software system was optimized by using this technique.

PMAC; open numerical control; G-code download; high-bright display

TP311

A

1672-0318(2014)03-0038-05

2013-10-26

*項(xiàng)目來(lái)源:深圳職業(yè)技術(shù)學(xué)院校科研重點(diǎn)資助項(xiàng)目(2210k3020009)

黎良田(1981-),男,廣東肇慶人,碩士,講師,主要研究方向?yàn)樽詣?dòng)化控制與數(shù)字化加工技術(shù).

猜你喜歡
程序
給Windows添加程序快速切換欄
試論我國(guó)未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
基于VMM的程序行為異常檢測(cè)
偵查實(shí)驗(yàn)批準(zhǔn)程序初探
我國(guó)刑事速裁程序的構(gòu)建
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 狠狠色综合网| 黄色福利在线| 中文字幕在线观看日本| 精品国产成人av免费| 国产在线视频福利资源站| 亚洲一道AV无码午夜福利| 91在线精品麻豆欧美在线| 大陆精大陆国产国语精品1024 | 乱人伦中文视频在线观看免费| 国内精品小视频在线| 在线观看国产黄色| 欧美一级99在线观看国产| 欧美成人午夜视频| 狠狠做深爱婷婷久久一区| 免费va国产在线观看| 伊人久久精品无码麻豆精品| 国产欧美精品午夜在线播放| 秋霞一区二区三区| 亚洲成aⅴ人片在线影院八| 国产小视频网站| 澳门av无码| 在线网站18禁| 无码国产偷倩在线播放老年人| 久久精品人人做人人| 日韩福利视频导航| 依依成人精品无v国产| 国内精品视频区在线2021| 精品国产一二三区| 欧美国产日产一区二区| 色精品视频| 亚洲av日韩av制服丝袜| 国内熟女少妇一线天| 亚洲视频一区在线| 欧美亚洲一区二区三区导航| 老司机aⅴ在线精品导航| 国产成人精品男人的天堂下载| 亚洲AV免费一区二区三区| 综合天天色| 91美女视频在线| 日韩a在线观看免费观看| 无码免费视频| 久久这里只有精品66| 日本久久久久久免费网络| 亚洲永久视频| 第九色区aⅴ天堂久久香| 亚洲天堂视频在线观看免费| 国产精品无码翘臀在线看纯欲| 人妻无码一区二区视频| 99ri国产在线| 国内精自线i品一区202| 人妻丰满熟妇αv无码| 高清无码一本到东京热| 亚洲国产第一区二区香蕉| 亚洲日韩精品伊甸| 99视频在线看| 久久婷婷五月综合97色| 精品国产成人国产在线| 国产欧美在线观看精品一区污| 经典三级久久| 亚洲不卡影院| 亚洲丝袜中文字幕| 成人在线不卡视频| 在线视频精品一区| 91色国产在线| 97久久人人超碰国产精品| 久久99热66这里只有精品一| 国产无码性爱一区二区三区| 国产日韩av在线播放| 国产主播在线一区| 18禁黄无遮挡免费动漫网站| 97免费在线观看视频| 亚洲第一综合天堂另类专| 亚洲乱码视频| 国产99久久亚洲综合精品西瓜tv| 91亚洲精品第一| 美女啪啪无遮挡| 精品91视频| 国产福利不卡视频| 亚洲视屏在线观看| 国产精品va| 99热这里只有精品在线观看| 理论片一区|