DECL/REAL,PORTX,PORTY,PORTZ,IT,JT,IVEC,JVEC,KVEC,SNLENG,FPORTX,FPORTY,FPORTZ,SENDIA
DECL/INTGR,SEQ,PORTDIR,PortNum,FCRTYPE,NumofPort
DECL/CHAR,10,HomeDir,CalibFile,AXIS,WRTWAY,sPort
UNITS/MM,ANGDEC
WKPLAN/XYPLAN
MODE/MAN
RECALL/D(MCS)
$$S(DEFAULT)=SNSDEF/PROBE,INDEX,POL,0.0000,0.0000,$
0.000000,0.000000,-1.000000,126.9744,1.9797
SNSLCT/S(DEFAULT)
SNLENG=OBTAIN/SA(DEFAULT),9
SENDIA = OBTAIN/SA(DEFAULT),10
PRCOMP/OFF
CALL/EXTERN,DME, 'V3DHOME',HomeDir
CalibFile = CONCAT(HomeDir,'\Users\Sensor\fcr25calib.data')
DID(PORTDATA) = DEVICE/STOR, CalibFile
OPEN/DID(PORTDATA),DIRECT,OUTPUT,OVERWR
(GetFCRType)
TEXT/QUERY,(FCRTYPE),1,AN,L,'Please Enter FCR25 type (FCR25-3L=1, FCR25-6L=2)'
IF/FCRTYPE.EQ.1
NumofPort = 3
ELSE
IF/FCRTYPE.EQ.2
NumofPort = 6
ELSE
TEXT/OPER,'Only 1 or 2 can be used for FCR25 operation. Please re-type.'
JUMPTO/(GetFCRType)
ENDIF
ENDIF
(GetAxis)
TEXT/QUERY,(AXIS),1,AN,L,'Please Enter the Axis of FCR25 operation (X, Y or -Y)'
IF/AXIS.EQ.'X'
PORTDIR=1
WRITE/DID(PORTDATA),'1.000000, 0.000000, 0.000000'
ELSE
IF/AXIS.EQ.'Y'
PORTDIR=2
WRITE/DID(PORTDATA),'0.000000, 1.000000, 0.000000'
S(SNP90)=SNSDEF/PROBE,INDEX,POL,0.000000,90.000000,0.000000,0.000000, $
-1.000000,SNLENG,SENDIA
SNSLCT/S(SNP90)
ELSE
IF/AXIS.EQ.'-Y'
PORTDIR=3
WRITE/DID(PORTDATA),'0.000000, -1.000000, 0.000000'
S(SNM90)=SNSDEF/PROBE,INDEX,POL,0.000000,-90.000000,0.000000,0.000000, $
-1.000000,SNLENG,SENDIA
SNSLCT/S(SNM90)
ELSE
TEXT/OPER,'Only "X", "Y" or "-Y" axis can be used for fCR25 operation.'
JUMPTO/(GetAxis)
ENDIF
ENDIF
ENDIF
DMESW/COMAND, 'IDLE:'
CALL/EXTERN, DME, 'V3DDISPRB',ON
(GETTYPE)
TEXT/QUERY,(WRTWAY),1,AN,L,'Please select the method to define port positons ("S" for semi-auto, "M" for manual)'
IF/(WRTWAY.NE.'S').AND.(WRTWAY.NE.'M')
TEXT/OPER,'Only "S" or "M' can be used. Please re-type'
JUMPTO/(GETTYPE)
ENDIF
TEXT/OPER,'Remove module and insert it to port #1 then press OK button'
TEXT/OPER,'Move probe to the port #1 manually to find docking position then press OK button'
F(PT_PORT) = FEAT/POINT, CART, 10.000, 10.000, 10.000, 0.000, 0.000, 1.000
MEAS/POINT, F(PT_PORT), 0
ENDMES
FPORTX=OBTAIN/FA(PT_PORT),3
FPORTY=OBTAIN/FA(PT_PORT),4
FPORTZ=OBTAIN/FA(PT_PORT),5
PORTX=FPORTX
PORTY=FPORTY
IF/WRTWAY.EQ.'S'
DO/SEQ,0,7,1
IF/(PORTDIR.EQ.1)
PORTX=FPORTX+(35*SEQ)
ELSE
IF/(PORTDIR.EQ.2)
PORTY=FPORTY+(35*SEQ)
ELSE
IF/(PORTDIR.EQ.3)
PORTY=FPORTY-(35*SEQ)
ENDIF
ENDIF
ENDIF
PORTZ=FPORTZ+SNLENG-38-45.55
WRITE/DID(PORTDATA),PORTX,',',PORTY,',',PORTZ
ENDDO
ELSE
PORTX=FPORTX
PORTY=FPORTY
PORTZ=FPORTZ+SNLENG-38-45.55
WRITE/DID(PORTDATA),PORTX,',',PORTY,',',PORTZ
DO/SEQ,1,NumofPort-1,1
PortNum = SEQ+1
sPort = STR(PortNum)
sPort = CONCAT('Move probe to the port #',sPort)
sPort = CONCAT(sPort,' manually to find docking position then press OK button')
TEXT/OPER,sPOrt
MEAS/POINT, F(PT_PORT), 0
ENDMES
PORTX=OBTAIN/FA(PT_PORT),3
PORTY=OBTAIN/FA(PT_PORT),4
FPORTZ=OBTAIN/FA(PT_PORT),5
PORTZ=FPORTZ+SNLENG-38-45.55
WRITE/DID(PORTDATA),PORTX,',',PORTY,',',PORTZ
ENDDO
$$
DO/SEQ,1,8-NumofPort,1
WRITE/DID(PORTDATA),PORTX,',',PORTY,',',PORTZ
ENDDO
ENDIF
$$
WRITE/DID(PORTDATA),SNLENG,',0.00,83.55'
WRITE/DID(PORTDATA),'0.000000,0.000000,0.000000'
CLOSE/DID(PORTDATA),KEEP
dmesw/COMAND,'configacr:calibfile'
PRCOMP/ON
MODE/PROG,MAN
CALL/EXTERN, DME, 'V3DDISPRB',OFF
IF/(PORTDIR.EQ.2).OR.(PORTDIR.EQ.3)
TEXT/OPER,'Calibration completed! Move probe to safe position to select default sensor'
SNSLCT/S(DEFAULT)
ELSE
TEXT/OPER,'Calibration completed!'
ENDIF
ENDFIL