DMISMN/'ISO10360-2:1994(E) 探测误差测量程序'
$$
$$ LEAD jishu program
$$
$$ Name :- ISO 探测误差测量程序.dms
$$ Drawing:- J.H
$$ Rev:- 1.00 2006.8.23
$$
$$**************************************************************************
$$ Declare variables in this section
DECL/REAL,x,y,z,D,r,rmax,rmin,aangle,bangle,ERROR
DECL/REAL,gagediam,halfdiam,sen_len,sen_dia
DECL/INTGR,i,temp
DECL/CHAR,12,label,number,sensor
DECL/CHAR,20,date1,time1,space,operator,custname,cmm_sn
$$**************************************************************************
$$ Reset machine
$$**************************************************************************
UNITS/MM,ANGDEC,TEMPC
WKPLAN/XYPLAN
MODE/AUTO,PROG,MAN
RECALL/D(MCS)
$$FLY/2.0
$$**************************************************************************
$$ Initialise variables
$$**************************************************************************
time1 = STIME()
date1 = SDATE()
$$ TYPE YOUR NAME HERE
operator = 'LEAD NO.6'
DID(store) = DEVICE/STOR,'C:\machine.dat'
OPEN/DID(store),DIRECT,INPUT
READ/DID(store),custname
READ/DID(store),cmm_sn
TEXT/QUERY,(gagediam),2,N,L,'请输入标准球直径(mm)...'
halfdiam = (gagediam / 2)
$$**************************************************************************
$$ Sensor used in this test
$$**************************************************************************
sensor = 'TEST'
TEXT/QUERY,(aangle),3,N,L,'输入测头 A 角值...'
TEXT/QUERY,(bangle),3,N,L,'输入测头 B 角值...'
temp = aangle / 7.5
aangle = temp * 7.5
temp = bangle / 7.5
bangle = temp * 7.5
sen_len = OBTAIN/S(DEFAULT),9
sen_dia = OBTAIN/S(DEFAULT),10
S( ) = SNSDEF/PROBE,INDEX,POL, aangle,bangle,0.0000,0.0000,-1.0000, $
sen_len,sen_dia
$$TEXT/OPER,'Clear to select sensor'
SNSLCT/S( )
$$F(MGAGE)=FEAT/SPHERE,OUTER,CART,-0.0000,0.0000,$
$$ 0.0000,19.0000,0.0000,$
$$ 0.0000,1.0000,0.0000
$$
$$MODE/MAN
$$CALIB/SENS,S( ),F(mgage),5
$$ENDMES
$$MODE/AUTO,PROG,MAN
$$SNSLCT/SA( )
SNSET/APPRCH,5
SNSET/RETRCT,5
SNSET/DEPTH,2.00
SNSET/CLRSRF,10.00
SNSET/SEARCH,50.00
$$**************************************************************************
$$ Measure one point on top of the sphere
$$**************************************************************************
TEXT/OPER,'请在标准球顶上测一点 ...'
MODE/MAN
F(TOPPOINT) = FEAT/POINT,CART,0,0,0,0,0,1
MEAS/POINT,F(toppoint),1
ENDMES
D(temp1) = TRANS/XORIG,FA(toppoint)
D(temp1) = TRANS/YORIG,FA(toppoint)
D(temp1) = TRANS/ZORIG,FA(toppoint)
D(temp1) = TRANS/ZORIG,-(halfdiam)
$$**************************************************************************
$$ Auto measure sphere
$$**************************************************************************
$$MODE/AUTO,PROG,MAN
MODE/MAN
F(SP1) = FEAT/SPHERE,OUTER,CART,0,0,0,gagediam
MEAS/SPHERE,F(SP1),5
ENDMES
D = OBTAIN/FA(SP1),7
D(PC1)=TRANS/XORIG,FA(SP1),YORIG,FA(SP1),ZORIG,FA(SP1)
$$**************************************************************************
$$ Measure sphere with 25 points
$$**************************************************************************
PTBUFF/ON
MODE/AUTO,PROG,MAN
F(test)=FEAT/SPHERE,OUTER,CART, 0, 0, 0, D
MEAS/SPHERE,F(test),25
ENDMES
D(PC1)=TRANS/XORIG,FA(test),YORIG,FA(test),ZORIG,FA(test)
$$**************************************************************************
$$ Output headings
$$**************************************************************************
DID(Ballbar) = DEVICE/STOR,'C:\ISO 探测误差.txt'
OPEN/DID(Ballbar),DIRECT,OUTPUT,OVERWR
WRITE/DID(Ballbar),' 西安力德测量设备有限公司'
WRITE/DID(Ballbar),' ==============================='
WRITE/DID(Ballbar),' ISO10360 探测误差 '
WRITE/DID(Ballbar),'设备编号 :- ',cmm_sn
WRITE/DID(Ballbar),'用户单位名称 :- ',custname
WRITE/DID(Ballbar),'操作员 :- ',operator
WRITE/DID(Ballbar),'测试时间 :- ',time1,' ',date1
WRITE/DID(Ballbar),'测头 A 角 :- ',aangle:5:1
WRITE/DID(Ballbar),'测头 B 角 :- ',bangle:5:1
WRITE/DID(Ballbar),'----------------------------------------------------------------------'
WRITE/DID(Ballbar),' 测试点 测试半径 (mm) 偏差值 (um)'
WRITE/DID(Ballbar),'数据/'
$$**************************************************************************
$$ Calculations and data output
$$**************************************************************************
DO/i,1,25,1
number = STR(i)
label = CONCAT('PT',number)
x = OBTAIN/FA(test)[i],2
y = OBTAIN/FA(test)[i],3
z = OBTAIN/FA(test)[i],4
r = SQRT((x * x) + (y * y) + (z * z))
ERROR = (r - halfdiam) * 1000
IF/(i.EQ.1)
rmin = r
rmax = r
ENDIF
WRITE/DID(Ballbar),label:11,r:17:6,ERROR:17:2
rmin = MN(rmin,r)
rmax = MX(rmax,r)
ENDDO
PTBUFF/OFF
WRITE/DID(Ballbar),'----------------------------------------------------------------------'
WRITE/DID(Ballbar),'球半径 ',halfdiam:10:6
WRITE/DID(Ballbar),'最大半径 ',rmax:10:6
WRITE/DID(Ballbar),'最小半径 ',rmin:10:6
WRITE/DID(Ballbar),' '
r = (rmax - rmin) * 1000
WRITE/DID(Ballbar),'探测误差 ',r:6:1,' (um)'
CLOSE/DID(Ballbar),KEEP
ENDFIL