您好!欢迎光临工博士商城

ABB机器人配件专营店

产品:37    
联系我们
您当前的位置:首页 » 新闻中心 » ABB机器人指令开发示例技术
产品分类
新闻中心
ABB机器人指令开发示例技术
发布时间:2022-08-02        浏览次数:217        返回列表

工博士机器人技术有限公司是一家集研发、生产、销售、技术服务于一体的专注于自动化、智能化设备生产和机器人系统集成应用的科技型企业,与ABB、库卡KUKA、发那科FANUC、安川YASKAWA欧地希OTC川崎Kawasaki遨博AUBO现代HYUNDAI电装DENSO欧姆龙OMRON爱普生EPSON等机器人公司签订了战略合作关系。

公司业务范围:

◆机器人本体及配套产品销售、机器人应用技术培训服务;

◆机器人在焊接、切割、搬运、激光技术、机床上下料、钣金折弯、锻造等领域的系统集成应用;

◆机器人变位机、导轨、防护工作房、焊接工装夹具等系统周边设备的设计和生产。

 地址:上海市嘉定区南翔镇众仁路399B202007(王工:18616566200)

----------------------------------------------------------------------------------------------------------

 

  

ABB机器人指令开发示例   

在编程的灵活性方面相比,ABB机器人比一般国产和日系机器人要方便很多,比如用PERS前缀声明任意类型的变量,甚至自定义数据类型变量,就可以将数据保存,保存的数量基本没有限制,再如获取位置数据的指定方向分量异常方便,p1.trans.z就可表示p1位置在z轴方向距离工件坐标系原点的距离。本文简单介绍ABB机器人指令开发过程,其实也就是编写附带了参数的程序。   

在编程之前需要弄清几个基本概念。   

任务与模块

