logo资料库

ABB机器人编程程序解析.docx

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
ABB机器人编程02
ABB机器人编程04
程序解析:
ABB 机器人编程 1 程序解析: 1、此程序是典型的 ABB 机器人官方编程思路与方法,分为主程序,初始化例行程序和轨迹程序。 2、思路清晰,结构编排明确,方便使用者阅读。 %%% %%% VERSION:1 LANGUAGE:ENGLISH MODULE MainModule PERS tooldata tGripper:=[TRUE,[[0,0,100],[1,0,0,0]],[25,[0,0,10],[1,0,0,0],0,0,0]]; PERS wobjdata WobBox:=[FALSE,TRUE,"",[[1,1,1],[0,0,0,0]],[[0,0,0],[1,0,0,0]]]; CONST robtarget pPointA:=[[1,1,1],[1,1,1,1],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; CONST robtarget pPointB:=[[1,1,1],[1,1,1,1],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; CONST robtarget PHome:=[[1,1,1],[1,1,1,1],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; PERS loaddata load_Empty:=[1,[0,0,0],[1,0,0,0],0,0,0]; PERS loaddata load_Box:=[20,[0,0,0],[1,0,0,0],0,0,0]; 以上是固定的数据存放位 置。 PROC main() rInitial; 主程序,是一个程序的开始 Accset 60,60; 此部分其实可放入到 rInitial 中去,这样管理起来更方便 velset 100,100; 此部分其实可放入到 rInitial 中去,这样管理起来更方便 WHILE TRUE DO rBox; 情况出现。 ENDWHILE ENDPROC PROC rInitial() 在此指令后插入 0.3 秒的等待指令,防止 CPU 过负荷的 SetDo DOGrip,0; WaitDI DIGripReleased,1; MoveJ pHome, v300, z50, tGripper; ENDPROC PROC rBox() MoveJ offs(pPointA,0,200,500), v1500, z100,tGripper;
MoveJ offs(pPointA,0,200,0), v1500, z50,tGripper; A: TPErase; IF DIAllowPick=1 THEN WaitTime 0; ELSEIF DIAllowPick=0 THEN TPWrite "Signal of AllowPick no ready,Please Check!"; GOTO A; ENDIF MoveL pPointA,v800, fine, tGripper; SetDo DOGrip,1; WaitDI DIGripPicked,1; Gripload load_Box; 这一句很重要的,设定机器人的实际负荷情况,有利 于机器人伺服控制的优化 MoveJ offs(pPointA,0,0,500), v1000, z100, tGripper; MoveJ offs(pPointB,0,0,200), v1000, z50, tGripper\WObj:=WobBox; MoveL pPointB, v1000, fine, tGripper\WObj:=WobBox; SetDo DOGrip,0; WaitDI DIGripReleased,1; Gripload load_Empty; MoveL offs(pPointB,0,200,0), v800, z50, tGripper\WObj:=WobBox; MoveJ offs(pPointB,0,200,500), v1500, z100, tGripper\WObj:=WobBox; ENDPROC ENDMODULE ABB 机器人编程 02 程序解析: 1、此程序编写的思路是完全按照比赛题目中的要求的进行,就是按步就班式的 2、思路清晰,结构编排明确,方便使用者阅读。 3、有相应的写屏信息提示,方便操作员对机器人运行状态的了解。 4、有一点小问题,就是缺少初始化的部分。 MODULEMainModule CONSTrobtargetPHOME:=[[1149.87,13.55,451.35],[0.729477,0.0748599,0.679603,0.019 9765],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; CONSTrobtargetPA:=[[250.14,-652.34,650.90],[0.429093,0.468557,-0.496153,0.59174 9],[-1,0,-2,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; CONSTrobtargetP20:=[[250.14,-652.35,828.56],[0.429091,0.468538,-0.496163,0.5917
56],[-1,0,-3,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; CONSTrobtargetP30:=[[695.24,18.14,826.55],[0.0377066,-0.677588,0.0913591,-0.728 771],[0,0,-2,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; CONSTrobtargetP40:=[[1227.51,18.14,826.55],[0.0377092,-0.677583,0.0913642,-0.72 8774],[0,0,-3,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; CONSTrobtargetPB:=[[1227.52,18.15,424.02],[0.0377092,-0.677591,0.0913577,-0.728 767],[0,0,-2,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; PROCmain() 肿,将具体功能尽量细分到例行程序 TPErase; MoveJPHOME,v1000,z50,tool0; 在主程序里,过于臃 OpenGripper; WaitTime5; WHILEtrueDO IFPLC=1THEN TPErase; TPWrite"Warning! Begin to move the new staff..."; WaitTime1; ClkResetclock1; ClkStartclock1; MovFromAtoB; ClkStopclock1; reg1:=ClkRead(clock1); TPErase; TPWrite"Goods handling in place, it take (time in second): "\Num:=reg1; 运 行时间的显示 WaitTime5; ELSETPErase; TPWrite"Waiting for new goods..."; 运行状态的提醒 WaitDIPLC,1; ENDIF ENDWHILE ENDPROC PROCOpenGripper() 将对夹具的控制做在一个例行程序里,方便管理 SetG0; ResetG1; ENDPROC PROCCloseGripper() 将对夹具的控制做在一个例行程序里,方便管理 SetG1; ResetG0; ENDPROC PROCMovFromAtoB() MoveJP30,v1000,z50,tool0; MoveJP20,v1000,z50,tool0;
MoveLPA,v50,fine,tool0; WaitTime1; CloseGripper; WaitTime1; MoveJP20,v50,z50,tool0; MoveJP30,v1000,z50,tool0; MoveJP40,v1000,z50,tool0; MoveLPB,v50,fine,tool0; WaitTime1; OpenGripper; WaitTime1; MoveLP40,v50,z50,tool0; MoveJP30,v1000,z50,tool0; MoveJPHOME,v1000,z50,tool0; ENDPROC ENDMODULE ABB 机器人编程 03 程序解析: 1、此程序是典型的 ABB 机器人官方编程思路与方法,分为主程序,初始化例行程序和轨迹程序。 2、思路清晰,结构编排明确,方便使用者阅读。 3、但有点要注意的初始化例行程序只在开始时,执行一次,正常运行时,不再执行。但此程序是每 个循环都会进行一次初始化,是有点问题的。 PROC main() WHILE 指令 InitAll; 此初始化程序应与循环执行的程序隔离开,使用 Circle; WaitTime 0.5; ENDPROC PROC InitAll() Reset Do_fixOn; WaitDI\On ConfJ\On; ConfL\On; VelSet 80, 1000;
AccSet 70,70; MoveJ PHome, v150, fine, Tool0\WObj:=Wobj2; RETURN; ENDPROC PROC Circle() MoveJ Home, v60, z0, Tool0\WObj:=Wobj2; waitDI; work; reset waitDI MoveJ Home, v150, fine, Tool0\WObj:=Wobj2; ENDPROC PROC fixopen() Set Do_fixopen; ENDPROC PROC fixclose() Reset Do_fixclose; ENDPROC PROC Work() MOVEJ A0 v150, z10, Tool0\WObj:=Wobj2; fixopen; waittime 2; MOVEL A1 v30, fine,Tool0\WObj:=Wobj2; fixclose; waittime 2; MOVEJ B0 v150, z10, Tool0\WObj:=Wobj2; MOVEj B1 v30, fine,Tool0\WObj:=Wobj2; fixopen; waittime 2; MoveJ PHome, v150, fine, Tool0\WObj:=Wobj2; ENDPROC ABB 机器人编程 04 程序解析: 1、此程序是典型的 ABB 机器人官方编程思路与方法。
2、思路清晰,结构编排明确,方便使用者阅读。 3、此程序有一个亮点,就是有一个回等待点的例行程序 rMoveHome,这个好处在于可以在手动状态 下,就能方便的回到机器人的等待位置。 4、有足够的写屏信息,很好地提示运行状态。 PROC Main() rInitial; rMoveHome; While True Do Velset 100,3000; AccSet 70, 70; rpickworkpiece; rplaceworkpiece; endwhile proc rpickworkpiece; if workpiece=false MoveJ pickup, v2000, z5, too10; A: TPErase; IF DI10_pickup=1 THEN (pickup 为 PLC 发来拾取信号) WaitTime 0; ELSEIF DI10_pickup=0 THEN TPWrite "PLC-pickup signal no ready."; GOTO A; ENDIF MoveJ Offs(pickup,0,0,300), v500, z200, too10; SetDo DO10_pickup1,1; wait time 1; workpiece=ture endif endproc proc rplaceworkpiece; if workpiece=ture MoveJ placemiddle, v2000, z5, too10; MoveJ placeworkpiece, v2000, z5, too10; MoveJ Offs(placeworkpiece,0,0,300), v500, z200, too10; SetDo DO10_pickup1,0; A:
TPErase; IF DI10_pickon=1 THEN (pickon 为 PLC 检测已放好信号) WaitTime 0; ELSEIF DI10_pickup=0 THEN TPWrite "PLC-pickON signal no ready."; GOTO A; workpiece=false ENDIF endproc PROC rInitial() TpReadFk nInput,"Is the pack_machine ready","","","","No","Yes";(机器是否准备好) If nInput=4 Then bReady:=False; stop; ElseIF nInput=5 then bReady:=True; ENDIF bFirstPickBoard:=True; TpReadFk nInput,"Do you want to place workpiece","","","","No","Yes";(机器人抓头是 否工件) If nInput=4 Then workpiece:=False; ElseIF nInput=5 then workpiece:=True; ENDPROC PROC rMoveHome() (定义原点) 此例行程序可以方便地回到等待位置 MoveJ pHome, v500, z50, tGripper; ENDPROC
ABB 机器人编程 05 程序解析: 1、此程序是典型的 ABB 机器人官方编程思路与方法。 2、思路清晰,结构编排明确,方便使用者阅读。 3、此程序共分了 3 个程序模块,清楚地将不同用途的语句分开,方便阅读,这种编程在进行一些复 杂系统的编程是非常有用的。 4、里面编程中运用了很多编程技巧,节省了机器人示教的时间,如使用 OFFS 功能。 5、在写屏信息提示方面也非常丰富。 6、此程序非常适合大家的参考与提高。 7、有一个小问题,缺少搬运重要的负荷重量设定数据。 MODULE Data 此模块专门用于存放程序数据的 !target CONST jointtarget home_pos := [ [ 0, 0, 0, 0, 90, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ]; CONST jointtarget delta_pos := [ [ 2, 2, 2, 2, 2, 2], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ]; CONST jointtarget jhome := [ [ 0, 0, 0, 0, 90, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ]; PERS robtarget roFetch:=[[2000,0,233.483269239532],[0,0,1,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]; PERS robtarget roDeFetch:=[[2000,1000,233.483269239532],[0,0,1,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]; VAR wzstationary home; VAR shapedata joint_space; VAR num nu_inhome; VAR bool flag1:=FALSE; ENDMODULE %%% %%% VERSION: 1 LANGUAGE: ENGLISH MODULE CalibData 此模块用于存放需要设定的程序数据 TASK PERS tooldata Tooldata_1:=[TRUE,[[0,0,1000],[1,0,0,0]],[1,[0,0,1],[1,0,0,0],0,0,0]]; TASK PERS wobjdata Workobject_1:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]]; ENDMODULE
分享到:
收藏