ABB[a]-ZH-11ABB搬运工作站11.1任务目标了解工业机器人搬运工作站布局。学会搬运常用I/O配置。学会程序数据创建。学会目标点示教。学会程序调试。学会搬运程序编写。11.2任务描述本工作站以太阳能薄板搬运为例,利用IRB120①机器人在流水线上拾取太阳能薄板工件,将其搬运至暂存盒中,以便周转至下一工位进行处理。本工作站中已经预设搬运动作效果,大家需要在此工作站中依次完成I/O配置、程序数据创建、目标点示教、程序编写及调试,最终完成整个搬运工作站的搬运过程。通过本章的学习,使大家学会工业机器人的搬运应用,学会工业机器人搬运程序的编写技巧。ABB机器人在搬运方面有众多成熟的解决方案,在3C、食品、医药、化工、金属加工、太阳能等领域均有广泛的应用,涉及物流输送、周转、仓储等。采用机器人搬运可大幅提高生产效率、节省劳动力成本、提高定位精度并降低搬运过程中的产品损坏率。1.ABB推出的一款迄今为止最小的多用途工业机器人——紧凑、敏捷、轻量的六轴IRB120,仅重25kg,荷重3kg(垂直腕为4kg),工作范围达580mm。11.3知识储备11.3.1RobotStudio知识准备1.工作站共享在RobotStudio中,一个完整的机器人工作站既包含前台所操作的工作站文件,还包含一个后台运行的机器人系统文件。当需要共享RobotStudio软件所创建的工作站时,可以利用“文件”菜单中的“共享”功能,使用其中“打包”功能,可以将所创建的机器人工作站打包成工作包(.rspag格式);利用“解包”功能,可以将该工作包在另外的计算机上解包使用。1.打包:创建一个包含虚拟控制器、库和附加选项媒体库的工作站包。2.解包:解包所打包的文件,启动并恢复虚拟控制器,打开工作站。2.加载RAPID程序模块在机器人应用过程中,如果已有一个程序模板,则可以直接将该模板加载至机器人系统中。例如,已有1#机器人程序,2#机器人的应用与1#机器人相同,那么可以将1#机器人的程序模块直接导入2#机器人中。加载方法有以下两种。(1)软件加载在RobotStudio中的“RAPID”菜单中可以加载程序模块。在RobotStudio5.15之前的版本中,此功能在“离线”菜单的中,“在线”菜单中也有该功能,前者针对的是PC端仿真的机器人系统,后者针对的是利用网线连接的真实的机器人系统。1.切换到“RAPID”菜单,展开右侧RAPID,右击“T_ROB1”,选择“加载模块”。2.浏览至需要加载的程序模块文件,单击“打开”按钮。(2)示教器加载在示教器中依次单击:ABB菜单—程序编辑器—模块—文件—加载模块,之后浏览至所需加载的模块进行加载。1.在程序编辑器模块栏中单击“文件”。2.单击加载模块3.浏览至所需加载的程序模块文件,单击“确定”按钮。3.加载系统参数在机器人应用过程中,如果已有系统参数文件,则可以直接将该参数文件加载至机器人系统中。例如,已有1#机器人I/O配置文件,2#机器人的应用与1#机器人相同,那么可以将1#机器人的I/O配置文件直接导入2#机器人中。系统参数文件存放在备份文件夹中的SYSPAR文件目录下,其中最常用的是其中的EIO文件,即机器人I/O系统配置文件。系统参数加载方法有以下两种:*一般地,两台硬件配置一致的机器人会共享I/O设置文件EIO.cfg,其他的文件可能会造成系统故障。若错误加载参数后,可做一个“I启动”使机器人回到出厂初始状态。(1)软件加载在RobotStudio中,“控制器”菜单的“加载参数”功能可以用于加载系统参数。1.在“控制器”菜单中单击“加载参数”2.勾选“载入参数并覆盖重复项”之后单击“打开”按钮。3.在“Filename”(即“文件名称”)中输入“EIO”,单击跳出来的EIO.cfg,之后单击“Open”按钮。备份文件夹中的系统参数文件保存在“SYSPAR”文件夹下。浏览至“SYSPAR”目录后,若不能显示系统参数文件,则需要在“Filename”(即文件名称)中输入“EIO”,则自动跳出“EIO.cfg”,单击“Open”按钮之后即可打开。(2)示教器加载在示教器中依次单击:ABB菜单—控制面板—配置—文件—加载参数,加载方式一般也选取第三项,即“加载后覆盖重复项”,之后浏览至所需加载的系统参数文件进行加载。1.打开“文件”菜单。2.单击“加载参数”。3.勾选“加载参数并替换副本”,之后单击“加载”按钮。4.浏览至所需加载的系统参数文件,选中“EIO.cfg”,单击“确定”按钮,重新启动即可。4.仿真I/O信号在仿真过程中,有时需要手动去仿真一些I/O信号,以使当前工作站满足机器人运行条件。在RobotStudio软件的“仿真”菜单中利用“I/O仿真器”可对I/O信号进行仿真。1.单击“仿真”菜单中的“I/O仿真器”即可在软件右侧跳出“I/O仿真器”菜单栏。2.在“选择系统”栏中选择相应系统,包含工作站信号、机器人信号以及智能组件信号等。3.单击需要仿真的信号,相应指示灯则会置为1,再次单击即可置为0。11.3.2标准I/O板配置ABB标准I/O板挂在DeviceNet总线上,常用型号有DSQC651,DSQC652。在系统中配置标准I/O板,至少需要设置以下四项参数:参数名称参数注释NameI/O单元名称TypeofUnitI/O单元类型ConnectedtoBusI/O单元所在总线DeviceNetAddressI/O单元所占用总线地址I/O配置详细参考I/O通信一章。11.3.3数字I/O配置在I/O单元上创建一个数字I/O信号,至少需要设置以下四项参数:参数名称参数注释NameI/O信号名称TypeofSignalI/O信号类型AssignedtoUnitI/O信号所在I/O单元UnitMappingI/O信号所占用单元地址11.3.4系统I/O配置系统输入:将数字输入信号与机器人系统的控制信号关联起来,就可以通过输入信号对系统进行控制(例如,电动机上电、程序启动等)。系统输出:机器人系统的状态信号也可以与数字输出信号关联起来,将系统的状态输出给外围设备作控制之用(例如,系统运行模式、程序执行错误等)。11.3.5常用运动指令MoveL:线性运动指令将机器人TCP沿直线运动至给定目标点,适用于对路径精度要求高的场合,如切割、涂胶等。例如:MoveLp20,v1000,z50,tool1\WObj:=wobj1;如图所示,机器人TCP从当前位置p10处运动至p20处,运动轨迹为直线。MoveJ:关节运动指令将机器人TCP快速移动至给定目标点,运行轨迹不一定是直线。例如:MoveJp20,v1000,z50,tool1\WObj:=wobj1;如图所示,机器人TCP从当前位置p10处运动至p20处,运动轨迹不一定为直线。MoveC:圆弧运动指令将机器人TCP沿圆弧运动至给定目标点。圆弧运动指令MoveC在做圆弧运动时一般不超过240°,所以一个完整的圆通常使用两条圆弧指令来完成。例如:MoveCp20,p30,v1000,z50,tool1,\WObj:=wobj1;如图所示,机器人当前位置p10作为圆弧的起点,p20是圆弧上的一点,p30作为圆弧的终点。MoveAbsj:绝对运动指令将机器人各关节轴运动至给定位置。例如:PERSjointargetjpos10:=[[0,0,0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];关节目标点数据中各关节轴为零度。MoveAbsjjpos10,v1000,z50,tool1\WObj:=wobj1;则机器人运行至各关节轴零度位置。11.3.6常用I/O控制指令Set:将数字输出信号置为1例如:SetDo1;将数字输出信号Do1置为1。Reset:将数字输出信号置为0注:Setdo1;等同于:SetDOdo1,1;Resetdo1;等同于:SetDOdo1,0;例如:ResetDo1;将数字输出信号Do1置为0另外,SetDO还可以设置延迟时间:SetDO\SDelay:=0.2,do1,1;则延迟0.2s后将do1置为1。WaitDI:等待一个输入信号状态为设定值例如:WaitDIDi1,1;等待数字输入信号Di1为1,之后才执行下面的指令。WaitDi1,1;等同于:WaitUntildi1=1;另外,WaitUntil应用更为广泛,等待的是后面条件为TRUE才继续执行,如:WaitUntilbRead=False;WaitUntilnum1=1;11.3.7常用逻辑控制指令IF:满足不同条件,执行对应程序例如:IFreg15THENSetdo1;ENDIF如果reg15条件满足,则执行SetDo1指令。FOR:根据指定的次数,重复执行对应程序例如:FORIFROM1TO10DORoutine1;ENDFOR重复执行10次Routine1里的程序。FOR指令后面跟的是循环计数值,其不用再程序数据中定义,每次运行一遍FOR循环中的指令后会自动执行加1操作。WHILE:如果条件满足,则重复执行对应程序例如:WHILEreg1reg2DOreg1:=reg1+1;ENDWHILE如果变量reg1reg2条件一直成立,则重复执行reg1加1,直至reg1reg2条件不成立为止。TEST:根据指定变量的判断结果,执行对应程序例如:TESTreg1CASE1:Routine1;CASE2:Routine2;DEFAULT:Stop;ENDTEST判断reg1数值,若为1则执行Routine1;若为2则执行Routine2,否则执行stop。11.3.8注释行“!”在语句前面加上“!”,则整行语句作为注释行,不被程序执行。例如:!GotothePickPosition;MoveLpPick,v1000,fine,tool1,\WObj:=wobj1;11.3.9Offs偏移功能以选定的目标点为基准,沿着选定工件坐标系的X、Y、Z轴方向偏移一定的距离。例如:MoveLOffs(p10,0,0,10),v1000,z50,tool0\WObj:=wobj1;将机器人TCP移动至以p10为基准点,沿着wobj1的Z轴正方向偏移10mm的位置。11.3.10运动控制指令RelToolRelTool对工具的位置和姿态进行偏移,也可实现角度偏移。语法:RelTool(Point,Dx,Dy,Dz,[\Rx][\Ry][\Rz])例如:MoveLRelTool(P10,0,0,100\Rz:=25),v100,fine,tool1\wobj:=wobj1;11.3.11CRobT功能读取当前机器人目标位置数据。例如:PERSrobtargetp10;P10:=CRobT(\Tool:=tool1\WObj:=wobj1);读取当前机器人目标点位置数据,指定工具数据位tool1,工件坐标系数据为wobj1(若不指定,则默认工具数据为tool0,默认工件坐标系数据为wobj0),之后将读取的目标点数据赋值给p10。CJontT:读取当前机器人各关节轴旋转角度。例如:PRESjointtargetjoint10;MoveL*,v500,fine,tool1;Joint10:=CJontT();11.3.12常用写屏指令例如:TPRease;TPWrite“TheRobotisrunning!”;TPWrite“TheLastCycleTimeis:”\num:=nCycleTime;假设上一次循环时间nCycleTime为10s,则示教器上面显示内容为TheRobotisrunning!TheLastCycleTimeis:1011.3.13检测HOME点模板在实训任务中,每个程序都有检测Home点的例行程序rCheckHomePos,以及比较机器人当前位置和给定位置是否相同的功能CurrentPos,其程序内容如下,在后续的代码中不再重复。程序:rCheckHomePos、CurrentPos说明:检查原点程