库卡机器人程序模板

工具工件偏移模板

GLOBAL DEFFCT E6POS Offs(iPoint:IN,iX:IN,iY:IN,iZ:IN,iA:IN,iB:IN,iC:IN,iTool:IN,iBase:IN)
  DECL REAL  iX,iY,iZ,iA,iB,iC
  DECL INT   iTool,iBase
  DECL FRAME tFrame
  DECL E6POS iPoint
  tFrame=$NULLFRAME
  IF (iTOOL>16) OR (iTOOL<1) THEN
    $TOOL=$NULLFRAME
    $ACT_TOOL=0
  ELSE
    $TOOL=TOOL_DATA[iTOOL]
    $ACT_TOOL=iTool
  ENDIF
  IF (iBASE>32) OR (iBASE<1) THEN
    $BASE=$NULLFRAME
    $ACT_BASE=0
  ELSE
    $BASE=BASE_DATA[iBASE]
    $ACT_BASE=iBase
  ENDIF
  WAIT SEC 0
  tFrame.X=iX
  tFrame.Y=iY
  tFrame.Z=iZ
  tFrame.A=iA
  tFrame.B=iB
  tFrame.C=iC
  $IPO_MODE=#BASE
  iPoint=tFrame:iPoint
  RETURN(iPoint)
ENDFCT


GLOBAL DEFFCT E6POS RelTool(iPoint:IN,iX:IN,iY:IN,iZ:IN,iA:IN,iB:IN,iC:IN,iTool:IN,iBase:IN)
  DECL REAL  iX,iY,iZ,iA,iB,iC
  DECL INT   iTool,iBase
  DECL FRAME tFrame
  DECL E6POS iPoint
  tFrame=$NULLFRAME
  IF (iTOOL>16) OR (iTOOL<1) THEN
    $TOOL=$NULLFRAME
    $ACT_TOOL=0
  ELSE
    $TOOL=TOOL_DATA[iTOOL]
    $ACT_TOOL=iTool
  ENDIF
  IF (iBASE>32) OR (iBASE<1) THEN
    $BASE=$NULLFRAME
    $ACT_BASE=0
  ELSE
    $BASE=BASE_DATA[iBASE]
    $ACT_BASE=iBase
  ENDIF
  WAIT SEC 0
  tFrame.X=iX
  tFrame.Y=iY
  tFrame.Z=iZ
  tFrame.A=iA
  tFrame.B=iB
  tFrame.C=iC
  $IPO_MODE=#BASE
  iPoint=iPoint:tFrame
  RETURN(iPoint)
ENDFCT

错误处理模板

DECL INT a
DECL INT b
b=3
on_error_proceed
a = b/0

机器人信息显示模板

