首页 问答社区 正文

程序说明

有人可以解释一下这些程序吗,因为我是 KUKA 程序的新手。
&ACCESS RVP1
&REL 75
&PARAM DISKPATH = KRC:\R1\Program
DEF p1_Unl_Modula (iPosNr :IN)
;FOLD 声明
DECL INT iPosNr
;ENDFOLD(声明)

;FOLD INI;%{PE}
;FOLD BASISTECH INI
IF ($MODE_OP==#T1) OR ($MODE_OP==#T2) THEN
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
ENDIF
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;在此处进行修改
;========================= ====
; IO 设置
开关 iPosNr
案例 1
Area.Release_IO_Nr = 241
案例 2
Area.Release_IO_Nr = 241
默认
循环
Message_Write(1,0, $PRO_IP.SNR, $PRO_NAME[]) ;逻辑费勒!!!
HALT
ENDLOOP
ENDSWITCH


;============================== =


如果($MODE_OP==#T1) OR ($MODE_OP==#T2) THEN
INTERRUPT DECL 10 WHEN NOT $CYCFLAG[1] DO I_Ueberwachung(2)
Area.DriveIn = TRUE
Area.DriveOut = TRUE
ENDIF
$TIMER[1] = 0 ;定时器 ruecksetzen
$TIMER_STOP[1] = FALSE ;定时器启动
BAS(#VEL_PTP, 100)
BAS(#ACC_PTP, 100)
BAS(#VEL_CP, 2)
BAS(#ACC_CP, 100)

;ENDFOLD (USER INI)
;ENDFOLD (INI);*********** ******************************************;;卸载模块 ;;************************************************ ****;

;折叠测试开始条件
如果不是 diACK_Wrfl_rot==TRUE THEN
doWrfl_gruen=FALSE
doWrfl_rot=TRUE
等待 diACK_Wrfl_rot==TRUE
doWrfl_rot=FALSE
ENDIF

IF ($MODE_OP==#EX) THEN
doWrfl_rot=TRUE
ENDIF
;ENDFOLD(测试开始条件)

; FOLD 位置计算

SWITCH iPosNr
案例 1
xEnd_Position = XEndPos_1
案例 2
xEnd_Position = XEndPos_2
DEFAULT
循环
Message_Write(1,0,$PRO_IP.SNR, $PRO_NAME[])
ENDLOOP
ENDSWITCH

;移动到车站
InPos1 = FrameAdd(xEnd_Position,{X 0,Y 0,Z 30,A 0,B 0,C 0,E1 0,S 0,T 0})
InPos2 = FrameAdd( InPos1, {X 0,Y 0,Z 0,A 0,B 0,C 0,E1 0,S 0,T 0})
InPos3 = FrameAdd(InPos2, {X 0,Y 0,Z 0, A 0,B 0,C 0,E1 0,S 0,T 0})
InPos4 = FrameAdd(InPos3, {X 0,Y 0,Z 0,A 0,B 0,C 0,E1 0, S 0,T 0})
InPos5 = FrameAdd(InPos4, {X 0,Y 0,Z 0,A 0,B 0,C 0,E1 0,S 0,T 0})

;从车站出发的运动
OutPos1 = FrameAdd(xEnd_Position, {X 0,Y 0,Z 30,A 0,B 0,C 0,E1 0,S 0,T 0})
OutPos2 = FrameAdd( OutPos1, {X 0,Y 0,Z 0,A 0,B 0,C 0,E1 0,S 0,T 0})
OutPos3 = FrameAdd(OutPos2, {X 0,Y 0,Z 0, A 0,B 0,C 0,E1 0,S 0,T 0})
OutPos4 = FrameAdd(OutPos3, {X 0,Y 0,Z 0,A 0,B 0,C 0,E1 0, S 0,T 0})
OutPos5 = FrameAdd(OutPos4, {X 0,Y 0,Z 0,A 0,B 0,C 0,E1 0,S 0,T 0})
;ENDFOLD (位置计算)

;*************************************
;FOLD Touch up End points
IF FALSE THEN

;FOLD PTP EndPos_1 Vel=100 % PDAT3 工具[1 ] Base[0] ;%{PE}
;FOLD 参数 ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=EndPos_1; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT3; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT3
FDAT_ACT = FEndPos_1
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XEndPos_1;ENDFOLD

;FOLD PTP EndPos_2 Vel=100 % PDAT4 Tool[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider= kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=EndPos_2; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT4; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT4
FDAT_ACT = FEndPos_2
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XEndPos_2
;ENDFOLD

HALT
ENDIF ;Inbetriebnahme
;ENDFOLD(修饰终点)
;************************************ ****

CONTINUE
IF Area.DriveIN THEN
;FOLD PTP pHome1 Vel=100 % PDAT1 Tool[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=pHome1; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT1; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT1
FDAT_ACT = FpHome1
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XpHome1;ENDFOLD
ENDIF

;FOLD PTP pVor1_1 CONT Vel=100 % PDAT5 Tool[1] Base[0] ;%{PE}
;FOLD 参数 ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=pVor1_1; Kuka.BlendingEnabled=真; Kuka.MoveDataPtpName=PDAT5; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT5
FDAT_ACT = FpVor1_1
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XpVor1_1 C_Dis
;ENDFOLD

CONTINUE
Monitor_ReleaseArea_ON()

;Drive In to Station
;---------------- ------
BAS(#BASE,0)
BAS(#TOOL,1)
BAS(#VEL_CP,1.0)
LIN InPos3 C_DIS

; ========================
LIN InPos2 C_DIS

;============= ===========
LIN InPos1 C_DIS

;========================
>LIN xEnd_Position

;***************************************
;FOLD 机器人处于卸载位置
等待 SEC 0.0
doWrfl_rot=FALSE
doWrfl_gruen=TRUE
等待 diACK_Wrfl_gruen==TRUE
等待 SEC 0.2

BAS(#TOOL, 1)
;ENDFOLD(机器人在卸载位置)
;************************************ ****

;==========================
LIN OutPos1 C_DIS

;===== ===================
$VEL.CP=2.0
LIN OutPos2 C_DIS

;========= ===============
当 DISTANCE=1 DELAY=0 DO Monitor_ReleaseArea_OFF() PRIO=-1
LIN OutPos3 C_DIS

;FOLD PTP pVor1_2 CONT Vel=100 % PDAT6 Tool[1] Base[0] ;%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=pVor1_2; Kuka.BlendingEnabled=真; Kuka.MoveDataPtpName=PDAT6; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT6
FDAT_ACT = FpVor1_2
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XpVor1_2 C_Dis
;ENDFOLD

CONTINUE
IF Area.DriveOut THEN
;FOLD PTP pHome2 Vel=100 % PDAT2 Tool[1] Base[0] ;%{PE}
;FOLD参数 ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old;库卡全局点=假; Kuka.PointName=pHome2; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT2; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT2
FDAT_ACT = FpHome2
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XpHome2;ENDFOLD
ENDIF

END
谢谢

这是一个讲德语的人写的程序。它从两个位置之一卸载产品。奇怪的是,没有什么可以处理错误的数字(1 或 2 以外的值)。如果进出车站的运动有可选的偏移量。有五个这样的点,五个,但只有第一个在 Z 中有值偏移 30mm。函数 FrameAdd() 在别处声明。

谢谢你的回答。但我想对下面的部分做一些解释。
1.IF ($MODE_OP==#T1) OR ($MODE_OP==#T2) THEN
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
中断 ON 3
BAS (#INITMOV,0 )
ENDIF
2.Message_Write(1,0,$PRO_IP.SNR, $PRO_NAME[])
3.IF ($MODE_OP==#T1 ) OR ($MODE_OP==#T2) THEN
INTERRUPT DECL 10 WHEN NOT $CYCFLAG[1] DO I_Ueberwachung(2)
Area.DriveIn = TRUE
Area.DriveOut = TRUE
ENDIF4.$TIMER[1] = 0 ;定时器 ruecksetzen
$TIMER_STOP[1] = FALSE ;定时器启动
BAS(#VEL_PTP, 100)
BAS(#ACC_PTP, 100)
BAS(#VEL_CP, 2)
BAS(#ACC_CP, 100)
5.$BWDSTART = FALSE
PDAT_ACT = PPDAT3
FDAT_ACT = FEndPos_1
BAS(#PTP_PARAMS, 100.0)
SET_CD_PARAMS (0)
PTP XEndPos_1
谢谢。

1。从标准模块模板创建的程序模块包含 INI 折叠,它定义了在发生故障时应该做什么。在这种情况下,该块仅用于手动模式 2。显示带有程序名称 3 的消息。 “Ueberwachung”是德语“监控”的意思,中断和后续分配仅在手动模式下执行4。使用德语翻译器获取其他评论。阅读 BAS.SRC 了解下一个 fo 的详细信息您的线路 - 在 htis 情况下,他们为运动指令设置速度和加速度 5。这是 KSS8.5 或更高版本中内联形式运动指令的一部分

感谢您的回复。如果您有 BAS.SRC 文件,请发给我。
Abhi

海报

本文转载自互联网或由网友投稿发布,如有侵权,请联系删除

本文地址:http://www.yushouy.com/robots/cdf1d234.html

相关推荐

看起来这里没有任何东西...

发布评论

感谢您的支持