Ok, I was hoping I could still track the same piece. So thats why conveyor.quit is called right after conveyor.follow or conveyor.skip? Could you tell me how do I teach a homing procedure to conveyor.quit?
Posts by jrobotics
-
-
So actually it still doesnt work. I thought it works while I was testing it in t1 but whenever I tried E-stop while in EXT robot didnt continue its work.
Pasting my code down below, conveyor.quit is called as in the manual's example. Although I havn't teach any motions in conveyor.quit execution.
Code
Display MoreDEF main_conveyor( ) ;FOLD INI ;FOLD BASISTECH INI GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3 BAS (#INITMOV,0 ) ;ENDFOLD (BASISTECH INI) ;FOLD USER INI INTERRUPT DECL 11 WHEN $TIMER[11]>2000 DO A1_noVaccumMain() INTERRUPT DECL 12 WHEN $TIMER[12]>2000 DO A2_actuator1Blocked() INTERRUPT DECL 13 WHEN $TIMER[13]>2000 DO A3_actuator2Blocked() INTERRUPT DECL 14 WHEN $TIMER[14]>2000 DO A4_actuator3Blocked() INTERRUPT DECL 15 WHEN di_vaccum_sensor_main==FALSE DO A5_firstEncapsDropped() INTERRUPT DECL 16 WHEN di_vaccum_sensor_main==FALSE DO A6_secondEncapsDropped() INTERRUPT DECL 17 WHEN di_vaccum_sensor_main==FALSE DO a7_stringDropped() INTERRUPT DECL 18 WHEN di_PauseProgram==TRUE DO Pause() INTERRUPT DECL 19 WHEN $TIMER[15]>1000000 DO A9_WaitedTooLongSynchro() ;ENDFOLD (USER INI) ;ENDFOLD (INI) ;FOLD CONV INI CONV_REINIT_MD() ;Alarm outputs initialisations FOR Z_TEMP_COUNTER = 1 TO I_MAX_CONV_COUNT STEP 1 CONV_SET_ALARM_OUT(Z_TEMP_COUNTER, TRUE, FALSE) CONV_SET_EMS_OUT(Z_TEMP_COUNTER, TRUE, FALSE) ENDFOR ;Interrupts Conveyor FOR Z_TEMP_COUNTER = 1 TO I_MAX_CONV_COUNT STEP 1 IF B_CONV_EXISTS[Z_TEMP_COUNTER] THEN INTERRUPT DECL Z_ALARM_DIST_INT_NBR[Z_TEMP_COUNTER] WHEN $SEN_PREA_C[Z_SEN_PREA_NBR[Z_TEMP_COUNTER]]>=R_ALARM_DIST_CONV[Z_TEMP_COUNTER] DO INT_CONV_ALARM(Z_TEMP_COUNTER) INTERRUPT DECL Z_MAX_DIST_INT_NBR[Z_TEMP_COUNTER] WHEN $SEN_PREA_C[Z_SEN_PREA_NBR[Z_TEMP_COUNTER]]>=R_MAX_DIST_CONV[Z_TEMP_COUNTER] DO INT_CONV_MAX_DIST(Z_TEMP_COUNTER) INTERRUPT DECL Z_EMS_INT_NBR[Z_TEMP_COUNTER] WHEN $STOPMESS==TRUE DO INT_CONV_EMS(Z_TEMP_COUNTER) INTERRUPT DECL Z_EXT_QUIT_INT_NBR[Z_TEMP_COUNTER] WHEN $CYCFLAG[Z_EXT_QUIT_CYCFLAG_NBR[Z_TEMP_COUNTER]]==TRUE DO INT_CONV_EXT_QUIT(Z_TEMP_COUNTER) ENDIF ENDFOR $ADVANCE=1 ;ENDFOLD CONV INI interrupt on 18 INTERRUPT ON 19 ;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT $BWDSTART = FALSE PDAT_ACT=PDEFAULT FDAT_ACT=FHOME BAS (#PTP_PARAMS,100 ) SET_CD_PARAMS( 0) $H_POS=XHOME PTP XHOME ;ENDFOLD xGripper_Clear() xInit() do_mainConveyorRunning=TRUE ;fold read offset int_offsetX_pick_encaps1=offsetX_pick_encaps1_Lo+offsetX_pick_encaps1_Hi rl_offsetX_pick_encaps1=(int_offsetX_pick_encaps1-100.0)/10.0 int_offsetY_pick_encaps1=offsetY_pick_encaps1_Lo+offsetY_pick_encaps1_Hi rl_offsetY_pick_encaps1=(int_offsetY_pick_encaps1-100.0)/10.0 int_offsetA_pick_encaps1=offsetA_pick_encaps1_Lo+offsetA_pick_encaps1_Hi rl_offsetA_pick_encaps1=(int_offsetA_pick_encaps1-100.0)/10.0 ;putting ribbon 2A int_offsetX_pick_encaps2=offsetX_pick_encaps2_Lo+offsetX_pick_encaps2_Hi rl_offsetX_pick_encaps2=(int_offsetX_pick_encaps2-100.0)/10.0 int_offsetY_pick_encaps2=offsetY_pick_encaps2_Lo+offsetY_pick_encaps2_Hi rl_offsetY_pick_encaps2=(int_offsetY_pick_encaps2-100.0)/10.0 int_offsetA_pick_encaps2=offsetA_pick_encaps2_Lo+offsetA_pick_encaps2_Hi rl_offsetA_pick_encaps2=(int_offsetA_pick_encaps2-100.0)/10.0 ;endfold ;Fold Conveyor.INI_OFF LinConveyor1 ;%{PE} ;Fold ;%{h} ;Params IlfProvider=KukaRoboter.Conveyor.InlineForms.ConveyorIniOffInlineForm; ConveyorName=LinConveyor1; ConveyorId=1 ;EndFold CONV_INI_OFF(1) ;EndFold ;Fold Conveyor.ON LinConveyor1 ;%{PE} ;Fold ;%{h} ;Params IlfProvider=KukaRoboter.Conveyor.InlineForms.ConveyorOnInlineForm; ConveyorName=LinConveyor1; ConveyorId=1 ;EndFold CONV_ON(1) ;EndFold do_waitingForPlate=TRUE $TIMER[15]=0 $TIMER_STOP[15]=FALSE ;Fold Conveyor.FOLLOW LinConveyor1, Movement 1, Cancel on: Max_time 1000, Input 71, Input-Level TRUE, Flag 1, Flag-Level TRUE, Start of work area 60, End of sync area 900 ;%{PE} ;Fold ;%{h} ;Params IlfProvider=KukaRoboter.Conveyor.InlineForms.ConveyorFollowInlineForm; ConveyorName=LinConveyor1; ConveyorId=1; Movement=1; Cancel on: Max_time=1000; Input=71; Input-Level=TRUE; Flag=1; Flag-Level=TRUE; WaitDist=60; MaxDist=900 ;EndFold CONV_FOLLOW (1, 1, 1000, 71, TRUE, 1, TRUE, 60, 900) CONV_MOV (1, 1) ;EndFold ;Fold Conveyor.Quit LinConveyor1, Stop after error FALSE, Reset SEN_PREA_C TRUE ;%{PE} ;Fold ;%{h} ;Params IlfProvider=KukaRoboter.Conveyor.InlineForms.ConveyorQuitInlineForm; ConveyorName=LinConveyor1; ConveyorId=1; Stop after error=FALSE; Reset SEN_PREA_C=TRUE ;EndFold CONV_QUIT(1,FALSE) CONV_RESET_SEN_PREA(1) ;EndFold do_mainConveyorRunning=FALSE LOOP do_mainConveyorRunning=TRUE do_waitingForPlate=TRUE $TIMER[15]=0 $TIMER_STOP[15]=FALSE ;Fold Conveyor.Skip LinConveyor1, Index offset part list 1, Movement 1, Cancel on: Max_time 1000, Input 71, Input-Level TRUE, Flag 1, Flag-Level TRUE, Start of work area 60, End of sync area 900 ;%{PE} ;Fold ;%{h} ;Params IlfProvider=KukaRoboter.Conveyor.InlineForms.ConveyorSkipInlineForm; ConveyorName=LinConveyor1; ConveyorId=1; Skip to part index=1; Movement=1; Cancel on: Max_time=1000; Input=71; Input-Level=TRUE; Flag=1; Flag-Level=TRUE; WaitDist=60; MaxDist=900 ;EndFold CONV_SKIP(1, 1, 1, 1000, 71, TRUE, 1, TRUE, 60, 900) CONV_MOV(1, 1) ;EndFold do_mainConveyorRunning=FALSE ENDLOOP interrupt off 18 INTERRUPT OFF 19 END
-
Thanks for reply,
I think that might be the issue, Dzonzi . I hope you mean the conveyor.quit function, as I havn't called it earlier.
I have added the function the same way it is shown in the example in manual, just after calling conveyor.follow. And it seems it helped. So in case I dont want to cancel following current piece I should call it with such arguments: stop after error FALSE and reset sen_prea FALSE?
-
Hello,
I am working with KR10 Agilus with KSS 8.7.6 that is following a conveyor in its program using ConveyorTech 8.1.
I have a problem with resuming the work after emergency stop. In the "usual" work its fine, the program resumes without any issues, but whenever robot is making a movement towards a point that uses the "moving" base it has a problem resuming. It works in EXT under master PLC.
Maybe someone have encountered something similar?
I can provide some more details tommorrow like robot or plc code used for managing emergency stop and starting working mode.
Best Regards
-
After leaving the system on for a while there are few errors on smartpad, from bottom to top:
Credentials are not available for 172.17.0.1
Connection to SmartPadService 172.17.0.1 lost
Connection failed! Connection to 172.17.0.1 failed
What is adressed by 172.17.0.1 by default?
-
Quote
about point 3 : If you changed network settings in a WRONG place (like on SmartPad own software rather than HMI), reverse the change using same steps you already did (which you were supposed to DOCUMENT). on KRC4 and KRC5 teach pendant is not a stupid device like on older geenrations using KRC1/KRC2. this is a computer (has own memory, OS, menues etc.) which is why it is called smartPad (has onboard inteligence). when you are using smartPad, it is important to keep track which software (or menu entries) you are actually using.
So I plugged a monitor to krc. Went to systems settings there and I've seen that there is the IP Adress that Ive set last time (172.31.1.147) so I reverted the changes there. After system restart I have the connection to smartPad but it still says that the HMI is not available (screen attached).
The HMI application on KRC seems to be working fine at first sigh, I dont really know what to look at to see if there are any faults.
Any idea what would I do to restore the HMI on smartPad? -
Im afraid I went to the system settings on the pendant after minimalizing the HMI, the one that you crossed out.
Display port you mean the XGDP?
-
But the current issue is that I can;t connect my teachpendant to the controller after the change. It doesnt matter if robot is in the network or not.
-
I am configuring my first robot, from start all by myself. I used to work on KUKA robots before but all projects and configurations were already made there.
I am using KUKA Agilus KR 10 R1100 with KR C5 micro controller, dont know what KSS version.I tried to connect robot to my laptop and upload current project into WorkVisual. Ive seen that in the project current IP adress is 172.31.1.147, Ive set ip adress on my laptop to be in the same network but I could reach robot still. I tried few more things and finally went to system settings on the teachpendant to change the ip in the network settings there. I've put the same IP adress there as was in the project configuration (172.31.1.147) and lost connection with my teachpendant. I assume that there is now an adress conflict. After reseting the controller I can no longer connect my teachpendant to correct the ip adress there.
Any suggestions what should I do to solve it?
Thanks in advance
-
Hi, Im new to programming robots, currently working on my frist big project.
Im working on KR120R2700_2 robot, KS V8.7.441, KR C5.
I'm posting to request help with finding an error or finding the right path to do it.
The robot works as an pick and place unit. There is a need to implement mechanism that detects if the product have been dropped. Im using a set of three inductive sensors that indicate whether the product it properly picked or not. Four interrupts are declared at the start of the program. Three interrupts are executed by xProductDropped subprogram which stops the robot, turns off the interrupts, opens gripper, sends information to PLC about the event, waits for acknowledge, sets reset_req bit on true and performs a homing procedure. Without implementing any additional mechanisms the robot will continue the program from the point where interrupt occured. At this point robot should start the program from the begining. The fourth interrupt declared check for the variable reset_req and is supposed to reset a program if it is true (which is after executing xProductDropped subprogram). I don't know what function to use to make the program reset itself. Or maybe there is another path of making program end/start from the begingin after an event occurs.
The interrupts declaration:
CodeINTERRUPT DECL 11 WHEN di_sensorLeft==FALSE DO xProductDropped() INTERRUPT DECL 12 WHEN di_sensorMid==FALSE DO xProductDropped() INTERRUPT DECL 13 WHEN di_sensorRight==FALSE DO xProductDropped() INTERRUPT DECL 14 WHEN b_reset_req==TRUE DO RESET
xProductDropped subprogram:
Code
Display More&ACCESS RVO1 &REL 3 &PARAM EDITMASK = * DEF xProductDropped( ) BRAKE F INTERRUPT OFF 11 INTERRUPT OFF 12 INTERRUPT OFF 13 BRAKE F xGripper(false);open gripped to drop product, if any left do_ProductDropped = TRUE b_reset_req = TRUE WAIT SEC 3 do_ProductDropped = FALSE WAIT FOR di_ProductDroppedAck xHomingProcedure(); END
Whole sequence of event after dropping a product is properly executed: robot stops, gripper opens, robot sends a signal and waits for ack, and executes a homing procedure. The only thing thats not working is making the program reset.
Ive searched the manuals that I have (KSS_82_SI_en) and found usage of GOTO function. But I also have problems with properly declare labels and use the GOTO function. I've tried to use functions like GOTO, JUMPTO, JUMP,BRA,RESET,ABORT and some other stuff.
Thanks in advance for any help,