库卡机器人编程之SearchL功能

更多内容请点击 R工控人
【库卡机器人编程之SearchL功能】********************************
如何获取更多经典文章?
R工控人,定期分享实用资料与技术解答!!!
一.指令简介:
当沿直线移动工具中心点时,( )用于搜索位置 。在移动时,机器人会监控一个数字输入信号或持续变量 。当信号持续变量的值变为所 需值时,机器人立即读取当前位置 。当由机械臂固定的工具为用于表面探测的探针时,通常可使用该指令 。使用 指令,可获得工件的概略坐标 。
本指令仅可用于主任务,或者如果在系统中 , 则可用于运动任务 中 。使用搜索指令时 , 重要的是配置I/O系统,以便为设置系统物理信号留以极短的时间,从而获得关于设置的信息(使用I/O设备以及中断控制 , 而非查询控制) 。如何进行上 述操作,不同的现场总线可能会采用不同的方法 。如果使用,则ABB单元 DSQC 651(AD Combi I/O)和DSQC 652(数字I/O)将留以短暂的时间库卡机器人故障代码,因为他们 正在使用状态变化型连接 。如果使用其他现场总线库卡机器人故障代码,则确保以正确的方式来配置网络,从而获得正确的条件 。
二.指令的使用:
1.语法:
2.案例说明:
例 1SearchL di1, sp, p10, v100, probe;以v100的速度 , 使probe的TCP沿直线朝位置p10 移动 。当信号di1的值改变为有效时,将位置储存在sp中 。例 2SearchL Stop, di2, sp, p10, v100, probe;将probe的TCP沿直线朝位置p10移动 。当信号di2的数值改变为有效时,将位置储存在sp中,且机械臂立即停止 。例 3PERS bool mypers:=FALSE;...SearchL mypers, sp, p10, v100, probe;probe 的 TCP 朝位置 p10 以直线方式移动 , 速度为 v100 。当持续变量 mypers 变为 TRUE 时,位置存储到 sp 。
三.库卡上实现指令:
如果要在库卡机器人上实现功能的话 , 这里需要使用到中断功能,在实现之前 , 可以先回顾下有关中断的知识点 。可以参见之前的文章:库卡机器人编程之中断
当你完全清楚了库卡机器人中断相关指令及知识,接下来的程序(具体可以参照Volvo标准)就会得心应手(程序纯粹摘录,仅供提供思路,如需实际使用可以依照改写):
代码如下:
GLOBAL DEFFCT BOOL SEARCHL(InPno :IN,StopPosition :OUT,EndPosition :IN,VelPara :IN,ToolName :IN,PartDataName :IN,ExtendedLoad :IN )DECL INT InPnoDECL E6POS StopPositionDECL E6POS EndPositionREAL VelParaDECL ToolType ToolNameDECL LOAD ExtendedLoad;Extended LoadDECL PartDataType PartDataNameDECL LOAD ActualLoadTool, ActualLoadPartFound=FALSEChkSub ( )INTERRUPT DECL 1 WHEN $MEAS_PULSE[InPno]FALSE DO Not_Much ( )CPPara (VelPara,ACT_ACC_CP ) ; path velocity and acceleration$ADVANCE=0IF VarState("ExtendedLoad")==#Initialized ThenActualLoadTool=ExtendedLoadActualLoadPart=ExtendedLoadELSEActualLoadTool=ToolName.TLoadActualLoadPart=PartDataName.PartLoadEndIfIF ToolName.External THENSetExtTool (ToolName ) ; set the $BaseSetFlange (PartDataName,ActualLoadPart ) ; set the $Tool, $Load$IPO_MODE=#TCPELSESetTool (ToolName,ActualLoadTool )SetBase (PartDataName )$IPO_MODE=#BASEENDIFWAIT FORTRUESearch (EndPosition );搜寻过程如果提前获得结果则触发中断,提前跳出;IF Found==TRUE THENStopPosition=FoundPositionENDIFRETURNFoundENDFCT-----------------------------------------------------------------DEF Search (EndPosition :IN );*************************************************;Function: SearchL.src files;*************************************************DECL E6POS EndPositionWAIT SEC SEARCHWAITINTERRUPT ON 1LINEndPosition$ADVANCE=0INTERRUPT OFF 1END-----------------------------------------------------------------DEF Not_Much ( )INTERRUPT OFF 1BRAKEFoundPosition=$POS_INTFound=TRUERESUMEEND
本文到此结束,希望对大家有所帮助 。