RAPID应用被称作一项任务。一项任务包括一组模块。一个模块包含一组数据和程序声明。   数据类型:   

  • Atomic(内置原子型/基本数据类型)数据类型:   

    1. bool为枚举类型,其值为真或假,提供了一种开展逻辑计算和关联计算的方式。   

    2. num型支持 算术计算和近似算术计算。   

    3. string型表示字符序列。   

        

      • Record(记录型)数据类型:为一种带命名有序分量的复合类型。record类型的值为由各分量的值组成的复合值。一个分量可具备atomic型或record型,用户自定义复杂数据类型一般就是记录型。内置记录型有:   

        1. pos型表示空间位置(矢量)。   ABB机器人

        2. orient型表示在空间中的方位。   

        3. pose型表示坐标系(位置/方位组合)。   

            

          • alias数据类型被定义为等同于另一种类型。alias类型提供一种对象分类手段。系统可采用alias分类来查找和显示与类型相关的对象,内置别名型数据有errnum和intnum。Errnum和intnum均为num的别名,用于表示错误和中断编号。   

            数据对象:

            有四种数据对象:常量(CONST)、变量(VAR)、数据对象(PERS)和参数。(数据对象)可描述为“”变量。在两次会话之间,变量将保持值。在每次新会话开始时,即,当加载模块时(模块变量)或调用程序时(程序变量),将失去(重新初始化)变量值。   

            程序:

            Rapid程序分为三类:无返回值程序(PROC)、有返回值程序(FUNC)和软中断程序。程序声明指定了程序的下列内容:名称,数据类型(仅对有返回值程序有效),参数(不适用于软中断程序),数据声明和语句(体),回退处理器(仅对无返回值程序有效),错误处理器和撤销处理器   

            程序声明的参数表指定了调用程序时必须/可提供的参数(实参)。参数将为必要参数或可选参数。可选参数可从程序调用的参数表省去,声明或调用时需要使用符号“”。两项或两项以上可选参数可声明为彼此排斥(用符号“|“分隔,在此情况下,程序调用中 多只可有其中一项可选参数。可利用预定义有返回值程序Present来测试可选参数是否存在。可将特殊类型switch分配给可选参数,这能提供采用“开关型参数”的手段,即,仅以名称(非值)赋予的参数。开关型的域为空,没有值能转移给开关型参数。   

            下面通过三则示例演示指令开发。   

              

            如何实现码垛指令

            码垛是机器人 常用的功能之一,与其他多数机器人不同,ABB机器人没有码垛包,但实现起来也很简单,也甚至可以实现复杂码垛情况。下面以简单的码垛为例。pBase为基准示教点,partColumns为列数,partWidth为列宽,PartHeight为单层码垛高度,numCounter已经存在的工件数量,返回robtarget机器人应该放置或抓取的位置。   

              

            FUNC robtarget pStack(robtarget pBase,num partColumns,num partWidth,num PartHeight,num numCounter)      
            VAR num Columns;   
            VAR num Rows;   
            Columns:=( numCounter -1) MOD partColumns;   
            Rows:=( numCounter -1-Columns)/partColumns;   
            RETURN Offs(pBase,0,Columns (PartWidth),Rows PartHeight);   
            ENDFUNC   
              

            >如何实现机器人在任意路径上可自动回原点    多数项目机器人直接自动回原点可能会导致撞机,只能通过增加过渡点的方式实现,有的时候过渡点可以设置成机器人当前位置在指定坐标系中往指定方向偏移指定位移的位置,如果需要更加严格保证安全,可以根据位置和旋转方向来判定机器人需要往何种方向偏移,这里不做深究。   
            FUNC robtarget getRobT(switch Rel,num x,num y,num z,inout tooldata tool,wobjdata wobj)      
            VAR robtarget pCurrent;   
            pCurrent:=crobT(tool:=toolwobj:=wobj);   
            IF Present(Rel) THEN   
            IF Present(x) THEN   
            pCurrent.trans.x:=pCurrent.trans.x+x;   
            ENDIF   
            IF Present(y) THEN   
            pCurrent.trans.y:=pCurrent.trans.y+y;   
            ENDIF   
            IF Present(z) THEN   
            pCurrent.trans.z:=pCurrent.trans.z+z;   
            ENDIF   
            ELSE   
            IF Present(x) THEN   
            pCurrent.trans.x:=x;   
            ENDIF   
            IF Present(y) THEN   
            pCurrent.trans.y:=y;   
            ENDIF   
            IF Present(z) THEN   
            pCurrent.trans.z:=z;   
            ENDIF   
            ENDIF   
            RETURN pCurrent;   
            tENDFUNC   
              

            其中实现了有开关型参数Rel情况下,实现增量偏移,无Rel时实现 偏移,也可以根据可选参数x,y,z实现指定方向偏移,返回robtarget目标位置(过渡点)。下面是指令的使用示例,调用形式上与RAPID内置Offs等指令有些相识。   

            movel getRobPos(rel,y:=100, ,tool0,wobj0),v100,z0,tool0;      
            movel getRobPos(z:=1000,tool0,wobj0),v100,z0,tool0;   
            p1:= getRobPos(y:=200,tool0,wobj0),   
              

            如何判定机器人是否在指定位置附近:   

            此功能类似于机器人的安全区域功能,在实时任务中调用此函数可实现安全区域差不多的效果。如果结合crobT 指令可以实现更加复杂的空间判断,这里不做深究。示例中pCheck是指定位置,num1为判断符合区域阈值,返回bool型判定结果。   

            FUNC bool rCheckPos(jointtarget pCheck,num num1)      
            VAR jointtarget pCurrent;   
            VAR num numTemp;   
            IF Present(num1) THEN   
            numTemp:=num1;   
            ENDIF   
            pCurrent:=CalcJointT(CRobT(),tool0);   
            IF pCurrent.robax.rax_1<=pcheck.robax.rax_1+num1 and="" pcurrent.robax.rax_1="">=pCheck.robax.rax_1-num1 AND   
            pCurrent.robax.rax_2<=pcheck.robax.rax_2+num1 and="" pcurrent.robax.rax_2="">=pCheck.robax.rax_2-num1 AND   
            pCurrent.robax.rax_3<=pcheck.robax.rax_3+num1 and="" pcurrent.robax.rax_3="">=pCheck.robax.rax_3-num1 AND   
            pCurrent.robax.rax_4<=pcheck.robax.rax_4+num1 and="" pcurrent.robax.rax_4="">=pCheck.robax.rax_4-num1 AND   
            pCurrent.robax.rax_5<=pcheck.robax.rax_5+num1 and="" pcurrent.robax.rax_5="">=pCheck.robax.rax_5-num1 AND   
            pCurrent.robax.rax_6<=pcheck.robax.rax_6+num1 and="" pcurrent.robax.rax_6="">=pCheck.robax.rax_6-num1 THEN   
            RETURN TRUE;   
            ELSE   
            RETURN FALSE;   
            ENDIF   
            ENDFUNC   
              
              

            当然,熟悉编写如何去编写指令是不够的,还需深刻认识坐标系的概念和一些基本指令,结合实际操作。   文章来源于:网络 点击此处了解更多:ABB机器人   分享到:   下一篇:ABB机器人编程基本知识汇总   上一篇:工业机器人的主要控制方式

             

            更多资讯    ABB机器人配件





 

联系热线:15026710082   联系人:姚国利 联系地址:上海市宝山区富联一路98弄6号

技术和报价服务:星期一至星期六8:00-22:00 ABB机器人配件专营店