北屋教程网

专注编程知识分享,从入门到精通的编程学习平台

库卡机器人编程之SearchL功能(库卡机器人程序库)

更多内容请点击 R工控人 关注

********************************

如何获取更多经典文章?

关注 R工控人,定期分享实用资料与技术解答!!!



一.SearchL指令简介:

当沿直线移动工具中心点时,SearchL(Search Linear)用于搜索位置。在移动时,机器人会监控一个数字输入信号或持续变量。当信号持续变量的值变为所 需值时,机器人立即读取当前位置。当由机械臂固定的工具为用于表面探测的探针时,通常可使用该指令。使用SearchL 指令,可获得工件的概略坐标。

本指令仅可用于主任务T_ROB1,或者如果在MultiMove系统中,则可用于运动任务 中。使用搜索指令时,重要的是配置I/O系统,以便为设置系统物理信号留以极短的时间, 从而获得关于设置的信息(使用I/O设备以及中断控制,而非查询控制)。如何进行上 述操作,不同的现场总线可能会采用不同的方法。如果使用DeviceNet,则ABB单元 DSQC 651(AD Combi I/O)和DSQC 652(数字I/O)将留以短暂的时间,因为他们 正在使用状态变化型连接。如果使用其他现场总线,则确保以正确的方式来配置网络, 从而获得正确的条件。

二.SearchL指令的使用:

1.语法:

2.案例说明:

例 1
SearchL di1, sp, p10, v100, probe;
以v100的速度,使probe的TCP沿直线朝位置p10 移动。当信号di1的值改变为有效
时,将位置储存在sp中。
例 2
SearchL \Stop, di2, sp, p10, v100, probe;
将probe的TCP沿直线朝位置p10移动。当信号di2的数值改变为有效时,将位置储存
在sp中,且机械臂立即停止。
例 3
PERS bool mypers:=FALSE;
...
SearchL mypers, sp, p10, v100, probe;
probe 的 TCP 朝位置 p10 以直线方式移动,速度为 v100。当持续变量 mypers 变
为 TRUE 时,位置存储到 sp。

三.库卡上实现SearchL指令:

如果要在库卡机器人上实现SerachL功能的话,这里需要使用到中断功能,在实现之前,可以先回顾下有关中断的知识点。可以参见之前的文章:库卡机器人编程之中断

当你完全清楚了库卡机器人中断相关指令及知识,接下来的程序(具体可以参照Volvo标准)就会得心应手(程序纯粹摘录,仅供提供思路,如需实际使用可以依照改写):

代码如下:

GLOBAL DEFFCT BOOL SEARCHL(InPno :IN,StopPosition :OUT,EndPosition :IN,VelPara :IN,ToolName :IN,PartDataName :IN,ExtendedLoad :IN )
  DECL INT InPno
  DECL E6POS StopPosition
  DECL E6POS EndPosition
  REAL VelPara
  DECL ToolType ToolName
  DECL LOAD ExtendedLoad           ;Extended Load
  DECL PartDataType PartDataName
  DECL LOAD ActualLoadTool, ActualLoadPart


  Found=FALSE
  ChkSub ( )


  INTERRUPT DECL 1 WHEN $MEAS_PULSE[InPno]<>FALSE DO Not_Much ( )


  CPPara (VelPara,ACT_ACC_CP ) ; path velocity and acceleration
  $ADVANCE=0


   IF VarState("ExtendedLoad")==#Initialized Then
    ActualLoadTool=ExtendedLoad
    ActualLoadPart=ExtendedLoad
  ELSE
    ActualLoadTool=ToolName.TLoad
    ActualLoadPart=PartDataName.PartLoad
  EndIf
    IF ToolName.External THEN
    SetExtTool (ToolName ) ; set the $Base
    SetFlange (PartDataName,ActualLoadPart ) ; set the $Tool, $Load
    $IPO_MODE=#TCP
  ELSE
    SetTool (ToolName,ActualLoadTool )
    SetBase (PartDataName )
    $IPO_MODE=#BASE
  ENDIF
  
  WAIT FOR  TRUE
  Search (EndPosition )   ;搜寻过程如果提前获得结果则触发中断,提前跳出;
  IF Found==TRUE THEN
    StopPosition=FoundPosition
  ENDIF
  RETURN  Found
ENDFCT
-----------------------------------------------------------------
DEF Search (EndPosition :IN )
  ;*************************************************
  ;Function: SearchL.src files
  ;*************************************************
  DECL E6POS EndPosition


  WAIT SEC SEARCHWAIT
  INTERRUPT ON 1
  LIN  EndPosition
  $ADVANCE=0
  INTERRUPT OFF 1
END
-----------------------------------------------------------------
DEF Not_Much ( )
  INTERRUPT OFF 1
  BRAKE
  FoundPosition=$POS_INT
  Found=TRUE
  RESUME
END



赶紧转发收藏吧!

********************************

更多内容请点击 R工控人 关注

欢迎大家问题留言,沟通交流

关注 R工控人,定期分享实用资料与技术解答!!!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言