DECL KrlMsgDlgSK_T softkey[7]
DECL KRLMSG_T MyMessage
DECL EKRLMsgType Type
DECL int result1
DECL KRLMSGOPT_T Myoptions1
DECL KRLMSGPAR_T Para[3]
DECL bool result
softkey[1] = {sk_type #value, sk_txt[] "Open"}
softkey[2] = {sk_type #value, sk_txt[] "Close"}
softkey[3] = {sk_type #value, sk_txt[] "Show"}
softkey[4] = {sk_type #value, sk_txt[] "Hide"}
softkey[5] = {sk_type #empty, sk_txt[] "Open1"}
softkey[6] = {sk_type #empty, sk_txt[] "Close1"}
softkey[7] = {sk_type #empty, sk_txt[] "Show1"}

MyMessage={modul[]"USER",Nr 103,msg_txt[]"MaxForceLimit"}
Myoptions1= {VL_STOP true, Clear_P_Reset true, Clear_P_SAW false, Log_to_DB false}
result1 = Set_KrlMsg(#NOTIFY, MyMessage, Para[ ], Myoptions1) 
result1=SET_KRLDLG(MyMessage,Para[ ],softkey[ ], Myoptions1)   
result = EXISTS_KRLDLG(result1, answer)
;result = Clear_KrlMsg(result1)
halt

机器人通过中断暂停启动模块

interrupt decl 1 when $in[601]==true do abc()
   interrupt on 1
   
   
   
def abc()
   BRAKE f
   WAIT SEC 1
   WAIT FOR  ( $IN[600] ) AND ( NOT $IN[601] )
   WAIT SEC 1
end

机器人原点启动模块

global DEF  PTPStartPoint()
DECL E6AXIS StartP
   $VEL.CP =0.2
   $TOOL = TOOL_DATA[1]
   $BASE = BASE_DATA[1]
   StartP = $AXIS_ACT
   $ADVANCE = 0
   PTP StartP
END

机器人搜寻点模块

INTERRUPT DECL 21 WHEN DI_27_Completion == TRUE DO OnInterrupt()   ;启动中断将信号关联中断程序
   PTPStartPoint()    ;将当前点作为起点位置
   PULSE ( DO_18_ForceClear, true, 0.5 )  ;设置力值清零信号为真0.5S
   PULSE ( DO_19_DistanceClear, true, 0.5 )  ;设置记录距离清理信号为真0.5S
   PULSE ( DO_23_CurveClear, true, 0.5 )  ;设置曲线清除信号为真0.5S
   DO_21_StartBack=FALSE   ;发送信号给上位机
   nMoveDistance=0   ;将移动距离设置为0
   WAIT SEC 1;    ;等待1s
   WAIT for (DI_26_AllowStart)  ;等待允许开始信号为真
   DO_21_StartBack=TRUE   ;发送信号给上位机
   $TOOL = TOOL_DATA[1]  ;将当前工具设置为第一个工具
   pPreNowPoint=$POS_ACT   ;将当前位置赋值给ppreNowPoint点位
   XPointF = pPreNowPoint  ;将ppreNowPoint赋值给XPointF
   LoadSpeed = GI_48_63_LoadSpeed/100.0   
   $VEL.CP = LoadSpeed/1000.0    ;设置机器人移动速度为上位机设定速度
   nMoveDistance=GI_128_143_MoveLimit/100;   ;将上位机设定的移动距离赋值给nMoveDistance
   IF DI_30_PressPull==true THEN    ;判断设置方向是否为正方向
      nMoveDistance=-nMoveDistance  ;设置移动方向为负值
   ENDIF 
   FOffset = {X  0,Y  0,Z 0,A 0,B  0,C  0}   ;编辑偏移方向
   FOffset.Z=nMoveDistance;   ;设置偏移的Z方向为上位机移动的距离
   search()  ;移动机器人向Z方向寻找直到DI_27_Completion为真或者直到设定的最大距离
   WAIT SEC 0;    ;等待0S 防止机器预读
   WAIT for (NOT DI_21_KeepLoad)  ;等待保持力不为真
   lin XPointF    ;移动到XPointF
   WAIT SEC 0.5   ;等待0.5S
   PULSE ( DO_22_Complete, true, 0.5 )  ;设置完成信号为真0.5S
   WAIT SEC 0.5   ;等待0.5S
   DO_21_StartBack =FALSE   ;;发送信号给上位机
   HALT;
   
   DEF OnInterrupt()
   INTERRUPT OFF 21
   BRAKE F
   lin $POS_INT
   RESUME
END

DEF search()
   INTERRUPT ON 21
   ;PTP
   LIN pPreNowPoint:FOffset
end

机器人INT转字符功能模块

GLOBAL DEFFCT CHAR[1] Int_to_String(zVar:IN )
   DECL CHAR Ret[1]
   DECL INT Offset,I
   DECL STATE_T state
   DECL INT zVar
   Offset=0
   FOR I=1 TO 1  
      Ret[I]=0
   ENDFOR
   SWRITE(Ret[],state,Offset,"%d",zVar)
   Return (Ret[])
ENDFCT
  • 8
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值