Hallo Zusammen,
ich muss für einen Kunden eine Suchfahrt programmieren, die mir bei Betätigen zweier Sensoren das Signal gibt, dass ich nur noch eine gewisse Strecke fahren kann.
Dies versuche ich natütrlich mit einem Interrupt zu programmieren.
Ich habe aber folgendes Problem:
Beim direkten Ablauf meines Programms wird der Interrupt nie aktiviert, obwohl der Sensor bestätigt wird. Springe ich jedoch mit der Satzanwahl wieder auf eine Ebene höher (überhalb meiner Bewegung) und starte den Ablauf erneut, startet daraufhin gleich das Interrupt-UP.
Ich habe so gut wie alles versucht und bin mit meinem Latein am Ende.. Vielleicht hat von euch wer eine Idee, was ich an meinem Programm noch falsch mache.
Danke schon mal für eure Hilfe.
Hier mein aktuelles Programm:
INTERRUPT DECL 11 WHEN Absenkpos_TR_links OR Absenkpos_TR_rechts DO Endposition_Stop()
;INTERRUPT DECL 12 WHEN $IN[8] == TRUE DO Endposition_Stop()
INTERRUPT OFF 11
;INTERRUPT OFF 12
; for homing
PLC_i_AH_JobNum=3
; Automatic homing possible
tmo_do_AutoHomePossible=TRUE
IF ((BTL_vorh_Grip_cln_links OR BTL_vorh_Grip_cln_rechts) AND (Grip_zu_cln_links OR Grip_zu_cln_rechts)) THEN
PLC_b_RobInGrst=FALSE
GOTO DROP_DRTY
ENDIF
IF (PLC_b_RobInGrst==FALSE) THEN
GOTO END_HP
ENDIF
;FOLD Grp Init GrpNo:1
;FOLD ;%{h}
;Params IlfProvider=gripperset; Grp_Cmd=Init; Grp_No=1; Grp_Desc=
;ENDFOLD
Grp_Init (1)
;ENDFOLD
;FOLD Grp ChkAdv GrpNo:1 Actuator:1,2
;FOLD ;%{h}
;Params IlfProvider=gripperset; Grp_Cmd=ChkAdv; Grp_No=1; Grp_Move=NoMove; Grp_Actuator1=1; Grp_Actuator2=2; Grp_Actuator3=_; Grp_Desc=
;ENDFOLD
Grp_GrpChkPos (1,#ChkAdv,"1,2,0,0,0")
;ENDFOLD
;FOLD Grp PartChk GrpNo:1 Chk:True PartControl:1,2 PlcControl:noControl
;FOLD ;%{h}
;Params IlfProvider=grpchkpart; Grp_Cmd=PartChk; Grp_No=1; Grp_Move=NoMove; Grp_Chk=True; Grp_PartCont1=1; Grp_PartCont2=2; Grp_PartCont3=_; Grp_Cont=_; Grp_PlcControl=noControl; Grp_Desc=
;ENDFOLD
Grp_ChkPart (1,True,1,2,0,0,0,False,#noControl)
;ENDFOLD
;FOLD PlcCheckHome Home:2
;FOLD ;%{h}
;Params IlfProvider=plchome; Plc_ChkHomeNum=2; Plc_ChkRehome=False; Plc_ChkDesc=
;ENDFOLD
PLC_CheckHome (2,FALSE)
;ENDFOLD
; ------------------------------------------------------
; Hauptprogramm
; ------------------------------------------------------
TRIGGER WHEN DISTANCE=1 DELAY=0 DO PLC_i_AH_StepNum=2
;FOLD PTP HOME2 Vel=100 % PHOME2 ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=HOME2; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PHOME2; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPHOME2
FDAT_ACT = FHOME2
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XHOME2
;ENDFOLD
PLC_b_RobInGrst=FALSE
TRIGGER WHEN DISTANCE=1 DELAY=0 DO PLC_i_AH_StepNum=31
;FOLD PTP VP1_TR CONT Vel=100 % VP1_TR Tool[11]:GRP_drt_Parts Base[2]:Drehtisch ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=VP1_TR; Kuka.BlendingEnabled=True; Kuka.MoveDataPtpName=VP1_TR; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PVP1_TR
FDAT_ACT = FVP1_TR
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XVP1_TR C_Dis
;ENDFOLD
DROP_DRTY:
;FOLD Job Started JobNum:3 Desc:Ablegen schmutzige Rohre
;FOLD ;%{h}
;Params IlfProvider=job; Plc_JobCmd=Started; Plc_JobMove=NoMove; Plc_JobNum=3; Plc_JobCont=_; Plc_JobDesc=Ablegen schmutzige Rohre
;ENDFOLD
Plc_Job (1,3,False)
;ENDFOLD
;FOLD Area Request AreaNum:2 Desc:Drehtisch
;FOLD ;%{h}
;Params IlfProvider=area; Plc_AreaCmd=Request; Plc_AreaMove=NoMove; Plc_AreaNum=2; Plc_AreaAbort=_; Plc_AreaCont=_; Plc_AreaDesc=Drehtisch
;ENDFOLD
Plc_AreaPreReq (2)
Plc_AreaReq (2,0,0,0,False)
;ENDFOLD
TRIGGER WHEN DISTANCE=1 DELAY=0 DO PLC_i_AH_StepNum=32
;FOLD PTP DROP_VP_oben CONT Vel=100 % DRO_VP_oben Tool[11]:GRP_drt_Parts Base[2]:Drehtisch ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=DROP_VP_oben; Kuka.BlendingEnabled=True; Kuka.MoveDataPtpName=DRO_VP_oben; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PDRO_VP_oben
FDAT_ACT = FDROP_VP_oben
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XDROP_VP_oben C_Dis
;ENDFOLD
TRIGGER WHEN DISTANCE=1 DELAY=0 DO PLC_i_AH_StepNum=33
;FOLD LIN DROP_VP Vel=0.5 m/s DROP_VP Tool[11]:GRP_drt_Parts Base[2]:Drehtisch ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=DROP_VP; Kuka.BlendingEnabled=False; Kuka.MoveDataName=DROP_VP; Kuka.VelocityPath=0.5; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=LIN
;ENDFOLD
$BWDSTART = FALSE
LDAT_ACT = LDROP_VP
FDAT_ACT = FDROP_VP
BAS(#CP_PARAMS, 0.5)
SET_CD_PARAMS (0)
LIN XDROP_VP
;ENDFOLD
; Abfahren der Suchstrecke mit Interrupt
$Advance=0
WAIT SEC 0
INTERRUPT ON 11
Suchstrecke()
INTERRUPT OFF 11
LIN XGRP_Pos_TR
$ADVANCE = 3
[...]
DEF Suchstrecke ()
$Advance = 0
INTERRUPT ON 11
WAIT SEC 0.1
Suchfahrt()
XGRP_Pos_TR = $POS_ACT
WAIT SEC 1.0
INTERRUPT OFF 11
;INTERRUPT OFF 12
$ADVANCE = 3
END
DEF Suchfahrt ()
;XGRP_Pos_TR = XDROP_ZP
;LIN XGRP_Pos_TR:{X -8.0,Y 0.0, Z -630.0, A 0.0, B 0.0, C 0.0}
INTERRUPT ON 11
WAIT SEC 0.1
XGRP_Pos_TR = $POS_ACT
$VEL.CP = 0.1
$ACC.CP = 0.1
TRIGGER WHEN DISTANCE=1 DELAY=0 DO PLC_i_AH_StepNum=34
;LIN XGRP_Pos_TR:{X -8.0 -20,Y 0.0, Z -630 -1412.0, A 0.0, B 0.0, C 0.0}
XGRP_Pos_TR.X = XGRP_Pos_TR.X - 28 ;Versatz beim Verfahren entlang der Stange
XGRP_Pos_TR.Z = XGRP_Pos_TR.Z - 1412 ; Versatz aus Diff VP und ZP + Unterschied Rohre max / min
LIN XGRP_Pos_TR
WAIT FOR TRUE
IF FALSE THEN
TRIGGER WHEN DISTANCE=1 DELAY=0 DO PLC_i_AH_StepNum=34
;FOLD LIN DROP_ZP Vel=0.2 m/s DROP_ZP Tool[11]:GRP_drt_Parts Base[2]:Drehtisch ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=DROP_ZP; Kuka.BlendingEnabled=False; Kuka.MoveDataName=DROP_ZP; Kuka.VelocityPath=0.2; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=LIN
;ENDFOLD
$BWDSTART = FALSE
LDAT_ACT = LDROP_ZP
FDAT_ACT = FDROP_ZP
BAS(#CP_PARAMS, 0.2)
SET_CD_PARAMS (0)
LIN XDROP_ZP
;ENDFOLD
ENDIF
END
DEF Endposition_Stop ()
WAIT SEC 0.1
LIN $POS_INT
XGRP_Pos_TR = $POS_INT
XGRP_Pos_TR.z = XGRP_Pos_TR.z -195
XGRP_Pos_TR.x = XGRP_Pos_TR.x - 10
LIN XGRP_Pos_TR
INTERRUPT OFF 11
;INTERRUPT OFF 12
Brake F
RESUME
INTERRUPT OFF 11
;INTERRUPT OFF 12
END