南昌航空大學實驗報告
年月日課程名稱:數控技術實驗名稱:逐點比較法插補原理
班級姓名同組人:
指導老師評定簽名:
一、實驗的目的與要求
1. 目的
①掌握逐點比較法插補的原理及過程;
②掌握利用計算機高階語言,設計及除錯「插補運算軌跡」模擬畫圖的程式設計方法;
③進一步加深對插補運算過程的理解;
二、實驗儀器
計算機一台
三、實驗原理
①逐點比較法插補運算的原理
首先粗略的簡單介紹一下工具機是如何按照規定的圖形加工出所需的工件的。例如,現在要加工一段圓弧(圖2-1),起點為a,終點為b,座標原點就是圓心,y軸、x軸代表縱、橫拖板的方向,圓弧半徑為r。
如從a點出發進行加工,設某一時刻加工點在m1,一般來說m1和圓弧有所偏離。因此,可根據偏離的情況確定下一步加工進給的方向,使下乙個加工點盡可能向規定圖形(即圓弧)靠攏。
若用rm1表示加工點m1到圓心o的距離,顯然,當rm1可以看出,加工的結果是用折線來代替圓弧,為了清楚起見,在圖2-1中,每步的步長畫的很大,因此加工出來的折線與所需圓弧的誤差較大。
若步長縮小,則誤差也跟著縮小,實際加工時,進給步長一般為1微公尺,故實際誤差時很小的
②計算步驟
由上述可以看出,拖板每進給一步都要完成四個工作節拍。
偏差判別:判別偏差符號,確定加工點是在要求圖形外還是在圖形內。
工作台進給:根據偏差情況,確定控制x座標(或y座標)進給一步,使加工點向規定的圖形靠攏,以縮小偏差。
偏差計算:計算進給一步後加工點與要求圖形的新偏差,作為下一步偏差判別的依據。
終點判斷:判定是否到達終點,如果未達到終點,繼續插補,如果以到達終點,停止插補。
計算步驟的框圖如下所示:
圖2-2 逐點比較法插補計算步驟
③插補運算公式
插補運算公式表
四、實驗內容及步驟
應用vb設計逐點比較法的插補運算程式,在計算機螢幕上畫出軌跡圖。
1 程式介面
採用圖形顯示方式,動態的顯示出直線和圓弧的插補過程。
介面如下所示:
圖2-3 程式參考介面
2 程式流程圖
圖2-4 逐點比較法第一象限直線插補流程圖
3 程式源**
dim er, lsx, lsy, lex, ley, csx, csy, cex, cey, r
private sub command1_click()
er = 0
lsx = isnum(
lsy = isnum(
lex = isnum(
ley = isnum(
if abs(lsx) > abs(lsy) then max1 = abs(lsx) else max1 = abs(lsy)
if abs(lex) > abs(ley) then max2 = abs(lex) else max2 = abs(ley)
if max1 > max2 then max = max1 else max = max2
max = max + 3
if er = 1 or er = 2 then msgbox ("座標值中含有非法字元!")
if er = 3 then msgbox ("所給座標值不是整數!請輸入整數")
if <> "" and <> "" and <> "" and <> "" then
(-max, max)-(max, -max)
(-max, 0)-(max, 0), rgb(0, 0, 0)
(0, max)-(0, -max), rgb(0, 0, 0)
for i = -max to max
(i, 0.2)-(i, 0), rgb(0, 0, 0)
(0, i)-(0.3, i), rgb(0, 0, 0)
next i
(lsx, lsy)-(lex, ley), rgb(0, 0, 0)
else
msgbox ("請輸入座標值!")
end if
end sub
private sub command2_click()
x0 = 0: y0 = 0
x1 = lex - lsx: y1 = ley - lsy
if x1 > 0 and y1 > 0 then quadrant = 1
if x1 > 0 and y1 < 0 then quadrant = 4
if x1 < 0 and y1 > 0 then quadrant = 2
if x1 < 0 and y1 < 0 then quadrant = 3
if quadrant = 1 then
for i = 0 to abs(x1) + abs(y1) - 1
f = x1 * y0 - x0 * y1
x00 = x0 + lsx: y00 = y0 + lsy
if f >= 0 then x0 = x0 + 1 else y0 = y0 + 1
x11 = x0 + lsx: y11 = y0 + lsy
(x00, y00)-(x11, y11), rgb(255, 0, 0)
delay
next i
end if
if quadrant = 3 then
for i = 0 to abs(x1) + abs(y1) - 1
f = x1 * y0 - x0 * y1
x00 = x0 + lsx: y00 = y0 + lsy
if f >= 0 then x0 = x0 - 1 else y0 = y0 - 1
x11 = x0 + lsx: y11 = y0 + lsy
(x00, y00)-(x11, y11), rgb(255, 0, 0)
delay
next i
end if
if quadrant = 2 then
for i = 0 to abs(x1) + abs(y1) - 1
f = x1 * y0 - x0 * y1
x00 = x0 + lsx: y00 = y0 + lsy
if f <= 0 then x0 = x0 - 1 else y0 = y0 + 1
x11 = x0 + lsx: y11 = y0 + lsy
(x00, y00)-(x11, y11), rgb(255, 0, 0)
delay
next i
end if
if quadrant = 4 then
for i = 0 to abs(x1) + abs(y1) - 1
f = x1 * y0 - x0 * y1
x00 = x0 + lsx: y00 = y0 + lsy
if f <= 0 then x0 = x0 + 1 else y0 = y0 - 1
x11 = x0 + lsx: y11 = y0 + lsy
(x00, y00)-(x11, y11), rgb(255, 0, 0)
delay
next i
end if
end sub
private function isnum(str)
ns = "1234567890.+-"
s = 0: t = 1: st = 1
if left$(str, 1) = "+" then st = st + 1
if left$(str, 1) = "-" then st = st + 1: t = -1
for i = st to len(str)
for j = 1 to 11
if mid$(str, i, 1) = mid$(ns, j, 1) then
if j = 11 then s = s + 1
exit for
end if
next j
if j > 11 then er = 1
next i
if s > 1 then er = 2
if s = 1 then er = 3
isnum = val(str)
end function
逐點比較法圓弧插補
逐點比較法圓弧插補過程與直線插補過程類似,每進給一步也都要完成四個工作節拍 偏差判別 座標進給 偏差計算 終點判別。但是,逐點比較法圓弧插補以加工點距圓心的距離大於還是小於圓弧半徑來作為偏差判別的依據。如圖5 7所示的圓弧ab,其圓心位於原點o 0,0 半徑為r,令加工點的座標為p xi,yj 則逐...
對偶比較法實驗報告
對偶比較法 製作顏色愛好順序量表 教育與教師發展學院心理學 鄭震宇 1110214008 1 引言 對偶比較法是把所有要比較的刺激配成對,然後一對一對呈現,讓被試對於刺激的某一特性進行比較並作出判斷 這種特性在兩個刺激中哪個更為明顯。因此,若有n個刺激,則一共可配成n n 1 2對。又因為有空間誤差...
插值法和擬合實驗報告 數值計算
一 實驗目的 1.通過進行不同型別的插值,比較各種插值的效果,明確各種插值的優越性 2.通過比較不同次數的多項式擬合效果,了解多項式擬合的原理 3.利用matlab程式設計,學會matlab命令 4.掌握拉格朗日插值法 5.掌握多項式擬合的特點和方法。二 實驗題目 1.插值法實驗 將區間 5,5 1...