ok thanks
Posts by job111a
-
-
ok thanks...can i put Wait 1s Instead of Halt?
-
I wish to create a loop when my gripper does not close correctly, i want to open again my gripper then return to the previous point and stop the robot, then during the restart return on the point of closure gripper and to close it
Everything takes place correctly except that the gripper does not close, the instruction OUVERTURE_PINCE=FALSE seems not to run -
is false and all other instructions run
-
hello, could someone help me
KRC1 V4.1.4
I created this program loop, but this instruction "OUVERTURE_PINCE=FALSE" does not run and stay alway at "TRUE" and I do not understand why
Code
Display MoreWHILE NOT SQ1_PINCE_FERMEE IF NOT SQ1_PINCE_FERMEE THEN OUVERTURE_PINCE=TRUE $timer[2]=0 $timer_stop[2]=FALSE WAIT FOR (SQ2_PINCE_OUVERTE OR ($timer[2]>2000)) WHILE NOT SQ2_PINCE_OUVERTE IF NOT SQ2_PINCE_OUVERTE THEN NUM_DEF=2 msg_defaut ( ) HALT NUM_DEF=0 ENDIF ENDWHILE $timer_stop[1]=TRUE ;FOLD LIN App_3_Prise_boite Vel= 0.1 m/s CPDAT11 Tool[1]:Pince Base[1]:Prise boite;%{PE}%R 4.1.7,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:App_3_Prise_boite, 3:, 5:0.1, 7:CPDAT11 $BWDSTART = FALSE LDAT_ACT=LCPDAT11 BAS(#CP_DAT) FDAT_ACT=FApp_3_Prise_boite BAS(#FRAMES) BAS(#VEL_CP,0.1) LIN XApp_3_Prise_boite ;ENDFOLD ;FOLD LIN App_2_Prise_Boite CONT Vel= 0.2 m/s CPDAT1 Tool[1]:Pince Base[1]:Prise boite;%{PE}%R 4.1.7,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:App_2_Prise_Boite, 3:C_DIS, 5:0.2, 7:CPDAT1 $BWDSTART = FALSE LDAT_ACT=LCPDAT1 BAS(#CP_DAT) FDAT_ACT=FApp_2_Prise_Boite BAS(#FRAMES) BAS(#VEL_CP,0.2) LIN XApp_2_Prise_Boite C_DIS ;ENDFOLD NUM_DEF=1 msg_defaut ( ) HALT NUM_DEF=0 WAIT FOR PRESENCE_BOITE_G2M ;FOLD LIN App_3_Prise_boite Vel= 0.1 m/s CPDAT11 Tool[1]:Pince Base[1]:Prise boite;%{PE}%R 4.1.7,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:App_3_Prise_boite, 3:, 5:0.1, 7:CPDAT11 $BWDSTART = FALSE LDAT_ACT=LCPDAT11 BAS(#CP_DAT) FDAT_ACT=FApp_3_Prise_boite BAS(#FRAMES) BAS(#VEL_CP,0.1) LIN XApp_3_Prise_boite ;ENDFOLD ;FOLD LIN Prise_Boite CONT Vel= 0.05 m/s CPDAT1 Tool[1]:Pince Base[1]:Prise boite;%{PE}%R 4.1.7,%MKUKATPBASIS,%CMOVE,%VLIN,%P 1:LIN, 2:Prise_Boite, 3:C_DIS, 5:0.05, 7:CPDAT1 $BWDSTART = FALSE LDAT_ACT=LCPDAT1 BAS(#CP_DAT) FDAT_ACT=FPrise_Boite BAS(#FRAMES) BAS(#VEL_CP,0.05) LIN XPrise_Boite C_DIS ;ENDFOLD OUVERTURE_PINCE=FALSE ENDIF ENDWHILE
-
It's ok thanks
i make that in my sps
Code
Display More&ACCESS RVO &COMMENT PLC on control DEF SPS ( ) ;FOLD DECLARATIONS;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ;FOLD BASIS DECL;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P DECL INT WFD_PLUS,WFD_MINUS,OLD_WFD ;Automatik extern DECL STATE_T STAT DECL MODUS_T MODE ;ENDFOLD (BASIS DECL) ;FOLD USER DECL;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ; Please insert user defined declarations ;ENDFOLD (USER DECL) ;ENDFOLD (DECLARATIONS) ;FOLD INI;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ;Default value MSG_T $MSG_T={MSG_T: VALID FALSE,RELEASE FALSE,TYP #NOTIFY,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0} ;FOLD AUTOEXT INIT;%{E}%V3.2.0,%MKUKATPBASIS,%CSPS,%VAUTOEXT,%P INTERRUPT DECL 91 WHEN $PRO_STATE1==#P_FREE DO RESET_OUT () INTERRUPT ON 91 $LOOP_MSG[]=" " MODE=#SYNC $H_POS=$H_POS TECH_MOTION=FALSE ;Automatik extern IF $MODE_OP==#EX THEN CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()") ENDIF ;ENDFOLD (AUTOEXT INIT) ;FOLD USER INIT;%{E}%V3.2.0,%MKUKATPBASIS,%CSPS,%VAUTOEXT,%P ; Please insert user defined initialization commands ;ENDFOLD (USER INIT) ;ENDFOLD (INI) LOOP WAIT FOR NOT($POWER_FAIL) ;FOLD ARC20 PLC;%{E}%V3.2.0,%MKUKATPA20,%CSPS,%VSPS,%P IF ((ARC20==TRUE) AND (A10_OPTION==#DISABLED)) THEN A20_TECH ( ) ENDIF ;ENDFOLD (ARC20 PLC) ;FOLD TOUCH PLC;%{E}%V3.2.0,%MKUKATPTS,%CSPS,%VSPS,%P IF H70_OPTION THEN IF ( NOT ($PRO_ACT) AND FG_ON_WORK AND ($OV_PRO==0)) THEN IF (TOUCH_ACTIVE>0) AND (TOUCH_ACTIVE<5) THEN IF TOUCH_O[TOUCH_ACTIVE].OUT_NR>0 THEN $OUT[TOUCH_O[TOUCH_ACTIVE].OUT_NR]=FALSE ENDIF ENDIF NOTAUS_TOUCH=TRUE ; error flag $OV_PRO=OV_PRO_OLD ENDIF ENDIF ;ENDFOLD (TOUCH PLC) ;FOLD GRP PLC;%{E}%V3.2.0,%MKUKATPGRP,%CSPS,%VSPS,%P IF (ZANGEN_FUNKT>0) THEN H50 (5,AKT_ZANGE,DUMMY,GDEFAULT ) ZANGEN_FUNKT=0 ENDIF ;ENDFOLD (GRP PLC) ;FOLD SPOT PLC;%{E}%V3.2.0,%MKUKATPSPOT,%CSPS,%VSPS,%P ;Make your modifications here ;ENDFOLD (SPOT PLC) ;FOLD USER PLC;%{E}%V3.2.0,%MKUKATPUSER,%CSPS,%VSPS,%P ;Make your modifications here ;ENDFOLD (USER PLC) IF $IN[11] == TRUE THEN DEM_ACCES = TRUE ENDIF IF $IN[10] == TRUE THEN FIN_CAMPAGNE = TRUE ENDIF ENDLOOP ;FOLD ;%{H} ;FOLD END ;ENDFOLD DEF A20_TECH ( ) IF ($PRO_STATE1==#P_STOP) THEN A20 (TECH_STOP ) ENDIF END DEF RESET_OUT ( ) INT N $LOOP_MSG[]=" " 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 ;FOLD USER SUBROUTINE;%{H}%V3.2.0,%MKUKATPUSER,%CSPS,%VSPS,%P ;Integrate your user defined subroutines ;ENDFOLD (USER SUBROUTINE) ;ENDFOLD
-
Is it because i modify my SPS at this line "GESTION_ACCES ( )"?
Code
Display More&ACCESS RVO &COMMENT PLC on control DEF SPS ( ) ;FOLD DECLARATIONS;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ;FOLD BASIS DECL;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P DECL INT WFD_PLUS,WFD_MINUS,OLD_WFD ;Automatik extern DECL STATE_T STAT DECL MODUS_T MODE ;ENDFOLD (BASIS DECL) ;FOLD USER DECL;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ; Please insert user defined declarations ;ENDFOLD (USER DECL) ;ENDFOLD (DECLARATIONS) ;FOLD INI;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ;Default value MSG_T $MSG_T={MSG_T: VALID FALSE,RELEASE FALSE,TYP #NOTIFY,MODUL[] " ",KEY[] " ",PARAM_TYP #VALUE,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0} ;FOLD AUTOEXT INIT;%{E}%V3.2.0,%MKUKATPBASIS,%CSPS,%VAUTOEXT,%P INTERRUPT DECL 91 WHEN $PRO_STATE1==#P_FREE DO RESET_OUT () INTERRUPT ON 91 $LOOP_MSG[]=" " MODE=#SYNC $H_POS=$H_POS TECH_MOTION=FALSE ;Automatik extern IF $MODE_OP==#EX THEN CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()") ENDIF ;ENDFOLD (AUTOEXT INIT) ;FOLD USER INIT;%{E}%V3.2.0,%MKUKATPBASIS,%CSPS,%VAUTOEXT,%P ; Please insert user defined initialization commands ;ENDFOLD (USER INIT) ;ENDFOLD (INI) LOOP WAIT FOR NOT($POWER_FAIL) ;FOLD ARC20 PLC;%{E}%V3.2.0,%MKUKATPA20,%CSPS,%VSPS,%P IF ((ARC20==TRUE) AND (A10_OPTION==#DISABLED)) THEN A20_TECH ( ) ENDIF ;ENDFOLD (ARC20 PLC) ;FOLD TOUCH PLC;%{E}%V3.2.0,%MKUKATPTS,%CSPS,%VSPS,%P IF H70_OPTION THEN IF ( NOT ($PRO_ACT) AND FG_ON_WORK AND ($OV_PRO==0)) THEN IF (TOUCH_ACTIVE>0) AND (TOUCH_ACTIVE<5) THEN IF TOUCH_O[TOUCH_ACTIVE].OUT_NR>0 THEN $OUT[TOUCH_O[TOUCH_ACTIVE].OUT_NR]=FALSE ENDIF ENDIF NOTAUS_TOUCH=TRUE ; error flag $OV_PRO=OV_PRO_OLD ENDIF ENDIF ;ENDFOLD (TOUCH PLC) ;FOLD GRP PLC;%{E}%V3.2.0,%MKUKATPGRP,%CSPS,%VSPS,%P IF (ZANGEN_FUNKT>0) THEN H50 (5,AKT_ZANGE,DUMMY,GDEFAULT ) ZANGEN_FUNKT=0 ENDIF ;ENDFOLD (GRP PLC) ;FOLD SPOT PLC;%{E}%V3.2.0,%MKUKATPSPOT,%CSPS,%VSPS,%P ;Make your modifications here ;ENDFOLD (SPOT PLC) ;FOLD USER PLC;%{E}%V3.2.0,%MKUKATPUSER,%CSPS,%VSPS,%P ;Make your modifications here ;ENDFOLD (USER PLC) GESTION_ACCES ( ) ENDLOOP ;FOLD ;%{H} ;FOLD END ;ENDFOLD DEF A20_TECH ( ) IF ($PRO_STATE1==#P_STOP) THEN A20 (TECH_STOP ) ENDIF END DEF RESET_OUT ( ) INT N $LOOP_MSG[]=" " 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 ;FOLD USER SUBROUTINE;%{H}%V3.2.0,%MKUKATPUSER,%CSPS,%VSPS,%P ;Integrate your user defined subroutines ;ENDFOLD (USER SUBROUTINE) ;ENDFOLD
Code
Display More&ACCESS RVO &PARAM TEMPLATE = C:\KRC\Roboter\Template\submit &PARAM EDITMASK = * DEF GESTION_ACCES( ) ;FOLD DECLARATIONS;%{PE}%3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ;FOLD USER DECL;%{PE}%3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ; Please insert user defined declarations ;ENDFOLD (USER DECL) ;ENDFOLD (DECLARATIONS) ;FOLD INI;%{PE}%3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ;FOLD USER INIT;%{E}%3.2.0,%MKUKATPBASIS,%CSPS,%VAUTOEXT,%P DEM_ACCES = FALSE ;ENDFOLD (USER INIT) ;ENDFOLD (INI) LOOP ;FOLD USER PLC;%{PE}%3.2.0,%MKUKATPUSER,%CSPS,%VSPS,%P ;Make your modifikations here ;ENDFOLD (USER PLC) IF $IN[11] == TRUE THEN DEM_ACCES = TRUE ENDIF IF $IN[10] == TRUE THEN FIN_CAMPAGNE = TRUE ENDIF ENDLOOP ;FOLD ;%{H}; END ;ENDFOLD ;FOLD USER SUBROUTINE;%{H}%V3.2.0,%MKUKATPUSER,%CSPS,%VSPS,%P ;Integrate your user defined subroutines ;ENDFOLD (USER SUBROUTINE)
-
Yes it work correctly when the outpout is on
-
yes the submit is running and i pulled deadman but not working!!
-
-
hi,
please attach your config.dat file or at least the piece of code with gripper configuration.
Regards
[noae]
Code
Display More&REL 3 DEFDAT $CONFIG ;FOLD BAS GLOBALS;%{E}%V3.2.0,%MKUKATPBASIS,%CGLOBALS,%VGLOBALS,%P ;================================== ; Default parameters for movement ; These values shouldn't be changed ;================================== ; EDITOR-Modes ;---------------------------------- INT $EDIT_MODE=1 ;---------------------------------- ; general MOVEMENT - parameters: ;---------------------------------- INT DEF_OV_PRO=100 INT DEF_ADVANCE=3 ; PTP - MOVEMENTS ;---------------------------------- INT DEF_VEL_PTP=100 INT DEF_ACC_PTP=50 ; CP - MOVEMENTS ;---------------------------------- DECL CIRC_TYPE DEF_CIRC_TYP=#BASE REAL DEF_VEL_CP=2.0 REAL DEF_VEL_ORI1=200.0 REAL DEF_VEL_ORI2=200.0 REAL DEF_ACC_CP=2.29999995 REAL DEF_ACC_ORI1=100.0 REAL DEF_ACC_ORI2=100.0 REAL DEF_VEL_FACT=1.0 ; APO - parameters ;-------------------------------- INT DEF_APO_CPTP=50 INT DEF_APO_CVEL=100 REAL DEF_APO_CDIS=3.0 REAL DEF_APO_CORI=5.0 ;================================== ; 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 ENUM OUT_MODETYPE TRIGGER_,CONT_,STOP_ ENUM IPO_M_T NONE,TCP,BASE 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 EX_AX_DATA_T FRAME ROOT,ESYS EX_KIN,FRAME OFFSET STRUC PDAT REAL VEL,ACC,APO_DIST STRUC LDAT REAL VEL,ACC,APO_DIST,APO_FAC STRUC FDAT INT TOOL_NO,BASE_NO,IPO_MODE IPO_FRAME 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] STRUC OUT_SUGG_T CHAR PARAMS[24] ;================================== ; 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] ;================================== ; Variables: ;================================== DECL PDAT PDEFAULT={VEL 100.0,ACC 100.0,APO_DIST 100.0} DECL LDAT LDEFAULT={VEL 2.0,ACC 100.0,APO_DIST 100.0,APO_FAC 50.0} DECL FDAT FDEFAULT={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE} DECL FDAT FHOME={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE} DECL ODAT ODEFAULT={OUT_NO 1,STATE TRUE,PULSE_TIME 0.0,OUT_MODE #STOP_,TIME_DELAY 0.0,OFFSET 0.0} DECL PDAT PDAT_ACT DECL LDAT LDAT_ACT DECL FDAT FDAT_ACT DECL ODAT ODAT_ACT DECL INT ACT_DELAY DECL INT ACT_DISTANCE ;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 -10.6309299,a2 -89.0041504,a3 90.676178,a4 3.760741,a5 89.0900497,a6 -234.162994,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.0,a3 90.0,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.0,a3 90.0,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.0,a3 90.0,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.0,a3 90.0,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.0,a3 90.0,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 XHOME6={a1 0.0,a2 -90.0,a3 90.0,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 910.206909,y 165.001358,z 514.170837,a 49.3186951,b 3.91517019,c 93.2118225} 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[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=TRUE BOOL TOOL_CORR_ON=FALSE BOOL BASE_CORR_ON=FALSE FRAME TOOL_CORR={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} INT COR_TOOL_NO=0 INT MAX_TOOL=16 DECL FRAME TOOL_DATA[16] TOOL_DATA[1]={x -18.7721291,y -17.8448238,z 62.0485382,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,]="Pince" 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,]=" " DECL LOAD LOAD_DATA[16] LOAD_DATA[1]={M 15.0,CM {x 120.0,y 0.0,z 150.0,a 0.0,b 0.0,c 0.0},J {X 0.224999994,Y 0.224999994,Z 0.224999994}} LOAD_DATA[2]={M -1.0,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.0,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.0,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.0,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.0,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.0,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.0,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.0,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.0,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.0,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.0,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.0,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.0,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.0,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.0,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 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.0,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.0,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 -1.0,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=16 DECL FRAME BASE_DATA[16] BASE_DATA[1]={x 908.897278,y 156.833099,z 602.352173,a -84.8961258,b -0.466028988,c -1.845034} BASE_DATA[2]={x 328.906708,y -949.030579,z -179.274094,a -168.465363,b -1.40468299,c 0.0341640003} 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 328.906708,y -949.030579,z -179.274094,a -168.465363,b -1.40468299,c 0.0341640003} 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} DECL CHAR BASE_NAME[16,24] BASE_NAME[1,]="Prise boite" BASE_NAME[2,]="Roller 1" BASE_NAME[3,]=" " BASE_NAME[4,]=" " BASE_NAME[5,]=" " BASE_NAME[6,]=" " BASE_NAME[7,]=" " BASE_NAME[8,]=" " BASE_NAME[9,]=" " BASE_NAME[10,]="Offset_Z Roller_1" BASE_NAME[11,]=" " BASE_NAME[12,]=" " BASE_NAME[13,]=" " BASE_NAME[14,]=" " BASE_NAME[15,]=" " BASE_NAME[16,]=" " DECL IPO_M_T BASE_TYPE[16] BASE_TYPE[1]=#BASE BASE_TYPE[2]=#BASE 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 ;External AXIS data ;---------------------------------- INT MAX_EX_BASE=6 DECL EX_AX_DATA_T EX_AX_DATA[6] EX_AX_DATA[1]={ROOT {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0},EX_KIN #EASYS,OFFSET {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0}} EX_AX_DATA[2]={ROOT {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0},EX_KIN #EBSYS,OFFSET {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0}} EX_AX_DATA[3]={ROOT {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0},EX_KIN #ECSYS,OFFSET {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0}} EX_AX_DATA[4]={ROOT {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0},EX_KIN #EDSYS,OFFSET {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0}} EX_AX_DATA[5]={ROOT {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0},EX_KIN #EESYS,OFFSET {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0}} EX_AX_DATA[6]={ROOT {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0},EX_KIN #EFSYS,OFFSET {x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0}} DECL CHAR EX_AX_NAME[6,24] EX_AX_NAME[1,]=" " EX_AX_NAME[2,]=" " EX_AX_NAME[3,]=" " EX_AX_NAME[4,]=" " EX_AX_NAME[5,]=" " EX_AX_NAME[6,]=" " DECL IPO_M_T EX_AX_TYPE[6] EX_AX_TYPE[1]=#NONE EX_AX_TYPE[2]=#NONE EX_AX_TYPE[3]=#NONE EX_AX_TYPE[4]=#NONE EX_AX_TYPE[5]=#NONE EX_AX_TYPE[6]=#NONE ;****************************************** ; Variables for axis CALIBRATING ;****************************************** DECL INT CAL_AXIS BOOL CONST_SPEED ;****************************************** ; Variables for added TechPackages ;****************************************** ENUM A_BOOL_T ACTIVE,IDLE ENUM A_FG_TYPE FG_MECHANIC,FG_THERMAL DECL A_BOOL_T A_HOT_WELD=#IDLE ; Status of HPU Weld key DECL A_BOOL_T A_HPU_DRY_RN=#IDLE ; DRY_RUN functionality INT A_HPU_WFD=0 DECL A_BOOL_T A_OLD_WELD=#ACTIVE ; PLC control status of change DECL A_BOOL_T A_ISR_ACTION=#ACTIVE ; PLC control like a busy flag BOOL ANA_CLC_ON=TRUE BOOL PROC_IN_T1=FALSE BOOL PROC_ENABLE=TRUE BOOL TECH_MOTION=FALSE ; flag for technology motions REAL A_AP_DIS_TCH=5.0 ; ARCTECH specified rough positioning parameter REAL DRY_RN_VEL=0.150000006 INT MAX_RETRY=3 INT MAX_ERROR=5 INT RETRY_COUNT=0 INT ERROR_COUNT=0 INT POWER ;****************************************** ; Variables Tool Correction ;****************************************** BOOL FLAG=FALSE INT MAX_CRASH=5 ;External for weaving-generator EXT WEAV_DEF (A_FG_TYPE :IN,INT :IN,INT :IN,INT :IN,INT :IN ) ;****************************************** ; Variables for Displaying and Konfiguring ;****************************************** DECL INT I[10] 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 ;****************************************** ; all for UserStatKeys ;****************************************** ENUM COMMAND OPN,CLO INT ZANGEN_FUNKT=1 INT AKT_ZANGE=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 ;ENDFOLD ;FOLD AUTOEXT GLOBALS;%{E}%V3.2.0,%MKUKATPBASIS,%CGLOBALS,%VAUTOEXT,%P ;================================== ; 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 [],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=33 ;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=41 ;parity bit of ext. pgno INT PGNO_REQ=33 ;request ext. pgno input INT PGNO_VALID=42 ;validate ext. pgno input INT APPL_RUN=34 ;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 ;FOLD GRIPPER GLOBALS;%{E}%V3.2.0,%MKUKATPGRP,%CGLOBALS,%VGLOBALS,%P ;================================== ; Structures: ;================================== ENUM ON_OFF_TYP ON,OFF,MID ENUM APO_TYP YES,NO STRUC GRP_TYP APO_TYP G_APO,REAL TIME,ON_OFF_TYP CTRL,INT DLY,INT DST ; structure for gripper definition STRUC GRP_TYPES INT TYPE,OUT1,OUT2,OUT3,OUT4,IN1,IN2,IN3,IN4,GRP_OLD ; structure for last values STRUC GRP_SUGG_T CHAR NUMBER[24],STATE[24],PARAMS[24] ;================================== ; External declarations: ;================================== EXT H50 (INT :IN,INT :IN,INT :IN,GRP_TYP :IN ) EXT USER_GRP (INT :IN,INT :IN,INT :IN,GRP_TYP :IN ) ;================================== ; Variables: ;================================== ; instruction codes INT GRP=1 INT CHK_APO=2 INT GRP_APO=3 INT CHK_APO_UP=4 ;================================== ; Variables: ;================================== DECL GRP_TYP GDEFAULT={G_APO #NO,TIME 0.200000003,CTRL #OFF,DLY 0,DST 1} INT DUMMY=0 ;constant for time out in sec REAL TIME_OUT=3.0 INT CHK_CODE=0 BOOL APO_CHK_ON=FALSE BOOL H50_FERTIG=FALSE ;================================== ; Options: ;================================== BOOL APO_CHK_OPT=TRUE ;================================== ; Definition of grippers ;================================== INT MAXGRIPPER=16 DECL GRP_TYPES GRIPPER[16] GRIPPER[1]={TYPE 1,OUT1 17,OUT2 999,OUT3 999,OUT4 999,IN1 14,IN2 15,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[2]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[3]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[4]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[5]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[6]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[7]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[8]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[9]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[10]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[11]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[12]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[13]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[14]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[15]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} GRIPPER[16]={TYPE 0,OUT1 999,OUT2 999,OUT3 999,OUT4 999,IN1 0,IN2 0,IN3 0,IN4 0,GRP_OLD 1} REAL GRP_PULSE_TI=0.5 ; pulse time for gripper type 5 ;ENDFOLD ;FOLD PERCEP GLOBALS;%{E}%V3.2.0,%MKUKATPBASIS,%CGLOBALS,%VPERCEPT,%P ;============================== ; External declarations: ;============================== EXT PERCEPT (INT :IN,INT :IN,INT :IN,INT :IN,INT :IN,INT :OUT ) ;============================== ; Variables: ;============================== INT PERCEPT_32 INT PERCEPT_33 INT PERCEPT_34 REAL PERCEPT_REL FRAME PERCEPT_KOR ;ENDFOLD ;FOLD SPOT GLOBALS;%{E}%V.2.2,%MKUKATPSPOT,%CGLOBALS,%VGLOBALS,%P ;================================== ; Structures: ;================================== ENUM S_COMMAND SPOT,RETR,PRESPOT,INIT,ADVSPOT ENUM S_PAIR_SLCT FIRST,SECOND,BOTH STRUC SPOT_SUGG_T CHAR GUN[24],RETR_CMD[24],CHOISE[24],CLO_TM[24],PGNO1[24],PRESS1[24],PGNO2[24],PRESS2[24],SPOT_PARAMS[24] STRUC SPOT_TYPE INT GUN,S_PAIR_SLCT PAIR,COMMAND RETR,INT CLO_TM,INT PGNO1,REAL PRESS1,INT PGNO2,REAL PRESS2 ;============================== ; External declarations: ;============================== EXT USERSPOT (S_COMMAND :IN,SPOT_TYPE :IN ) ;============================== ; Variables: ;============================== DECL SPOT_TYPE SDEFAULT={GUN 1,PAIR #FIRST,RETR #OPN,CLO_TM 0,PGNO1 1,PRESS1 0.0,PGNO2 0,PRESS2 0.0} DECL SPOT_TYPE S_ACT DECL INT S_ACT_DELAY DECL BOOL S_READY INT BOSCHCMD_OK=534 INT BOSCHSTAT_OK=528 ;============================== ; all for Bosch-Serial-Interface ;============================== EXT BOSCH (INT :IN,INT :IN,INT :OUT ) ; BOSCH-OUTWORD 1 (513-528) param SIGNAL BOSCHPAR $OUT[513] TO $OUT[528] ; BOSCH-OUTWORD 2 (529-544) command SIGNAL BOSCHCMD $OUT[529] TO $OUT[533] ; BOSCH-INWORD 1 (513-528) status+validbit SIGNAL BOSCHSTAT $IN[513] TO $IN[527] ;ENDFOLD ;FOLD A10 GLOBALS;%{E}%V3.2.0,%MKUKATPARC,%CGLOBALS,%VGLOBALS,%P ;=========== ; Structures ;=========== STRUC A_STRT_T REAL GAS_PRE_T,START_T,ANA1,ANA2,ANA3,ANA4,ANA5,ANA6,ANA7,ANA8 STRUC A_WELD_T REAL VEL,ANA1,ANA2,ANA3,ANA4,ANA5,ANA6,ANA7,ANA8,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,INT WEAVFIG_THER,REAL ANA1_THERM,ANA2_THERM,WEAVLEN_THER,BURNBACK_T,ANA1_BB,ANA2_BB,ANA3_BB,ANA4_BB,ANA5_BB,ANA6_BB,ANA7_BB,ANA8_BB STRUC A_END_T REAL END_TI,BURNBACK_T,GAS_POST_T,ANA1_E,ANA2_E,ANA3_E,ANA4_E,ANA5_E,ANA6_E,ANA7_E,ANA8_E,ANA1_BB,ANA2_BB,ANA3_BB,ANA4_BB,ANA5_BB,ANA6_BB,ANA7_BB,ANA8_BB STRUC A_ANA_DEF_T REAL PARA,VAL STRUC A_ANA_VAL_T REAL M,N STRUC USR_MSG_T CHAR MSG[7],INT S_LENGTH STRUC ARC_SUGG_T CHAR WELD_MODE[24],CHAR WELD_SET[24],CHAR START_SET[24],CHAR END_SET[24],CHAR COMMENT[24],CHAR VEL[24] ENUM A_CMD_T GAS_PRE,PRE_ARC_ON,ARC_STRT,PRE_ARC_OFF,ARC_SEAM,ARC_OFF,PRE_ARC_SWI,IR_ERROR,APPL_ERROR,I_PRET_STP,HPU_ARC,CLEAN_OFF,IR_RESTART ENUM A_BB_TYPE SSDV8_MODE,ACT_PAR,REDUCE ENUM A_RESTART_T COLD_SEAM,RESTART,LIM_RESTART,USR_SEAM,USR_START ENUM A_START_T RESTART,USR_START ;Restart on start error ENUM A_TECH_STS_T ACTIVE,DISABLED ENUM A_APPL_T THIN,THICK ENUM MSG_CALL_T SAF_CYCFLAG,GIVE_USR_MSG,DEF_USR_MSG ;========== ; Variables ;========== DECL A_BOOL_T A_F_WLD_COND=#ACTIVE ; Flag for check WELDER Ready DECL A_BOOL_T A_STRT_BRAKE=#ACTIVE ; BRAKE-Option at ARC_START (HPU control) DECL A_BOOL_T A_END_BRAKE=#ACTIVE ; BRAKE-Option at ARC_OFF (HPU control) DECL A_BOOL_T A_WLD_ACTIV=#IDLE ; Status of running ARC application DECL A_BOOL_T A_GAS_FLOW=#IDLE ; Flag for Gas Flow DECL A_BOOL_T A_CLD_TSTP=#IDLE ; Flag to compute the TECHSTOP_SUB subroutine DECL A_BOOL_T A_COLD_SEAM=#IDLE ; #IDLE --> HOT, #ACTIVE --> #COLD DECL A_BOOL_T A_ISR4_FLAG=#ACTIVE ; Flag for seam control interrupt DECL A_BOOL_T A_SV_WLD_STS=#IDLE ; Status of WLD_ACTIV in TECH_STP_SUB DECL A_BOOL_T A_TCHSTP_STS=#IDLE ; Trigger ARCSPS-TECHSTOP-OFF DECL A_BOOL_T A_BRN_FR_OPT=#IDLE ; Burnfree Option DECL A_BOOL_T A_FLY_ARC_ON=#IDLE ; Trigger OUTPUT( Signal Declaration ) DECL A_BOOL_T A_SAFE_ISR4=#IDLE ; Flag for ISR condition for seam control DECL A_BOOL_T A_WELD_MEM=#IDLE ; Flag for WELD_STS in TECHSTP DECL A_BOOL_T A_SPS_ACTION ; Flag for SUBMIT control-ISR DECL A_BOOL_T A_TSTOP_CONT ; Trigger ARCSPS-TECHSTOP-ON DECL A_BOOL_T A_HOT_T_STOP=#IDLE ; Flag for RESTART from TECHSTOP DECL A_BOOL_T A_HPU_CMD=#IDLE ; Flag for marking HPU task DECL A_BOOL_T A_ARC_SWI=#IDLE ; Flag for ARC_SWITCH command DECL A_BOOL_T A_ANA_CLC_ON=#IDLE ; Flag for calculating controller lines DECL A_BOOL_T A_INTR_MODE=#IDLE ; Flag of interrupt event DECL A_BOOL_T A_SWINDL_OPT=#ACTIVE ;Seam control interrupt in rough process DECL A_BOOL_T A_PRE_WR_OPT=#IDLE ;Option for reduction WFD in start process DECL A_BOOL_T A_HOT_SELECT=#IDLE ; block select with start possibility DECL A_BOOL_T A_CLEANER=#IDLE ; cleaner procedure state BOOL A_ISR_SELECT BOOL A_RAMP_OPTION=FALSE ; Ramp functionality at chane of parameters BOOL A_PR_GAS_OPT=TRUE ; Enable for flying gas flow BOOL A_TH_WEAVE_OPT=FALSE ;Thermal weaving BOOL A_SYNERG_OPT=FALSE ; Synergetic welder BOOL A_DEF_USRMSG=FALSE ;define user defined text INT A_FLT_SV_FCT=0 ; Number of user defined FLT_SERV-Subroutine INT A_ARC_INSTR=0 INT A_ARC_IDLE=0 INT A_ARC_ON=1 INT A_ARC_SEAM=2 INT A_ARC_OFF=3 INT A_TECH_STOP=4 INT A_SEAM_RDY=5 INT A_ACT_W_MODE=1 ; Actual Weld Mode [PS/MM] INT A_BB_CHANNEL=0 INT A_WF_CHANNEL=0 ; WireFeed Channel in case of a seperate Channel INT A_WEAV_GEN[6] A_WEAV_GEN[1]=1 ; A_FG_MECH1 A_WEAV_GEN[2]=2 ; A_FG_MECH2 A_WEAV_GEN[3]=3 ; A_FG_THERM A_WEAV_GEN[4]=4 ; A_FG_SENSOR INT A_FG_MECH1=1 ; Mechanical function generator 1 INT A_FG_MECH2=2 ; Mechanical function generator 2 INT A_FG_THERM=3 ; Thermal function generator INT A_LST_M1_FIG=0 INT A_LST_M2_FIG=0 INT A_LST_TH_FIG=0 INT A_FIFO_READ=1 INT A_FIFO_WRITE=1 INT A_FIFO_MAX=6 ; FIFO CONTROL size INT A_SEAM_CTRL=0 ; setinfo production screen INT A_FILTER_OLD=96 ; Filter value as save value INT A_WEAVE_FILT=108 ; Filter for mechanical weaving INT A_ACT_AN_MAX=2 ; Maximum number of analog channels enfluence to user interface also INT A_PR_GAS_TIM ; Pre gas flow time [msec] INT A_PRE_WIRE=16 ; PRE WIRE Value in per cent of reduction of WFD Channel INT A_CTRL_DELAY=1200 ;[ms] INT SAVE_OVR=-1 ; prepared to online optimizing REAL A_TH1_ACT_O,A_TH2_ACT_O,A_TH1_ACT_G,A_TH2_ACT_G ; actual value of cycling ANOUTS REAL A_SWINDL_TIM=0.0500000007 ; Time to ignore a seam error [sec] REAL A_TIME_OUT1=200.0 ; TIMEOUT for digital input [10 ms * 200 -> 2.0 sec] REAL A_BB_VAL=1.0 ; Burnback value for own controlled Burnback at own Channel REAL A_WF_VALUE=0.0 ; Wirefeed value for own Channel REAL A_REDUCE=0.200000003 ; 20 percent reduction of voltage REAL A_BBT_MAX=0.5 ; Burnback time for 10V analog voltage Specials for SSDV8 REAL A_BRN_FREE_T=0.200000003 ; BurnFree Time [sec] REAL A_E_PR_GAS_T=0.150000006 ; Constant of delay from gas valves DECL A_STRT_T A_S_PARA_ACT={GAS_PRE_T 0.100000001,START_T 0.100000001,ANA1 100.0,ANA2 1000.0,ANA3 0.0,ANA4 0.0,ANA5 0.0,ANA6 0.0,ANA7 0.0,ANA8 0.0} DECL A_END_T A_E_PARA_ACT={END_TI 0.100000001,BURNBACK_T 0.100000001,GAS_POST_T 0.200000003,ANA1_E 70.0,ANA2_E 600.0,ANA3_E 0.0,ANA4_E 0.0,ANA5_E 0.0,ANA6_E 0.0,ANA7_E 0.0,ANA8_E 0.0,ANA1_BB 25.0,ANA2_BB 350.0,ANA3_BB 0.0,ANA4_BB 0.0,ANA5_BB 0.0,ANA6_BB 0.0,ANA7_BB 0.0,ANA8_BB 0.0} DECL A_WELD_T A_W_PARA_ACT={VEL 1.04999995,ANA1 10.1999998,ANA2 120.0,ANA3 0.0,ANA4 0.0,ANA5 0.0,ANA6 0.0,ANA7 0.0,ANA8 5.0,WEAVFIG_MECH 0,WEAVLEN_MECH 11.0,WEAVAMP_MECH 2.0,WEAVANG_MECH 0.0,WEAVFIG_THER 0,ANA1_THERM 10.0,ANA2_THERM 100.0,WEAVLEN_THER 11.3999996,BURNBACK_T 0.0,ANA1_BB 35.0,ANA2_BB 250.0,ANA3_BB 0.0,ANA4_BB 0.0,ANA5_BB 0.0,ANA6_BB 0.0,ANA7_BB 0.0,ANA8_BB 0.0} DECL A_STRT_T BDEFAULT={GAS_PRE_T 0.100000001,START_T 0.200000003,ANA1 24.0,ANA2 450.0,ANA3 0.0,ANA4 0.0,ANA5 0.0,ANA6 0.0,ANA7 0.0,ANA8 0.0} DECL A_END_T EDEFAULT={END_TI 0.100000001,BURNBACK_T 0.0500000007,GAS_POST_T 0.200000003,ANA1_E 22.0,ANA2_E 400.0,ANA3_E 0.0,ANA4_E 0.0,ANA5_E 0.0,ANA6_E 0.0,ANA7_E 0.0,ANA8_E 0.0,ANA1_BB 0.0,ANA2_BB 0.0,ANA3_BB 0.0,ANA4_BB 0.0,ANA5_BB 0.0,ANA6_BB 0.0,ANA7_BB 0.0,ANA8_BB 0.0} DECL A_WELD_T WDEFAULT={VEL 0.5,ANA1 22.5,ANA2 430.0,ANA3 0.0,ANA4 0.0,ANA5 0.0,ANA6 0.0,ANA7 0.0,ANA8 5.0,WEAVFIG_MECH 'H0',WEAVLEN_MECH 14.0,WEAVAMP_MECH 2.0,WEAVANG_MECH 0.0,WEAVFIG_THER 'H0',ANA1_THERM 0.0,ANA2_THERM 0.0,WEAVLEN_THER 4.0,BURNBACK_T 0.300000012,ANA1_BB 24.0,ANA2_BB 400.0,ANA3_BB 0.0,ANA4_BB 0.0,ANA5_BB 0.0,ANA6_BB 0.0,ANA7_BB 0.0,ANA8_BB 0.0} ;Restart Mode at seam error DECL A_RESTART_T A_RESTRT_OPT=#LIM_RESTART ;COLD_SEAM,RESTART,LIM_RESTART,USR_SEAM ;Restart Mode at start error DECL A_START_T A_S_ERR_OPT=#RESTART ;#RESTART,#USR_START ;Burnback Mode operation DECL A_BB_TYPE A_BB_MODE=#ACT_PAR ;#SSDV8_MODE,ACT_PAR,REDUCE DECL A_APPL_T A_APPLICAT=#THIN ;#thin,#thick DECL A_TECH_STS_T A10_OPTION=#DISABLED ; #active, #disabled DECL INT A_ANAOUT_NO[8] ; Indexed adressing of analog channels: 0 -> not used A_ANAOUT_NO[1]=1 A_ANAOUT_NO[2]=2 A_ANAOUT_NO[3]=3 A_ANAOUT_NO[4]=4 A_ANAOUT_NO[5]=5 A_ANAOUT_NO[6]=6 A_ANAOUT_NO[7]=7 A_ANAOUT_NO[8]=8 DECL INT A_ANA_MAX_D[2,8] ;maximum number of points to define a controller line A_ANA_MAX_D[1,1]=2 A_ANA_MAX_D[1,2]=2 A_ANA_MAX_D[1,3]=2 A_ANA_MAX_D[1,4]=2 A_ANA_MAX_D[1,5]=2 A_ANA_MAX_D[1,6]=2 A_ANA_MAX_D[1,7]=2 A_ANA_MAX_D[1,8]=2 A_ANA_MAX_D[2,1]=2 A_ANA_MAX_D[2,2]=2 A_ANA_MAX_D[2,3]=2 A_ANA_MAX_D[2,4]=2 A_ANA_MAX_D[2,5]=2 A_ANA_MAX_D[2,6]=2 A_ANA_MAX_D[2,7]=2 A_ANA_MAX_D[2,8]=2 DECL A_ANA_DEF_T A_ANA_DEF[2,8,5] ;WELD_Mode,Channel,Points of controler line ;Mode1 Channel1 command value A_ANA_DEF[1,1,1]={PARA 13.0,VAL 0.0} A_ANA_DEF[1,1,2]={PARA 39.0,VAL 1.0} A_ANA_DEF[1,1,3]={PARA 40.0,VAL 0.0} A_ANA_DEF[1,1,4]={PARA 41.0,VAL 0.0} A_ANA_DEF[1,1,5]={PARA 42.0,VAL 0.0} ;Mode1 Channel2 wire feed [IPM] A_ANA_DEF[1,2,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[1,2,2]={PARA 1000.0,VAL 1.0} A_ANA_DEF[1,2,3]={PARA 1001.0,VAL 0.0} A_ANA_DEF[1,2,4]={PARA 1002.0,VAL 0.0} A_ANA_DEF[1,2,5]={PARA 1003.0,VAL 0.0} ;Mode1 Channel3 A_ANA_DEF[1,3,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[1,3,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[1,3,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[1,3,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[1,3,5]={PARA 80.0,VAL 0.800000012} ;Mode1 Channel4 A_ANA_DEF[1,4,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[1,4,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[1,4,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[1,4,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[1,4,5]={PARA 80.0,VAL 0.800000012} ;Mode1 Channel5 A_ANA_DEF[1,5,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[1,5,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[1,5,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[1,5,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[1,5,5]={PARA 80.0,VAL 0.800000012} ;Mode1 Channel6 A_ANA_DEF[1,6,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[1,6,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[1,6,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[1,6,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[1,6,5]={PARA 80.0,VAL 0.800000012} ;Mode1 Channel7 A_ANA_DEF[1,7,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[1,7,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[1,7,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[1,7,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[1,7,5]={PARA 80.0,VAL 0.800000012} ;Mode1 Channel8 A_ANA_DEF[1,8,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[1,8,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[1,8,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[1,8,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[1,8,5]={PARA 80.0,VAL 0.800000012} ;Mode2 Channel1 command value A_ANA_DEF[2,1,1]={PARA 13.0,VAL 0.0} A_ANA_DEF[2,1,2]={PARA 39.0,VAL 1.0} A_ANA_DEF[2,1,3]={PARA 40.0,VAL 0.0} A_ANA_DEF[2,1,4]={PARA 41.0,VAL 0.0} A_ANA_DEF[2,1,5]={PARA 42.0,VAL 0.0} ;Mode2 Channel2 wire feed [IPM] A_ANA_DEF[2,2,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[2,2,2]={PARA 1000.0,VAL 1.0} A_ANA_DEF[2,2,3]={PARA 1001.0,VAL 0.0} A_ANA_DEF[2,2,4]={PARA 1002.0,VAL 0.0} A_ANA_DEF[2,2,5]={PARA 1003.0,VAL 0.0} ;Mode2 Channel3 A_ANA_DEF[2,3,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[2,3,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[2,3,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[2,3,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[2,3,5]={PARA 80.0,VAL 0.800000012} ;Mode2 Channel4 A_ANA_DEF[2,4,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[2,4,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[2,4,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[2,4,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[2,4,5]={PARA 80.0,VAL 0.800000012} ;Mode2 Channel5 A_ANA_DEF[2,5,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[2,5,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[2,5,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[2,5,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[2,5,5]={PARA 80.0,VAL 0.800000012} ;Mode2 Channel6 A_ANA_DEF[2,6,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[2,6,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[2,6,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[2,6,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[2,6,5]={PARA 80.0,VAL 0.800000012} ;Mode2 Channel7 A_ANA_DEF[2,7,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[2,7,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[2,7,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[2,7,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[2,7,5]={PARA 80.0,VAL 0.800000012} ;Mode2 Channel8 A_ANA_DEF[2,8,1]={PARA 0.0,VAL 0.0} A_ANA_DEF[2,8,2]={PARA 20.0,VAL 0.200000003} A_ANA_DEF[2,8,3]={PARA 40.0,VAL 0.400000006} A_ANA_DEF[2,8,4]={PARA 60.0,VAL 0.600000024} A_ANA_DEF[2,8,5]={PARA 80.0,VAL 0.800000012} DECL A_ANA_VAL_T A_ANA_VAL[2,8,4] ; Results of controller characteristics y=mx + b form ( M + N ) ; outputs for gas preflow DECL FCT_OUT_T A_O_GAS_PRE[3] A_O_GAS_PRE[1]={NO 'H2',PULS_TIME 0.0,STATE TRUE} A_O_GAS_PRE[2]={NO 'H0',PULS_TIME 0.0,STATE TRUE} A_O_GAS_PRE[3]={NO 'H0',PULS_TIME 0.0,STATE TRUE} ; outputs for MODE1 welding DECL FCT_OUT_T A_O_MODE1[3] A_O_MODE1[1]={NO 'H3',PULS_TIME 0.0,STATE TRUE} A_O_MODE1[2]={NO 'H0',PULS_TIME 0.0,STATE TRUE} A_O_MODE1[3]={NO 'H0',PULS_TIME 0.0,STATE TRUE} ; outputs for MODE2 welding DECL FCT_OUT_T A_O_MODE2[3] A_O_MODE2[1]={NO 'H3',PULS_TIME 0.0,STATE FALSE} A_O_MODE2[2]={NO 'H0',PULS_TIME 0.0,STATE FALSE} A_O_MODE2[3]={NO 'H0',PULS_TIME 0.0,STATE FALSE} ; outputs for weld start DECL FCT_OUT_T A_O_WLD_STRT[3] A_O_WLD_STRT[1]={NO 'H1',PULS_TIME 0.0,STATE TRUE} A_O_WLD_STRT[2]={NO 'H2',PULS_TIME 0.0,STATE TRUE} A_O_WLD_STRT[3]={NO 'H0',PULS_TIME 0.0,STATE TRUE} ; outputs burn back starts DECL FCT_OUT_T A_O_SEAM_END[3] A_O_SEAM_END[1]={NO 'H1',PULS_TIME 0.0,STATE FALSE} A_O_SEAM_END[2]={NO 'H0',PULS_TIME 0.0,STATE FALSE} A_O_SEAM_END[3]={NO 'H0',PULS_TIME 0.0,STATE FALSE} ; outputs gas post flow starts DECL FCT_OUT_T A_O_POST_ON[3] A_O_POST_ON[1]={NO 'H2',PULS_TIME 0.150000006,STATE TRUE} A_O_POST_ON[2]={NO 'H0',PULS_TIME 0.150000006,STATE TRUE} A_O_POST_ON[3]={NO 'H0',PULS_TIME 0.150000006,STATE TRUE} ; outputs gas post flow ends DECL FCT_OUT_T A_O_POST_OFF[3] A_O_POST_OFF[1]={NO 'H2',PULS_TIME 0.200000003,STATE TRUE} A_O_POST_OFF[2]={NO 'H0',PULS_TIME 0.200000003,STATE TRUE} A_O_POST_OFF[3]={NO 'H0',PULS_TIME 0.200000003,STATE TRUE} ; outputs fault while arc on DECL FCT_OUT_T A_O_FLT_ON[3] A_O_FLT_ON[1]={NO 'H1',PULS_TIME 0.0,STATE FALSE} A_O_FLT_ON[2]={NO 'H2',PULS_TIME 0.0,STATE FALSE} A_O_FLT_ON[3]={NO 'H7',PULS_TIME 0.0,STATE TRUE} ; switch off outputs after fault DECL FCT_OUT_T A_O_DISBL_P[3] A_O_DISBL_P[1]={NO 'H4',PULS_TIME 0.0,STATE FALSE} A_O_DISBL_P[2]={NO 'H0',PULS_TIME 0.0,STATE FALSE} A_O_DISBL_P[3]={NO 'H0',PULS_TIME 0.0,STATE FALSE} ; outputs acknowledge fault DECL FCT_OUT_T A_O_ACK_FLT[3] A_O_ACK_FLT[1]={NO 'H5',PULS_TIME 0.5,STATE TRUE} A_O_ACK_FLT[2]={NO 'H0',PULS_TIME 0.5,STATE TRUE} A_O_ACK_FLT[3]={NO 'H0',PULS_TIME 0.5,STATE TRUE} ; output for fault message DECL FCT_OUT_T A_O_FLT_SIGN={NO 'H6',PULS_TIME 0.0,STATE TRUE} ; output for fault at start procedure DECL FCT_OUT_T A_O_FLT_STRT={NO 'H7',PULS_TIME 0.0,STATE TRUE} ; output for fault application error message DECL FCT_OUT_T A_O_FLT_APPL={NO 'H8',PULS_TIME 0.0,STATE TRUE} ; output for interpreter stop DECL FCT_OUT_T A_O_IR_STOP={NO 'H9',PULS_TIME 0.0,STATE TRUE} ; signal for periphery in case of aluminium start DECL FCT_OUT_T A_O_ALU_STRT={NO 'HA',PULS_TIME 0.0,STATE TRUE} ;===================== ; Aluminium Options: ;===================== DECL A_BOOL_T A_ALU_OPTION=#IDLE REAL A_ALU_S_TIME=0.200000003 REAL A_ALU_DELY_T=0.300000012 ;WIREFEED control DECL FCT_OUT_T A_O_WRFEDP={NO 15,PULS_TIME 0.200000003,STATE TRUE} DECL FCT_OUT_T A_O_WRFEDN={NO 16,PULS_TIME 0.200000003,STATE TRUE} ;for controls of peripheries on a seam DECL INT A_FLT_NUM[4] ;inputs for controls of peripheries on a seam DECL FCT_IN_T A_FLT_CYCFLG[4] A_FLT_CYCFLG[1]={NO 13,STATE TRUE} ;e.g. collection failure A_FLT_CYCFLG[2]={NO 2,STATE TRUE} ;e.g. current A_FLT_CYCFLG[3]={NO 11,STATE TRUE} ;e.g. gas A_FLT_CYCFLG[4]={NO 10,STATE TRUE} ;e.g. water ;inputs as condition befor weld can start DECL FCT_IN_T A_I_WLD_COND[3] A_I_WLD_COND[1]={NO 1,STATE TRUE} ; source okay A_I_WLD_COND[2]={NO 10,STATE TRUE} ; water available A_I_WLD_COND[3]={NO 11,STATE TRUE} ; gas available ;inputs start moving DECL FCT_IN_T A_I_STRT_MOV[3] A_I_STRT_MOV[1]={NO 'H2',STATE TRUE} A_I_STRT_MOV[2]={NO 'H0',STATE TRUE} A_I_STRT_MOV[3]={NO 'H0',STATE TRUE} ;inputs for weld in ended DECL FCT_IN_T A_I_WELD_END[3] A_I_WELD_END[1]={NO 'H2',STATE FALSE} A_I_WELD_END[2]={NO 'H0',STATE FALSE} A_I_WELD_END[3]={NO 'H0',STATE FALSE} ;input for external disable weld DECL FCT_IN_T A_I_EN_W_EXT={NO 5,STATE TRUE} ;input for test of burn free from workpiece DECL FCT_IN_T A_I_BRN_FREE={NO 7,STATE TRUE} ;Digital outputs ;---------------------------------- DECL CTRL_OUT_T A_WLD_OUT[16] A_WLD_OUT[1]={OUT_NR 0,INI FALSE,NAME_NAT[] "WELD_START "} A_WLD_OUT[2]={OUT_NR 0,INI FALSE,NAME_NAT[] "GAS PREFLOW "} A_WLD_OUT[3]={OUT_NR 0,INI FALSE,NAME_NAT[] "WELD_MODE PS/MM"} A_WLD_OUT[4]={OUT_NR 0,INI FALSE,NAME_NAT[] "CLEANER "} A_WLD_OUT[5]={OUT_NR 0,INI FALSE,NAME_NAT[] "RECEIPT ERRORS "} A_WLD_OUT[6]={OUT_NR 0,INI FALSE,NAME_NAT[] "ERR MESSG_SIGNAL"} A_WLD_OUT[7]={OUT_NR 0,INI FALSE,NAME_NAT[] "START ERROR "} A_WLD_OUT[8]={OUT_NR 0,INI FALSE,NAME_NAT[] "APPL_ERROR "} A_WLD_OUT[9]={OUT_NR 0,INI FALSE,NAME_NAT[] "INTERPRETER-STOP"} A_WLD_OUT[10]={OUT_NR 0,INI FALSE,NAME_NAT[] "ALU_START"} A_WLD_OUT[11]={OUT_NR 0,INI FALSE,NAME_NAT[] " "} A_WLD_OUT[12]={OUT_NR 0,INI FALSE,NAME_NAT[] " "} A_WLD_OUT[13]={OUT_NR 0,INI FALSE,NAME_NAT[] " "} A_WLD_OUT[14]={OUT_NR 0,INI FALSE,NAME_NAT[] " "} A_WLD_OUT[15]={OUT_NR 0,INI FALSE,NAME_NAT[] "WFD + "} A_WLD_OUT[16]={OUT_NR 0,INI FALSE,NAME_NAT[] "WFD - "} ; Digital inputs ;---------------------------------- DECL CTRL_IN_T A_WLD_IN[16] A_WLD_IN[1]={IN_NR 0,NAME_NAT[] "WELDER READY "} A_WLD_IN[2]={IN_NR 0,NAME_NAT[] "ARC ESTABLISHED "} A_WLD_IN[3]={IN_NR 0,NAME_NAT[] "SEAM_ERROR "} A_WLD_IN[4]={IN_NR 0,NAME_NAT[] "CURRENT OVER "} A_WLD_IN[5]={IN_NR 0,NAME_NAT[] "KEY SWITCH HOT/COLD "} A_WLD_IN[6]={IN_NR 0,NAME_NAT[] " "} A_WLD_IN[7]={IN_NR 0,NAME_NAT[] "BURN FREE INP_SIGNAL"} A_WLD_IN[8]={IN_NR 0,NAME_NAT[] " "} A_WLD_IN[9]={IN_NR 0,NAME_NAT[] " "} A_WLD_IN[10]={IN_NR 0,NAME_NAT[] "WATER AVAILABLE "} A_WLD_IN[11]={IN_NR 0,NAME_NAT[] "GAS AVAILABLE "} A_WLD_IN[12]={IN_NR 0,NAME_NAT[] "WIRE AVAILABLE "} A_WLD_IN[13]={IN_NR 0,NAME_NAT[] "COLLECTION FAILURE "} A_WLD_IN[14]={IN_NR 0,NAME_NAT[] " "} A_WLD_IN[15]={IN_NR 0,NAME_NAT[] " "} A_WLD_IN[16]={IN_NR 0,NAME_NAT[] " "} ;====================== ; External declarations ;====================== EXT A10 (A_CMD_T :IN,A_STRT_T :IN,A_WELD_T :IN,A_END_T :IN,INT :IN ) EXT FLT_SERV (A_BOOL_T :IN,A_BOOL_T :IN ) ; A_WLD_ACTIVE,ARC_ON_ERROR EXT NEW_SERV (A_RESTART_T :IN,INT :IN ) ;strategy number / [delay ms] EXT A10_INI ( ) EXT ARC_MSG (MSG_CALL_T :IN ) ;==================== ; Signal declarations ;==================== SIGNAL A_O_ANA1 $ANOUT[1] SIGNAL A_O_ANA2 $ANOUT[2] SIGNAL A_O_ANA3 $ANOUT[3] SIGNAL A_O_ANA4 $ANOUT[4] SIGNAL A_O_ANA5 $ANOUT[5] SIGNAL A_O_ANA6 $ANOUT[6] SIGNAL A_O_ANA7 $ANOUT[7] SIGNAL A_O_ANA8 $ANOUT[8] SIGNAL A_FLY_ARC $OUT[817] E6POS A_SERVICE={x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0,s 0,t 0} ;ENDFOLD ;FOLD A50 GLOBALS;%{E}%V3.2.0,%MKUKATPARC,%CGLOBALS,%VGLOBALS,%P STRUC A_SENSOR_T REAL BIAS,H_GAIN,V_GAIN,A_BOOL_T ACCUM_OFS,STS STRUC SEN_SUGG_T CHAR SENS_SET[24],CHAR TRACK_MODE[24] ENUM SENS_CMD_T SENS_ADV_DEF,SEN_PRE_ON,SEN_FIFO_ACT,SENSOR_OFF,INIT_SENSOR,SENS_SUB_SPS,I_SENSOR_OFF,I_SENSOR_ON,SENSOR_ON,SENS_SUB_INI,BLOCK_SELECT,PRE_SENS,DRY_WEAVE,SYNC_START,SEN_TSTOP,SYNC DECL A_SENSOR_T TDEFAULT={BIAS 0.0,H_GAIN 50.0,V_GAIN 45.0,ACCUM_OFS #IDLE,STS #ACTIVE} DECL A_SENSOR_T SEN_IDLE_PAR={BIAS 0.0,H_GAIN 0.0,V_GAIN 0.0,ACCUM_OFS #IDLE,STS #IDLE} DECL A_SENSOR_T PS_TEMP_SET={BIAS 0.0,H_GAIN 50.0,V_GAIN 45.0,ACCUM_OFS #IDLE,STS #IDLE} DECL A_TECH_STS_T A50_OPTION=#DISABLED ;active, disabled BOOL A_HOT_TAST=FALSE BOOL USR_DEF_ITV=FALSE BOOL SEN_DLY_OPT=TRUE ; Sensor active after "A_SENS_DELAY" patterns INT A_SENS_DELAY=2 ;number of idle patterns BOOL SYNC_OPT=TRUE ; synchronization after every arc command INT A_FG_SENSOR=4 ; function generator seam tracking REAL IR_ITV_TIME=168.0 EXT A50 (SENS_CMD_T :IN,REAL :IN,REAL :IN,REAL :IN,INT :IN ) ; velocity,amplitude,weave length,pattern ;ENDFOLD ;FOLD A20 GLOBALS;%{E}%V3.2.0,%MKUKATPA20,%CGLOBALS,%VGLOBALS,%P ;================================== ; STRUCTURES: ;================================== STRUC WELD_ST INT PRG_NO,REAL VELOCITY,START_TIME,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME STRUC WELD_FI INT PRG_NO,REAL VELOCITY,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME STRUC A20_SUGG_T CHAR WELD_MODE[24],CHAR WELD_SET[24],CHAR START_SET[24],CHAR END_SET[24],CHAR COMMENT[24],CHAR PRG_NO[24],CHAR V_ARC[24],CHAR PGNO[24] ;================================== ; external declarations: ;================================== EXT A20 (INT :IN,WELD_ST :IN,WELD_FI :IN,INT :IN ) ;================================== ; Variables: ;================================== ; Data for online correction of weld parameters DECL WELD_ST ADEFAULT={PRG_NO 0,VELOCITY 0.600000024,START_TIME 0.0,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0} DECL WELD_ST ST_ACT={PRG_NO 1,VELOCITY 5.0,START_TIME 0.0,WEAVFIG_MECH 0,WEAVLEN_MECH 5.0,WEAVAMP_MECH 10.0,WEAVANG_MECH 0.0,END_TIME 0.0} DECL WELD_FI MDEFAULT={PRG_NO 0,VELOCITY 0.600000024,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0} DECL WELD_FI FI_ACT={PRG_NO 15,VELOCITY 0.600000024,WEAVFIG_MECH 0,WEAVLEN_MECH 5.0,WEAVAMP_MECH 10.0,WEAVANG_MECH 0.0,END_TIME 0.0} ;================================== ; SIGNALS : ;================================== ; DIGITAL OUTPUTS ;---------------------------------- DECL CTRL_OUT_T O_WELD_CTRL[15] O_WELD_CTRL[1]={OUT_NR 0,INI FALSE,NAME_NAT[] "START WELDING "} O_WELD_CTRL[2]={OUT_NR 0,INI FALSE,NAME_NAT[] "ROBOT IN POSITION "} O_WELD_CTRL[3]={OUT_NR 0,INI FALSE,NAME_NAT[] "TRIGGER PRG-NUMBER "} O_WELD_CTRL[4]={OUT_NR 0,INI FALSE,NAME_NAT[] "ACKN POWER SUPPLY "} O_WELD_CTRL[5]={OUT_NR 0,INI FALSE,NAME_NAT[] "SNEEZER "} O_WELD_CTRL[6]={OUT_NR 0,INI FALSE,NAME_NAT[] "CLEANER MOTOR "} O_WELD_CTRL[7]={OUT_NR 0,INI FALSE,NAME_NAT[] "SPRAYER "} ; O_WELD_CTRL[8]={OUT_NR 0,INI FALSE,NAME_NAT[] "WIREFEED MANUAL "} O_WELD_CTRL[9]={OUT_NR 0,INI FALSE,NAME_NAT[] "GAS PURGE "} O_WELD_CTRL[10]={OUT_NR 0,INI FALSE,NAME_NAT[] "WELD ERROR MESSAGE "} O_WELD_CTRL[11]={OUT_NR 0,INI FALSE,NAME_NAT[] " "} O_WELD_CTRL[12]={OUT_NR 0,INI FALSE,NAME_NAT[] "TARGET POINT REACHED"} O_WELD_CTRL[13]={OUT_NR 0,INI FALSE,NAME_NAT[] "IGNITION ERROR "} O_WELD_CTRL[14]={OUT_NR 0,INI FALSE,NAME_NAT[] " "} O_WELD_CTRL[15]={OUT_NR 0,INI FALSE,NAME_NAT[] " "} ; DIGITAL INPUTS ;---------------------------------- DECL CTRL_IN_T I_WELD_CTRL[15] I_WELD_CTRL[1]={IN_NR 0,NAME_NAT[] "POWER SUPPLY READY "} I_WELD_CTRL[2]={IN_NR 0,NAME_NAT[] "CURRENT AVAILABLE "} I_WELD_CTRL[3]={IN_NR 0,NAME_NAT[] "CURRENT OVER "} I_WELD_CTRL[4]={IN_NR 0,NAME_NAT[] "ERROR-INP1 PERIPHERY"} I_WELD_CTRL[5]={IN_NR 0,NAME_NAT[] "ERROR-INP2 PERIPHERY"} I_WELD_CTRL[6]={IN_NR 0,NAME_NAT[] "KEY SWITCH WELDING "} I_WELD_CTRL[7]={IN_NR 0,NAME_NAT[] " "} I_WELD_CTRL[8]={IN_NR 0,NAME_NAT[] " "} I_WELD_CTRL[9]={IN_NR 0,NAME_NAT[] " "} I_WELD_CTRL[10]={IN_NR 0,NAME_NAT[] " "} I_WELD_CTRL[11]={IN_NR 0,NAME_NAT[] " "} I_WELD_CTRL[12]={IN_NR 0,NAME_NAT[] " "} I_WELD_CTRL[13]={IN_NR 0,NAME_NAT[] " "} I_WELD_CTRL[14]={IN_NR 0,NAME_NAT[] " "} I_WELD_CTRL[15]={IN_NR 0,NAME_NAT[] " "} ; outputs weld start DECL FCT_OUT_T O_WELD_START[3] O_WELD_START[1]={NO 1,PULS_TIME 0.0,STATE TRUE} O_WELD_START[2]={NO 0,PULS_TIME 0.0,STATE TRUE} O_WELD_START[3]={NO 0,PULS_TIME 0.0,STATE TRUE} ; outputs acknowledge start move DECL FCT_OUT_T O_ACK_START[3] O_ACK_START[1]={NO 2,PULS_TIME 0.300000012,STATE TRUE} O_ACK_START[2]={NO 0,PULS_TIME 0.0,STATE TRUE} O_ACK_START[3]={NO 0,PULS_TIME 0.0,STATE TRUE} ; strobe prg. number DECL FCT_OUT_T O_STROB_PGNO[3] O_STROB_PGNO[1]={NO 3,PULS_TIME 0.300000012,STATE TRUE} O_STROB_PGNO[2]={NO 0,PULS_TIME 0.300000012,STATE TRUE} O_STROB_PGNO[3]={NO 0,PULS_TIME 0.300000012,STATE TRUE} ; outputs weld end DECL FCT_OUT_T O_SEAM_END[3] O_SEAM_END[1]={NO 1,PULS_TIME 0.0,STATE FALSE} O_SEAM_END[2]={NO 0,PULS_TIME 0.0,STATE FALSE} O_SEAM_END[3]={NO 0,PULS_TIME 0.0,STATE FALSE} ; outputs acknowledge weld_end DECL FCT_OUT_T O_ACK_WELD_E[3] O_ACK_WELD_E[1]={NO 12,PULS_TIME 0.5,STATE TRUE} O_ACK_WELD_E[2]={NO 0,PULS_TIME 0.5,STATE TRUE} O_ACK_WELD_E[3]={NO 0,PULS_TIME 0.5,STATE TRUE} ; outputs fault while arc on DECL FCT_OUT_T O_FLT_ARC_ON[3] O_FLT_ARC_ON[1]={NO 13,PULS_TIME 0.0,STATE TRUE} O_FLT_ARC_ON[2]={NO 1,PULS_TIME 0.0,STATE FALSE} O_FLT_ARC_ON[3]={NO 0,PULS_TIME 0.0,STATE FALSE} ; outputs stop weld after interrupt on seam DECL FCT_OUT_T O_FLT_WELD[3] O_FLT_WELD[1]={NO 1,PULS_TIME 0.0,STATE FALSE} O_FLT_WELD[2]={NO 10,PULS_TIME 0.0,STATE TRUE} O_FLT_WELD[3]={NO 0,PULS_TIME 0.0,STATE FALSE} ; outputs stop cleaner after interrupt DECL FCT_OUT_T O_FLT_CLEAN[3] O_FLT_CLEAN[1]={NO 6,PULS_TIME 0.0,STATE FALSE} O_FLT_CLEAN[2]={NO 0,PULS_TIME 0.0,STATE FALSE} O_FLT_CLEAN[3]={NO 0,PULS_TIME 0.0,STATE FALSE} ; outputs acknowledge fault DECL FCT_OUT_T O_ACK_FLT[3] O_ACK_FLT[1]={NO 4,PULS_TIME 1.0,STATE TRUE} O_ACK_FLT[2]={NO 13,PULS_TIME 1.0,STATE FALSE} O_ACK_FLT[3]={NO 0,PULS_TIME 1.0,STATE TRUE} ; output for fault message DECL FCT_OUT_T O_FLT_SIGNAL={NO 10,PULS_TIME 0.0,STATE TRUE} ; inputs as condition befor weld can start DECL FCT_IN_T I_WELD_COND[3] I_WELD_COND[1]={NO 1,STATE TRUE} I_WELD_COND[2]={NO 0,STATE TRUE} I_WELD_COND[3]={NO 0,STATE TRUE} ; inputs start moving DECL FCT_IN_T I_START_MOVE[3] I_START_MOVE[1]={NO 2,STATE TRUE} I_START_MOVE[2]={NO 0,STATE TRUE} I_START_MOVE[3]={NO 0,STATE TRUE} ; inputs weld is ended DECL FCT_IN_T I_WELD_END[3] I_WELD_END[1]={NO 2,STATE FALSE} I_WELD_END[2]={NO 0,STATE FALSE} I_WELD_END[3]={NO 0,STATE FALSE} ;Counter for Interrupt definition DECL INT FLT_NUM[3] ; inputs telling faults while welding DECL FCT_IN_T I_WELD_FLT[3] I_WELD_FLT[1]={NO 2,STATE TRUE} I_WELD_FLT[2]={NO 4,STATE TRUE} I_WELD_FLT[3]={NO 5,STATE TRUE} ; input for external enable weld DECL FCT_IN_T I_ENB_W_EXT={NO 6,STATE TRUE} ;current instruction INT ARC_INSTR=0 ; instruction code INT ARC_INI=1 INT ARC_ON=2 INT ARC_OFF=3 INT ARC_SWI_F=4 INT ARC_SWIP=5 INT TECH_STOP1=6 INT TECH_STOP2=7 INT TECH_STOP=9 INT ARC_OFF_P=10 INT ARC_OFF_V=12 INT ARC_START=13 INT ARC_SWI_T=14 INT ARC_OFF_T=15 INT PRGNO=0 INT TMP_PRG=0 BOOL B_RESTART=FALSE BOOL FLY_WELD=FALSE BOOL ARC20=FALSE BOOL WELD_ACTIVE=FALSE BOOL T1_L BOOL T_STOP=FALSE ;flag for $CYCFLAG to avoid ;ENDFOLD ;FOLD TOUCHSENSE GLOBALS;%{E}%V3.2.0,%MKUKATPTS,%CGLOBALS,%VGLOBALS,%P ;================================== ; Structures: ;================================== STRUC TS_SUGG_T CHAR CD[24],PA[24] STRUC POS_XYZ REAL X,Y,Z STRUC SRCH_TYP_3 INT MODE,SECMODE,APO,REAL DIST,VEL,TOL,INT RET STRUC SRCH_TYP_2 INT OPT,BOOL CAL_MODE,SRCH_OK,REAL CAL_VAL,MES_VAL,OFFSET,REAL TCH_RESULT_A,TCH_RESULT_B,TCH_RESULT_C,TCH_RESULT_D,TCH_RESULT_E,TCH_RESULT_F,B_X,B_Y,B_Z,W_X,W_Y,W_Z,REF_X,REF_Y,REF_Z,MES_X,MES_Y,MES_Z STRUC CTRL_TOUCH_O INT OUT_NR,BOOL INI,CHAR NAME_NAT[20] STRUC CTRL_TOUCH_I INT IN_NR,CHAR NAME_NAT[20] ;================================== ; External declarations: ;================================== EXT H70 (INT :IN,SRCH_TYP_2 :OUT,E6POS :IN,SRCH_TYP_3 :IN,SRCH_TYP_2 :IN,SRCH_TYP_2 :IN,SRCH_TYP_2 :IN,SRCH_TYP_2 :IN,SRCH_TYP_2 :IN,INT :IN ) ;================================== ; Variables: ;================================== DECL FRAME HILF_BASE,Y_VEK,WORLD_POS REAL RELAY_TIME=0.100000001 ;SEC FOR DELAY RELAIS REAL ROT_A,ROT_B REAL TCH_OFS_LEAV=400.0 REAL TCH_RET_ACC=15.0 REAL DELAY_TIME=0.0 ; Delay to load capacity REAL TCH_MaxCorrVector=100.0 ;[mm] Maximum of allowed correction frame INT FG_TOUCH=6 INT TOUCH_OUT=1 INT DOUBLE_TOUCH=0 INT TOUCH_ACTIVE=1 ; configuration INT TOUCH_RED=100 INT OV_PRO_OLD=100 INT ADV_OLD=3 BOOL H70_OPTION=FALSE BOOL ERROR_TOL=FALSE BOOL TOUCH=TRUE BOOL NOTAUS_TOUCH=FALSE BOOL FG_ON_WORK=FALSE BOOL SUCHWEG_ENDE=FALSE BOOL NEW_REF=FALSE BOOL TOUCH_ON=TRUE BOOL HIT_TARGET=TRUE ; Decision flag BOOL DECIDE_MODE=FALSE ; Decision on demand POS DISTC_EXACT={x -0.300000012} DECL SRCH_TYP_2 VDEFAULT={OPT 0,CAL_MODE TRUE,SRCH_OK FALSE,CAL_VAL 0.0,MES_VAL 0.0,OFFSET 0.0,TCH_RESULT_A 0.0,TCH_RESULT_B 0.0,TCH_RESULT_C 0.0,TCH_RESULT_D 0.0,TCH_RESULT_E 0.0,TCH_RESULT_F 0.0,B_X 0.0,B_Y 0.0,B_Z 0.0,W_X 0.0,W_Y 0.0,W_Z 0.0,REF_X 0.0,REF_Y 0.0,REF_Z 0.0,MES_X 0.0,MES_Y 0.0,MES_Z 0.0} DECL SRCH_TYP_3 ZDEFAULT={MODE 1,SECMODE 0,APO 0,DIST 20.0,VEL 55.0,TOL 20.0,RET 1} DECL SRCH_TYP_2 CD0={OPT 0,CAL_MODE FALSE,SRCH_OK TRUE,CAL_VAL 0.0,MES_VAL -1.0,OFFSET 0.0,TCH_RESULT_A 0.0,TCH_RESULT_B 0.0,TCH_RESULT_C 0.0,TCH_RESULT_D 0.0,TCH_RESULT_E 0.0,TCH_RESULT_F 0.0,B_X 0.0,B_Y 0.0,B_Z 0.0,W_X 0.0,W_Y 0.0,W_Z 0.0,REF_X 0.0,REF_Y 0.0,REF_Z 0.0,MES_X 0.0,MES_Y 0.0,MES_Z 0.0} DECL SRCH_TYP_3 PA0={MODE 1} ;,SECMODE 0,APO 0,DIST 75.5,VEL 55.0,TOL 52.5,RET 0} DECL SRCH_TYP_2 CD_GLOBAL DECL SRCH_TYP_3 PA_GLOBAL DECL E6POS START_POS={x 1348.53003,y -113.153999,z 759.72998,a -78.172699,b 28.6000996,c -114.376999,s 6,t 19,e1 0.0,e2 0.0,e3 0.0,e4 0.0,e5 0.0,e6 0.0} DECL E6POS POS_DUMMY={x 0.0} DECL POS_XYZ DELTA_DT,REF_DT1,MES_DT1,INT_POS1,INT_POS2 DECL POS BASE_POS DECL CTRL_TOUCH_O TOUCH_O[4] TOUCH_O[1]={OUT_NR 999,INI FALSE,NAME_NAT[] "1. TOUCH-SPANNUNG"} TOUCH_O[2]={OUT_NR 999,INI FALSE,NAME_NAT[] "2. TOUCH-SPANNUNG"} TOUCH_O[3]={OUT_NR 999,INI FALSE,NAME_NAT[] "3. TOUCH-SPANNUNG"} TOUCH_O[4]={OUT_NR 999,INI FALSE,NAME_NAT[] "4. TOUCH-SPANNUNG"} DECL CTRL_TOUCH_I TOUCH_I[4] TOUCH_I[1]={IN_NR 1,NAME_NAT[] "1. TOUCH-EINGANG"} TOUCH_I[2]={IN_NR 1,NAME_NAT[] "2. TOUCH-EINGANG"} TOUCH_I[3]={IN_NR 1,NAME_NAT[] "3. TOUCH-EINGANG"} TOUCH_I[4]={IN_NR 1,NAME_NAT[] "4. TOUCH-EINGANG"} ;ENDFOLD ;FOLD USER GLOBALS;%E{O},%P___$$$___CONFIG.USB___start___ ;================================== ; Userdefined Types ;================================== ;================================== ; DECLARATION des ENTREES/SORTIES ;================================== SIGNAL BP_FIN_CAMPAGNE $IN[10] SIGNAL BP_DEM_ACCES $IN[11] SIGNAL BP_ROLLER_EVACUES $IN[12] SIGNAL AUTORISATION_PRISE_BOITE $IN[13] SIGNAL SQ1 $IN[14] SIGNAL SQ2 $IN[15] SIGNAL SQ3 $IN[16] SIGNAL FERMETURE_PINCE $OUT[17] SIGNAL HL_ROLLERS_PLEIN $OUT[18] SIGNAL HL_AUTORISATION_ACCES $OUT[19] SIGNAL HL_FIN_CAMPAGNE $OUT[20] ;================================== ; Userdefined Externals ;================================== ;================================== ; Userdefined Variables ;================================== DECL FRAME OFFSET DECL BOOL DEM_ACCES DECL BOOL FIN_CAMPAGNE BOOL COLONNE_2=FALSE REAL OFFSET_X=300.0 REAL OFFSET_Y=0.0 REAL OFFSET_Z=200.0 REAL OFFSET_A=0.0 REAL OFFSET_B=0.0 REAL OFFSET_C=0.0 INT NB_RANGEE=0 INT NB_COLONNE=1 INT ROLLER_PLEIN=5 ;ENDFOLD;___$$$___CONFIG.USB___end_____ ENDDAT
[/noae]
-
Hello,
Someone could help me to run the gripper key on KR15, KRC1, V4.1.4?
I used to parameter the output of my gripper, but when I press the buttons gripper nothing happensthank you
-
Hello,
Someone could help me on a robot kr 15 , KRC1 , V4.1.4 I have a Default N° 5 counter $robtime is different RDW?
thank you -
Error is right side not authorized
I try that and it's working
So actually for work, i use a variable INT num_def, because i have only 4 message to declare
Code
Display MoreIf num_def=1 then $MSG_T.KEY[]="My Message 1" endif If num_def=2 then $MSG_T.KEY[]="My Message 2" endif etc...
Tomorrow i try that
Thanks...
-
sorry for the inconvenience, but yes I read the manual and I have already done this
UserTxt[] = "this is my message"
but I always have fault to this line
$MSG_T.KEY[]=UserTxt[]
-
what i does do? UserTxt="" ?
-
I make it but i always have fault right side, unauthorized Field at this line in my sub file
$MSG_T.KEY[]=UserTxt[]
Code
Display More&ACCESS RVEO &REL 13 &PARAM TEMPLATE = C:\KRC\Roboter\Template\submit &PARAM EDITMASK = * DEF Mess_Defauts(UserTxt[]:in) ;FOLD DECLARATIONS;%{PE}%3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ;FOLD USER DECL;%{PE}%3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P DECL CHAR UserTxt[] ;ENDFOLD (USER DECL) ;ENDFOLD (DECLARATIONS) ;FOLD INI;%{PE}%3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P ;FOLD USER INIT;%{E}%3.2.0,%MKUKATPBASIS,%CSPS,%VAUTOEXT,%P ; Please insert user defined initialization commands ;ENDFOLD (USER INIT) ;ENDFOLD (INI) LOOP ;FOLD USER PLC;%{PE}%3.2.0,%MKUKATPUSER,%CSPS,%VSPS,%P $MSG_T.VALID=FALSE $MSG_T.RELEASE=FALSE $MSG_T.TYP=#NOTIFY $MSG_T.MODUL[]="User" $MSG_T.KEY[]=UserTxt[] $MSG_T.PARAM_TYP=#VALUE $MSG_T.PARAM[]=" " $MSG_T.DLG_FORMAT[]=" " $MSG_T.ANSWER=0 $MSG_T.VALID=TRUE WHILE $MSG_T.VALID WAIT SEC 0.05 ENDWHILE ;ENDFOLD (USER PLC) ENDLOOP ;FOLD ;%{H}; END ;ENDFOLD ;FOLD USER SUBROUTINE;%{H}%V3.2.0,%MKUKATPUSER,%CSPS,%VSPS,%P ;Integrate your user defined subroutines ;ENDFOLD (USER SUBROUTINE)
-
-
thank you for your understanding and my english very bad
it is exactly this example I wanted -
noone for help me?