0
点赞
收藏
分享

微信扫一扫

VisualDMIS 6.5高级编程

$$DMISLAYER/'PickDrop.dms'
DECL/REAL, MOVE_SPD, ACR_SPD, SCR_SPD
$$ENDLAYER
MOVE_SPD = 0.3
ACR_SPD = 0.1
SCR_SPD = 0.1
$$*********************************************************************************
$$ READING CALIBRATION FILE FOR ACR1 (ACC2)
$$*********************************************************************************
DECL/REAL,ACC_X[9],ACC_Y[9],ACC_Z[9],ACC_IV,ACC_JV,ACC_KV,ACC_SNLENG,ACC_N,ACC_LNJINT
DECL/REAL,ACC_CKDEV,ACC_ABSIV,ACC_ABSJV
DECL/REAL,ACC_FACX,ACC_FACY
DECL/INTGR,PORTNO,PORTDIR
DECL/CHAR,10,CURRENTPCS,CURRENTUNIT,CURRENTMODE
S(SN_ZERO)=SNSDEF/PROBE,INDEX,POL,0.000000,0.000000,0.000000,0.000000, $
-1.000000,0.000000,2.000000
DID(PORTDATA)=DEVICE/STOR,'D:\Vms\Users\Sensor\Acc2calib.data'
$$DID(PORTDATA)=DEVICE/STOR,'C:\Autorack\Acc2calib.data'
OPEN/DID(PORTDATA),DIRECT,INPUT
READ/DID(PORTDATA),ACC_IV,ACC_JV,ACC_KV
ACC_ABSIV=ABS(ACC_IV)
ACC_ABSJV=ABS(ACC_JV)
IF/ACC_ABSIV >ACC_ABSJV
PORTDIR=1
ACC_FACX=0.0
ACC_FACY=-50.0
ELSE
IF/ACC_JV > 0
PORTDIR=2
S(SNP90_ZERO)=SNSDEF/PROBE,INDEX,POL,0.000000,90.000000,0.000000,0.000000, $
-1.000000,0.000000,2.000000
ACC_FACX=50.0
ACC_FACY=0.0
ELSE
PORTDIR=3
S(SNM90_ZERO)=SNSDEF/PROBE,INDEX,POL,0.000000,-90.000000,0.000000,0.000000, $
-1.000000,0.000000,2.000000
ACC_FACX=-50.0
ACC_FACY=0.0
ENDIF
ENDIF
DO/PORTNO,1,8,1
READ/DID(PORTDATA),ACC_X[PORTNO],ACC_Y[PORTNO],ACC_Z[PORTNO]
ENDDO
READ/DID(PORTDATA),ACC_SNLENG,ACC_N,ACC_LNJINT
DO/PORTNO,1,8,1
ACC_Z[PORTNO]=ACC_Z[PORTNO]+(ACC_SNLENG - ACC_LNJINT - 6.65)
ENDDO
CLOSE/DID(PORTDATA),KEEP
$$**********************************************************************************
$$ READING CALIBRATION FILE FOR SCR200
$$**********************************************************************************
DECL/REAL,SCR_X[7],SCR_Y[7],SCR_Z[7],SCR_IV,SCR_JV,SCR_KV
$$DECL/RAL,SCR_SNLENG,SCR_N,SCR_LNJINT
DECL/REAL,SCR_CKDEV,SCR_ABSIV,SCR_ABSJV
DECL/REAL,SCR_FACX,SCR_FACY
DECL/INTGR,SPORTNO,SPORTDIR
DID(SCR_PORTDATA)=DEVICE/STOR,'D:\Vms\Users\Sensor\Scr200calib.data'
$$DID(SCR_PORTDATA)=DEVICE/STOR,'C:\Autorack\Scr200calib.data'
OPEN/DID(SCR_PORTDATA),DIRECT,INPUT
READ/DID(SCR_PORTDATA),SCR_IV,SCR_JV,SCR_KV
SCR_ABSIV=ABS(SCR_IV)
SCR_ABSJV=ABS(SCR_JV)
IF/SCR_ABSIV >SCR_ABSJV
SPORTDIR=1
SCR_FACX=0.0
SCR_FACY=-50.0
ELSE
IF/SCR_JV > 0
SPORTDIR=2
SCR_FACX=50.0
SCR_FACY=0.0
ELSE
SPORTDIR=3
SCR_FACX=-50.0
SCR_FACY=0.0
ENDIF
ENDIF
DO/SPORTNO,1,6,1
READ/DID(SCR_PORTDATA),SCR_X[SPORTNO],SCR_Y[SPORTNO],SCR_Z[SPORTNO]
ENDDO
$$ DO NOT NEED THE FOLLOWING
$$READ/DID(SCR_PORTDATA),SCR_SNLENG,SCR_N,SCR_LNJINT
DO/SPORTNO,1,6,1
$$SCR_Z[SPORTNO]=SCR_Z[SPORTNO]+(SCR_SNLENG - SCR_LNJINT)
SCR_Z[SPORTNO]=SCR_Z[SPORTNO]+ 68
$$ 68 = HEAD leangth + TP200 Length (131(SenLength)-33(Stylus+Module)-30(PAA1)
ENDDO
CLOSE/DID(SCR_PORTDATA),KEEP
$$***************************************************************************
$$---------------------------------------------------------------------------
$$ MACRO STORING CURRENT STATUS (PCS,UNITS,MODE)
$$ THIS MACRO IS USED IN THE BEGINNING OF "DROP" AND "PICK" MACROS
$$***************************************************************************
M(STORE_STS)=MACRO
DMIS/OFF
GET/D,CURRENTPCS
GET/UNITS,CURRENTUNIT
GET/MEASMODE,CURRENTMODE
DMIS/ON
UNITS/MM,ANGDEC
MODE/PROG,MAN
RECALL/D(MCS)
ENDMAC
$$***************************************************************************
$$---------------------------------------------------------------------------
$$ MACRO RESTORE CURRENT STATUS (PCS,UNITS,MODE)
$$ THIS MACRO IS USED IN THE END OF "DROP" AND "PICK" MACROS
$$***************************************************************************
M(RESTORE_STS)=MACRO
RECALL/D(CURRENTPCS)
IF/(CURRENTUNIT.EQ.'INCH')
UNITS/INCH,ANGDEC
ENDIF
IF/(CURRENTUNIT.EQ.'MM')
UNITS/MM,ANGDEC
ENDIF
IF/(CURRENTMODE.EQ.'AUTO')
MODE/AUTO,PROG,MAN
ENDIF
IF/(CURRENTMODE.EQ.'PROG')
MODE/PROG,MAN
ENDIF
IF/(CURRENTMODE.EQ.'MAN')
MODE/MAN
ENDIF
ENDMAC
$$###############################################################################
$$ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$$ FOLOWING ARE MACRO DEFINITIONS SUPPOSED TO BE USED BY APPLICATION FOR SENSOR
$$ CHANGING USING AUTOCHANGERS - SEE THE DESCRIPTION ON THE TOP OF THIS CODE
$$###############################################################################
$$*******************************************************************************
$$ DECLARATION of variables used by following macro
DECL/REAL,CURPOSX,CURPOSY,CURPOSZ
$$*******************************************************************************
$$-------------------------------------------------------------------------------
$$ MACRO - FOR STORING CURRENT MACHINE POSITION
$$--------------------------------------------------------------------------------
$$ Use this macro if you want to store the position before using one of autoracks
$$ ACR1 or SCR200) You can restore the position using RESTORE_POSN macro.
$$********************************************************************************
M(STORE_POSN)=MACRO
DMIS/OFF
GET/POS(CURPOSX,CURPOSY,CURPOSZ)
DMIS/ON
ENDMAC
$$********************************************************************************
$$--------------------------------------------------------------------------------
$$ MACRO - FOR RESTORING CURRENT POSITION
$$--------------------------------------------------------------------------------
$$ Use this macro if you want to restore the position (move the machine to original
$$ position) saved by STORE_POSN macro.
$$********************************************************************************
M(RESTORE_POSN)=MACRO
GOTO/CURPOSX,CURPOSY,CURPOSZ
ENDMAC
$$*********************************************************************************
$$--------------------------------------------------------------------------------
$$ MACRO - FOR DROP TO ACC2 (ACR1)
$$--------------------------------------------------------------------------------
$$ DROP_ACC2(DROP_PORT, EXT_LENG) -drops the current sensor to ACC2 selected port
$$ DROP_PORT -Port number (1 - 8) of ACR1 for dropping the sensor
$$ EXT_LENG -Length of extension [mm] (if used) mounted between the
$$ calibrated plane (usualy the head bottom) and PAA1 (PAA3).
$$ In most cases his parameter is 0 mm.
$$*********************************************************************************
M(DROP_ACC2)=MACRO/DROP_PORT,EXT_LENG
DECL/LOCAL,INTGR,PORTN
PORTN = DROP_PORT
IF/ PORTN > 8
TEXT/OPER,'AUTORACK PORT NUMBER MUST BE 1 TO 8. PLEASE SELECT CANCEL BUTTON THEN RE-START PROGRAM. YOUR PORT NO. : ',PORTN
ENDIF
IF/ PORTN < 1
TEXT/OPER,'AUTORACK PORT NUMBER MUST BE 1 TO 8. PLEASE SELECT CANCEL BUTTON THEN RE-START PROGRAM. YOUR PORT NO. : ',PORTN
ENDIF
CALL/M(STORE_STS)
IF/(PORTDIR.EQ.1)
SNSLCT/S(SN_ZERO)
ENDIF
IF/(PORTDIR.EQ.2)
SNSLCT/S(SNP90_ZERO)
ENDIF
IF/(PORTDIR.EQ.3)
SNSLCT/S(SNM90_ZERO)
ENDIF
DMESW/COMAND,'ACC2:Y,Y0'
FEDRAT/POSVEL,MPM,MOVE_SPD
GOTO/ACC_X[PORTN]+ACC_FACX,ACC_Y[PORTN]+ACC_FACY,ACC_Z[PORTN]+EXT_LENG
FEDRAT/POSVEL,MPM,ACR_SPD
GOTO/ACC_X[PORTN],ACC_Y[PORTN],ACC_Z[PORTN]+EXT_LENG
GOTO/ACC_X[PORTN],ACC_Y[PORTN],ACC_Z[PORTN]-0.2+EXT_LENG
DMESW/COMAND,'IDLE:'
DMESW/COMAND,'ACC2:G,G0'
GOTO/ACC_X[PORTN],ACC_Y[PORTN],ACC_Z[PORTN]+7+EXT_LENG
GOTO/ACC_X[PORTN]+ACC_FACX,ACC_Y[PORTN]+ACC_FACY,ACC_Z[PORTN]+7+EXT_LENG
DMESW/COMAND,'IDLE:'
CALL/M(RESTORE_STS)
ENDMAC
$$********************************************************************************
$$--------------------------------------------------------------------------------
$$ MACRO - FOR PICK FROM ACC2 (ACR1)
$$--------------------------------------------------------------------------------
$$ PICK_ACC2(PICK_PORT, EXT_LENG) -pick up the sensor from ACC2 selected port
$$ PICK_PORT -Port number (1 - 8) of ACR1 for picking up the sensor
$$ EXT_LENG -Length of extension [mm] (if used) mounted between the
$$ calibrated plane (usualy the head bottom) and PAA1 (PAA3).
$$ In most cases his parameter is 0 mm.
$$********************************************************************************
M(PICK_ACC2)=MACRO/PICK_PORT,EXT_LENG
DECL/LOCAL,INTGR,PORTN
PORTN = PICK_PORT
IF/ PORTN > 8
TEXT/OPER,'AUTORACK PORT NUMBER MUST BE 1 TO 8. PLEASE SELECT CANCEL BUTTON THEN RE-START PROGRAM. YOUR PORT NO. : ',PORTN
ENDIF
IF/ PORTN < 1
TEXT/OPER,'AUTORACK PORT NUMBER MUST BE 1 TO 8. PLEASE SELECT CANCEL BUTTON THEN RE-START PROGRAM. YOUR PORT NO. : ',PORTN
ENDIF
CALL/M(STORE_STS)
IF/(PORTDIR.EQ.1)
SNSLCT/S(SN_ZERO)
ENDIF
IF/(PORTDIR.EQ.2)
SNSLCT/S(SNP90_ZERO)
ENDIF
IF/(PORTDIR.EQ.3)
SNSLCT/S(SNM90_ZERO)
ENDIF
DMESW/COMAND,'ACC2:Z,Z0'
FEDRAT/POSVEL,MPM,MOVE_SPD
GOTO/ACC_X[PORTN]+ACC_FACX,ACC_Y[PORTN]+ACC_FACY,ACC_Z[PORTN]+7+EXT_LENG
FEDRAT/POSVEL,MPM,ACR_SPD
GOTO/ACC_X[PORTN],ACC_Y[PORTN],ACC_Z[PORTN]+7+EXT_LENG
GOTO/ACC_X[PORTN],ACC_Y[PORTN],ACC_Z[PORTN]+EXT_LENG
GOTO/ACC_X[PORTN],ACC_Y[PORTN],ACC_Z[PORTN]-0.2+EXT_LENG
DMESW/COMAND,'IDLE:'
DMESW/COMAND,'ACC2:G,G0'
GOTO/ACC_X[PORTN],ACC_Y[PORTN],ACC_Z[PORTN]+EXT_LENG
GOTO/ACC_X[PORTN]+ACC_FACX,ACC_Y[PORTN]+ACC_FACY,ACC_Z[PORTN]+EXT_LENG
DMESW/COMAND,'IDLE:'
CALL/M(RESTORE_STS)
ENDMAC
$$********************************************************************************
$$--------------------------------------------------------------------------------
$$ MACRO - FOR DROP TO SCR200
$$--------------------------------------------------------------------------------
$$ DROP_SCR(DROP_PORT, EXT_LENG) -drops the current sensor to SCR200 selected port
$$ DROP_PORT -Port number (1 - 6) of SCR200 for dropping the sensor
$$ EXT_LENG -Length of adapters + extensions [mm] mounted between
$$ the HEAD bottom and TP200 probe. If only PAA1 is used,
$$ this length is 30 mm.
$$********************************************************************************
M(DROP_SCR)=MACRO/DROP_PORT,EXT_LENG
DECL/LOCAL,INTGR,PORTN
PORTN = DROP_PORT
IF/ PORTN > 6
TEXT/OPER,'AUTORACK PORT NUMBER MUST BE 1 TO 6. PLEASE SELECT CANCEL BUTTON THEN RE-START PROGRAM. YOUR PORT NO. : ',PORTN
ENDIF
IF/ PORTN < 1
TEXT/OPER,'AUTORACK PORT NUMBER MUST BE 1 TO 6. PLEASE SELECT CANCEL BUTTON THEN RE-START PROGRAM. YOUR PORT NO. : ',PORTN
ENDIF
CALL/M(STORE_STS)
SNSLCT/S(SN_ZERO)
FEDRAT/POSVEL,MPM,MOVE_SPD
GOTO/SCR_X[PORTN]+SCR_FACX,SCR_Y[PORTN]+SCR_FACY,SCR_Z[PORTN]+EXT_LENG
FEDRAT/POSVEL,MPM,SCR_SPD
GOTO/SCR_X[PORTN],SCR_Y[PORTN],SCR_Z[PORTN]+EXT_LENG
GOTO/SCR_X[PORTN],SCR_Y[PORTN],SCR_Z[PORTN]+4.0+EXT_LENG
GOTO/SCR_X[PORTN]+(SCR_FACX/2),SCR_Y[PORTN]+(SCR_FACY/2),SCR_Z[PORTN]+4.0+EXT_LENG
DMESW/COMAND,'IDLE:'
CALL/M(RESTORE_STS)
ENDMAC
$$********************************************************************************
$$--------------------------------------------------------------------------------
$$ MACRO - FOR PICK FROM SCR200
$$--------------------------------------------------------------------------------
$$ PICK_SCR(PICK_PORT, EXT_LENG) -pick up the sensor from the selected port
$$ PICK_PORT -Port number (1 - 8) of ACR1 for picking up the sensor
$$ EXT_LENG -Length of adapters + extensions [mm] mounted between
$$ the HEAD bottom and TP200 probe. If only PAA1 is used,
$$ this length is 30 mm.
$$********************************************************************************
M(PICK_SCR)=MACRO/PICK_PORT,EXT_LENG
DECL/LOCAL,INTGR,PORTN
PORTN = PICK_PORT
IF/ PORTN > 6
TEXT/OPER,'AUTORACK PORT NUMBER MUST BE 1 TO 6. PLEASE SELECT CANCEL BUTTON THEN RE-START PROGRAM. YOUR PORT NO. : ',PORTN
ENDIF
IF/ PORTN < 1
TEXT/OPER,'AUTORACK PORT NUMBER MUST BE 1 TO 6. PLEASE SELECT CANCEL BUTTON THEN RE-START PROGRAM. YOUR PORT NO. : ',PORTN
ENDIF
CALL/M(STORE_STS)
SNSLCT/S(SN_ZERO)
FEDRAT/POSVEL,MPM,MOVE_SPD
GOTO/SCR_X[PORTN]+(SCR_FACX/2),SCR_Y[PORTN]+(SCR_FACY/2),SCR_Z[PORTN]+4.0+EXT_LENG
FEDRAT/POSVEL,MPM,SCR_SPD
GOTO/SCR_X[PORTN],SCR_Y[PORTN],SCR_Z[PORTN]+4.0+EXT_LENG
GOTO/SCR_X[PORTN],SCR_Y[PORTN],SCR_Z[PORTN]+EXT_LENG
GOTO/SCR_X[PORTN]+SCR_FACX,SCR_Y[PORTN]+SCR_FACY,SCR_Z[PORTN]+EXT_LENG
DMESW/COMAND,'IDLE:'
CALL/M(RESTORE_STS)
ENDMAC
$$********************************************************************************
$$ THIS IS END OF CODE THAT SHOLD BE PLACED ON THE TOP OF APPLICATION CODE
$$ USING AUTOCHAMGERS ACR1(ACC2) + SCR200
$$######################### END OF AUTO CHANGER PROGRAM ###########################
$$
$$ APLICATION PROGRAMS FOLLOWS
$$ .
$$ .
$$ .
ENDFIL


举报

相关推荐

0 条评论