版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《計算機控制技術(shù)》一一逐點比較
法插補原理VC程序設(shè)計一ByO.z.逐點比較法插補原理VC程序設(shè)計一背景數(shù)控機床在加工曲線時,用折線逼近所要加工的曲線。而確定刀具或繪圖筆的過程就稱為插補,數(shù)控系統(tǒng)中完成插補工作的部分裝置稱為插補器。常用的脈沖增量插補方法是逐點比較法。所謂逐點比較法插補,就是刀具或繪圖筆每走一步都要和給定軌跡上的坐標一步的進給方向。如果原來在給定軌跡的下方,下一步就向給定軌跡的上方走,如果原來在給定軌跡的里面,下一步就向給定軌跡的外面走……如此,走一步,看一看,比較一次,決定下一步走向,以便逼近給定軌跡,即形成逐點比較插補。逐點比較法是以階梯折線來逼近直線或者圓弧等曲線的,它與規(guī)定的加工直線或圓弧之間的最大誤差為一個脈沖當量,因此只要把脈沖當量(第走一步的距離即步長)取得足夠小,就可達到加工精度的要求。二原理與算法(一)逐點比較法直線插補不同象限直線插補的偏差符號及坐標進給方向如圖1所示。第1頁共10頁
《計算機控制技術(shù)》一一逐點比較法插補原理VC程序設(shè)計一ByO.z.圖1 偏差符號與進給方向的關(guān)由圖1可以推導得出,4個象限直線插補的偏差計算公式和坐標進給方向,詳見表1,該表中4個象限的終點坐標值取絕對值代入計算式中的和。表1 直線插補的進給方向及偏差計算公式所在象限進給方向所在象限進給方向偏差計算一、四■*? ^、^三所在象限進給方向偏差計算一\-二三、四在計算機內(nèi)存中開辟6個單元XE、YE、NXY、FM、XOY和ZF,分別存放終點橫坐標、終點縱坐標、總步數(shù) 、加工點偏差、直線所在象限值 和走步方向標志。這里,,等于1、2、3、4分別代表第一、第二、第三、第四象限, 的值可由終點坐標的正、負符號來確定, 的初值為0,ZF=1、2、3、4分別代表、 、 、走步方向。程序流程如圖2所示。2 直線插補程序流程(二)逐點比較法圓弧插補SH^。o圖34個象限圓弧插補的對稱關(guān)各象限圓弧插補的偏差符號與進給方向如圖3所示,用SR和NR分別表示順圓弧和逆圓弧,并且用SRpSR2、SR3、SR4和NR1、NR2、NR3、NRSH^。o圖34個象限圓弧插補的對稱關(guān)第2頁共10頁
《計算機控制技術(shù)》一一逐點比較法插補原理VC程序設(shè)計一ByO.z.在計算機內(nèi)存中開辟8個單元X0、Y0、NXY、FM、RNS、XM、YM和ZF,分別存放起點的橫坐標、起點的縱坐標、總步數(shù) 、加工點偏差、圓弧種類值RNS、、和走步方向標志。這里 ,RNS等于1、2、3、4和5、6、7、8分別代表SR1、SR2、SR3、SR4和NRpNR2、NR3、NR4,RNS的值可由起點和終點的坐標的正、負符號來確定,的初值為0,和的初值為和,ZF=1、2、3、4分別表示、、、走步方向。程序流程圖如圖4步方向。程序流程圖如圖4所示。圖4 4象限圓弧插補程序流程圖三程序設(shè)計開發(fā)環(huán)境:VisualStudio2010,Windows8建立的項目:VC++MFCApplicationSingleDocument(一)全局變量intAXIS=600:坐標軸半軸長像素數(shù)(映射到真實長度600*0.1mm=6cm)intAXIS_SCALE:坐標軸最大刻度,通過菜單項修改intS_LEN:單位長度像素數(shù)(=AXIS/AXIS_SCALE)intsx,sy:直線插補用到的平移系數(shù)(二)對話框設(shè)置4個Edit框,連接變量m_x1、m_y1、m_x2、m_y2用于存儲輸入的坐標值。默認值:m_x1=10,m_y1=0,m_x2=0,m_y2=10o(三)菜單CaptionIDFunction建立坐標系第3頁共10頁
《計算機控制技術(shù)》逐點比較《計算機控制技術(shù)》逐點比較法插補原理VC程序設(shè)計一ByO.z.坐標系樣式標準大?。?0*20)ID_AXES_OOnAxesO()樣式1(15*15)ID_AXES_AOnAxesA()樣式2(12*12)ID_AXES_BOnAxesB()樣式3(10*10)ID_AXES_COnAxesC()樣式4(30*30)ID_AXES_HOnAxesH()樣式5(50*50)ID_AXES_IOnAxesI()樣式6(60*60)ID_AXES_JOnAxesJ()清空ID_EDIT_CLCOnEditClc()插補類型直線插補ID_EDIT_LINEOnEditLine()圓弧插補ID_EDIT_ROUNDOnEditRound()說明:同時創(chuàng)建了三個右鍵菜單與“清空”、“直線插補”、“圓弧插補”同ID。(四)部分代碼〃繪制坐標系voidCChabuDrawView::DrawAxes(void){CClientDCpDC(this);〃窗口映射,單位像素長度為0.11nm,坐標軸乂向右為正,丫軸向上為正pDC.SetMapMode(MM_LOMETRIC);CRectRecto;GetClientRect(&Recto);pDC.SetViewportOrg(Recto.Width()/2,Recto.Height()/2);〃繪制坐標軸pDC.MoveTo(-AXIS,0);pDC.LineTo(AXIS,0);第4頁共10頁《計算機控制技術(shù)》一一逐點比較法插補原理VC程序設(shè)計一ByO.z.pDC.MoveTo(0,-AXIS);pDC.LineTo(0,AXIS);〃繪制網(wǎng)格線for(inti=-AXIS;i<=AXIS;i+=S_LEN)(if(i)(pDC.MoveTo(i,-AXIS);pDC.LineTo(i,AXIS);pDC.MoveTo(-AXIS,i);pDC.LineTo(AXIS,i);))〃標注坐標CStringstr;str.Format(_T("%d"),0);pDC.TextOutW(-8,15,str);str.Format(_T("%d"),-AXIS_SCALE);pDC.TextOutW(-AXIS-30,15,str);pDC.TextOutW(-25,-AXIS+15,str);str.Format(_T("%d"),AXIS_SCALE);pDC.TextOutW(AXIS-15,15,str);pDC.TextOutW(-15,AXIS+15,str);)〃畫"點”函數(shù)(走步控制程序)voidCChabuDrawView::DrawPoint(intx,inty){inthalf_s_len=S_LEN/2;〃坐標變換x=x*S_LEN;y=y*S_LEN;intx1=x-half_s_len;inty1=y+half_s_len;intx2=x+half_s_len;inty2=y-halfslen;第5頁共10頁《計算機控制技術(shù)》一一逐點比較法插補原理VC程序設(shè)計一ByO.z.x1+=sx*S_LEN;x2+=sx*S_LEN;y1+=sy*S_LEN;y2+=sy*S_LEN;〃繪制矩形CBrushbrush;brush.CreateSolidBrush(RGB(255,0,255));CPenpen;pen.CreatePen(PS_SOLID,1,RGB(255,0,255));CClientDCdc(this);dc.SelectObject(&pen);dc.SelectObject(&brush);dc.SetMapMode(MM_LOMETRIC);CRectRecto;GetClientRect(&Recto);dc.SetViewportOrg(Recto.Width()/2,Recto.Height()/2);dc.Rectangle(x1,y1,x2,y2);)〃通過坐標平移實現(xiàn)任意兩點間直線繪制voidCChabuDrawView::cb_line(intx1,inty1,intx2,inty2){sx=x1;sy=y1;cb_line_std(x2-sx,y2-sy);sx=0;sy=0;)//以原點為起點畫線voidCChabuDrawView::cb_line_std(intxo,intyo){intfm=0,xe=abs(xo),ye=abs(yo),xoy;intx=0,y=0;DrawPoint(x,y);intnxy=abs(xo)+abs(yo);〃判斷象限第6頁共10頁《計算機控制技術(shù)》一一逐點比較法插補原理VC程序設(shè)計一ByO.z.if(xo>=0)xoy=yo>0?1:4;elsexoy=yo>0?2:3;〃通過繪制方形模擬刀具進給for(inti=nxy;nxy>0;nxy--)if(fm>=0){fm--ye;if(xoy==1||xoy==4)DrawPoint(++x,y);elseDrawPoint(--x,y);elsefm+=xe;if(xoy==1||xoy==2)DrawPoint(x,++y);elseDrawPoint(x,--y);〃畫圓voidCChabuDrawView::cb_round_std(intx1,inty1,intx2,inty2)sx=0;sy=0;intfm=0,xm=abs(x1),ym=abs(y1),rns;intnxy=abs(x2-x1)+abs(y2-y1);intx=x1,y=y1;DrawPoint(x,y);〃判斷圓弧類型if(x2>x1)第7頁共10頁《計算機控制技術(shù)》一一逐點比較法插補原理VC程序設(shè)計一ByO.z.if(x1>=0)rns=y1>y2?1:8;elseif(x2<=0)rns=y1>y2?7:2;elseMessageBox(_T("此功能正在學習中!”))return;elseif(x2<x1)if(x1<=0)rns=y1>y2?6:3;elseif(x2>=0)rns=y1>y2?4:5;elseMessageBox(_T(〃此功能正在學習中!"))return;elseMessageBox(_T("此功能正在學習中!"));return;〃進給for(inti=nxy;i>0;i--)if(rns==1||rns==3||rns==6||rns==8)if(fm>=0)fm=fm-2*ym+1;第8頁共10頁《計算機控制技術(shù)》一一逐點比較法插補原理VC程序設(shè)計一ByO.z.ym——;if(rns==1||rns==6)DrawPoint(x,--y);elseDrawPoint(x,++y);elsefm=fm+2*xm+1;xm++;if(rns==1||rns==8)DrawPoint(++x,y);elseDrawPoint(--x,y);els
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年計算機軟件測試工程師考試題目集軟件測試技術(shù)與方法
- 2026內(nèi)蒙古農(nóng)商銀行社會招聘70人備考題庫參考答案詳解
- 2026年福建莆田市公安局荔城分局交警大隊警務(wù)輔助人員招聘25人備考題庫及答案詳解(易錯題)
- 2026云南師范大學實驗中學盤龍校區(qū)面向教育部直屬師范大學開展公費師范畢業(yè)生招聘備考題庫及完整答案詳解一套
- 2026云南省教育廳招募基礎(chǔ)教育銀齡教師760人備考題庫及一套完整答案詳解
- 2026國家住房和城鄉(xiāng)建設(shè)部直屬事業(yè)單位第一批招聘3人備考題庫及一套答案詳解
- 2026上半年貴州事業(yè)單位聯(lián)考貴州交通職業(yè)大學招聘18人備考題庫參考答案詳解
- 2026中國人保資產(chǎn)管理有限公司博士后科研工作站招聘備考題庫及完整答案詳解一套
- 2025廣東佛山禪城區(qū)南莊鎮(zhèn)吉利中學招聘數(shù)學地理臨聘教師備考題庫及答案詳解(易錯題)
- 2026上半年安徽事業(yè)單位聯(lián)考六安市葉集區(qū)招聘8人備考題庫及答案詳解(易錯題)
- 管網(wǎng)安全生產(chǎn)管理制度
- DB2310-T 099-2022 牡丹江市中藥材火麻仁種植技術(shù)規(guī)程
- 婦產(chǎn)??漆t(yī)院危重孕產(chǎn)婦救治中心建設(shè)與管理指南
- 2026年建筑物智能化與電氣節(jié)能技術(shù)發(fā)展
- 2026年浙江高考英語考試真題及答案
- 垃圾填埋場排水施工方案
- 民航華東地區(qū)管理局機關(guān)服務(wù)中心2025年公開招聘工作人員考試題庫必考題
- 辦公室頸椎保養(yǎng)課件
- 員工個人成長經(jīng)歷分享
- 自平衡多級泵培訓課件
- 晝夜明暗圖課件
評論
0/150
提交評論