河南中光學集團有限公司 (南陽 473006) 胡飛嘉
《金屬加工 (冷加工)》2013年第8期機床自動化欄目刊登了《用尋邊器快速找正圓孔中心》一文,文中提出了用尋邊器碰圓上三點通過編程來確定圓心的方法。這是一個相當實用的方法,尤其在找正大圓和非整圓等打表不便的情況下更具優(yōu)勢。
這一方法的思路是先用尋邊器碰圓上的三點,把這3個點的機械坐標值讀入6個變量中。文中是讀入到R1~R6這6個變量中,R1、R2分別表示第一點的X、Y坐標,其余變量含義類推。由于三點能確定一個圓,根據(jù)已知的3個點的坐標就可以計算出圓心坐標。為了計算圓心坐標,原文用了兩個很復雜的計算式。這其實是把簡單問題復雜化了。因為西門子840D系統(tǒng) (不限于840D)已經(jīng)自帶了根據(jù)三點計算圓心的函數(shù),沒有必要再編程計算了。這個函數(shù)就是CALCDAT。它不僅能計算出圓心坐標,還能計算出圓的半徑。這個函數(shù)的格式是:
CALCDAT(<原始坐標數(shù)組>,<點數(shù)>,<結果數(shù)組>)
<原始坐標數(shù)組>是一個3×2的二維數(shù)組,存放的是圓上的3個點的坐標。
<點數(shù)>是指圓上的點數(shù) (只能取3或4)。本例是碰圓上三點,應取3。
<結果數(shù)組>是變量參數(shù),用于存放計算結果。這個參數(shù)是一個有3個元素的一維數(shù)組,前兩個數(shù)表示三點所在的圓的圓心X、Y坐標,第三個數(shù)表示圓的半徑。
這個函數(shù)有一個布爾型的返回值,表示是否計算成功 (只要三點不在一條直線上,通常都能計算成功)。
使用這個函數(shù),原文中的LD3程序可以非常簡單。程序如下:
DEF REAL PT[3,2],RES[3];定義兩個數(shù)組 (PT存放原始數(shù)據(jù),RES存放結果)
PT [0,0] =SET(R1,R2,R3,R4,R5,R6);圓上三點坐標賦值給PT數(shù)組,用于CALCDAT計算
IF CALCDAT(PT,3,RES);計算圓心坐標和圓的半徑
R7=RES [0]R8=RES [1]R9=RES [2] +5;圓心坐標放在R7、R8里,半徑放在R9里 (RES[2]中是計算出的半徑,加上5的意思是假設碰的是內(nèi)圓,尋邊器的觸頭半徑是5 mm。如果碰的是外圓,則把加號改成減號。后面的數(shù)是尋邊器觸頭半徑,需根據(jù)實際情況打入)
ENDIF
M17
比較這個程序和原文的程序可以看出,原文中用于計算圓心坐標的兩個很復雜的計算式僅用一個CALCDAT函數(shù)即可實現(xiàn) (還計算出了圓的半徑),不僅程序簡練了,而且編程難度也明顯降低了。