更新KUKA程序

This commit is contained in:
zhusenlin
2026-02-06 19:32:09 +08:00
parent fdd197f9cd
commit bdc205a668
77 changed files with 10688 additions and 0 deletions

View File

@@ -0,0 +1,835 @@
&ACCESS RV$1
DEFDAT $CONFIG
;FOLD BASISTECH GLOBALS
;==================================
; Default parameters for movement
; These values shouldn't be changed
;==================================
;----------------------------------
; general MOVEMENT - parameters:
;----------------------------------
INT DEF_OV_PRO=100
INT DEF_ADVANCE=3
; PTP - MOVEMENTS
;----------------------------------
INT DEF_VEL_PTP=100 ; ptp velocity [%]
INT DEF_ACC_PTP=50 ; ptp acceleration [%]
; CP - MOVEMENTS
;----------------------------------
DECL CIRC_TYPE DEF_CIRC_TYP=#BASE
DECL JERK_STRUC DEF_JERK_STRUC={CP 500.000,ORI 50000.0,AX {A1 1000.00,A2 1000.00,A3 1000.00,A4 1000.00,A5 1000.00,A6 1000.00,E1 1000.00,E2 1000.00,E3 1000.00,E4 1000.00,E5 1000.00,E6 1000.00}} ; jerk value for the spline. CP: [m/Sec3], ORI: [[GRAD/Sec3], AX: [[GRAD/Sec3] (rotatory) resp. [m/Sec3] (linear)
REAL DEF_GEAR_JERK=100.000 ; gear jerk of axes [%]
REAL DEF_VEL_CP=2.00000 ; path velocity [M/SEC]
REAL DEF_VEL_ORI1=200.000 ; swivel velocity [GRAD/Sec]
REAL DEF_VEL_ORI2=200.000 ; rotation velocity [GRAD/Sec]
REAL DEF_VEL_ORIS=200.000 ; spline swivel velocity [GRAD/Sec]
REAL DEF_ACC_CP=2.30000 ; path acceleration [m/Sec2]
REAL DEF_ACC_ORI1=100.000 ; swivel acceleration [GRAD/Sec2]
REAL DEF_ACC_ORI2=100.000 ; rotation acceleration [GRAD/Sec2]
REAL DEF_ACC_ORIS=200.000 ; spline swivel acceleration [GRAD/Sec2]
REAL DEF_VEL_FACT=1.00000
REAL DEF_ACC_SPTP=100.000 ; ptp spline acceleration [%]
; APO - parameters
;--------------------------------
INT DEF_APO_CPTP=50 ; PTP-Approximation [%]
INT DEF_APO_CVEL=100 ; Speed-Approximation [%]
REAL DEF_APO_CDIS=3.00000 ; Distance-Approximation [mm]
REAL DEF_APO_CORI=5.00000 ; Orientation-Approximation [Grad]
REAL DEF_APO_CORIS=80.0000 ; spline Orientation-Approximation [Grad]
;==================================
; Structures:
;==================================
ENUM BAS_COMMAND INITMOV,ACC_CP,ACC_PTP,VEL_CP,VEL_PTP,ACC_GLUE,TOOL,BASE,EX_BASE,PTP_DAT,CP_DAT,OUT_SYNC,OUT_ASYNC,GROUP,FRAMES,PTP_PARAMS,CP_PARAMS
ENUM OUT_MODETYPE TRIGGER_,CONT_,STOP_
ENUM IPO_M_T NONE,TCP,BASE
ENUM APO_MODE_T CPTP,CDIS
ENUM LDD_MODE_T NONE,CAD,T1,T2,AUT,EX,MANUAL
ENUM LDD_RESULT_T NONE,APP,STATOVL,DYNOVL,CTCHCK,OVL,APPSLOOR,SLOOR
STRUC DIG_OUT_TYPE INT FIRST_BIT,LENGTH,PARITY,CODING
STRUC CTRL_IN_T INT IN_NR,CHAR NAME_NAT[20]
STRUC CTRL_OUT_T INT OUT_NR,BOOL INI,CHAR NAME_NAT[20]
STRUC FCT_OUT_T INT NO,REAL PULS_TIME,BOOL STATE
STRUC FCT_IN_T INT NO,BOOL STATE
STRUC PDAT REAL VEL,ACC,APO_DIST,APO_MODE_T APO_MODE,REAL GEAR_JERK,INT EXAX_IGN
STRUC LDAT REAL VEL,ACC,APO_DIST,APO_FAC,AXIS_VEL,AXIS_ACC,ORI_TYPE ORI_TYP,CIRC_TYPE CIRC_TYP,REAL JERK_FAC,GEAR_JERK,INT EXAX_IGN,CIRC_MODE CB
STRUC FDAT INT TOOL_NO,BASE_NO,IPO_MODE IPO_FRAME,CHAR POINT2[24],BOOL TQ_STATE
STRUC ODAT INT OUT_NO,BOOL STATE,REAL PULSE_TIME,OUT_MODETYPE OUT_MODE,REAL TIME_DELAY,OFFSET
STRUC BASIS_SUGG_T CHAR POINT1[24],POINT2[24],CP_PARAMS[24],PTP_PARAMS[24],CONT[24],CP_VEL[24],PTP_VEL[24],SYNC_PARAMS[24],SPL_NAME[24],A_PARAMS[24],PC_SYNCSTRING[24],GL_SYNCSTRING[24]
STRUC HDAT REAL HT_START,HT_DEST,APO_START,APO_DEST,ACC_START,ACC_DEST,VEL_START,VEL_DEST
STRUC OUT_SUGG_T CHAR PARAMS[24]
STRUC MACHINE_DEF_T CHAR NAME[40],INT COOP_KRC_INDEX,CHAR PARENT[40],FRAME ROOT,ESYS MECH_TYPE,CHAR GEOMETRY[255]
STRUC MACHINE_TOOL_T INT MACH_DEF_INDEX,CHAR PARENT[40],CHAR GEOMETRY[255]
STRUC MACHINE_FRAME_T INT MACH_DEF_INDEX,CHAR PARENT[40],CHAR GEOMETRY[255]
STRUC TRIGGER_PARA INT TriggerPath,BOOL TriggerOnStart,INT TriggerDelay,CHAR TriggerTask[40]
STRUC CONSTVEL_PARA INT ConstVelTyp,INT ConstVelPath,BOOL ConstVelOnStart
STRUC CONDSTOP_PARA INT CondStopPath,BOOL CondStopOnStart,CHAR StopCondition[40]
STRUC ADAT TRIGGER_PARA TriggerPara,CONSTVEL_PARA ConstVelPara,CONDSTOP_PARA CondStopPara
STRUC MODULEPARAM_T CHAR PARAMS[2000]
STRUC TRACECACHE_T CHAR NAME[64],INT ACT_ITER,INT MAX_ITER
;FOLD OLD TORQUE MONITORING - Do not remove! Needed to prevent syntax errors in old user modules!
STRUC TM_SUGG_T CHAR TM_ID[24]
STRUC TQM_TQDAT_T INT T11,T12,T13,T14,T15,T16,T21,T22,T23,T24,T25,T26,K1,K2,K3,K4,K5,K6,O1,O2,ID,OVM,REAL TMF
;ENDFOLD
;==================================
; External declarations:
;==================================
EXT BAS (BAS_COMMAND :IN,REAL :IN )
EXT IR_STOPM ( )
;====================
; Signal declarations
; Do not change !!!!!
;====================
SIGNAL CHANNEL_1 $ANOUT[1]
SIGNAL CHANNEL_2 $ANOUT[2]
SIGNAL CHANNEL_3 $ANOUT[3]
SIGNAL CHANNEL_4 $ANOUT[4]
SIGNAL CHANNEL_5 $ANOUT[5]
SIGNAL CHANNEL_6 $ANOUT[6]
SIGNAL CHANNEL_7 $ANOUT[7]
SIGNAL CHANNEL_8 $ANOUT[8]
SIGNAL CHANNEL_9 $ANOUT[9]
SIGNAL CHANNEL_10 $ANOUT[10]
SIGNAL CHANNEL_11 $ANOUT[11]
SIGNAL CHANNEL_12 $ANOUT[12]
SIGNAL CHANNEL_13 $ANOUT[13]
SIGNAL CHANNEL_14 $ANOUT[14]
SIGNAL CHANNEL_15 $ANOUT[15]
SIGNAL CHANNEL_16 $ANOUT[16]
SIGNAL CHANNEL_17 $ANOUT[17]
SIGNAL CHANNEL_18 $ANOUT[18]
SIGNAL CHANNEL_19 $ANOUT[19]
SIGNAL CHANNEL_20 $ANOUT[20]
SIGNAL CHANNEL_21 $ANOUT[21]
SIGNAL CHANNEL_22 $ANOUT[22]
SIGNAL CHANNEL_23 $ANOUT[23]
SIGNAL CHANNEL_24 $ANOUT[24]
SIGNAL CHANNEL_25 $ANOUT[25]
SIGNAL CHANNEL_26 $ANOUT[26]
SIGNAL CHANNEL_27 $ANOUT[27]
SIGNAL CHANNEL_28 $ANOUT[28]
SIGNAL CHANNEL_29 $ANOUT[29]
SIGNAL CHANNEL_30 $ANOUT[30]
SIGNAL CHANNEL_31 $ANOUT[31]
SIGNAL CHANNEL_32 $ANOUT[32]
;==================================
; ID external user log-on:
;==================================
SIGNAL ExtUserID $IN[1026] TO $IN[1026]
SIGNAL ExtUserIDWatchDog $IN[1026]
;==================================
; Variables:
;==================================
DECL PDAT PDEFAULT={VEL 100.000,ACC 100.000,APO_DIST 100.000,GEAR_JERK 100.000,EXAX_IGN 0}
DECL LDAT LDEFAULT={VEL 2.00000,ACC 100.000,APO_DIST 100.000,APO_FAC 50.0000,AXIS_VEL 100.000,AXIS_ACC 100.000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 100.000,EXAX_IGN 0}
DECL LDAT CDEFAULT={CB {AUX_PT {ORI #CONSIDER,E1 #CONSIDER,E2 #CONSIDER,E3 #CONSIDER,E4 #CONSIDER,E5 #CONSIDER,E6 #CONSIDER},TARGET_PT {ORI #INTERPOLATE,E1 #INTERPOLATE,E2 #INTERPOLATE,E3 #INTERPOLATE,E4 #INTERPOLATE,E5 #INTERPOLATE,E6 #INTERPOLATE}}}
DECL FDAT FDEFAULT={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL FDAT FHOME={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " ",TQ_STATE FALSE}
DECL ODAT ODEFAULT={OUT_NO 1,STATE TRUE,PULSE_TIME 0.0,OUT_MODE #STOP_,TIME_DELAY 0.0,OFFSET 0.0}
DECL HDAT HDEFAULT={HT_START 250.000,HT_DEST 250.000,APO_START 200.000,APO_DEST 200.000,ACC_START 100.000,ACC_DEST 100.000,VEL_START 2.00000,VEL_DEST 2.00000}
DECL ADAT TDEFAULT={TriggerPara {TriggerPath 0,TriggerOnStart FALSE,TriggerDelay 0,TriggerTask[] " "}}
DECL ADAT CVDEFAULT={ConstVelPara {ConstVelTyp 0,ConstVelPath 0,ConstVelOnStart FALSE}}
DECL ADAT CSDEFAULT={CondStopPara {CondStopPath 0,CondStopOnStart FALSE,StopCondition[] " "}}
DECL PDAT PDAT_ACT
DECL LDAT LDAT_ACT
DECL FDAT FDAT_ACT
DECL ODAT ODAT_ACT
DECL INT ACT_FILTER
DECL INT ACT_DELAY
DECL INT ACT_DISTANCE
DECL CHAR SPL_NAME[24]
DECL MSGBUF_T TouchUpCheckMsgBuffer[100]
;GROUP-Definitions
;----------------------------------
INT COMPL_GROUP='B0001'
INT DEF_GROUP[10]
DEF_GROUP[1]='B1111' ; complete
DEF_GROUP[2]='B0001' ; robot only
DEF_GROUP[3]='B0011' ; robot and track
DEF_GROUP[4]='B0111' ; robot, track and ext. axis2
DEF_GROUP[5]='B1011' ; robot, track and ext. axis3
DEF_GROUP[6]='B1111' ; robot, track and ext. axis2+3
DEF_GROUP[7]='B1111' ; complete
DEF_GROUP[8]='B1111' ; complete
DEF_GROUP[9]='B1111' ; complete
DEF_GROUP[10]='B1111' ; complete
INT $ACT_GROUP='B0001'
; HOME POSITION
;----------------------------------
E6AXIS XHOME={A1 -21.6021271,A2 -99.3227234,A3 104.274384,A4 -0.793297172,A5 86.8444748,A6 -6.95475197,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
E6AXIS XHOME1={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
E6AXIS XHOME2={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
E6AXIS XHOME3={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
E6AXIS XHOME4={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
E6AXIS XHOME5={A1 0.0,A2 -90.0000,A3 90.0000,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
; REFERENCE POINTS
;----------------------------------
DECL FRAME REF_PT[16]
REF_PT[1]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[2]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[3]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[4]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[5]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[6]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[7]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[8]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[9]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[10]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[11]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[12]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[13]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[14]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[15]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
REF_PT[16]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
FRAME REF_TOOL={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
; TOOL and BASE data
;----------------------------------
BOOL AUTO_IPO_M=FALSE
BOOL STOPM_FLAG=FALSE
BOOL TOOL_CORR_ON=FALSE
BOOL TOOL_CORR_W_ON=FALSE
BOOL BASE_CORR_ON=FALSE
BOOL M_BAS_COR_ON=FALSE
FRAME TOOL_CORR={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
FRAME TOOL_CORR_W={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
FRAME BASE_CORR={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
FRAME M_BASE_CORR={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
INT COR_TOOL_NO=0
INT MAX_TOOL=16
DECL FRAME TOOL_DATA[16]
TOOL_DATA[1]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[2]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[3]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[4]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[5]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[6]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[7]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[8]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[9]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[10]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[11]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[12]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[13]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[14]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[15]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
TOOL_DATA[16]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
DECL CHAR TOOL_NAME[16,24]
TOOL_NAME[1,]="Tool1"
TOOL_NAME[2,]=" "
TOOL_NAME[3,]=" "
TOOL_NAME[4,]=" "
TOOL_NAME[5,]=" "
TOOL_NAME[6,]=" "
TOOL_NAME[7,]=" "
TOOL_NAME[8,]=" "
TOOL_NAME[9,]=" "
TOOL_NAME[10,]=" "
TOOL_NAME[11,]=" "
TOOL_NAME[12,]=" "
TOOL_NAME[13,]=" "
TOOL_NAME[14,]=" "
TOOL_NAME[15,]=" "
TOOL_NAME[16,]=" "
INT MAX_LOAD=16
DECL LOAD LOAD_DATA[16]
LOAD_DATA[1]={M 20.0000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[2]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[3]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[4]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[5]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[6]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[7]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[8]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[9]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[10]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[11]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[12]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[13]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[14]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[15]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
LOAD_DATA[16]={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
DECL CHAR LOAD_NAME[16,24]
LOAD_NAME[1,]=" "
LOAD_NAME[2,]=" "
LOAD_NAME[3,]=" "
LOAD_NAME[4,]=" "
LOAD_NAME[5,]=" "
LOAD_NAME[6,]=" "
LOAD_NAME[7,]=" "
LOAD_NAME[8,]=" "
LOAD_NAME[9,]=" "
LOAD_NAME[10,]=" "
LOAD_NAME[11,]=" "
LOAD_NAME[12,]=" "
LOAD_NAME[13,]=" "
LOAD_NAME[14,]=" "
LOAD_NAME[15,]=" "
LOAD_NAME[16,]=" "
DECL LDD_MODE_T LOAD_MODE[16]
LOAD_MODE[1]=#MANUAL
LOAD_MODE[2]=#NONE
LOAD_MODE[3]=#NONE
LOAD_MODE[4]=#NONE
LOAD_MODE[5]=#NONE
LOAD_MODE[6]=#NONE
LOAD_MODE[7]=#NONE
LOAD_MODE[8]=#NONE
LOAD_MODE[9]=#NONE
LOAD_MODE[10]=#NONE
LOAD_MODE[11]=#NONE
LOAD_MODE[12]=#NONE
LOAD_MODE[13]=#NONE
LOAD_MODE[14]=#NONE
LOAD_MODE[15]=#NONE
LOAD_MODE[16]=#NONE
DECL LDD_RESULT_T LOAD_RESULT[16]
LOAD_RESULT[1]=#NONE
LOAD_RESULT[2]=#NONE
LOAD_RESULT[3]=#NONE
LOAD_RESULT[4]=#NONE
LOAD_RESULT[5]=#NONE
LOAD_RESULT[6]=#NONE
LOAD_RESULT[7]=#NONE
LOAD_RESULT[8]=#NONE
LOAD_RESULT[9]=#NONE
LOAD_RESULT[10]=#NONE
LOAD_RESULT[11]=#NONE
LOAD_RESULT[12]=#NONE
LOAD_RESULT[13]=#NONE
LOAD_RESULT[14]=#NONE
LOAD_RESULT[15]=#NONE
LOAD_RESULT[16]=#NONE
DECL IPO_M_T TOOL_TYPE[16]
TOOL_TYPE[1]=#BASE
TOOL_TYPE[2]=#NONE
TOOL_TYPE[3]=#NONE
TOOL_TYPE[4]=#NONE
TOOL_TYPE[5]=#NONE
TOOL_TYPE[6]=#NONE
TOOL_TYPE[7]=#NONE
TOOL_TYPE[8]=#NONE
TOOL_TYPE[9]=#NONE
TOOL_TYPE[10]=#NONE
TOOL_TYPE[11]=#NONE
TOOL_TYPE[12]=#NONE
TOOL_TYPE[13]=#NONE
TOOL_TYPE[14]=#NONE
TOOL_TYPE[15]=#NONE
TOOL_TYPE[16]=#NONE
DECL LOAD LOAD_A1_DATA={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
DECL LOAD LOAD_A2_DATA={M -1.00000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
DECL LOAD LOAD_A3_DATA={M 50.0000,CM {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},J {X 0.0,Y 0.0,Z 0.0}}
INT MAX_BASE=32
DECL FRAME BASE_DATA[32]
BASE_DATA[1]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[2]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[3]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[4]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[5]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[6]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[7]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[8]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[9]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[10]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[11]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[12]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[13]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[14]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[15]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[16]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[17]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[18]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[19]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[20]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[21]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[22]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[23]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[24]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[25]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[26]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[27]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[28]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[29]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[30]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[31]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[32]={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}
DECL CHAR BASE_NAME[32,24]
BASE_NAME[1,]=" "
BASE_NAME[2,]=" "
BASE_NAME[3,]=" "
BASE_NAME[4,]=" "
BASE_NAME[5,]=" "
BASE_NAME[6,]=" "
BASE_NAME[7,]=" "
BASE_NAME[8,]=" "
BASE_NAME[9,]=" "
BASE_NAME[10,]=" "
BASE_NAME[11,]=" "
BASE_NAME[12,]=" "
BASE_NAME[13,]=" "
BASE_NAME[14,]=" "
BASE_NAME[15,]=" "
BASE_NAME[16,]=" "
BASE_NAME[17,]=" "
BASE_NAME[18,]=" "
BASE_NAME[19,]=" "
BASE_NAME[20,]=" "
BASE_NAME[21,]=" "
BASE_NAME[22,]=" "
BASE_NAME[23,]=" "
BASE_NAME[24,]=" "
BASE_NAME[25,]=" "
BASE_NAME[26,]=" "
BASE_NAME[27,]=" "
BASE_NAME[28,]=" "
BASE_NAME[29,]=" "
BASE_NAME[30,]=" "
BASE_NAME[31,]=" "
BASE_NAME[32,]=" "
DECL IPO_M_T BASE_TYPE[32]
BASE_TYPE[1]=#NONE
BASE_TYPE[2]=#NONE
BASE_TYPE[3]=#NONE
BASE_TYPE[4]=#NONE
BASE_TYPE[5]=#NONE
BASE_TYPE[6]=#NONE
BASE_TYPE[7]=#NONE
BASE_TYPE[8]=#NONE
BASE_TYPE[9]=#NONE
BASE_TYPE[10]=#NONE
BASE_TYPE[11]=#NONE
BASE_TYPE[12]=#NONE
BASE_TYPE[13]=#NONE
BASE_TYPE[14]=#NONE
BASE_TYPE[15]=#NONE
BASE_TYPE[16]=#NONE
BASE_TYPE[17]=#NONE
BASE_TYPE[18]=#NONE
BASE_TYPE[19]=#NONE
BASE_TYPE[20]=#NONE
BASE_TYPE[21]=#NONE
BASE_TYPE[22]=#NONE
BASE_TYPE[23]=#NONE
BASE_TYPE[24]=#NONE
BASE_TYPE[25]=#NONE
BASE_TYPE[26]=#NONE
BASE_TYPE[27]=#NONE
BASE_TYPE[28]=#NONE
BASE_TYPE[29]=#NONE
BASE_TYPE[30]=#NONE
BASE_TYPE[31]=#NONE
BASE_TYPE[32]=#NONE
;******************************************
; Variables for CELL DEFINITION
;******************************************
INT MAX_MACHINES=16
DECL MACHINE_DEF_T MACHINE_DEF[16]
MACHINE_DEF[1]={NAME[] "KR 120 R3100-2",COOP_KRC_INDEX 1,PARENT[] "WORLD",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #ROBOT,GEOMETRY[] "ObjectId = 1232261811"}
MACHINE_DEF[2]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[3]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[4]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[5]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[6]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[7]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[8]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[9]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[10]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[11]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[12]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[13]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[14]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[15]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
MACHINE_DEF[16]={NAME[] " ",COOP_KRC_INDEX 0,PARENT[] " ",ROOT {X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0},MECH_TYPE #NONE,GEOMETRY[] " "}
DECL MACHINE_TOOL_T MACHINE_TOOL_DAT[16]
MACHINE_TOOL_DAT[1]={MACH_DEF_INDEX 1,PARENT[] "KR 120 R3100-2",GEOMETRY[] " "}
MACHINE_TOOL_DAT[2]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[3]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[4]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[5]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[6]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[7]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[8]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[9]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[10]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[11]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[12]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[13]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[14]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[15]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_TOOL_DAT[16]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
DECL MACHINE_FRAME_T MACHINE_FRAME_DAT[32]
MACHINE_FRAME_DAT[1]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[2]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[3]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[4]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[5]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[6]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[7]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[8]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[9]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[10]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[11]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[12]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[13]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[14]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[15]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[16]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[17]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[18]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[19]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[20]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[21]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[22]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[23]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[24]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[25]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[26]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[27]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[28]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[29]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[30]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[31]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
MACHINE_FRAME_DAT[32]={MACH_DEF_INDEX 0,PARENT[] " ",GEOMETRY[] " "}
;******************************************
; Variables for axis CALIBRATING
;******************************************
DECL INT CAL_AXIS
BOOL CONST_SPEED
;******************************************
; Variables for added TechPackages
;******************************************
INT POWER
;******************************************
; General purpose return value of functions
; like INVERSE, FORWARD
;******************************************
INT ERR_STATUS=-1
;******************************************
; Variables for TOUCHUP user limit
;******************************************
BOOL UM_TOUCHUP=FALSE
REAL CARTESIAN_TOL=5.00000
REAL ROTATION_ANGLE=10.0000
REAL EXTAX_TOL[6]
EXTAX_TOL[1]=10.0000
EXTAX_TOL[2]=10.0000
EXTAX_TOL[3]=10.0000
EXTAX_TOL[4]=10.0000
EXTAX_TOL[5]=10.0000
EXTAX_TOL[6]=10.0000
;******************************************
; Variables for Displaying and Konfiguring
;******************************************
DECL INT I[20]
I[1]=0
I[2]=0
I[3]=0
I[4]=0
I[5]=0
I[6]=0
I[7]=0
I[8]=0
I[9]=0
I[10]=0
I[11]=0
I[12]=0
I[13]=0
I[14]=0
I[15]=0
I[16]=0
I[17]=0
I[18]=0
I[19]=0
I[20]=0
;******************************************
; Variables for Tracing
;******************************************
DECL TRACECACHE_T TRACE_CACHE[10]
TRACE_CACHE[1]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[2]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[3]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[4]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[5]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[6]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[7]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[8]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[9]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
TRACE_CACHE[10]={NAME[] " ",ACT_ITER 0,MAX_ITER 1}
DECL INT TraceOverflowIndex=1
;******************************************
; all for InterBus Mapping on optional segments
;******************************************
DECL INT IBUS_SEGMENT[16]
IBUS_SEGMENT[1]=0
IBUS_SEGMENT[2]=0
IBUS_SEGMENT[3]=0
IBUS_SEGMENT[4]=0
IBUS_SEGMENT[5]=0
IBUS_SEGMENT[6]=0
IBUS_SEGMENT[7]=0
IBUS_SEGMENT[8]=0
IBUS_SEGMENT[9]=0
IBUS_SEGMENT[10]=0
IBUS_SEGMENT[11]=0
IBUS_SEGMENT[12]=0
IBUS_SEGMENT[13]=0
IBUS_SEGMENT[14]=0
IBUS_SEGMENT[15]=0
IBUS_SEGMENT[16]=0
;******************************************
; Reduction factors
;******************************************
DECL REAL RedVelExAx[6]
RedVelExAx[1]=100.000
RedVelExAx[2]=100.000
RedVelExAx[3]=100.000
RedVelExAx[4]=100.000
RedVelExAx[5]=100.000
RedVelExAx[6]=100.000
DECL REAL RedAccExAx[6]
RedAccExAx[1]=100.000
RedAccExAx[2]=100.000
RedAccExAx[3]=100.000
RedAccExAx[4]=100.000
RedAccExAx[5]=100.000
RedAccExAx[6]=100.000
;******************************************
; Joint offset
;******************************************
STRUC JOINT_DEVICE_T CHAR NAME[39],REAL OFFSET,INT AXIS_INDEX
DECL JOINT_DEVICE_T JOINT_DEVICE[32]
JOINT_DEVICE[1]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[2]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[3]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[4]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[5]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[6]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[7]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[8]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[9]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[10]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[11]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[12]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[13]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[14]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[15]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[16]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[17]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[18]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[19]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[20]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[21]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[22]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[23]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[24]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[25]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[26]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[27]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[28]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[29]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[30]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[31]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
JOINT_DEVICE[32]={NAME[] " ",OFFSET 0.0,AXIS_INDEX -1}
DECL INT JOINT_DEVICE_INDEX[32]
JOINT_DEVICE_INDEX[1]=-1
JOINT_DEVICE_INDEX[2]=-1
JOINT_DEVICE_INDEX[3]=-1
JOINT_DEVICE_INDEX[4]=-1
JOINT_DEVICE_INDEX[5]=-1
JOINT_DEVICE_INDEX[6]=-1
JOINT_DEVICE_INDEX[7]=-1
JOINT_DEVICE_INDEX[8]=-1
JOINT_DEVICE_INDEX[9]=-1
JOINT_DEVICE_INDEX[10]=-1
JOINT_DEVICE_INDEX[11]=-1
JOINT_DEVICE_INDEX[12]=-1
JOINT_DEVICE_INDEX[13]=-1
JOINT_DEVICE_INDEX[14]=-1
JOINT_DEVICE_INDEX[15]=-1
JOINT_DEVICE_INDEX[16]=-1
JOINT_DEVICE_INDEX[17]=-1
JOINT_DEVICE_INDEX[18]=-1
JOINT_DEVICE_INDEX[19]=-1
JOINT_DEVICE_INDEX[20]=-1
JOINT_DEVICE_INDEX[21]=-1
JOINT_DEVICE_INDEX[22]=-1
JOINT_DEVICE_INDEX[23]=-1
JOINT_DEVICE_INDEX[24]=-1
JOINT_DEVICE_INDEX[25]=-1
JOINT_DEVICE_INDEX[26]=-1
JOINT_DEVICE_INDEX[27]=-1
JOINT_DEVICE_INDEX[28]=-1
JOINT_DEVICE_INDEX[29]=-1
JOINT_DEVICE_INDEX[30]=-1
JOINT_DEVICE_INDEX[31]=-1
JOINT_DEVICE_INDEX[32]=-1
BOOL bJointOffsetHasBeenSet=FALSE
INT iLastAxisNo=0
ENUM TIMER_ACTIONTYPE TimerStart,TimerStop,TimeOut
BOOL EasyTeachKeepOriWarning=FALSE
INT EasyTeachKeepOriHandle=0
;ENDFOLD (BASISTECH GLOBALS)
;FOLD AUTOEXT GLOBALS
;==================================
; Structures:
;==================================
ENUM FUNCT_TYPE PGNO_GET,PGNO_ACKN,PGNO_FAULT
ENUM P00_COMMAND INIT_EXT,EXT_PGNO,CHK_HOME,EXT_ERR
STRUC SPS_PROG_TYPE INT PROG_NR,CHAR PROG_NAME[12]
;==================================
; External declarations:
;==================================
EXT P00 (P00_COMMAND :IN,FUNCT_TYPE :IN,CHAR [] :OUT,INT :IN )
;External declaration for Submit controlled AutoExt
EXT P00_SUBM (P00_COMMAND :IN,FUNCT_TYPE :IN )
;==================================
; Variables:
;==================================
; Variables for internal
; Communication:
;----------------------------------
BOOL ERROR_FLAG
BOOL CHECK_HOME=TRUE
BOOL PROG_CONTROL=FALSE
DECL CHAR PRO_NAME1_L[8]
PRO_NAME1_L[]=" "
DECL CHAR PRO_NAME1_A[8]
PRO_NAME1_A[]=" "
INT PGNO=0 ;copy of ext. pgno
INT PGNO_ERROR=0 ;transmission error
INT PGNO_TYPE=1 ;coding type of ext. pgno
INT REFLECT_PROG_NR=0 ; enable mirroring of program number inputs (1=enabled, 0=disabled)
; Variables for External
; Communication: I/O-Interface
;----------------------------------
INT PGNO_FBIT=9 ;first bit of ext. pgno input $IN[]
INT PGNO_FBIT_REFL=999 ;first bit of ext. pgno reflection output $OUT[]
INT PGNO_LENGTH=8 ;length of ext. pgno (max. 16)
INT PGNO_PARITY=1 ;parity bit of ext. pgno
INT PGNO_REQ=6 ;request ext. pgno input
INT PGNO_VALID=2 ;validate ext. pgno input
INT APPL_RUN=7 ;application program is running output
INT ERR_TO_PLC=35 ;error output to PLC
INT P01_STEP
INT CHK_STEP
INT PGNO_FLAG
; Table for assign SPS program number to program name
INT MAX_SPS_PROG=12
DECL SPS_PROG_TYPE SPS_PROG[12]
SPS_PROG[1]={PROG_NR 1,PROG_NAME[] "HP01() "}
SPS_PROG[2]={PROG_NR 2,PROG_NAME[] "HP02() "}
SPS_PROG[3]={PROG_NR 3,PROG_NAME[] "HP03() "}
SPS_PROG[4]={PROG_NR 4,PROG_NAME[] "HP04() "}
SPS_PROG[5]={PROG_NR 5,PROG_NAME[] "HP05() "}
SPS_PROG[6]={PROG_NR 6,PROG_NAME[] "HP06() "}
SPS_PROG[7]={PROG_NR 7,PROG_NAME[] "HP07() "}
SPS_PROG[8]={PROG_NR 8,PROG_NAME[] "HP08() "}
SPS_PROG[9]={PROG_NR 9,PROG_NAME[] "HP09() "}
SPS_PROG[10]={PROG_NR 10,PROG_NAME[] "HP10() "}
SPS_PROG[11]={PROG_NR 62,PROG_NAME[] "HP62() "}
SPS_PROG[12]={PROG_NR 63,PROG_NAME[] "HP63() "}
DECL CHAR TMPNAME[128]
TMPNAME[]=" "
;ENDFOLD (AUTOEXT GLOBALS)
;FOLD BackupManagerConfig
BOOL BM_ENABLED
INT BM_OUTPUTVALUE
SIGNAL BM_OutputSignal $OUT[4095] TO $OUT[4096]
SIGNAL BM_InputSignal $IN[1026] TO $IN[1026]
;ENDFOLD BackupManagerConfig
;FOLD Conveyor
DECL INT CONV_PART_NBR[16]
CONV_PART_NBR[1]=0
CONV_PART_NBR[2]=0
CONV_PART_NBR[3]=0
CONV_PART_NBR[4]=0
CONV_PART_NBR[5]=0
CONV_PART_NBR[6]=0
CONV_PART_NBR[7]=0
CONV_PART_NBR[8]=0
CONV_PART_NBR[9]=0
CONV_PART_NBR[10]=0
CONV_PART_NBR[11]=0
CONV_PART_NBR[12]=0
CONV_PART_NBR[13]=0
CONV_PART_NBR[14]=0
CONV_PART_NBR[15]=0
CONV_PART_NBR[16]=0
ENUM CONV_MODE_TYPE Absolute,Relative
DECL CONV_MODE_TYPE ActualConveyorMode=#Relative
;ENDFOLD Conveyor
;FOLD USER GLOBALS
;*******************************************
;Make your modifications -ONLY- here
;*******************************************
;==================================
; Userdefined Types
;==================================
;==================================
; Userdefined Externals
;==================================
;==================================
; Userdefined Variables
;==================================
;ENDFOLD (USER GLOBALS)
ENDDAT

View File

@@ -0,0 +1,5 @@
&ACCESS R
&COMMENT global points
DEFDAT GLOBAL_POINTS PUBLIC
ENDDAT

View File

@@ -0,0 +1,12 @@
&ACCESS RV
DEFDAT MqttConfig PUBLIC
; Publisher IP address for KukaConnect data-set configuration.
; Should either start with "mqtt://" or "mqtts://".
GLOBAL CHAR KUKACONNECT_BROKERIP[100]
KUKACONNECT_BROKERIP[]="mqtts://broker-ip:8883"
; Publisher for KukaConnect data-set only starts if enabled.
GLOBAL BOOL KUKACONNECT_ENABLED=FALSE;
ENDDAT

View File

@@ -0,0 +1,7 @@
&ACCESS R1
&COMMENT Message library
DEFDAT MsgLib PUBLIC
DECL INT lnHandle=0
ENDDAT

View File

@@ -0,0 +1,753 @@
&ACCESS R1
&COMMENT Message library
DEF MsgLib ( )
;**************************************************
;Creation Date: 7.12.2007
;Change: 23.06.2012 additional properties possible
; for logging and advance stop control
;**************************************************
;FOLD Interfaces and message examples within this fold
;----------Global subroutines and functions: -------
;MsgNotify(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
;MsgNotifyTextPar(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, sTextPar2[]:IN, nMsgNr:IN,MsgOpt:IN)
;MsgQuit(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
;MsgState(nHandle:OUT, sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
;MsgLoop(sText[]:IN,sModul[]:IN)
;MsgDialog(nAnswer:OUT,sText[]:IN,sModul[]:IN,sTextPar[]:IN,sDialogSK1[]:IN,sDialogSK2[]:IN,sDialogSK3[]:IN,sDialogSK4[]:IN,sDialogSK5[]:IN,sDialogSK6[]:IN,sDialogSK7[]:IN,NoBrakes:IN, nMsgNr:IN,MsgOpt:IN)
;----------Explainations for parameters: -----------
;CHAR sText[] message text or message DB-key (80 chars)
;CHAR sModul[] (option) modulname or key (24 char)
;INT nNumPar (option)numeric value inserted in sText[] at the position %1
;CHAR sTextPar[] (option)text or message DB-key inserted in sText[] at the position %1 (26 char)
;MsgOpt (option) Structure KrlMsgOpt_T BOOL VL_Stop,Clear_P_Reset,Log_To_DB
; (option) VL_Stop=TRUE => Creates an advance stop | FALSE avoids this behavior
; (option) Clear_P_Reset=TRUE (Default) deletes Messages at program reset / cancelled
; (option) Log_To_DB=TRUE => entry into logbook => enfluence to system performance
;----------Examples: -------------------------------
;MsgNotifyTextPar("Error", "CrossMeld", 0, "Error message 1", "Error message 2", 511)
;MsgNotify("this is a notify message")
;MsgQuit("this is a quit message", "myMod")
;MsgQuit("this is a quit message", "myMod",,,12345)
;INT myInt=123
;MsgQuit("this is the %1 quit message", "Module", myInt)
;MsgNotify("this is a %1 notify message", "Tech", , "asd")
;MsgLoop("this is the loop message")
;MsgLoop(" "); cancels loop message
;MsgDialog(DialogAnswer, "DBKEY" OR "dialog message", "Module", "TextPar for %1 in DBKey", "DialogKey1", "DialogKey2", "DialogKey3",,,,,,12345)
;MsgDialog(DialogAnswer, "StartPTP", "CrossMeld", "Achse 3", "YES", "NO", "Cancel")
;MsgNotifyTextPar("DBKEY" OR "notify message", "Module", 0 OR >0, "TextPar for %1", "TextPar for %2")
;nNumPar = 0: TextPar will be send as %1 %2 nNumPar > 0: nNumPar will be send as %1
;ENDFOLD
END
;***************************
;Execution of notify message
;***************************
GLOBAL DEF MsgNotify(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
DECL CHAR sText[], sModul[], sTextPar[]
DECL KrlMsg_T Msg
DECL KrlMsgParType_T MsgParType
DECL KrlMsgPar_T MsgPar[3]
DECL KrlMsgOpt_T MsgOpt ;Bool-elements: VL_Stop,Clear_P_Reset,Log_To_DB
DECL KrlMsgOpt_T DummyMsgOpt
DECL State_T State
DECL INT count, len, offset, nNumPar, nHandle, nMsgNr
;Default Values: MsgOpt={ VL_Stop TRUE, Clear_P_Reset TRUE, Log_To_DB False }
ON_ERROR_PROCEED
DummyMsgOpt=MsgOpt
IF ($ERR.Number<>0) THEN
MsgOpt.VL_Stop=TRUE ;DEFAULT setting TRUE
MsgOpt.Clear_P_Reset=TRUE
MsgOpt.Log_To_DB=FALSE
ERR_CLEAR($ERR)
ENDIF
;Creates default values in case of none availability
MsgOpt=CheckOfMsgOpt(MsgOpt)
Msg.Nr=1
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
Msg.Nr=nMsgNr
len=STRLEN(sText[])
IF len>0 THEN
IF len>80 THEN
len=80
ENDIF
FOR count=1 TO len
Msg.Msg_txt[count]=sText[count]
ENDFOR
ELSE
Msg.Msg_txt[]="parameter sText[] is missing"
ENDIF
len=STRLEN(sModul[])
IF len>0 THEN
IF len>24 THEN
len=24
ENDIF
FOR count=1 TO len
Msg.Modul[count]=sModul[count]
ENDFOR
ELSE
Msg.Modul[]="Appl"
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
offset=nNumPar
IF $ERR.Number==0 THEN
offset=0
MsgPar[1].Par_Txt[]=" "
SWRITE(MsgPar[1].Par_Txt[], State, Offset, "%d", nNumPar)
MsgPar[1].Par_type=#Value
ELSE
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
len=STRLEN(sTextPar[])
IF len>0 THEN
IF len>26 THEN
len=26
ENDIF
FOR count=1 TO len
MsgPar[1].Par_Txt[count]=sTextPar[count]
ENDFOR
MsgPar[1].Par_type=#Value
ENDIF
ENDIF
nHandle=Set_KrlMsg (#NOTIFY, Msg, MsgPar[], MsgOpt)
END ;(MsgNotify)
;*****************************
;Execution of the quit message
;*****************************
GLOBAL DEF MsgQuit(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
DECL CHAR sText[], sModul[], sTextPar[]
DECL KrlMsg_T Msg
DECL KrlMsgParType_T MsgParType
DECL KrlMsgPar_T MsgPar[3]
DECL KrlMsgOpt_T MsgOpt
DECL KrlMsgOpt_T DummyMsgOpt
DECL State_T State
DECL INT count, len, offset, nNumPar, nHandle, nMsgNr
ON_ERROR_PROCEED
DummyMsgOpt=MsgOpt
IF ($ERR.Number<>0) THEN
MsgOpt.VL_Stop=TRUE ;DEFAULT setting TRUE
MsgOpt.Clear_P_Reset=TRUE
MsgOpt.Log_To_DB=FALSE
ERR_CLEAR($ERR)
ENDIF
;Creates default values in case of none availability
MsgOpt=CheckOfMsgOpt(MsgOpt)
Msg.Nr=1
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
Msg.Nr=nMsgNr
len=STRLEN(sText[])
IF len>0 THEN
IF len>80 THEN
len=80
ENDIF
FOR count=1 TO len
Msg.Msg_txt[count]=sText[count]
ENDFOR
ELSE
Msg.Msg_txt[]="parameter sText[] is missing"
ENDIF
len=STRLEN(sModul[])
IF len>0 THEN
IF len>24 THEN
len=24
ENDIF
FOR count=1 TO len
Msg.Modul[count]=sModul[count]
ENDFOR
ELSE
Msg.Modul[]="Appl"
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
offset=nNumPar
IF $ERR.Number==0 THEN
offset=0
MsgPar[1].Par_Txt[]=" "
SWRITE(MsgPar[1].Par_Txt[], State, offset, "%d", nNumPar)
MsgPar[1].Par_type=#Value
ELSE
ERR_CLEAR($ERR)
len=STRLEN(sTextPar[])
IF len>0 THEN
IF len>26 THEN
len=26
ENDIF
FOR count=1 TO len
MsgPar[1].Par_Txt[count]=sTextPar[count]
ENDFOR
MsgPar[1].Par_type=#Value
ENDIF
ENDIF
nHandle=Set_KrlMsg (#QUIT, Msg, MsgPar[], MsgOpt)
WHILE ( Exists_KrlMsg(nHandle) )
WAIT sec 0.1
ENDWHILE
END ;(MsgQuit)
;******************************
;Execution of the state message
;******************************
GLOBAL DEF MsgState(nHandle:OUT, sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
DECL CHAR sText[], sModul[], sTextPar[]
DECL KrlMsg_T Msg
DECL KrlMsgParType_T MsgParType
DECL KrlMsgPar_T MsgPar[3]
DECL KrlMsgOpt_T MsgOpt
DECL KrlMsgOpt_T DummyMsgOpt
DECL State_T State
DECL INT count, len, offset, nNumPar, nHandle, nMsgNr
ON_ERROR_PROCEED
DummyMsgOpt=MsgOpt
IF ($ERR.Number<>0) THEN
MsgOpt.VL_Stop=TRUE ;DEFAULT setting TRUE
MsgOpt.Clear_P_Reset=TRUE
MsgOpt.Log_To_DB=FALSE
ERR_CLEAR($ERR)
ENDIF
;Creates default values in case of none availability
MsgOpt=CheckOfMsgOpt(MsgOpt)
Msg.Nr=1
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
Msg.Nr=nMsgNr
len=STRLEN(sText[])
IF len>0 THEN
IF len>80 THEN
len=80
ENDIF
FOR count=1 TO len
Msg.Msg_txt[count]=sText[count]
ENDFOR
ELSE
Msg.Msg_txt[]="parameter sText[] is missing"
ENDIF
len=STRLEN(sModul[])
IF len>0 THEN
IF len>24 THEN
len=24
ENDIF
FOR count=1 TO len
Msg.Modul[count]=sModul[count]
ENDFOR
ELSE
Msg.Modul[]="Appl"
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
offset=nNumPar
IF $ERR.Number==0 THEN
offset=0
MsgPar[1].Par_Txt[]=" "
SWRITE(MsgPar[1].Par_Txt[], State, offset, "%d", nNumPar)
MsgPar[1].Par_type=#Value
ELSE
ERR_CLEAR($ERR)
len=STRLEN(sTextPar[])
IF len>0 THEN
IF len>26 THEN
len=26
ENDIF
FOR count=1 TO len
MsgPar[1].Par_Txt[count]=sTextPar[count]
ENDFOR
MsgPar[1].Par_type=#Value
ENDIF
ENDIF
nHandle=Set_KrlMsg (#STATE, Msg, MsgPar[], MsgOpt)
END ;(MsgState)
;***************************
;Execution of loop message
;***************************
GLOBAL DEF MsgLoop(sText[]:IN,sModul[]:IN)
DECL CHAR sText[], sModul[]
DECL CHAR sMsg[80]
DECL CHAR sMod[24]
DECL INT count,len
len=STRLEN(sText[])
IF len>0 THEN
IF len>80 THEN
len=80
ENDIF
FOR count=1 TO len
sMsg[count]=sText[count]
ENDFOR
ENDIF
len=STRLEN(sModul[])
IF len>0 THEN
IF len>24 THEN
len=24
ENDIF
FOR count=1 TO len
sMod[count]=sModul[count]
ENDFOR
ELSE
sMod[]="Appl"
ENDIF
IF (STRLEN(sMsg[])>0) THEN
IF lnHandle>0 THEN
WAIT FoR Clear_KrlMsg (lnHandle) OR TRUE
lnHandle=0
ENDIF
FOR count=1 TO STRLEN(sMsg[])
IF sMsg[count]<>" " THEN
MsgState(lnHandle, sMsg[], sMod[])
EXIT
ENDIF
ENDFOR
ENDIF
END ;(MsgLoop)
;*************************************************
;Execution of dialog message
;parameter NoBrakes: Robot leaves brakes open
;*************************************************
GLOBAL DEF MsgDialog(nAnswer:OUT,sText[]:IN,sModul[]:IN,sTextPar[]:IN,sDialogSK1[]:IN,sDialogSK2[]:IN,sDialogSK3[]:IN,sDialogSK4[]:IN,sDialogSK5[]:IN,sDialogSK6[]:IN,sDialogSK7[]:IN,NoBrakes:IN, nMsgNr:IN,MsgOpt:IN)
DECL KrlMsg_T Msg
DECL KrlMsgPar_T MsgPar[3]
DECL KrlMsgOpt_T MsgOpt
DECL KrlMsgOpt_T DummyMsgOpt
DECL KrlMsgDlgSK_T Msg_SOFTKEY[7]
DECL INT count, len, nHandle, nAnswer, nMsgNr
DECL BOOL NoBrakes
DECL CHAR sText[], sModul[], sTextPar[], sDialogSK1[], sDialogSK2[], sDialogSK3[], sDialogSK4[], sDialogSK5[], sDialogSK6[], sDialogSK7[]
DECL CHAR sMsg[80]
ON_ERROR_PROCEED
DummyMsgOpt=MsgOpt
IF ($ERR.Number<>0) THEN
MsgOpt.VL_Stop=TRUE ;DEFAULT setting TRUE
MsgOpt.Clear_P_Reset=TRUE
MsgOpt.Log_To_DB=FALSE
ERR_CLEAR($ERR)
ENDIF
;Creates default values in case of none availability
MsgOpt=CheckOfMsgOpt(MsgOpt)
Msg.Nr=1
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
Msg.Nr=nMsgNr
len=STRLEN(sText[])
IF len>0 THEN
IF len>80 THEN
len=80
ENDIF
FOR count=1 TO len
Msg.Msg_txt[count]=sText[count]
ENDFOR
ELSE
Msg.Msg_txt[]="parameter sText[] is missing"
ENDIF
len=STRLEN(sModul[])
IF len>0 THEN
IF len>24 THEN
len=24
ENDIF
FOR count=1 TO len
Msg.Modul[count]=sModul[count]
ENDFOR
ELSE
Msg.Modul[]="Appl"
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
len=STRLEN(sDialogSK1[])
IF $ERR.Number==0 THEN
IF len > 0 THEN
IF len>24 THEN
len=24
ENDIF
Msg_SOFTKEY[7].Sk_Type = #KEY
FOR count=1 TO len
Msg_SOFTKEY[7].Sk_txt[count] = sDialogSK1[count]
ENDFOR
ENDIF
ELSE
FOR count=1 TO 24
Msg_SOFTKEY[7].Sk_txt[count] = " "
ENDFOR
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
len=STRLEN(sDialogSK2[])
IF $ERR.Number==0 THEN
len=STRLEN(sDialogSK2[])
IF len > 0 THEN
IF len>24 THEN
len=24
ENDIF
Msg_SOFTKEY[6].Sk_Type = #KEY
FOR count=1 TO len
Msg_SOFTKEY[6].Sk_txt[count] = sDialogSK2[count]
ENDFOR
ENDIF
ELSE
FOR count=1 TO 24
Msg_SOFTKEY[6].Sk_txt[count] = " "
ENDFOR
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
len=STRLEN(sDialogSK3[])
IF $ERR.Number==0 THEN
len=STRLEN(sDialogSK3[])
IF len > 0 THEN
IF len>24 THEN
len=24
ENDIF
Msg_SOFTKEY[5].Sk_Type = #KEY
FOR count=1 TO len
Msg_SOFTKEY[5].Sk_txt[count] = sDialogSK3[count]
ENDFOR
ENDIF
ELSE
FOR count=1 TO 24
Msg_SOFTKEY[5].Sk_txt[count] = " "
ENDFOR
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
len=STRLEN(sDialogSK4[])
IF $ERR.Number==0 THEN
len=STRLEN(sDialogSK4[])
IF len > 0 THEN
IF len>24 THEN
len=24
ENDIF
Msg_SOFTKEY[4].Sk_Type = #KEY
FOR count=1 TO len
Msg_SOFTKEY[4].Sk_txt[count] = sDialogSK4[count]
ENDFOR
ENDIF
ELSE
FOR count=1 TO 24
Msg_SOFTKEY[4].Sk_txt[count] = " "
ENDFOR
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
len=STRLEN(sDialogSK5[])
IF $ERR.Number==0 THEN
len=STRLEN(sDialogSK5[])
IF len > 0 THEN
IF len>24 THEN
len=24
ENDIF
Msg_SOFTKEY[3].Sk_Type = #KEY
FOR count=1 TO len
Msg_SOFTKEY[3].Sk_txt[count] = sDialogSK5[count]
ENDFOR
ENDIF
ELSE
FOR count=1 TO 24
Msg_SOFTKEY[3].Sk_txt[count] = " "
ENDFOR
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
len=STRLEN(sDialogSK6[])
IF $ERR.Number==0 THEN
len=STRLEN(sDialogSK6[])
IF len > 0 THEN
IF len>24 THEN
len=24
ENDIF
Msg_SOFTKEY[2].Sk_Type = #KEY
FOR count=1 TO len
Msg_SOFTKEY[2].Sk_txt[count] = sDialogSK6[count]
ENDFOR
ENDIF
ELSE
FOR count=1 TO 24
Msg_SOFTKEY[2].Sk_txt[count] = " "
ENDFOR
ENDIF
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
len=STRLEN(sDialogSK7[])
IF $ERR.Number==0 THEN
len=STRLEN(sDialogSK7[])
IF len > 0 THEN
IF len>24 THEN
len=24
ENDIF
Msg_SOFTKEY[1].Sk_Type = #KEY
FOR count=1 TO len
Msg_SOFTKEY[1].Sk_txt[count] = sDialogSK7[count]
ENDFOR
ENDIF
ELSE
FOR count=1 TO 24
Msg_SOFTKEY[1].Sk_txt[count] = " "
ENDFOR
ENDIF
len=STRLEN(sTextPar[])
IF len>0 THEN
IF len>26 THEN
len=26
ENDIF
FOR count=1 TO len
MsgPar[1].Par_Txt[count]=sTextPar[count]
ENDFOR
MsgPar[1].Par_type=#Value
ENDIF
nHandle=SET_KRLDLG(Msg, MsgPar[], Msg_SOFTKEY[], MsgOpt)
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
NoBrakes=NoBrakes
IF NOT($ERR.Number==0) THEN
NoBrakes=FALSE
ENDIF
IF (nHandle > 0) THEN
WHILE (Exists_KrlDlg(nHandle, nAnswer))
WAIT SEC 0.5
IF NoBrakes THEN
PTP $AXIS_ACT
ENDIF
ENDWHILE
ENDIF
END ;(MsgDialog)
;*************************************************
;Execution of notify message with text parameter
;*************************************************
GLOBAL DEF MsgNotifyTextPar(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, sTextPar2[]:IN, nMsgNr:IN,MsgOpt:IN)
DECL CHAR sText[], sModul[], sTextPar[], sTextPar2[]
DECL KrlMsg_T Msg
DECL EKrlMsgType MsgType
DECL KrlMsgParType_T MsgParType
DECL KrlMsgPar_T MsgPar[3]
DECL KrlMsgOpt_T MsgOpt
DECL KrlMsgOpt_T DummyMsgOpt
DECL State_T State
DECL INT count, len, offset, nNumPar, nHandle, nMsgNr
ON_ERROR_PROCEED
DummyMsgOpt=MsgOpt
IF ($ERR.Number<>0) THEN
MsgOpt.VL_Stop=TRUE ;DEFAULT setting TRUE
MsgOpt.Clear_P_Reset=TRUE
MsgOpt.Log_To_DB=FALSE
ERR_CLEAR($ERR)
ENDIF
;Creates default values in case of none availability
MsgOpt=CheckOfMsgOpt(MsgOpt)
MsgType=#Notify
Msg.Nr=1
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
Msg.Nr=nMsgNr
len=STRLEN(sText[])
IF len>0 THEN
IF len>80 THEN
len=80
ENDIF
FOR count=1 TO len
Msg.Msg_txt[count]=sText[count]
ENDFOR
ELSE
Msg.Msg_txt[]="parameter sText[] is missing"
ENDIF
len=STRLEN(sModul[])
IF len>0 THEN
IF len>24 THEN
len=24
ENDIF
FOR count=1 TO len
Msg.Modul[count]=sModul[count]
ENDFOR
ELSE
Msg.Modul[]="Appl"
ENDIF
offset=nNumPar
IF nNumPar==0 THEN
; 1st Parameter
len=STRLEN(sTextPar[])
IF len>0 THEN
IF len>26 THEN
len=26
ENDIF
FOR count=1 TO len
MsgPar[1].Par_Txt[count]=sTextPar[count]
ENDFOR
MsgPar[1].Par_type=#Value
ENDIF
; 2nd Parameter
len=STRLEN(sTextPar2[])
IF len>0 THEN
IF len>26 THEN
len=26
ENDIF
FOR count=1 TO len
MsgPar[2].Par_Txt[count]=sTextPar2[count]
ENDFOR
MsgPar[2].Par_type=#Value
ENDIF
ELSE
offset=0
MsgPar[1].Par_Txt[]=" "
SWRITE(MsgPar[1].Par_Txt[], State, Offset, "%d", nNumPar)
MsgPar[1].Par_type=#Value
ENDIF
nHandle=Set_KrlMsg (MsgType, Msg, MsgPar[], MsgOpt)
END ;(MsgNotifyTextPar)
;*************************************************
;Execution of quit message with text parameter
;*************************************************
GLOBAL DEF MsgQuitTextPar(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, sTextPar2[]:IN, nMsgNr:IN,MsgOpt:IN)
DECL CHAR sText[], sModul[], sTextPar[], sTextPar2[]
DECL KrlMsg_T Msg
DECL EKrlMsgType MsgType
DECL KrlMsgParType_T MsgParType
DECL KrlMsgPar_T MsgPar[3]
DECL KrlMsgOpt_T MsgOpt
DECL KrlMsgOpt_T DummyMsgOpt
DECL State_T State
DECL INT count, len, offset, nNumPar, nHandle, nMsgNr
ON_ERROR_PROCEED
DummyMsgOpt=MsgOpt
IF ($ERR.Number<>0) THEN
MsgOpt.VL_Stop=TRUE ;DEFAULT setting TRUE
MsgOpt.Clear_P_Reset=TRUE
MsgOpt.Log_To_DB=FALSE
ERR_CLEAR($ERR)
ELSE
ERR_RAISE($ERR)
ENDIF
;Creates default values in case of none availability
MsgOpt=CheckOfMsgOpt(MsgOpt)
MsgType=#QUIT
Msg.Nr=1
ERR_CLEAR($ERR)
ON_ERROR_PROCEED
Msg.Nr=nMsgNr
len=STRLEN(sText[])
IF len>0 THEN
IF len>80 THEN
len=80
ENDIF
FOR count=1 TO len
Msg.Msg_txt[count]=sText[count]
ENDFOR
ELSE
Msg.Msg_txt[]="parameter sText[] is missing"
ENDIF
len=STRLEN(sModul[])
IF len>0 THEN
IF len>24 THEN
len=24
ENDIF
FOR count=1 TO len
Msg.Modul[count]=sModul[count]
ENDFOR
ELSE
Msg.Modul[]="Appl"
ENDIF
offset=nNumPar
IF nNumPar==0 THEN
; 1st Parameter
len=STRLEN(sTextPar[])
IF len>0 THEN
IF len>26 THEN
len=26
ENDIF
FOR count=1 TO len
MsgPar[1].Par_Txt[count]=sTextPar[count]
ENDFOR
MsgPar[1].Par_type=#Value
ENDIF
; 2nd Parameter
len=STRLEN(sTextPar2[])
IF len>0 THEN
IF len>26 THEN
len=26
ENDIF
FOR count=1 TO len
MsgPar[2].Par_Txt[count]=sTextPar2[count]
ENDFOR
MsgPar[2].Par_type=#Value
ENDIF
ELSE
offset=0
MsgPar[1].Par_Txt[]=" "
SWRITE(MsgPar[1].Par_Txt[], State, Offset, "%d", nNumPar)
MsgPar[1].Par_type=#Value
ENDIF
nHandle=Set_KrlMsg (MsgType, Msg, MsgPar[], MsgOpt)
END ;(MsgQuitTextPar)
;*****************************
;* Check of missing elements *
;*****************************
DEFFCT KrlMsgOpt_T CheckOfMsgOpt(LocalMsgOpt:IN)
DECL KrlMsgOpt_T LocalMsgOpt ;Bool-elements: VL_Stop,Clear_P_Reset,Log_To_DB
DECL KrlMsgOpt_T DummyMsgOpt
;Default Values: MsgOpt={ VL_Stop TRUE, Clear_P_Reset TRUE, Log_To_DB False }
ON_ERROR_PROCEED
DummyMsgOpt.VL_Stop=LocalMsgOpt.VL_Stop
IF ($ERR.Number<>0) THEN
LocalMsgOpt.VL_Stop=TRUE ;DEFAULT setting TRUE
ERR_CLEAR($ERR)
ENDIF
ON_ERROR_PROCEED
DummyMsgOpt.Clear_P_Reset=LocalMsgOpt.Clear_P_Reset
IF ($ERR.Number<>0) THEN
LocalMsgOpt.Clear_P_Reset=TRUE ;DEFAULT setting TRUE
ERR_CLEAR($ERR)
ENDIF
ON_ERROR_PROCEED
DummyMsgOpt.Log_To_DB=LocalMsgOpt.Log_To_DB
IF ($ERR.Number<>0) THEN
LocalMsgOpt.Log_To_DB=FALSE ;DEFAULT setting FALSE
ERR_CLEAR($ERR)
ENDIF
RETURN(LocalMsgOpt)
ENDFCT ;(CheckOfMsgOpt)

2084
KUKA/KRC/R1/System/bas.src Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,817 @@
&ACCESS R1
&COMMENT Collision monitoring library
DEFDAT COLLMONLIB PUBLIC
;DO NOT MODIFY THIS FILE
INT NUM_COLLMON_SETTINGS=30
INT COLLMON_SETTING[30,12]
COLLMON_SETTING[1,1]=150
COLLMON_SETTING[1,2]=150
COLLMON_SETTING[1,3]=150
COLLMON_SETTING[1,4]=150
COLLMON_SETTING[1,5]=150
COLLMON_SETTING[1,6]=150
COLLMON_SETTING[1,7]=150
COLLMON_SETTING[1,8]=150
COLLMON_SETTING[1,9]=150
COLLMON_SETTING[1,10]=150
COLLMON_SETTING[1,11]=150
COLLMON_SETTING[1,12]=150
COLLMON_SETTING[2,1]=150
COLLMON_SETTING[2,2]=150
COLLMON_SETTING[2,3]=150
COLLMON_SETTING[2,4]=150
COLLMON_SETTING[2,5]=150
COLLMON_SETTING[2,6]=150
COLLMON_SETTING[2,7]=150
COLLMON_SETTING[2,8]=150
COLLMON_SETTING[2,9]=150
COLLMON_SETTING[2,10]=150
COLLMON_SETTING[2,11]=150
COLLMON_SETTING[2,12]=150
COLLMON_SETTING[3,1]=150
COLLMON_SETTING[3,2]=150
COLLMON_SETTING[3,3]=150
COLLMON_SETTING[3,4]=150
COLLMON_SETTING[3,5]=150
COLLMON_SETTING[3,6]=150
COLLMON_SETTING[3,7]=150
COLLMON_SETTING[3,8]=150
COLLMON_SETTING[3,9]=150
COLLMON_SETTING[3,10]=150
COLLMON_SETTING[3,11]=150
COLLMON_SETTING[3,12]=150
COLLMON_SETTING[4,1]=150
COLLMON_SETTING[4,2]=150
COLLMON_SETTING[4,3]=150
COLLMON_SETTING[4,4]=150
COLLMON_SETTING[4,5]=150
COLLMON_SETTING[4,6]=150
COLLMON_SETTING[4,7]=150
COLLMON_SETTING[4,8]=150
COLLMON_SETTING[4,9]=150
COLLMON_SETTING[4,10]=150
COLLMON_SETTING[4,11]=150
COLLMON_SETTING[4,12]=150
COLLMON_SETTING[5,1]=150
COLLMON_SETTING[5,2]=150
COLLMON_SETTING[5,3]=150
COLLMON_SETTING[5,4]=150
COLLMON_SETTING[5,5]=150
COLLMON_SETTING[5,6]=150
COLLMON_SETTING[5,7]=150
COLLMON_SETTING[5,8]=150
COLLMON_SETTING[5,9]=150
COLLMON_SETTING[5,10]=150
COLLMON_SETTING[5,11]=150
COLLMON_SETTING[5,12]=150
COLLMON_SETTING[6,1]=150
COLLMON_SETTING[6,2]=150
COLLMON_SETTING[6,3]=150
COLLMON_SETTING[6,4]=150
COLLMON_SETTING[6,5]=150
COLLMON_SETTING[6,6]=150
COLLMON_SETTING[6,7]=150
COLLMON_SETTING[6,8]=150
COLLMON_SETTING[6,9]=150
COLLMON_SETTING[6,10]=150
COLLMON_SETTING[6,11]=150
COLLMON_SETTING[6,12]=150
COLLMON_SETTING[7,1]=150
COLLMON_SETTING[7,2]=150
COLLMON_SETTING[7,3]=150
COLLMON_SETTING[7,4]=150
COLLMON_SETTING[7,5]=150
COLLMON_SETTING[7,6]=150
COLLMON_SETTING[7,7]=150
COLLMON_SETTING[7,8]=150
COLLMON_SETTING[7,9]=150
COLLMON_SETTING[7,10]=150
COLLMON_SETTING[7,11]=150
COLLMON_SETTING[7,12]=150
COLLMON_SETTING[8,1]=150
COLLMON_SETTING[8,2]=150
COLLMON_SETTING[8,3]=150
COLLMON_SETTING[8,4]=150
COLLMON_SETTING[8,5]=150
COLLMON_SETTING[8,6]=150
COLLMON_SETTING[8,7]=150
COLLMON_SETTING[8,8]=150
COLLMON_SETTING[8,9]=150
COLLMON_SETTING[8,10]=150
COLLMON_SETTING[8,11]=150
COLLMON_SETTING[8,12]=150
COLLMON_SETTING[9,1]=150
COLLMON_SETTING[9,2]=150
COLLMON_SETTING[9,3]=150
COLLMON_SETTING[9,4]=150
COLLMON_SETTING[9,5]=150
COLLMON_SETTING[9,6]=150
COLLMON_SETTING[9,7]=150
COLLMON_SETTING[9,8]=150
COLLMON_SETTING[9,9]=150
COLLMON_SETTING[9,10]=150
COLLMON_SETTING[9,11]=150
COLLMON_SETTING[9,12]=150
COLLMON_SETTING[10,1]=150
COLLMON_SETTING[10,2]=150
COLLMON_SETTING[10,3]=150
COLLMON_SETTING[10,4]=150
COLLMON_SETTING[10,5]=150
COLLMON_SETTING[10,6]=150
COLLMON_SETTING[10,7]=150
COLLMON_SETTING[10,8]=150
COLLMON_SETTING[10,9]=150
COLLMON_SETTING[10,10]=150
COLLMON_SETTING[10,11]=150
COLLMON_SETTING[10,12]=150
COLLMON_SETTING[11,1]=150
COLLMON_SETTING[11,2]=150
COLLMON_SETTING[11,3]=150
COLLMON_SETTING[11,4]=150
COLLMON_SETTING[11,5]=150
COLLMON_SETTING[11,6]=150
COLLMON_SETTING[11,7]=150
COLLMON_SETTING[11,8]=150
COLLMON_SETTING[11,9]=150
COLLMON_SETTING[11,10]=150
COLLMON_SETTING[11,11]=150
COLLMON_SETTING[11,12]=150
COLLMON_SETTING[12,1]=150
COLLMON_SETTING[12,2]=150
COLLMON_SETTING[12,3]=150
COLLMON_SETTING[12,4]=150
COLLMON_SETTING[12,5]=150
COLLMON_SETTING[12,6]=150
COLLMON_SETTING[12,7]=150
COLLMON_SETTING[12,8]=150
COLLMON_SETTING[12,9]=150
COLLMON_SETTING[12,10]=150
COLLMON_SETTING[12,11]=150
COLLMON_SETTING[12,12]=150
COLLMON_SETTING[13,1]=150
COLLMON_SETTING[13,2]=150
COLLMON_SETTING[13,3]=150
COLLMON_SETTING[13,4]=150
COLLMON_SETTING[13,5]=150
COLLMON_SETTING[13,6]=150
COLLMON_SETTING[13,7]=150
COLLMON_SETTING[13,8]=150
COLLMON_SETTING[13,9]=150
COLLMON_SETTING[13,10]=150
COLLMON_SETTING[13,11]=150
COLLMON_SETTING[13,12]=150
COLLMON_SETTING[14,1]=150
COLLMON_SETTING[14,2]=150
COLLMON_SETTING[14,3]=150
COLLMON_SETTING[14,4]=150
COLLMON_SETTING[14,5]=150
COLLMON_SETTING[14,6]=150
COLLMON_SETTING[14,7]=150
COLLMON_SETTING[14,8]=150
COLLMON_SETTING[14,9]=150
COLLMON_SETTING[14,10]=150
COLLMON_SETTING[14,11]=150
COLLMON_SETTING[14,12]=150
COLLMON_SETTING[15,1]=150
COLLMON_SETTING[15,2]=150
COLLMON_SETTING[15,3]=150
COLLMON_SETTING[15,4]=150
COLLMON_SETTING[15,5]=150
COLLMON_SETTING[15,6]=150
COLLMON_SETTING[15,7]=150
COLLMON_SETTING[15,8]=150
COLLMON_SETTING[15,9]=150
COLLMON_SETTING[15,10]=150
COLLMON_SETTING[15,11]=150
COLLMON_SETTING[15,12]=150
COLLMON_SETTING[16,1]=150
COLLMON_SETTING[16,2]=150
COLLMON_SETTING[16,3]=150
COLLMON_SETTING[16,4]=150
COLLMON_SETTING[16,5]=150
COLLMON_SETTING[16,6]=150
COLLMON_SETTING[16,7]=150
COLLMON_SETTING[16,8]=150
COLLMON_SETTING[16,9]=150
COLLMON_SETTING[16,10]=150
COLLMON_SETTING[16,11]=150
COLLMON_SETTING[16,12]=150
COLLMON_SETTING[17,1]=150
COLLMON_SETTING[17,2]=150
COLLMON_SETTING[17,3]=150
COLLMON_SETTING[17,4]=150
COLLMON_SETTING[17,5]=150
COLLMON_SETTING[17,6]=150
COLLMON_SETTING[17,7]=150
COLLMON_SETTING[17,8]=150
COLLMON_SETTING[17,9]=150
COLLMON_SETTING[17,10]=150
COLLMON_SETTING[17,11]=150
COLLMON_SETTING[17,12]=150
COLLMON_SETTING[18,1]=150
COLLMON_SETTING[18,2]=150
COLLMON_SETTING[18,3]=150
COLLMON_SETTING[18,4]=150
COLLMON_SETTING[18,5]=150
COLLMON_SETTING[18,6]=150
COLLMON_SETTING[18,7]=150
COLLMON_SETTING[18,8]=150
COLLMON_SETTING[18,9]=150
COLLMON_SETTING[18,10]=150
COLLMON_SETTING[18,11]=150
COLLMON_SETTING[18,12]=150
COLLMON_SETTING[19,1]=150
COLLMON_SETTING[19,2]=150
COLLMON_SETTING[19,3]=150
COLLMON_SETTING[19,4]=150
COLLMON_SETTING[19,5]=150
COLLMON_SETTING[19,6]=150
COLLMON_SETTING[19,7]=150
COLLMON_SETTING[19,8]=150
COLLMON_SETTING[19,9]=150
COLLMON_SETTING[19,10]=150
COLLMON_SETTING[19,11]=150
COLLMON_SETTING[19,12]=150
COLLMON_SETTING[20,1]=150
COLLMON_SETTING[20,2]=150
COLLMON_SETTING[20,3]=150
COLLMON_SETTING[20,4]=150
COLLMON_SETTING[20,5]=150
COLLMON_SETTING[20,6]=150
COLLMON_SETTING[20,7]=150
COLLMON_SETTING[20,8]=150
COLLMON_SETTING[20,9]=150
COLLMON_SETTING[20,10]=150
COLLMON_SETTING[20,11]=150
COLLMON_SETTING[20,12]=150
COLLMON_SETTING[21,1]=150
COLLMON_SETTING[21,2]=150
COLLMON_SETTING[21,3]=150
COLLMON_SETTING[21,4]=150
COLLMON_SETTING[21,5]=150
COLLMON_SETTING[21,6]=150
COLLMON_SETTING[21,7]=150
COLLMON_SETTING[21,8]=150
COLLMON_SETTING[21,9]=150
COLLMON_SETTING[21,10]=150
COLLMON_SETTING[21,11]=150
COLLMON_SETTING[21,12]=150
COLLMON_SETTING[22,1]=150
COLLMON_SETTING[22,2]=150
COLLMON_SETTING[22,3]=150
COLLMON_SETTING[22,4]=150
COLLMON_SETTING[22,5]=150
COLLMON_SETTING[22,6]=150
COLLMON_SETTING[22,7]=150
COLLMON_SETTING[22,8]=150
COLLMON_SETTING[22,9]=150
COLLMON_SETTING[22,10]=150
COLLMON_SETTING[22,11]=150
COLLMON_SETTING[22,12]=150
COLLMON_SETTING[23,1]=150
COLLMON_SETTING[23,2]=150
COLLMON_SETTING[23,3]=150
COLLMON_SETTING[23,4]=150
COLLMON_SETTING[23,5]=150
COLLMON_SETTING[23,6]=150
COLLMON_SETTING[23,7]=150
COLLMON_SETTING[23,8]=150
COLLMON_SETTING[23,9]=150
COLLMON_SETTING[23,10]=150
COLLMON_SETTING[23,11]=150
COLLMON_SETTING[23,12]=150
COLLMON_SETTING[24,1]=150
COLLMON_SETTING[24,2]=150
COLLMON_SETTING[24,3]=150
COLLMON_SETTING[24,4]=150
COLLMON_SETTING[24,5]=150
COLLMON_SETTING[24,6]=150
COLLMON_SETTING[24,7]=150
COLLMON_SETTING[24,8]=150
COLLMON_SETTING[24,9]=150
COLLMON_SETTING[24,10]=150
COLLMON_SETTING[24,11]=150
COLLMON_SETTING[24,12]=150
COLLMON_SETTING[25,1]=150
COLLMON_SETTING[25,2]=150
COLLMON_SETTING[25,3]=150
COLLMON_SETTING[25,4]=150
COLLMON_SETTING[25,5]=150
COLLMON_SETTING[25,6]=150
COLLMON_SETTING[25,7]=150
COLLMON_SETTING[25,8]=150
COLLMON_SETTING[25,9]=150
COLLMON_SETTING[25,10]=150
COLLMON_SETTING[25,11]=150
COLLMON_SETTING[25,12]=150
COLLMON_SETTING[26,1]=150
COLLMON_SETTING[26,2]=150
COLLMON_SETTING[26,3]=150
COLLMON_SETTING[26,4]=150
COLLMON_SETTING[26,5]=150
COLLMON_SETTING[26,6]=150
COLLMON_SETTING[26,7]=150
COLLMON_SETTING[26,8]=150
COLLMON_SETTING[26,9]=150
COLLMON_SETTING[26,10]=150
COLLMON_SETTING[26,11]=150
COLLMON_SETTING[26,12]=150
COLLMON_SETTING[27,1]=150
COLLMON_SETTING[27,2]=150
COLLMON_SETTING[27,3]=150
COLLMON_SETTING[27,4]=150
COLLMON_SETTING[27,5]=150
COLLMON_SETTING[27,6]=150
COLLMON_SETTING[27,7]=150
COLLMON_SETTING[27,8]=150
COLLMON_SETTING[27,9]=150
COLLMON_SETTING[27,10]=150
COLLMON_SETTING[27,11]=150
COLLMON_SETTING[27,12]=150
COLLMON_SETTING[28,1]=150
COLLMON_SETTING[28,2]=150
COLLMON_SETTING[28,3]=150
COLLMON_SETTING[28,4]=150
COLLMON_SETTING[28,5]=150
COLLMON_SETTING[28,6]=150
COLLMON_SETTING[28,7]=150
COLLMON_SETTING[28,8]=150
COLLMON_SETTING[28,9]=150
COLLMON_SETTING[28,10]=150
COLLMON_SETTING[28,11]=150
COLLMON_SETTING[28,12]=150
COLLMON_SETTING[29,1]=150
COLLMON_SETTING[29,2]=150
COLLMON_SETTING[29,3]=150
COLLMON_SETTING[29,4]=150
COLLMON_SETTING[29,5]=150
COLLMON_SETTING[29,6]=150
COLLMON_SETTING[29,7]=150
COLLMON_SETTING[29,8]=150
COLLMON_SETTING[29,9]=150
COLLMON_SETTING[29,10]=150
COLLMON_SETTING[29,11]=150
COLLMON_SETTING[29,12]=150
COLLMON_SETTING[30,1]=150
COLLMON_SETTING[30,2]=150
COLLMON_SETTING[30,3]=150
COLLMON_SETTING[30,4]=150
COLLMON_SETTING[30,5]=150
COLLMON_SETTING[30,6]=150
COLLMON_SETTING[30,7]=150
COLLMON_SETTING[30,8]=150
COLLMON_SETTING[30,9]=150
COLLMON_SETTING[30,10]=150
COLLMON_SETTING[30,11]=150
COLLMON_SETTING[30,12]=150
INT COLLMON_DISPLAYED[30,12]
COLLMON_DISPLAYED[1,1]=150
COLLMON_DISPLAYED[1,2]=150
COLLMON_DISPLAYED[1,3]=150
COLLMON_DISPLAYED[1,4]=150
COLLMON_DISPLAYED[1,5]=150
COLLMON_DISPLAYED[1,6]=150
COLLMON_DISPLAYED[1,7]=150
COLLMON_DISPLAYED[1,8]=150
COLLMON_DISPLAYED[1,9]=150
COLLMON_DISPLAYED[1,10]=150
COLLMON_DISPLAYED[1,11]=150
COLLMON_DISPLAYED[1,12]=150
COLLMON_DISPLAYED[2,1]=150
COLLMON_DISPLAYED[2,2]=150
COLLMON_DISPLAYED[2,3]=150
COLLMON_DISPLAYED[2,4]=150
COLLMON_DISPLAYED[2,5]=150
COLLMON_DISPLAYED[2,6]=150
COLLMON_DISPLAYED[2,7]=150
COLLMON_DISPLAYED[2,8]=150
COLLMON_DISPLAYED[2,9]=150
COLLMON_DISPLAYED[2,10]=150
COLLMON_DISPLAYED[2,11]=150
COLLMON_DISPLAYED[2,12]=150
COLLMON_DISPLAYED[3,1]=150
COLLMON_DISPLAYED[3,2]=150
COLLMON_DISPLAYED[3,3]=150
COLLMON_DISPLAYED[3,4]=150
COLLMON_DISPLAYED[3,5]=150
COLLMON_DISPLAYED[3,6]=150
COLLMON_DISPLAYED[3,7]=150
COLLMON_DISPLAYED[3,8]=150
COLLMON_DISPLAYED[3,9]=150
COLLMON_DISPLAYED[3,10]=150
COLLMON_DISPLAYED[3,11]=150
COLLMON_DISPLAYED[3,12]=150
COLLMON_DISPLAYED[4,1]=150
COLLMON_DISPLAYED[4,2]=150
COLLMON_DISPLAYED[4,3]=150
COLLMON_DISPLAYED[4,4]=150
COLLMON_DISPLAYED[4,5]=150
COLLMON_DISPLAYED[4,6]=150
COLLMON_DISPLAYED[4,7]=150
COLLMON_DISPLAYED[4,8]=150
COLLMON_DISPLAYED[4,9]=150
COLLMON_DISPLAYED[4,10]=150
COLLMON_DISPLAYED[4,11]=150
COLLMON_DISPLAYED[4,12]=150
COLLMON_DISPLAYED[5,1]=150
COLLMON_DISPLAYED[5,2]=150
COLLMON_DISPLAYED[5,3]=150
COLLMON_DISPLAYED[5,4]=150
COLLMON_DISPLAYED[5,5]=150
COLLMON_DISPLAYED[5,6]=150
COLLMON_DISPLAYED[5,7]=150
COLLMON_DISPLAYED[5,8]=150
COLLMON_DISPLAYED[5,9]=150
COLLMON_DISPLAYED[5,10]=150
COLLMON_DISPLAYED[5,11]=150
COLLMON_DISPLAYED[5,12]=150
COLLMON_DISPLAYED[6,1]=150
COLLMON_DISPLAYED[6,2]=150
COLLMON_DISPLAYED[6,3]=150
COLLMON_DISPLAYED[6,4]=150
COLLMON_DISPLAYED[6,5]=150
COLLMON_DISPLAYED[6,6]=150
COLLMON_DISPLAYED[6,7]=150
COLLMON_DISPLAYED[6,8]=150
COLLMON_DISPLAYED[6,9]=150
COLLMON_DISPLAYED[6,10]=150
COLLMON_DISPLAYED[6,11]=150
COLLMON_DISPLAYED[6,12]=150
COLLMON_DISPLAYED[7,1]=150
COLLMON_DISPLAYED[7,2]=150
COLLMON_DISPLAYED[7,3]=150
COLLMON_DISPLAYED[7,4]=150
COLLMON_DISPLAYED[7,5]=150
COLLMON_DISPLAYED[7,6]=150
COLLMON_DISPLAYED[7,7]=150
COLLMON_DISPLAYED[7,8]=150
COLLMON_DISPLAYED[7,9]=150
COLLMON_DISPLAYED[7,10]=150
COLLMON_DISPLAYED[7,11]=150
COLLMON_DISPLAYED[7,12]=150
COLLMON_DISPLAYED[8,1]=150
COLLMON_DISPLAYED[8,2]=150
COLLMON_DISPLAYED[8,3]=150
COLLMON_DISPLAYED[8,4]=150
COLLMON_DISPLAYED[8,5]=150
COLLMON_DISPLAYED[8,6]=150
COLLMON_DISPLAYED[8,7]=150
COLLMON_DISPLAYED[8,8]=150
COLLMON_DISPLAYED[8,9]=150
COLLMON_DISPLAYED[8,10]=150
COLLMON_DISPLAYED[8,11]=150
COLLMON_DISPLAYED[8,12]=150
COLLMON_DISPLAYED[9,1]=150
COLLMON_DISPLAYED[9,2]=150
COLLMON_DISPLAYED[9,3]=150
COLLMON_DISPLAYED[9,4]=150
COLLMON_DISPLAYED[9,5]=150
COLLMON_DISPLAYED[9,6]=150
COLLMON_DISPLAYED[9,7]=150
COLLMON_DISPLAYED[9,8]=150
COLLMON_DISPLAYED[9,9]=150
COLLMON_DISPLAYED[9,10]=150
COLLMON_DISPLAYED[9,11]=150
COLLMON_DISPLAYED[9,12]=150
COLLMON_DISPLAYED[10,1]=150
COLLMON_DISPLAYED[10,2]=150
COLLMON_DISPLAYED[10,3]=150
COLLMON_DISPLAYED[10,4]=150
COLLMON_DISPLAYED[10,5]=150
COLLMON_DISPLAYED[10,6]=150
COLLMON_DISPLAYED[10,7]=150
COLLMON_DISPLAYED[10,8]=150
COLLMON_DISPLAYED[10,9]=150
COLLMON_DISPLAYED[10,10]=150
COLLMON_DISPLAYED[10,11]=150
COLLMON_DISPLAYED[10,12]=150
COLLMON_DISPLAYED[11,1]=150
COLLMON_DISPLAYED[11,2]=150
COLLMON_DISPLAYED[11,3]=150
COLLMON_DISPLAYED[11,4]=150
COLLMON_DISPLAYED[11,5]=150
COLLMON_DISPLAYED[11,6]=150
COLLMON_DISPLAYED[11,7]=150
COLLMON_DISPLAYED[11,8]=150
COLLMON_DISPLAYED[11,9]=150
COLLMON_DISPLAYED[11,10]=150
COLLMON_DISPLAYED[11,11]=150
COLLMON_DISPLAYED[11,12]=150
COLLMON_DISPLAYED[12,1]=150
COLLMON_DISPLAYED[12,2]=150
COLLMON_DISPLAYED[12,3]=150
COLLMON_DISPLAYED[12,4]=150
COLLMON_DISPLAYED[12,5]=150
COLLMON_DISPLAYED[12,6]=150
COLLMON_DISPLAYED[12,7]=150
COLLMON_DISPLAYED[12,8]=150
COLLMON_DISPLAYED[12,9]=150
COLLMON_DISPLAYED[12,10]=150
COLLMON_DISPLAYED[12,11]=150
COLLMON_DISPLAYED[12,12]=150
COLLMON_DISPLAYED[13,1]=150
COLLMON_DISPLAYED[13,2]=150
COLLMON_DISPLAYED[13,3]=150
COLLMON_DISPLAYED[13,4]=150
COLLMON_DISPLAYED[13,5]=150
COLLMON_DISPLAYED[13,6]=150
COLLMON_DISPLAYED[13,7]=150
COLLMON_DISPLAYED[13,8]=150
COLLMON_DISPLAYED[13,9]=150
COLLMON_DISPLAYED[13,10]=150
COLLMON_DISPLAYED[13,11]=150
COLLMON_DISPLAYED[13,12]=150
COLLMON_DISPLAYED[14,1]=150
COLLMON_DISPLAYED[14,2]=150
COLLMON_DISPLAYED[14,3]=150
COLLMON_DISPLAYED[14,4]=150
COLLMON_DISPLAYED[14,5]=150
COLLMON_DISPLAYED[14,6]=150
COLLMON_DISPLAYED[14,7]=150
COLLMON_DISPLAYED[14,8]=150
COLLMON_DISPLAYED[14,9]=150
COLLMON_DISPLAYED[14,10]=150
COLLMON_DISPLAYED[14,11]=150
COLLMON_DISPLAYED[14,12]=150
COLLMON_DISPLAYED[15,1]=150
COLLMON_DISPLAYED[15,2]=150
COLLMON_DISPLAYED[15,3]=150
COLLMON_DISPLAYED[15,4]=150
COLLMON_DISPLAYED[15,5]=150
COLLMON_DISPLAYED[15,6]=150
COLLMON_DISPLAYED[15,7]=150
COLLMON_DISPLAYED[15,8]=150
COLLMON_DISPLAYED[15,9]=150
COLLMON_DISPLAYED[15,10]=150
COLLMON_DISPLAYED[15,11]=150
COLLMON_DISPLAYED[15,12]=150
COLLMON_DISPLAYED[16,1]=150
COLLMON_DISPLAYED[16,2]=150
COLLMON_DISPLAYED[16,3]=150
COLLMON_DISPLAYED[16,4]=150
COLLMON_DISPLAYED[16,5]=150
COLLMON_DISPLAYED[16,6]=150
COLLMON_DISPLAYED[16,7]=150
COLLMON_DISPLAYED[16,8]=150
COLLMON_DISPLAYED[16,9]=150
COLLMON_DISPLAYED[16,10]=150
COLLMON_DISPLAYED[16,11]=150
COLLMON_DISPLAYED[16,12]=150
COLLMON_DISPLAYED[17,1]=150
COLLMON_DISPLAYED[17,2]=150
COLLMON_DISPLAYED[17,3]=150
COLLMON_DISPLAYED[17,4]=150
COLLMON_DISPLAYED[17,5]=150
COLLMON_DISPLAYED[17,6]=150
COLLMON_DISPLAYED[17,7]=150
COLLMON_DISPLAYED[17,8]=150
COLLMON_DISPLAYED[17,9]=150
COLLMON_DISPLAYED[17,10]=150
COLLMON_DISPLAYED[17,11]=150
COLLMON_DISPLAYED[17,12]=150
COLLMON_DISPLAYED[18,1]=150
COLLMON_DISPLAYED[18,2]=150
COLLMON_DISPLAYED[18,3]=150
COLLMON_DISPLAYED[18,4]=150
COLLMON_DISPLAYED[18,5]=150
COLLMON_DISPLAYED[18,6]=150
COLLMON_DISPLAYED[18,7]=150
COLLMON_DISPLAYED[18,8]=150
COLLMON_DISPLAYED[18,9]=150
COLLMON_DISPLAYED[18,10]=150
COLLMON_DISPLAYED[18,11]=150
COLLMON_DISPLAYED[18,12]=150
COLLMON_DISPLAYED[19,1]=150
COLLMON_DISPLAYED[19,2]=150
COLLMON_DISPLAYED[19,3]=150
COLLMON_DISPLAYED[19,4]=150
COLLMON_DISPLAYED[19,5]=150
COLLMON_DISPLAYED[19,6]=150
COLLMON_DISPLAYED[19,7]=150
COLLMON_DISPLAYED[19,8]=150
COLLMON_DISPLAYED[19,9]=150
COLLMON_DISPLAYED[19,10]=150
COLLMON_DISPLAYED[19,11]=150
COLLMON_DISPLAYED[19,12]=150
COLLMON_DISPLAYED[20,1]=150
COLLMON_DISPLAYED[20,2]=150
COLLMON_DISPLAYED[20,3]=150
COLLMON_DISPLAYED[20,4]=150
COLLMON_DISPLAYED[20,5]=150
COLLMON_DISPLAYED[20,6]=150
COLLMON_DISPLAYED[20,7]=150
COLLMON_DISPLAYED[20,8]=150
COLLMON_DISPLAYED[20,9]=150
COLLMON_DISPLAYED[20,10]=150
COLLMON_DISPLAYED[20,11]=150
COLLMON_DISPLAYED[20,12]=150
COLLMON_DISPLAYED[21,1]=150
COLLMON_DISPLAYED[21,2]=150
COLLMON_DISPLAYED[21,3]=150
COLLMON_DISPLAYED[21,4]=150
COLLMON_DISPLAYED[21,5]=150
COLLMON_DISPLAYED[21,6]=150
COLLMON_DISPLAYED[21,7]=150
COLLMON_DISPLAYED[21,8]=150
COLLMON_DISPLAYED[21,9]=150
COLLMON_DISPLAYED[21,10]=150
COLLMON_DISPLAYED[21,11]=150
COLLMON_DISPLAYED[21,12]=150
COLLMON_DISPLAYED[22,1]=150
COLLMON_DISPLAYED[22,2]=150
COLLMON_DISPLAYED[22,3]=150
COLLMON_DISPLAYED[22,4]=150
COLLMON_DISPLAYED[22,5]=150
COLLMON_DISPLAYED[22,6]=150
COLLMON_DISPLAYED[22,7]=150
COLLMON_DISPLAYED[22,8]=150
COLLMON_DISPLAYED[22,9]=150
COLLMON_DISPLAYED[22,10]=150
COLLMON_DISPLAYED[22,11]=150
COLLMON_DISPLAYED[22,12]=150
COLLMON_DISPLAYED[23,1]=150
COLLMON_DISPLAYED[23,2]=150
COLLMON_DISPLAYED[23,3]=150
COLLMON_DISPLAYED[23,4]=150
COLLMON_DISPLAYED[23,5]=150
COLLMON_DISPLAYED[23,6]=150
COLLMON_DISPLAYED[23,7]=150
COLLMON_DISPLAYED[23,8]=150
COLLMON_DISPLAYED[23,9]=150
COLLMON_DISPLAYED[23,10]=150
COLLMON_DISPLAYED[23,11]=150
COLLMON_DISPLAYED[23,12]=150
COLLMON_DISPLAYED[24,1]=150
COLLMON_DISPLAYED[24,2]=150
COLLMON_DISPLAYED[24,3]=150
COLLMON_DISPLAYED[24,4]=150
COLLMON_DISPLAYED[24,5]=150
COLLMON_DISPLAYED[24,6]=150
COLLMON_DISPLAYED[24,7]=150
COLLMON_DISPLAYED[24,8]=150
COLLMON_DISPLAYED[24,9]=150
COLLMON_DISPLAYED[24,10]=150
COLLMON_DISPLAYED[24,11]=150
COLLMON_DISPLAYED[24,12]=150
COLLMON_DISPLAYED[25,1]=150
COLLMON_DISPLAYED[25,2]=150
COLLMON_DISPLAYED[25,3]=150
COLLMON_DISPLAYED[25,4]=150
COLLMON_DISPLAYED[25,5]=150
COLLMON_DISPLAYED[25,6]=150
COLLMON_DISPLAYED[25,7]=150
COLLMON_DISPLAYED[25,8]=150
COLLMON_DISPLAYED[25,9]=150
COLLMON_DISPLAYED[25,10]=150
COLLMON_DISPLAYED[25,11]=150
COLLMON_DISPLAYED[25,12]=150
COLLMON_DISPLAYED[26,1]=150
COLLMON_DISPLAYED[26,2]=150
COLLMON_DISPLAYED[26,3]=150
COLLMON_DISPLAYED[26,4]=150
COLLMON_DISPLAYED[26,5]=150
COLLMON_DISPLAYED[26,6]=150
COLLMON_DISPLAYED[26,7]=150
COLLMON_DISPLAYED[26,8]=150
COLLMON_DISPLAYED[26,9]=150
COLLMON_DISPLAYED[26,10]=150
COLLMON_DISPLAYED[26,11]=150
COLLMON_DISPLAYED[26,12]=150
COLLMON_DISPLAYED[27,1]=150
COLLMON_DISPLAYED[27,2]=150
COLLMON_DISPLAYED[27,3]=150
COLLMON_DISPLAYED[27,4]=150
COLLMON_DISPLAYED[27,5]=150
COLLMON_DISPLAYED[27,6]=150
COLLMON_DISPLAYED[27,7]=150
COLLMON_DISPLAYED[27,8]=150
COLLMON_DISPLAYED[27,9]=150
COLLMON_DISPLAYED[27,10]=150
COLLMON_DISPLAYED[27,11]=150
COLLMON_DISPLAYED[27,12]=150
COLLMON_DISPLAYED[28,1]=150
COLLMON_DISPLAYED[28,2]=150
COLLMON_DISPLAYED[28,3]=150
COLLMON_DISPLAYED[28,4]=150
COLLMON_DISPLAYED[28,5]=150
COLLMON_DISPLAYED[28,6]=150
COLLMON_DISPLAYED[28,7]=150
COLLMON_DISPLAYED[28,8]=150
COLLMON_DISPLAYED[28,9]=150
COLLMON_DISPLAYED[28,10]=150
COLLMON_DISPLAYED[28,11]=150
COLLMON_DISPLAYED[28,12]=150
COLLMON_DISPLAYED[29,1]=150
COLLMON_DISPLAYED[29,2]=150
COLLMON_DISPLAYED[29,3]=150
COLLMON_DISPLAYED[29,4]=150
COLLMON_DISPLAYED[29,5]=150
COLLMON_DISPLAYED[29,6]=150
COLLMON_DISPLAYED[29,7]=150
COLLMON_DISPLAYED[29,8]=150
COLLMON_DISPLAYED[29,9]=150
COLLMON_DISPLAYED[29,10]=150
COLLMON_DISPLAYED[29,11]=150
COLLMON_DISPLAYED[29,12]=150
COLLMON_DISPLAYED[30,1]=150
COLLMON_DISPLAYED[30,2]=150
COLLMON_DISPLAYED[30,3]=150
COLLMON_DISPLAYED[30,4]=150
COLLMON_DISPLAYED[30,5]=150
COLLMON_DISPLAYED[30,6]=150
COLLMON_DISPLAYED[30,7]=150
COLLMON_DISPLAYED[30,8]=150
COLLMON_DISPLAYED[30,9]=150
COLLMON_DISPLAYED[30,10]=150
COLLMON_DISPLAYED[30,11]=150
COLLMON_DISPLAYED[30,12]=150
GLOBAL CHAR CDSet_NAME[30,24]
CDSet_NAME[1,]=" "
CDSet_NAME[2,]=" "
CDSet_NAME[3,]=" "
CDSet_NAME[4,]=" "
CDSet_NAME[5,]=" "
CDSet_NAME[6,]=" "
CDSet_NAME[7,]=" "
CDSet_NAME[8,]=" "
CDSet_NAME[9,]=" "
CDSet_NAME[10,]=" "
CDSet_NAME[11,]=" "
CDSet_NAME[12,]=" "
CDSet_NAME[13,]=" "
CDSet_NAME[14,]=" "
CDSet_NAME[15,]=" "
CDSet_NAME[16,]=" "
CDSet_NAME[17,]=" "
CDSet_NAME[18,]=" "
CDSet_NAME[19,]=" "
CDSet_NAME[20,]=" "
CDSet_NAME[21,]=" "
CDSet_NAME[22,]=" "
CDSet_NAME[23,]=" "
CDSet_NAME[24,]=" "
CDSet_NAME[25,]=" "
CDSet_NAME[26,]=" "
CDSet_NAME[27,]=" "
CDSet_NAME[28,]=" "
CDSet_NAME[29,]=" "
CDSet_NAME[30,]=" "
INT COLLMON_TOL_PRO[12]
COLLMON_TOL_PRO[1]=-1
COLLMON_TOL_PRO[2]=-1
COLLMON_TOL_PRO[3]=-1
COLLMON_TOL_PRO[4]=-1
COLLMON_TOL_PRO[5]=-1
COLLMON_TOL_PRO[6]=-1
COLLMON_TOL_PRO[7]=-1
COLLMON_TOL_PRO[8]=-1
COLLMON_TOL_PRO[9]=-1
COLLMON_TOL_PRO[10]=-1
COLLMON_TOL_PRO[11]=-1
COLLMON_TOL_PRO[12]=-1
INT COLLMON_IDX=-1
BOOL LEARN_MODE=FALSE
INT OFFSET_LEARN_MODE=20
INT OFFSET_ROOT_AXES=10
INT OFFSET_HAND_AXES=10
INT OFFSET_EXT_AXES=10
BOOL UPDATE_DISPLAY_DATA=FALSE
CHAR COLLMON_RESET_TIMESTAMP[31,18]
COLLMON_RESET_TIMESTAMP[1,]=" "
COLLMON_RESET_TIMESTAMP[2,]=" "
COLLMON_RESET_TIMESTAMP[3,]=" "
COLLMON_RESET_TIMESTAMP[4,]=" "
COLLMON_RESET_TIMESTAMP[5,]=" "
COLLMON_RESET_TIMESTAMP[6,]=" "
COLLMON_RESET_TIMESTAMP[7,]=" "
COLLMON_RESET_TIMESTAMP[8,]=" "
COLLMON_RESET_TIMESTAMP[9,]=" "
COLLMON_RESET_TIMESTAMP[10,]=" "
COLLMON_RESET_TIMESTAMP[11,]=" "
COLLMON_RESET_TIMESTAMP[12,]=" "
COLLMON_RESET_TIMESTAMP[13,]=" "
COLLMON_RESET_TIMESTAMP[14,]=" "
COLLMON_RESET_TIMESTAMP[15,]=" "
COLLMON_RESET_TIMESTAMP[16,]=" "
COLLMON_RESET_TIMESTAMP[17,]=" "
COLLMON_RESET_TIMESTAMP[18,]=" "
COLLMON_RESET_TIMESTAMP[19,]=" "
COLLMON_RESET_TIMESTAMP[20,]=" "
COLLMON_RESET_TIMESTAMP[21,]=" "
COLLMON_RESET_TIMESTAMP[22,]=" "
COLLMON_RESET_TIMESTAMP[23,]=" "
COLLMON_RESET_TIMESTAMP[24,]=" "
COLLMON_RESET_TIMESTAMP[25,]=" "
COLLMON_RESET_TIMESTAMP[26,]=" "
COLLMON_RESET_TIMESTAMP[27,]=" "
COLLMON_RESET_TIMESTAMP[28,]=" "
COLLMON_RESET_TIMESTAMP[29,]=" "
COLLMON_RESET_TIMESTAMP[30,]=" "
COLLMON_RESET_TIMESTAMP[31,]=" "
ENDDAT

View File

@@ -0,0 +1,385 @@
&ACCESS R1
&COMMENT Collision monitoring library
DEF CollMonLib( )
END
; Schreibt die 6 Parameter (fuer jede Roboter-Achse einen) in den
; entsprechenden Eintrag des $COLLMON_TOL PRO[]-Felds.
; Falls ein Parameter nicht SAVE_CM_PRO_SETTING wird, behaelt der entsprechende
; $COLLMON_TOL_PRO[]-Eintrag seinen Wert.
GLOBAL DEF SET_CM_PRO_VALUES(CM_AX1:IN, CM_AX2:IN, CM_AX3:IN, CM_AX4:IN, CM_AX5:IN, CM_AX6:IN)
INT TEST, CM_AX1, CM_AX2, CM_AX3, CM_AX4, CM_AX5, CM_AX6
ON_ERROR_PROCEED
TEST=CM_AX1
IF $ERR.NUMBER == 0 THEN
$COLLMON_TOL_PRO[1]=CM_AX1
ENDIF
ON_ERROR_PROCEED
TEST=CM_AX2
IF $ERR.NUMBER == 0 THEN
$COLLMON_TOL_PRO[2]=CM_AX2
ENDIF
ON_ERROR_PROCEED
TEST=CM_AX3
IF $ERR.NUMBER == 0 THEN
$COLLMON_TOL_PRO[3]=CM_AX3
ENDIF
ON_ERROR_PROCEED
TEST=CM_AX4
IF $ERR.NUMBER == 0 THEN
$COLLMON_TOL_PRO[4]=CM_AX4
ENDIF
ON_ERROR_PROCEED
TEST=CM_AX5
IF $ERR.NUMBER == 0 THEN
$COLLMON_TOL_PRO[5]=CM_AX5
ENDIF
ON_ERROR_PROCEED
TEST=CM_AX6
IF $ERR.NUMBER == 0 THEN
$COLLMON_TOL_PRO[6]=CM_AX6
ENDIF
ERR_CLEAR($ERR)
$COLLMON_IDX = 0
END
; Setzt $COLLMON_TOL_PRO[] auf die Defaultwerte aus.
; der $CUSTOM.DAT
GLOBAL DEF SET_CM_PRO_DEFAULT()
INT I
FOR I=1 TO 12
$COLLMON_TOL_PRO[I]=$COLLMON_TOL_PRO_DEF[I]
ENDFOR
$COLLMON_IDX = 0
END
; Setzt die globalen Werte falls welche vorhanden oder
; deaktiviert die verbesserte Kollisionsueberwachung indem
; $COLLMON_TOL_PRO[] auf Null gesetzt wird.
GLOBAL DEF SET_CM_PRO_INACTIVE()
INT I
IF $IMPROVED_COLLMON== TRUE THEN
FOR I=1 TO 12
IF (COLLMON_TOL_PRO[I] < 0) THEN ;no global COLLMON_TOL_PRO[I] exists
$COLLMON_TOL_PRO[I]=0
$COLLMON_IDX = 0
ELSE
$COLLMON_TOL_PRO[I]=COLLMON_TOL_PRO[I] ;sets $COLLMON_TOL_PRO[I] from global
$COLLMON_IDX=COLLMON_IDX
ENDIF
ENDFOR
ELSE
FOR I=1 TO 12
$COLLMON_TOL_PRO[I]=0
ENDFOR
ENDIF
END
; Setzt $COLLMON_MAX auf 0 zurueck. Alle folgenden
; Bewegungen gehen in die Maximumsbildung ein.
GLOBAL DEF RESET_CM_MAX()
INT I
FOR I=1 TO 12
$COLLMON_MAX[I]=0
ENDFOR
END
; Sichert die aktuellen $COLLMON_TOL_PRO[]-Werte in ein
; Parameter-Feld.
; Parameter SETTING_IDX: Index des Collmon-Datensatz
GLOBAL DEF SAVE_CM_PRO_SETTING(SETTING_IDX:IN)
INT SETTING_IDX,I
FOR I=1 to 12
COLLMON_SETTING[SETTING_IDX,I]=$COLLMON_TOL_PRO[I]
ENDFOR
END
; Sichert die aktuellen $COLLMON_TOL_COM[]-Werte in ein
; Parameter-Feld.
; Parameter SETTING_IDX: Index des Collmon-Datensatz
GLOBAL DEF SAVE_CM_COM_SETTING(SETTING_IDX:IN)
INT SETTING_IDX,I
FOR I=1 to 12
COLLMON_SETTING[SETTING_IDX,I]=$COLLMON_TOL_COM[I]
ENDFOR
END
; Liest einen aktuell gespeicherten Collmon-Datensatz
; Parameter SETTING_IDX: Index des Collmon-Datensatzes
; Parameter VALUES: Array der Groesse 12 mit den Werten des Collmon-Datensatzes
GLOBAL DEF READ_CM_SETTING(SETTING_IDX:IN, VALUES[]:OUT)
INT SETTING_IDX
INT VALUES[]
INT I
IF ((SETTING_IDX < 1) OR (SETTING_IDX > NUM_COLLMON_SETTINGS)) THEN
RETURN
ENDIF
FOR I = 1 TO 12
VALUES[I] = COLLMON_SETTING[SETTING_IDX,I]
ENDFOR
END
; Beschreibt einen Collmon-Datensatz
; Parameter SETTING_IDX: Index des Collmon-Datensatzes
; Parameter VALUES: Array der Groesse 12 mit den neuen Werten des Collmon-Datensatzes
GLOBAL DEF WRITE_CM_SETTING(SETTING_IDX:IN, VALUES[]:OUT)
INT SETTING_IDX
INT VALUES[]
INT I
IF ((SETTING_IDX < 1) OR (SETTING_IDX > NUM_COLLMON_SETTINGS)) THEN
RETURN
ENDIF
FOR I = 1 TO 12
IF (VALUES[I] < 0) THEN
COLLMON_SETTING[SETTING_IDX,I] = 0
ELSE
IF VALUES[I] > 500 THEN
COLLMON_SETTING[SETTING_IDX,I] = 500
ELSE
COLLMON_SETTING[SETTING_IDX,I] = VALUES[I]
ENDIF
ENDIF
ENDFOR
END
; Sichert die aktuellen $COLLMON_MAX[]-Werte in ein
; Collmon-Datensatz-Feld. Optional kann ein Skalierungs-Prozentwert
; angegeben werden.
; Parameter SETTING_IDX: Index des Collmon-Datensatz
; Parameter OFFSET: optionaler Offset auf alle Komponenten von $COLLMON_MAX[]. Default-Wert=0.
; Expert call
GLOBAL DEF SAVE_CM_MAX_SETTING(SETTING_IDX:IN,OFFSET:IN)
INT SETTING_IDX,OFFSET,TEST,OFFSET_WERT,I
DECL INT SET_VALUES[12]
; Vorbelegung mit Default-Wert 0
OFFSET_WERT=0
ON_ERROR_PROCEED
TEST=OFFSET
IF $ERR.NUMBER == 0 THEN
OFFSET_WERT=OFFSET ; Parameter verwenden
ENDIF
GET_COLLMON_SET(SETTING_IDX, SET_VALUES[])
FOR I=1 to 12
; durch Lernfahrt will man auskeschaltete Achsen nicht einschalten
IF COLLMON_SETTING[SETTING_IDX,I] <> 0 THEN
COLLMON_SETTING[SETTING_IDX,I]=SET_VALUES[I] + OFFSET_WERT
ENDIF
ENDFOR
ERR_CLEAR($ERR)
END
; Schreibt einen gesicherten Collmon-Datensatz zurueck
; in das $COLLMON_TOL_PRO[]-Feld.
; Parameter SETTING_IDX: Index des Collmon-Datensatz
GLOBAL DEF USE_CM_PRO_SETTING(SETTING_IDX:IN)
INT SETTING_IDX,I
FOR I=1 to 12
$COLLMON_TOL_PRO[I]=COLLMON_SETTING[SETTING_IDX,I]
ENDFOR
$COLLMON_IDX = SETTING_IDX
END
; Initialisiert alle Collmon-Datensaetze auf 100.
GLOBAL DEF INIT_CM_SETTINGS()
INT I,J
FOR I=1 TO NUM_COLLMON_SETTINGS
FOR J=1 TO 12
COLLMON_SETTING[I,J]=100
ENDFOR
ENDFOR
END
;used in old motion command to set all 12 values
;Expert call
GLOBAL DEF SET_CD_PARAMS (Index :IN)
DECL INT Index
IF (Index > 0) AND (Index < 31) THEN
USE_CM_PRO_SETTING (Index)
ELSE
SET_CM_PRO_INACTIVE()
ENDIF
END
;Expert call
GLOBAL DEF USE_CD_PARAMS (Index :IN)
DECL INT Index, I
IF (Index > 0) AND (Index < 31) THEN
FOR I=1 to 12
COLLMON_TOL_PRO[I]=COLLMON_SETTING[Index,I] ; saves COLLMON_TOL_PRO for global using
ENDFOR
COLLMON_IDX=Index
USE_CM_PRO_SETTING (Index)
ELSE
FOR I=1 to 12
COLLMON_TOL_PRO[I]=-1 ; saves COLLMON_TOL_PRO for global using
ENDFOR
COLLMON_IDX=-1
SET_CM_PRO_INACTIVE()
ENDIF
END
;resets COLLMON_TOL_PRO on the begin of KRL module
;by call BAS(#INITMOV,0)
GLOBAL DEF RESET_CD_PARAMS ()
DECL INT I
FOR I=1 to 12
COLLMON_TOL_PRO[I]=-1 ; resets COLLMON_TOL_PRO for global using
ENDFOR
COLLMON_IDX=-1
END
;used in spline command to set all 12 values by just one call
;like ...WITH $COLLMON_TOL_PRO[1]=USE_CM_PRO_VALUES(SETTING_IDX)
GLOBAL DEFFCT INT USE_CM_PRO_VALUES(SETTING_IDX:IN)
INT SETTING_IDX
IF (SETTING_IDX == -1) THEN ;Force deactivation
$COLLMON_TOL_PRO[2]=0
$COLLMON_TOL_PRO[3]=0
$COLLMON_TOL_PRO[4]=0
$COLLMON_TOL_PRO[5]=0
$COLLMON_TOL_PRO[6]=0
$COLLMON_TOL_PRO[7]=0
$COLLMON_TOL_PRO[8]=0
$COLLMON_TOL_PRO[9]=0
$COLLMON_TOL_PRO[10]=0
$COLLMON_TOL_PRO[11]=0
$COLLMON_TOL_PRO[12]=0
$COLLMON_IDX = 0
RETURN 0
ENDIF
IF (SETTING_IDX > 0) AND (SETTING_IDX < 31) THEN
$COLLMON_TOL_PRO[2]=COLLMON_SETTING[SETTING_IDX,2]
$COLLMON_TOL_PRO[3]=COLLMON_SETTING[SETTING_IDX,3]
$COLLMON_TOL_PRO[4]=COLLMON_SETTING[SETTING_IDX,4]
$COLLMON_TOL_PRO[5]=COLLMON_SETTING[SETTING_IDX,5]
$COLLMON_TOL_PRO[6]=COLLMON_SETTING[SETTING_IDX,6]
$COLLMON_TOL_PRO[7]=COLLMON_SETTING[SETTING_IDX,7]
$COLLMON_TOL_PRO[8]=COLLMON_SETTING[SETTING_IDX,8]
$COLLMON_TOL_PRO[9]=COLLMON_SETTING[SETTING_IDX,9]
$COLLMON_TOL_PRO[10]=COLLMON_SETTING[SETTING_IDX,10]
$COLLMON_TOL_PRO[11]=COLLMON_SETTING[SETTING_IDX,11]
$COLLMON_TOL_PRO[12]=COLLMON_SETTING[SETTING_IDX,12]
$COLLMON_IDX = SETTING_IDX
RETURN COLLMON_SETTING[SETTING_IDX,1]
ELSE
IF (COLLMON_TOL_PRO[1] < 0) THEN ;no global COLLMON_TOL_PRO[I] exists
$COLLMON_TOL_PRO[2]=0
$COLLMON_TOL_PRO[3]=0
$COLLMON_TOL_PRO[4]=0
$COLLMON_TOL_PRO[5]=0
$COLLMON_TOL_PRO[6]=0
$COLLMON_TOL_PRO[7]=0
$COLLMON_TOL_PRO[8]=0
$COLLMON_TOL_PRO[9]=0
$COLLMON_TOL_PRO[10]=0
$COLLMON_TOL_PRO[11]=0
$COLLMON_TOL_PRO[12]=0
$COLLMON_IDX = 0
RETURN 0
ELSE
$COLLMON_TOL_PRO[2]=COLLMON_TOL_PRO[2] ;sets $COLLMON_TOL_PRO[I] from global
$COLLMON_TOL_PRO[3]=COLLMON_TOL_PRO[3] ;sets $COLLMON_TOL_PRO[I] from global
$COLLMON_TOL_PRO[4]=COLLMON_TOL_PRO[4] ;sets $COLLMON_TOL_PRO[I] from global
$COLLMON_TOL_PRO[5]=COLLMON_TOL_PRO[5] ;sets $COLLMON_TOL_PRO[I] from global
$COLLMON_TOL_PRO[6]=COLLMON_TOL_PRO[6] ;sets $COLLMON_TOL_PRO[I] from global
IF (COLLMON_TOL_PRO[7]>-1) THEN
$COLLMON_TOL_PRO[7]=COLLMON_TOL_PRO[7] ;sets $COLLMON_TOL_PRO[I] from global
ELSE
$COLLMON_TOL_PRO[7]=0
ENDIF
IF (COLLMON_TOL_PRO[8]>-1) THEN
$COLLMON_TOL_PRO[8]=COLLMON_TOL_PRO[8] ;sets $COLLMON_TOL_PRO[I] from global
ELSE
$COLLMON_TOL_PRO[8]=0
ENDIF
IF (COLLMON_TOL_PRO[9]>-1) THEN
$COLLMON_TOL_PRO[9]=COLLMON_TOL_PRO[9] ;sets $COLLMON_TOL_PRO[I] from global
ELSE
$COLLMON_TOL_PRO[9]=0
ENDIF
IF (COLLMON_TOL_PRO[10]>-1) THEN
$COLLMON_TOL_PRO[10]=COLLMON_TOL_PRO[10] ;sets $COLLMON_TOL_PRO[I] from global
ELSE
$COLLMON_TOL_PRO[10]=0
ENDIF
IF (COLLMON_TOL_PRO[11]>-1) THEN
$COLLMON_TOL_PRO[11]=COLLMON_TOL_PRO[11] ;sets $COLLMON_TOL_PRO[I] from global
ELSE
$COLLMON_TOL_PRO[11]=0
ENDIF
IF (COLLMON_TOL_PRO[12]>-1) THEN
$COLLMON_TOL_PRO[12]=COLLMON_TOL_PRO[12] ;sets $COLLMON_TOL_PRO[I] from global
ELSE
$COLLMON_TOL_PRO[12]=0
ENDIF
$COLLMON_IDX=COLLMON_IDX
RETURN COLLMON_TOL_PRO[1] ;returns $COLLMON_TOL_PRO[I] from global
ENDIF
ENDIF
ENDFCT
;Expert call
GLOBAL DEF SET_TQ_VALUES ( TQ_AX1:IN, TQ_AX2:IN, TQ_AX3:IN, TQ_AX4:IN, TQ_AX5:IN, TQ_AX6:IN)
INT I, TQ_AX1, TQ_AX2, TQ_AX3, TQ_AX4, TQ_AX5, TQ_AX6
IF $IMPROVED_COLLMON== TRUE THEN
ON_ERROR_PROCEED
$COLLMON_TOL_PRO[1]=TQ_AX1
IF $ERR.NUMBER == 0 THEN
$COLLMON_TOL_PRO[2]=TQ_AX2
$COLLMON_TOL_PRO[3]=TQ_AX3
$COLLMON_TOL_PRO[4]=TQ_AX4
$COLLMON_TOL_PRO[5]=TQ_AX5
$COLLMON_TOL_PRO[6]=TQ_AX6
ELSE
FOR I=1 TO 12
$COLLMON_TOL_PRO[I]=$COLLMON_TOL_PRO_DEF[I]
ENDFOR
ERR_CLEAR($ERR)
ENDIF
FOR I=1 TO 12
COLLMON_TOL_PRO[I]=$COLLMON_TOL_PRO[I]
ENDFOR
COLLMON_IDX=0
$COLLMON_IDX = 0
ELSE
ON_ERROR_PROCEED
$TORQMON[1]=TQ_AX1
IF $ERR.NUMBER == 0 THEN
$TORQMON[2]=TQ_AX2
$TORQMON[3]=TQ_AX3
$TORQMON[4]=TQ_AX4
$TORQMON[5]=TQ_AX5
$TORQMON[6]=TQ_AX6
ELSE
FOR I=1 TO 12
$TORQMON[I]=$TORQMON_DEF[I]
ENDFOR
ERR_CLEAR($ERR)
ENDIF
ENDIF
END

View File

@@ -0,0 +1,70 @@
&ACCESS R1
&COMMENT HandlerOnRobotFault
DEF IR_STOPM ( )
;-----------------------------------
; Error Handling Robot Controller
; Switch OFF and Switch ON processes
; KRC Version >= V5.5
;-----------------------------------
;FOLD DECLARATIONS
;FOLD USER DECL
; Please insert user defined declarations
;ENDFOLD (USER DECL)
;FOLD BASISTECH DECL
BOOL ApplicationRunFlag
DECL CHAR ID[3]
;ENDFOLD (BASISTECH DECL)
;ENDFOLD (DECLARATIONS)
;FOLD BASISTECH INIT
INTERRUPT OFF 3
STOPM_FLAG=TRUE ;Reflects state of interrupt 3 to activate/deactivate $Stopmess interrupt
ID[]="CTL"
If ($STOPMESS==TRUE) THEN ;APP// "IF" ~ Notepad++ Formatierung
BRAKE
;ENDFOLD (BASISTECH INIT)
;FOLD USER STOP
;Make your modifications here
;ENDFOLD (USER STOP)
;FOLD COLLISION DETECTION
IF ($IMPROVED_COLLMON == TRUE) AND ($COLL_ALARM == TRUE) THEN
CollDetect_UserAction()
ENDIF
;ENDFOLD COLLISION DETECTION
;FOLD BASISTECH STOP
P00 (#EXT_ERR,#PGNO_GET,ID[],128 )
ApplicationRunFlag=FALSE
IF (Appl_Run>0) THEN
IF $OUT[Appl_Run] THEN
ApplicationRunFlag=TRUE
$OUT[Appl_Run]=FALSE
ENDIF
ENDIF
REPEAT
POWER=SYNC()
HALT
UNTIL (($STOPMESS==FALSE) AND ($POWER_FAIL==FALSE))
;ENDFOLD (BASISTECH STOP)
;FOLD BASISTECH RESTART
P00 (#EXT_ERR,#PGNO_GET,ID[],0 )
IF (ApplicationRunFlag==TRUE) THEN
IF (Appl_Run>0) THEN
$OUT[Appl_Run]=TRUE
ENDIF
ENDIF
;ENDFOLD (BASISTECH RESTART)
;FOLD USER RESTART
;Make your modifications here
;ENDFOLD (USER RESTART)
;FOLD BASISTECH REACTIVATE
Endif ;APP// "ENDIF" ~ Notepad++ Formatierung
INTERRUPT ON 3
STOPM_FLAG=FALSE ;Reflects state of interrupt 3 to activate/deactivate $Stopmess interrupt
;ENDFOLD (BASISTECH REACTIVATE)
END

View File

@@ -0,0 +1,30 @@
&ACCESS RVO
&REL 4
&COMMENT Mastering Reference Main Task
&PARAM EDITMASK = *
&PARAM DISKPATH = KRC:\R1\System
DEFDAT MASREF_MAIN
;FOLD EXTERNAL DECLARATIONS;%{PE}%MKUKATPBASIS,%CEXT,%VCOMMON,%P
;FOLD BASISTECH EXT;%{PE}%MKUKATPBASIS,%CEXT,%VEXT,%P
EXT BAS (BAS_COMMAND :IN,REAL :IN )
;ENDFOLD (BASISTECH EXT)
;FOLD USER EXT;%{E}%MKUKATPUSER,%CEXT,%VEXT,%P
;ENDFOLD (USER EXT)
;ENDFOLD (EXTERNAL DECLERATIONS)
;FOLD Messages
DECL CONST CHAR MASREF_Modulname[6]
MASREF_Modulname[]="MasRef"
DECL KRLMSGOPT_T MASREF_MsgOptWithLogging={VL_STOP TRUE,CLEAR_P_RESET TRUE,LOG_TO_DB TRUE}
DECL INT MASREF_StateMsgHandle=0 ; 0=> no handle exists
;ENDFOLD (Messages)
;FOLD timeout
DECL CONST REAL MASREF_TimeoutOneCycle=0.096 ; one wait cycle is 8*12ms=96ms
DECL CONST INT MASREF_nLapsedTimeout=30 ; means ca. 3s
DECL INT MASREF_nLapsedTime=0 ; actual count of wait cycle
;ENDFOLD (timeout)
;FOLD reference groups
DECL CONST INT MASREF_GroupSequenceSize=3 ; length of sequence list for reference groups
DECL INT MASREF_GroupSequenceIdx=0 ; for iteration over the array of group sequence
DECL INT MASREF_GroupNumber=0 ; actual group under test
;ENDFOLD (reference groups)
ENDDAT

View File

@@ -0,0 +1,128 @@
&ACCESS RVO
&REL 4
&COMMENT Mastering Reference Main Task
&PARAM EDITMASK = *
&PARAM DISKPATH = KRC:\R1\System
DEF MasRef_Main()
;*******************************************
;* main module for safety relevant feature *
;* 'Master Reference' *
;*******************************************
;FOLD Start conditions for mastering reference
MsgState(MASREF_StateMsgHandle,"MasterReferenceCheckStartConditions",MASREF_Modulname[],,, 103)
IF Varstate("$pro_ip.si01.name[]") <> #DECLARED THEN
;APP//MasRef_Main() wurde von einem uebergeordneten Programm aufgerufen
IF NOT $MasteringTest_Req_Ext AND NOT $MasteringTest_Req_Int THEN
;APP//weder interne noch externe Anforderung ist freigegeben
WAIT FOR Clear_KrlMsg(MASREF_StateMsgHandle)
RETURN
ENDIF
ENDIF
;APPBLOCK/*
;Signale Referenzgruppe in Position und
;Justagereferenzierung aktiv zuruecksetzen
;APPBLOCK*/
$MasteringTest_Group = 0
$MasteringTest_Active = FALSE
;APPBLOCK/*
;Schalter Hardware pruefen und
;Schalter darf nicht bedaempft sein
;APPBLOCK*/
REPEAT
IF NOT $MasteringTest_Switch_OK THEN
;APP//wartet auf Quittierung
MsgQuit("MasterReferenceSwitchFailure", MASREF_Modulname[], , , 100, MASREF_MsgOptWithLogging)
ENDIF
;APP//aktiviert Safety-Modul
$MasteringTest_Active = TRUE
WAIT SEC 0.2
;APP//lesend: Safety-Modul hat Variable wieder deaktiviert
IF NOT $MasteringTest_Active THEN
;APP//wartet auf Quittierung
MsgQuit("MasterReferenceNotActivated", MASREF_Modulname[], , , 101, MASREF_MsgOptWithLogging)
ENDIF
UNTIL $MasteringTest_Active AND $MasteringTest_Switch_OK
WAIT FOR Clear_KrlMsg(MASREF_StateMsgHandle)
;ENDFOLD (Start conditions for mastering reference)
;FOLD Reference group testing
FOR MASREF_GroupSequenceIdx = 1 TO MASREF_GroupSequenceSize
MASREF_GroupNumber = MASREFg_GroupSequence[MASREF_GroupSequenceIdx]
IF MASREF_GroupNumber > 0 THEN
MsgState(MASREF_StateMsgHandle,"MasterReferenceGroup",MASREF_Modulname[], MASREF_GroupNumber, , 104, MASREF_MsgOptWithLogging)
RunTest_Group(MASREF_GroupNumber)
WAIT FOR Clear_KrlMsg(MASREF_StateMsgHandle)
ENDIF
ENDFOR
;ENDFOLD (Reference group testing)
;FOLD Finalize mastering reference
MsgState(MASREF_StateMsgHandle,"MasterReferenceFinalize",MASREF_Modulname[],,, 106)
;APP//Positionspruefung in Sicherheitssteuerung beendet
$MasteringTest_Active = FALSE
MASREF_nLapsedTime = 0
REPEAT
WAIT SEC MASREF_TimeoutOneCycle
MASREF_nLapsedTime = MASREF_nLapsedTime + 1
;APPBLOCK/*
;lesend: warte bis Safety-Modul Variable auf FALSE setzt
;oder Timeout abgelaufen
;APPBLOCK*/
UNTIL (NOT $MasteringTest_Active AND NOT $MasteringTest_Req_Int) or (MASREF_nLapsedTime > MASREF_nLapsedTimeout)
IF $MasteringTest_Active THEN
;APP//wartet auf Quittierung
MsgQuit("MasterReferenceFailed", MASREF_Modulname[], , , 102, MASREF_MsgOptWithLogging)
ENDIF
WAIT FOR Clear_KrlMsg(MASREF_StateMsgHandle)
;ENDFOLD (Finalize mastering reference)
END
DEF RunTest_Group(nGrpNr:IN)
;FOLD Declaration
INT nGrpNr
;ENDFOLD (Declaration)
;FOLD Implementation
IF (nGrpNr <= 0) OR (nGrpNr > 3) THEN
MsgQuit("MasterReferenceUnknownGroup", MASREF_Modulname[], nGrpNr, , 105, MASREF_MsgOptWithLogging)
RETURN
ENDIF
SWITCH nGrpNr
CASE 1
;APP//Pruefposition Gruppe 1 anfahren
MasRefStartG1()
CASE 2
;APP//Pruefposition Gruppe 2 anfahren
MasRefStartG2()
CASE 3
;APP//Pruefposition Gruppe 3 anfahren
MasRefStartG3()
DEFAULT
ENDSWITCH
;APP//warte bis Pruefposition sicher erreicht
WAIT SEC 0.5
;APP//aktiviert Signal Referenzgruppe x in Position
$MasteringTest_Group = nGrpNr
;APP//warte bis Pruefung abgeschlossen
WAIT SEC 0.5
SWITCH nGrpNr
CASE 1
;APP//zurueck von Pruefposition Gruppe 1
MasRefBackG1()
CASE 2
;APP//zurueck von Pruefposition Gruppe 2
MasRefBackG2()
CASE 3
;APP// zurueck von Pruefposition Gruppe 3
MasRefBackG3()
DEFAULT
ENDSWITCH
WAIT SEC 0.2
;APP//deaktiviert Signal Referenzgruppe x in Position
$MasteringTest_Group = 0
WAIT SEC 0.2
;ENDFOLD (Implementation)
END

View File

@@ -0,0 +1,87 @@
&ACCESS RVP
&COMMENT PLC on control
DEF SPS ( )
;FOLD DECLARATIONS
;FOLD BASISTECH DECL
;Automatik extern
DECL STATE_T STAT
DECL MODUS_T MODE
;ENDFOLD (BASISTECH DECL)
;FOLD USER DECL
; Please insert user defined declarations
;ENDFOLD (USER DECL)
;ENDFOLD (DECLARATIONS)
;FOLD INI
;FOLD BASISTECH INIT
BasisTech_PLC_INIT()
;ENDFOLD (BASISTECH INIT)
;FOLD AUTOEXT INIT
INTERRUPT DECL 91 WHEN $PRO_STATE1==#P_FREE DO RESET_OUT ()
INTERRUPT ON 91
INTERRUPT DECL 92 WHEN $PRO_MOVE==TRUE DO RESET_LINESEL()
INTERRUPT ON 92
$LOOP_MSG[]=" "
MODE=#SYNC
$H_POS=$H_POS
;Automatik extern
IF $MODE_OP==#EX THEN
CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
ENDIF
;ENDFOLD (AUTOEXT INIT)
;FOLD BACKUPMANAGER PLC INIT
BM_ENABLED = FALSE
BM_OUTPUTVALUE = 0
;ENDFOLD (BACKUPMANAGER PLC INIT)
;FOLD USER INIT
; Please insert user defined initialization commands
;ENDFOLD (USER INIT)
;ENDFOLD (INI)
LOOP
WAIT FOR NOT($POWER_FAIL)
;FOLD BASISTECH PLC
BasisTech_PLC_LOOP()
;ENDFOLD (BASISTECH PLC)
;FOLD BACKUPMANAGER PLC
IF BM_ENABLED THEN
BM_OUTPUTSIGNAL = BM_OUTPUTVALUE
ENDIF
;ENDFOLD (BACKUPMANAGER PLC)
;FOLD USER PLC
;Make your modifications here
;ENDFOLD (USER PLC)
ENDLOOP
;FOLD ;%{H}
;FOLD
END
;ENDFOLD
DEF RESET_OUT ( )
INT N
MsgLoop(" ")
IF REFLECT_PROG_NR == 1 THEN
FOR N = 0 TO PGNO_LENGTH - 1
$OUT[PGNO_FBIT_REFL + N] = FALSE
ENDFOR
ENDIF
IF (PGNO_REQ>0) THEN
$OUT[PGNO_REQ]=FALSE
ELSE
IF (PGNO_REQ<0) THEN
$OUT[-PGNO_REQ]=TRUE
ENDIF
ENDIF
END
DEF RESET_LINESEL()
$LINE_SEL_OK=FALSE
END
;FOLD USER SUBROUTINE
; Integrate your user defined subroutines
;ENDFOLD (USER SUBROUTINE)
;ENDFOLD