ABB机器人程序实例ROBOT studio 6.01(附带与工业相机网络通讯实例)

合集下载

工业机器人离线编程(ABB)3_1RobotStudio离线编程软件界面认识

工业机器人离线编程(ABB)3_1RobotStudio离线编程软件界面认识

二、实践操作
2、RobotStudio离线编程软件界面恢复默认
• 恢复操作方法1:自定义快捷工具栏→默认布局,恢复默认的窗口布局,如图3-10。 • 恢复操作方法2:自定义快捷工具栏→窗口,恢复选中的窗口布局,如图3-11。
三、总结
1、通二、实践操作
1、RobotStudio离线编程软件界面
• “建模”功能选项卡主要是创建工作站所需各种模型、包含创建、CAD操作、测量、 Freehand、机械等5个选项,如图3-4所示。
二、实践操作
1、RobotStudio离线编程软件界面
• “仿真”功能选项卡对工作站进行仿真操作、包含创建、仿真控制、碰撞监控、监控、 信号分析、录制短片、输送链跟踪等7个功能,如图3-5所示。
二、实践操作
1、RobotStudio离线编程软件界面
• “Add-Ins”功能选项卡、包含PowerPacs和VSTA的相关控件,如图3-8所示。
二、实践操作
2、RobotStudio离线编程软件默认界面的恢复
• 初学RobotStudio时,经常会遇到因误操作把界面操作窗口关闭的情况,从而无法找 到对应的操作对象和查看相关的信息。如图3-9所示。
知识回顾 Knowledge Review
二、实践操作
1、RobotStudio离线编程软件界面
• “控制器”功能选项卡主要是对虚拟控制器进行的相关操作、包含虚拟控制器(VC) 的同步、配置和分配给它的任务控制措施。它还包含用于管理真实控制器的控制功能, 如图3-6所示。
二、实践操作
1、RobotStudio离线编程软件界面
• “RAPID”功能选项卡主要是对RAPID程序进行操作、包含RAPID程序编辑、 RAPID文件的管理以及用于RAPID程序编程的其他控件,如图3-7所示。

ABB机器人程序实例.doc

ABB机器人程序实例.doc

ABB机器人程序实例.docMODULE MainModuleCONST robtarget pHome:=[[1525.42,272.18,1873.69],[4.42963E-05,0.699969,-0.7141 73,-2.80277E-05],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];CONST robtarget pPrePickMould:=[[1653.99,272.19,1779.41],[5.83312E-05,0.69997, -0.714172,-3.47922E-05],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtarget pPrePickClapboard:=[[2036.17,-741.24,1235.05],[0.678651,0.73435 ,-0.0119011,0.00467586],[-1,-2,2,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtarget pPickMould:=[[1943.13,173.08,630.89],[4.66987E-05,0.699977,-0.7 14166,-3.24109E-05],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+0 9,9E+09]];CONST robtarget pPickClapboard:=[[1943.19,173.08,620.72],[1.61422E-05,0.699977, -0.714165,-7.62858E-06],[0,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtargetpPrePlace:=[[785.90,-957.40,1722.38],[0.00231652,0.0492402,-0.99 8779,-0.00310842],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePlace10:=[[-277.40,-1202.57,1621.17],[0.00183571,-0.0139794, -0.999895,-0.00341408],[-2,-1,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePlace20:=[[-491.18,-1082.85,1505.90],[0.000663644,0.69408,0. 719887,0.00386364],[-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09 ,9E+09]];CONST robtarget pPlaceMould:=[[-92.13,-2580.19,1171.45],[0.000771646,0.713144,0 .701007,0.00383692], [-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+0 9,9E+09]];CONST robtarget pPlaceClapboard:=[[1585.08,1761.04,787.33],[0.00645323,-0.00552 996,-0.726358,-0.687263],[0,1,-1,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST robtarget pPrePlaceClapboard:=[[1017.30,955.85,1443.17],[1.0621E-05,-0.00 849593,-0.999964,4.01139E-05],[0,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePickClapboard10:=[[2257.17,-841.03,1579.56],[0.667517,0.744 57,-0.00360206,0.00487631],[-1,-1,2,0],[9E+09,9E+09,9E+09,9E+0 9,9E+09,9E+09]];CONST robtarget pPrePickMould10:=[[530.24,-1703.27,1762.63],[5.07659E-05,0.961 61,0.274421,2.37287E-05],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];CONST num nOffs:=100;PERS num nCurOffs:=100;CONST num nLayer:=0;PERS num nCurLayer:=0;CONST num nThickness:=40;V AR bool bTimeOut:=FALSE;PERS bool bDryCycle:=FALSE;V AR intnum iDryCycle;V AR intnum iResDryCycle;V AR intnum iVacuum;PERS tooldata tGripper:=[TRUE,[[0,0,100],[1,0,0,0]],[88.5,[-3.7,-1.4,132.1],[1,0,0,0],5.5,17.831,25.067]];PROC main()rInitAll;WHILE TRUE DOIF siDryCycle=1 or nCurLayer<1 thenrPickClapboard;ELSErPickMould;ENDIFWaittime 0.2;ENDWHILEENDPROCPROC rPickMould()DIWait diMouldready,1,3,"entrance Conveyer","ready for pick";DIWait diPlaceReady,1,3,"exit Conveyer","ready for remove";MoveJ pPrePickMould, v1500, z50, tGripper;IF BitCheck(nCurlayer,1) THENnCurOffs:=nOffs;ELSEnCurOffs:=-nOffs;ENDIFMoveLoffs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness),v1000, z50, tGripper;MoveLoffs(pPickMould,0,nCurOffs,(nCurLayer-1)*nThickness), v200, fine, tGripper;GripClose;Decr nCurLayer;MoveLoffs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness),v200, z50, tGripper;MoveJ pPrePickMould, v1000, z50, tGripper;DIWait diPlaceReady,1,3,"exit Conveyer","ready for remove";MoveJ pPrePlace10, v1500, z10, tGripper;MoveL offs(pPlaceMould,0,0,100), v1500, z10, tGripper;MoveL pPlaceMould, v200, fine, tGripper;GripOpen;MoveL offs(pPlaceMould,0,0,100), v200, z10, tGripper;MoveL pPrePlace10, v1500, z10, tGripper;MoveJ pPrePickMould, v1500, z10, tGripper;PulseDO\PLength:=2, doMouldPlaceOK;ENDPROCPROC rPickClapboard()DIWait diMouldready,1,3,"entrance Conveyer","ready for pick";MoveL offs(pPickClapboard,0,0,100), v1000, z50, tGripper;MoveL pPickClapboard, v200, fine, tGripper;GripClose;MoveL offs(pPickClapboard,0,0,100) ,v200, z50, tGripper;MoveL offs(pPickClapboard,0,0,500) ,v1000, z50, tGripper;MoveL pPrePlaceClapboard, v1000, z10, tGripper;DIWait diClapboardReady, 1, 3, "exit Conveyer", "ready for remove";MoveL offs(pPlaceClapboard,-700,-200,250), v1000, z10,tGripper;MoveL offs(pPlaceClapboard,00,-10,100), v1000, z10, tGripper;MoveL pPlaceClapboard, v100, fine, tGripper;GripOpen;MoveL offs(pPlaceClapboard,0,-50,100), v1000, z10, tGripper;MoveL offs(pPlaceClapboard,-700,-200,250), v1000, z10, tGripper;MoveL pPrePlaceClapboard, v1000, z10, tGripper;PulseDO\PLength:=1.0, doClapboardPickOK;MoveJ pHome, v1500, fine, tGripper;PulseDO\PLength:=1.0, doUnStackOk;WaitTime 2;DIWait diMouldready,0,3,"exit Conveyer","ready for remove";nCurLayer:=nLayer;ENDPROCPROC rInitAll()IF diVacuum1=0 THENWaitTime 1;ELSEErrWrite "The Rob1 gripper error! " ,"The gripper is not opened!"\RL2:="Check the gripper signal postion ."\RL3:=" open the gripper manually and take away the part from gripper.";Stop;Exit;ENDIFrMoveHome;nCurLayer:=nLayer;IDelete iVacuum;CONNECT iVacuum WITH tLostPart;ISignalDI diVacuum1, 1, iVacuum;ISleep iVacuum;ENDPROCROC GripClose()SetDO doVacuum,1;SetDO doBlow,0;WaitUntildiVacuum1=1\MaxTime:=10\TimeFlag:=bTimeOut;IF bTimeOut THENErrWrite "Rob Gripper Signal error ! " ,"Fatal error in Gripper"\RL2:="Check the gripper signal postion ."\RL3:=" change a new sensor .";Stop;ENDIFWaittime 0.5;IWatch iVacuum;ENDPROCPROC GripOpen()ISleep iVacuum;SetDO doVacuum,0;PulseDO \PLength:=2.0, doBlow;WaitUntil diVacuum1=0 \MaxTime:=5\TimeFlag:=bTimeOut;IF bTimeOut THENErrWrite "Rob Gripper Signal error ! " ,"Fatal error in Gripper"\RL2:="Check the gripper signal postion ."\RL3:=" change a new sensor .";Stop;ENDIFWaittime 0.5;ENDPROCPROC rMoveHome()V AR string HomeOffset;CONST num MinX:=-500;CONST num MaxX:=500;CONST num MinY:=-500;CONST num MaxY:=500;CONST num MinZ:=500;CONST num MaxZ:=1200;V AR robtarget ActualPos;VelSet 100,500;AccSet 70, 70;IF bCurrentPos(pHome,tGripper,50)=TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIF bCurrentPos(pPrePickMould,tGripper,50\wobj:=Wobj0)= TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIFbCurrentPos(pPrePickClapboard,tGripper,100\wobj:=Wobj0) = TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIF bCurrentPos(pPreplace,tGripper,100\wobj:=Wobj0)= TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIF bCurrentPos(pHome,tGripper,100)=FALSE THEN! If no known position is found, check if the robot is in a specified! window and move him to the first position in the program ActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0);IF ActualPos.trans.xMaxX OR ActualPos.trans.yMaxY OR ActualPos.trans.zMaxZ THENHomeOffset:="";IF ActualPos.trans.x<="">HomeOffset:=HomeOffset+"X :"+NumToStr(MinX-ActualPos.trans. x,0)+" ";ELSEIF ActualPos.trans.x>MaxX THENHomeOffset:=HomeOffset+"X :"+NumT oStr(MaxX-ActualPos.trans .x,0)+" ";ELSEHomeOffset:=HomeOffset+"X : OK ";ENDIFIF ActualPos.trans.y<="">HomeOffset:=HomeOffset+"Y :"+NumToStr(MinY-ActualPos.trans. y,0)+" ";ELSEIF ActualPos.trans.y>MaxY THENHomeOffset:=HomeOffset+"Y :"+NumT oStr(MaxY-ActualPos.trans .y,0)+" ";ELSEHomeOffset:=HomeOffset+"Y : OK ";ENDIFIF ActualPos.trans.z<="">HomeOffset:=HomeOffset+"Z :"+NumToStr(MinZ-ActualPos.trans. z,0)+" ";ELSEIF ActualPos.trans.z>MaxZ THENHomeOffset:=HomeOffset+"Z :"+NumT oStr(MaxZ-ActualPos.trans. z,0)+" ";ELSEHomeOffset:=HomeOffset+"Z : OK ";ENDIFErrWrite HomeOffset,"Move robot manually near homeposition";WHILE OpMode()<>OP_MAN_PROG DOTPErase;TPWrite "Please switch robot to Manual mode";!TPErase;Stop;ENDWHILEStop;MoveJ pHome,v500,fine,tGripper;!npallet:=4;ActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0);WHILE OpMode()<>OP_AUTO DOTPErase;TPWrite "Please switch robot to AUTO mode";!TPErase;Stop;ENDWHILEENDIFENDIFVelSet 100,3000;ENDPROCTRAP tLostPartErrWrite "Part lost!" ,"Fatal error inGripper"\RL2:="Check the gripper ."\RL3:=" check the vacuum .";Stop;ENDTRAPENDMODULE。

ABBrobotstudio使用详细步骤

ABBrobotstudio使用详细步骤

ABBrobotstudio使⽤详细步骤搬运码垛⼯作站建模
1、创建机器⼈系统
2、创建动态输送链
3、创建动态夹具
4、⼯作站逻辑连接
5、添加IO(设置好需重启)
6、⽰教⽬标点(同步到RAPID)
7、RAPID编程
⼀、创建机器⼈系统
1、创建空⼯作站
2、导⼊IRB 260机器⼈模型
3、从布局创建机器⼈系统,勾选Chinese和709-1⽹络
⼆、创建动态输送链
1、添加输送链并修改位置
2、创建600*400*200的物料并修改位置
3、添加⼀个smart组件
4、添加source组件
5、设置物料本地原点
6、添加LINEMOVER和QUEUE组件
7设置LINEMOVER属性
8、添加⾯传感器组件
9、设置输送链不能被传感器检测
10、设置SC_输送链的属性连接
11、设置信号连接
12、添加信号处理组件,⽤于检测传感器下降沿
13、传感器下降沿触发source进⾏copy
14、传感器与SC输送链的输出联系
15、添加仿真开始结束组件,⽤于激活传感器
16、添加置位复位组件,对仿真开始结束信号进⾏保持。

ABB机器人程序编写实战

ABB机器人程序编写实战

疏散现场
如果发生事故或危险情况 ,应立即疏散现场,并采 取必要的急救措施。
报告事故
对于任何事故或危险情况 ,应立即向上级主管部门 报告,以便及时采取措施 防止类似事故再次发生。
06
ABB机器人发展趋势与展 望
新技术融合
机器人与物联网技术融合
通过物联网技术,实现机器人远程监控、数据采集和智能决策,提升机器人智 能化水平。
复杂轨迹编程
总结词
复杂轨迹编程涉及到机器人的多轴联动、协同作业等 高级应用,需要精确控制机器人的姿态和速度。
详细描述
在复杂轨迹编程中,需要实现机器人的多轴联动和协 同作业等高级应用。这需要精确控制机器人的姿态和 速度,以实现复杂轨迹的跟踪和控制。同时,还需要 考虑机器人的动力学特性和运动稳定性,以确保机器 人在高速运动和高精度操作时的安全性和稳定性。复 杂轨迹编程的应用可以提高机器人的工作效率和灵活 性,使其能够适应更多复杂和多样化的任务场景。
变量
变量是用于存储数据的标识符,具有 名称、数据类型和值。在RAPID语言 中,变量可以进行声明、赋值和传递 。
程序控制结构
顺序结构
按照程序代码的顺序执行。
选择结构
根据条件判断选择执行不同的 代码块。
循环结构
重复执行某段代码直到满足特 定条件。
跳转结构
根据需要跳过某些代码或提前 结束程序执行。
函数与子程序
ABB机器人程序编写实战
汇报人: 202X-12-30
contents
目录
• ABB机器人简介 • ABB机器人编程语言 • ABB机器人编程实战 • ABB机器人调试与优化 • ABB机器人安全操作 • ABB机器人发展趋势与展望
01

ABBrobotstudio使用详细步骤

ABBrobotstudio使用详细步骤

搬运码垛工作站建模1、创建机器人系统2、创建动态输送链3、创建动态夹具4、工作站逻辑连接5、添加IO(设置好需重启)6、示教目标点(同步到RAPID)7、RAPID编程一、创建机器人系统1、创建空工作站2、导入IRB 260机器人模型3、从布局创建机器人系统,勾选Chinese和709-1网络二、创建动态输送链1、添加输送链并修改位置2、创建600*400*200的物料并修改位置3、添加一个smart组件4、添加source组件5、设置物料本地原点6、添加LINEMOVER和QUEUE组件7设置LINEMOVER属性8、添加面传感器组件9、设置输送链不能被传感器检测10、设置SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿13、传感器下降沿触发source进行copy14、传感器与SC输送链的输出联系15、添加仿真开始结束组件,用于激活传感器16、添加置位复位组件,对仿真开始结束信号进行保持17、18、进行仿真设定选择SC——输送链进行验证三、创建动态夹具1、先制作一个吸盘模型,然后设置成工具,并安装到机器人法拉盘2、添加SMART组件3、添加ATTACHER和DETACHER组件4、设置属性5、添加一个线传感器组件6、线传感器设置属性7、设置吸盘工具不能被传感器检测8、把线传感器安装到吸盘(不更新位置,保持当前位置)9、设置属性连接10、添加信号及连接11、添加信号处理取非和锁定组件12、继续信号连接13、添加一个示教物料14、应用手动线性验证SC_工具四、工作站逻辑连接五、参考代码MODULE MainMoudlePERS tooldatatGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327,116.889],[1,0,0,0],0,0,0]];!吸盘工具数据PERS loaddata LoadEmpty:=[0.01,[0,0,1],[1,0,0,0],0,0,0];PERS loaddata LoadFull:=[40,[0,0,50],[1,0,0,0],0,0,0];!有效载荷数据PERS robtarget pHome:=[[1620.00,-0.00,1331.59],[1.27986E-06,-0.707107,-0.707107,1.27986E-06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];!基准点PERS robtarget pActualPos:=[[1620,-1.87531E-14,1331.59],[1.27986E-06,-0.707107,-0.707107,1.27986E-06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];!实际点PERS robtargetpPick1:=[[1488.007792464,376.826660408,476.964684195],[0,0.707106307,0.707107256,0] ,[0,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];!1路拾取目标点PERS robtarget pPlace1:=[[-292.446,1263.27,55.4492],[0,0.707107,0.707106,0],[1,0,2,0],[9E+09,9E+09,9E+09,9E+09,9 E+09,9E+09]];!1路放置基准点PERS robtarget pBase1_0:=[[-292.446294945,1263.272085268,55.449220723],[0,0.707107387,0.707106176,0],[1,0,2,0],[9 E9,9E9,9E9,9E9,9E9,9E9]];!1路放置0度姿态PERS robtarget pBase1_90:=[[-391.976797324,1362.469634994,55.449159414],[0,1,-0.000030621,0],[1,0,3,0],[9E9,9E9,9E9,9E9,9E9,9E9]];!1路放置90度姿态PERS robtarget pPick2:=[[1488.013130905,-358.406014736,476.965039287],[0,0.707106307,0.707107256,0],[-1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];PERS robtarget pPlace2:=[[-317.378,-1857.99,55.449],[0,0.707108,0.707106,0],[-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];PERS robtarget pBase2_0:=[[-317.378137718,-1857.993871961,55.448967354],[0,0.707107745,0.707105817,0],[-2,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];PERS robtarget pBase2_90:=[[-407.525988074,-1755.902485322,55.449282402],[0,1,-0.000031217,0],[-2,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];PERS speeddata MinSpeed:=[1000,300,5000,1000];PERS speeddata MidSpeed:=[2500,400,5000,1000];PERS speeddata MaxSpeed:=[4000,500,5000,1000];!搬运速度定义PERS bool bPalletFull1:=FALSE;PERS bool bPalletFull2:=FALSE;!逻辑布尔量,拾取后为UE,放置后为FALSEPERS num nCount1:=1;PERS num nCount2:=1;!输送链计数PROC Main()rInitAll;WHILE TRUE DOIF diBoxInPos1=1 AND diPalletInPos1=1 AND bPalletFull1=FALSE THEN rPick1;rPlace1;ENDIFIF diBoxInPos2=1 AND diPalletInPos2=1 AND bPalletFull2=FALSE THEN rPick2;rPlace2;ENDIFWaitTime 0.1;ENDWHILEENDPROCPROC rInitAll()Reset doGrip;pActualPos:=CRobT(\tool:=tGrip);pActualPos.trans.z:=pHome.trans.z;MoveL pActualPos,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pHome,MidSpeed,fine,tGrip\WObj:=wobj0;bPalletFull1:=FALSE;nCount1:=1;bPalletFull2:=FALSE;nCount2:=1;ENDPROCPROC rPick1()MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0;MoveL pPick1,MinSpeed,fine,tGrip\WObj:=wobj0;Set doGrip;WaitTime 0.3;GripLoad LoadFull;MoveL Offs(pPick1,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0; ENDPROCPROC rPick2()MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; MoveL pPick2,MinSpeed,fine,tGrip\WObj:=wobj0;Set doGrip;WaitTime 0.3;GripLoad LoadFull;MoveL Offs(pPick2,0,0,400),MinSpeed,z50,tGrip\WObj:=wobj0; ENDPROCPROC rPlace1()rPosition1;MoveJ Offs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveL pPlace1,MinSpeed,fine,tGrip\WObj:=wobj0;Reset doGrip;WaitTime 0.3;GripLoad LoadEmpty;MoveL Offs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveJ Offs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; nCount1:=nCount1+1;IF nCount1>20 THENbPalletFull1:=TRUE;ENDIFENDPROCPROC rPlace2()rPosition2;MoveJ Offs(pPlace2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; MoveL pPlace2,MinSpeed,fine,tGrip\WObj:=wobj0;Reset doGrip;WaitTime 0.3;GripLoad LoadEmpty;MoveL Offs(pPlace2,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveJ Offs(pPick2,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; nCount2:=nCount2+1;IF nCount2>20 THENbPalletFull2:=TRUE;ENDIFENDPROCPROC rPosition1()TEST nCount1CASE 1:pPlace1:=Offs(pBase1_0,0,0,0);CASE 2:pPlace1:=Offs(pBase1_0,600+10,0,0);CASE 3:pPlace1:=Offs(pBase1_90,0,400+10,0);CASE 4:pPlace1:=Offs(pBase1_90,400+10,400+10,0);CASE 5:pPlace1:=Offs(pBase1_90,800+20,400+10,0);CASE 6:pPlace1:=Offs(pBase1_0,0,600+10,200);CASE 7:pPlace1:=Offs(pBase1_0,600+10,600+10,200);CASE 8:pPlace1:=Offs(pBase1_90,0,0,200);CASE 9:pPlace1:=Offs(pBase1_90,400+10,0,200);CASE 10:pPlace1:=Offs(pBase1_90,800+20,0,200);CASE 11:pPlace1:=Offs(pBase1_0,0,0,400);CASE 12:pPlace1:=Offs(pBase1_0,600+10,0,400);CASE 13:pPlace1:=Offs(pBase1_90,0,400+10,400);CASE 14:pPlace1:=Offs(pBase1_90,400+10,400+10,400);CASE 15:pPlace1:=Offs(pBase1_90,800+20,400+10,400);CASE 16:pPlace1:=Offs(pBase1_0,0,600+10,600);CASE 17:pPlace1:=Offs(pBase1_0,600+10,600+10,600);CASE 18:pPlace1:=Offs(pBase1_90,0,0,600);CASE 19:pPlace1:=Offs(pBase1_90,400+10,0,600);CASE 20:pPlace1:=Offs(pBase1_90,800+20,0,600);DEFAULT:TPErase;TPWrite "the Counter of line 1 is error,please check it!"; Stop;ENDPROCPROC rPosition2()TEST nCount2CASE 1:pPlace2:=Offs(pBase2_0,0,0,0);CASE 2:pPlace2:=Offs(pBase2_0,600+10,0,0);CASE 3:pPlace2:=Offs(pBase2_90,0,400+10,0);CASE 4:pPlace2:=Offs(pBase2_90,400+10,400+10,0); CASE 5:pPlace2:=Offs(pBase2_90,800+20,400+10,0); CASE 6:pPlace2:=Offs(pBase2_0,0,600+10,200);CASE 7:pPlace2:=Offs(pBase2_0,600+10,600+10,200); CASE 8:pPlace2:=Offs(pBase2_90,0,0,200);CASE 9:pPlace2:=Offs(pBase2_90,400+10,0,200);CASE 10:pPlace2:=Offs(pBase2_90,800+20,0,200);CASE 11:pPlace2:=Offs(pBase2_0,0,0,400);CASE 12:pPlace2:=Offs(pBase2_0,600+10,0,400);CASE 13:pPlace2:=Offs(pBase2_90,0,400+10,400);pPlace2:=Offs(pBase2_90,400+10,400+10,400);CASE 15:pPlace2:=Offs(pBase2_90,800+20,400+10,400);CASE 16:pPlace2:=Offs(pBase2_0,0,600+10,600);CASE 17:pPlace2:=Offs(pBase2_0,600+10,600+10,600);CASE 18:pPlace2:=Offs(pBase2_90,0,0,600);CASE 19:pPlace2:=Offs(pBase2_90,400+10,0,600);CASE 20:pPlace2:=Offs(pBase2_90,800+20,0,600);DEFAULT:TPErase;TPWrite "the Counter of line 1 is error,please check it!"; Stop;ENDTESTENDPROCPROC rModify()MoveJ pHome,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pPick1,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pBase1_0,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pBase1_90,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pPick2,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pBase2_0,MinSpeed,fine,tGrip\WObj:=wobj0;MoveJ pBase2_90,MinSpeed,fine,tGrip\WObj:=wobj0;ENDPROCENDMODULE。

Abb_robotstudio安装教程

Abb_robotstudio安装教程

A b b_r o b o t s t u d i o安
装教程
-CAL-FENGHAI.-(YICAI)-Company One1
Abb robotstudio安装教程
1、各个版本的robot安装方式是一样的。

2、解压安装包
3、
4、选择语言为中文
5、
6、选择安装产品
7、
8、首先安装
robotware
9、点击下一步
10、点击下一步
11、在选择安装路径时只需要把C改为D就可以了。

12、安装robot完毕后安装robotstudio回到初始界面
13、
14、安装robotstudio
15、点击下一步
16、下一步
17、将路径的C改为D,方法如上
18、64位windows系统会出现两个图标,
19、可以同时使用
20、32位系统只有一个图标,还是正常使用。

21、打开软件点击选项
22、点击授权
23、查看软件使用到期时间。

24、关闭软件,破解开始。

25、在开始下输入regedit回车
26、进入注册表编辑器
27、
28、在这里32位系统和64位系统注册表文件路径有所不
同,现在以64位系统为例
29、
30、
31、
32、
33、双击打开后进入编辑
34、
35、破解完毕打开robot
36、选项---》授权-查看已安装许可证
37、时间变为2029年破解成功.
38、注意:32位系统没有此步骤直接跳到下
一步
11。

ABB机器人学习课件--RobotStudio

ABB机器人学习课件--RobotStudio

4.单击“安装 产品”
5.先安装 RobotWare 按提示一步 步确定,完 成安装
6.安装 RobotWare 后,在点击 RobotStudio 按提示一步 步确定,完 成安装
1.4

破解RobotStudio软件
打开注册表
1.点击开始菜单, 输入regedit, 按回车键
2.弹出的对话框 点击“是”
1.输入系统名称: “MyFirst-system”
2.单击下一个
1.单击下一个
1.单击“选项…”
2.选择机器人的语言 “644-5 Chinese”
1.选择机器人 DeviceNet总线 “709-x DeviceNet” 其中的X表示几个通道, 默认是单通道的
1.选择机器人 Profibus总线 “840-2 Profibus„” 可以用于与外部设备 通过总线交换数据
图将随鼠标移动
改变视角操作
方法1:将鼠标移到视图中,按住键盘control键+Shitft+鼠标左键, 移动鼠标,视图的视角将随鼠标改变 方法2:将鼠标移到视图,
移动鼠标,视图的视角将随鼠标改变
回到基本视角的操作
将鼠标移到视图中,单击鼠标右键,选择查看方向。根据需要,点
选相应的视图查看方向。
2.3
RobotStudio添加机器人控制柜和测距的操作
添加机器人控制柜的操作
注:机器人控制柜在此处无电气特性,在规划布局中起到空间视觉 作用。
1.单击“导入模型库”
2.单击“设备”
3.在弹出的图形框中,找到 IRC5控制柜,选择IRB1410的 控制柜IRC5 Compact
4.右键单击要放置的几何模型, 弹出菜单选择“放置”命令,选 择“两点”法

ABB机器人程序实例ROBOT studio 6.01(附带与工业相机网络通讯实例)(完整资料).doc

ABB机器人程序实例ROBOT studio 6.01(附带与工业相机网络通讯实例)(完整资料).doc

【最新整理,下载后即可编辑】ABB机器人(ROBOT studio 6.01)程序实例MODULE MainModulePERS tooldatatGripper:=[TRUE,[[0.533078,1.51617,583.739],[1,0,0,0]],[30,[0,0,50],[1, 0,0,0],0,0,0]];TASK PERS wobjdataVisionWobj:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[-934.534,1807.34,-7 6.7707],[0.400996,0.0128267,-0.0292473,-0.915523]]];TASK PERS wobjdataWobjCompressor1:=[FALSE,TRUE,"",[[518.656,-1088.9,164.25],[0,0,0 ,1]],[[686.651,296.298,-588.529],[0.917114,1.69419E-06,-7.35001E-05,-0.398626]]];TASK PERS wobjdataWobjCompressor2:=[FALSE,TRUE,"",[[518.656,-1088.9,164.25],[0,0,0 ,1]],[[-944.871,-657.402,-323.406],[0.918098,-1.98999E-05,-6.49686E-06 ,0.396353]]];PERS wobjdata WobjCompressor;VAR robtarget pActualPos;VAR socketdev server_socket;VAR socketdev client_socket;VAR string client_ip;VAR string stReceived;VAR num NumCharacters:=9;VAR bool bOK;PERS num nXOffs;PERS num nYOffs;PERS num nAngleOffs;VAR string XData:="";VAR string YData:="";VAR string AngleData:="";VAR num nPresenceOrAbsence; PERS num nPickH:=-400;PERS num nCountX;PERS num nCountY;PERS num nCountZ;PERS num nCount;VAR num nPlaceNo;PERS bool bSMPreOrAbs;PERS bool bInpos;VAR robtarget PVision;VAR robtarget Vision;VAR robtarget ppPick;VAR robtarget pPick;PERS robtarget Pick;PERS robtarget ErCiDingWeiPlace; PERS robtarget ErCiDingWeiPick; PERS robtarget pPlace;PERS robtarget PlaceVision; PERS robtarget PZhanban; PERS robtarget PZhanbanUp; PERS robtarget PZhanbanDown; PERS robtarget PlaceZhanban; PERS robtarget Place;PERS bool bKindChoose;VAR num nAngle;VAR num nX;VAR num nCamOut;VAR num nInpos;VAR num nTotalPalletHigh;VAR num nPalletHigh;PERS num nPalletHighUp;PERS num nPalletHighDown;VAR num Compensation{8,3};VAR num CompensationTwo{8,3};PERS numCompensationErr{8,3}:=[[999999,999999,999999],[999999,999999,999 999],[999999,999999,999999],[999999,999999,999999],[999999,999999, 999999],[999999,999999,999999],[999999,999999,999999],[999999,999 999,999999]];PERS jointtargetjposHome:=[[0,0,0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09 ]];CONST robtargetpHome:=[[621.23,-975.96,1166.44],[0.00703884,-0.385671,-0.922573,-0 .00826231],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanSafe:=[[-162.69,-1703.07,2270.38],[0.0109452,-0.955357,-0.2 95179,-0.00645602],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];CONST robtargetVisionA:=[[-228.96,94.47,643.11],[0.00434955,-0.699954,0.714102,-0.0 101798],[-2,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPickA:=[[90.09,79.65,61.29],[0.0102135,0.00299714,0.999935,-0.004170 93],[-2,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceA:=[[-644.46,-1019.60,396.56],[0.00841448,-0.692574,0.721298,0.000680825],[-1,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanUpA:=[[549.64,541.39,821.21],[0.000808037,-0.999985,-0.00 498684,-0.00209158],[-2,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09, 9E+09]];CONST robtargetPZhanbanDownA:=[[548.40,560.53,179.18],[0.00417276,0.999929,-0.0 0436864,0.0102239],[-2,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];CONST robtargetPlaceZhanbanA:=[[2456.73,-1154.76,205.32],[0.0106126,-0.0247295,-0. 999603,0.00838785],[1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];PERS numCompensationA{8,3}:=[[0,0,0],[210,136,0],[430,264,99999999],[645,40 3,99999999],[855,533,99999999],[99999999,670,99999999],[99999999,8 00,99999999],[99999999,936,99999999]];PERS numCompensationA1{8,3}:=[[860,936,0],[0,0,0],[215,133,99999999],[430,2 64,99999999],[645,403,99999999],[99999999,533,99999999],[99999999, 670,99999999],[99999999,800,99999999]];PERS numCompensationA2{8,3}:=[[860,0,0],[0,133,0],[215,264,99999999],[430,4 03,99999999],[645,533,99999999],[99999999,670,99999999],[99999999, 800,99999999],[99999999,936,99999999]];CONST num nPalletHighUpA:=100;CONST num nPalletHighDownA:=200;CONST robtargetVisionB:=[[936.63,959.75,378.90],[0.00373262,0.105479,-0.994406,-0.0 0407233],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPickB:=[[1180.22,1009.95,213.74],[0.00373443,0.1055,-0.994404,-0.004 06331],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceB:=[[-1194.30,-1552.83,582.17],[0.0062614,0.795938,-0.605346,-0. 000999941],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanUpB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99 997,-0.000606164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E +09]];CONST robtargetPZhanbanDownB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0. 99997,-0.000606164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9 E+09]];CONST robtargetPlaceZhanbanB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99 997,-0.000606164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E +09]];PERS numCompensationB{8,3}:=[[0,0,300],[210,136,0],[430,264,99999999],[645, 403,99999999],[855,533,99999999],[99999999,670,99999999],[9999999 9,800,99999999],[99999999,936,99999999]];PERS numCompensationB1{8,3}:=[[860,936,300],[0,0,0],[215,133,99999999],[430 ,264,99999999],[645,403,99999999],[99999999,533,99999999],[9999999 9,670,99999999],[99999999,800,99999999]];PERS numCompensationB2{8,3}:=[[860,0,300],[0,133,0],[215,264,99999999],[430 ,403,99999999],[645,533,99999999],[99999999,670,99999999],[9999999 9,800,99999999],[99999999,936,99999999]];CONST num nPalletHighUpB:=100;CONST num nPalletHighDownB:=200;PERS speeddata vMinEmpty:=[1300,100,6000,1000];PERS speeddata vMidEmpty:=[1400,100,6000,1000];PERS speeddata vMaxEmpty:=[1500,100,6000,1000];PERS speeddata vBigMaxEmpty:=[1500,100,6000,1000];PERS speeddata vMinLoad:=[1200,100,6000,1000];PERS speeddata vMaxLoad:=[1300,100,6000,1000];PERS speeddata vBigMaxLoad:=[1400,100,6000,1000];TASK PERS wobjdatawobj1:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[1984.06,-1180.48,453.803] ,[0.661114,-0.659907,-0.252753,0.252124]]];PROC Main()rInitAll;WHILE TRUE DOrPickCal;rPick;ENDWHILEWaitTime 0.3;ENDPROCPROC rInitAll()AccSet 60,100;Compensation:=CompensationErr;CompensationTwo:=CompensationErr;reg1 :=0;reg2 :=0;nCountX:=1;nCountY:=1;nCount:=0;nCountZ:=1;nTotalPalletHigh:=0;nPalletHigh:=0;nInpos:=0;rKindChoose;rCheckHomePos;Reset do00_JawsOpen ;Reset do01_JawsClose ;Set do00_JawsOpen ;Reset do02_BigJaws1 ;WaitTime 0.3;Reset do03_BigJaws2;Reset do00_JawsOpen ;Reset do13_Placing;Reset do12_PlaceOK;ENDPROCPROC rPickCal ()Set do00_JawsOpen ;bSMPreOrAbs:=TRUE;IF nCount =0 THENrCompressorInPos;ENDIFWHILE bSMPreOrAbs=TRUE DOIncr nCount ;IF nCount =1 THENMoveL Offs(Vision ,0,0,Compensation{nCountZ,3}+100) ,vBigMaxEmpty ,z20 , tGripper\WObj:=WobjCompressor ;MoveJ Offs(Vision ,0,0,Compensation{nCountZ,3}),vBigMaxEmpty ,fine ,tGripper\WObj:=WobjCompressor ;GOTO C;ENDIFIncr reg2 ;rnXCal ;pVision:=Offs(Vision ,Compensation{nCountX,1} ,Compensation{nCountY,2} , Compensation{nCountZ,3});MoveLpVision,vMidEmpty ,fine,tGripper\WObj:=WobjCompressor;C:nPresenceOrAbsence:=1;! rServer;! socketsend client_socket \Str:="T1";! socketReceive client_socket \Str:=stReceived;! bOK:=StrToVal(stReceived,nPresenceOrAbsence);! IF nPresenceOrAbsence =2 OR nPresenceOrAbsence =3 THEN! bSMPreOrAbs:=FALSE ;! ELSEIF nPresenceOrAbsence =5 THEN! bSMPreOrAbs:=TRUE ;! IF di02_PhotoelectricSensor =1 THEN! TPErase ;! TPWrite "The camera get picture there is a problem, Please check it!(2) ";! SystemStopAction \Halt ;! ELSEIF di02_PhotoelectricSensor =0 THEN! reg2 :=0;! ENDIF! ELSEIF nPresenceOrAbsence =1 OR nPresenceOrAbsence =4 THEN! TPErase ;! TPWrite "The Camera is wrong, and camera will restart ,";! TPWrite "after a few seconds the robot will continue ";! Stop ;! ENDIFWaitTime 1;IF di02_PhotoelectricSensor =1 THENbSMPreOrAbs:=FALSE ;ELSEbSMPreOrAbs:=TRUE ;ENDIFIncr nCountX;! TEST di16_giBCD! CASE 1:IF nCountX=6 THENnCountX :=1;Incr nCountY;IF nCountY=9 THENnCountY :=1;SystemStopAction \Halt;ENDIFENDIFIF nCount =40 THENnCount :=0;Incr nCountZ;nCountX:=1;nCountY:=1;nInpos:=0;IF reg2=0 THENrZhanban ;IF nCountZ=2 THENrCompressorOutPos;nCountZ:=1;ENDIFENDIFreg2:=0;ENDIF! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTENDWHILEENDPROCPROC rPick ()! TEST di16_giBCD! CASE 1:IF nCountX=1 THENCompensationTwo:=CompensationA1;ELSECompensationTwo:=CompensationA2;ENDIFpPick:=Offs(Pick,CompensationTwo{nCountX,1}+nX ,CompensationTwo{nCo untY,2},CompensationTwo{nCountZ,3});! CASE 2:! pPick:=Offs(Pick,CompensationTwo{nCountX,1}+nX ,CompensationTwo{nCo untY,2},CompensationTwo{nCountZ,3});! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTWaitTime 0.2;nCamOut:=1;! rServer;! socketsend client_socket \Str:="T2";! socketReceive client_socket \Str:=stReceived;! XData:= StrPart(stReceived, 3, NumCharacters);! YData:= StrPart(stReceived, NumCharacters, NumCharacters);! AngleData:= StrPart(stReceived, 2*NumCharacters, NumCharacters);! bOK:=StrToVal(XData,nXOffs);! bOK:=StrToVal(YData,nYOffs);! bOK:=StrToVal(AngleData,nAngleOffs);rAngle;! ppPick :=RelTool (pPick,0,0,0\Rz:= -nAngleOffs+nAngle);ppPick :=RelTool (pPick,0,0,0\Rz:= nAngle);ConfL\Off;! MoveL Offs (ppPick,nXOffs ,nYOffs,120), vMinEmpty,fine , tGripper\WObj:=WobjCompressor;! MoveL Offs (ppPick,nXOffs ,nYOffs,0), v100, fine , tGripper\WObj:=WobjCompressor;MoveL Offs(ppPick,0 ,0,200), vMinEmpty, fine , tGripper\WObj:=WobjCompressor;MoveL Offs(ppPick,0 ,0,0), v100, fine ,tGripper\WObj:=WobjCompressor;Reset do00_JawsOpen ;Set do01_JawsClose ;WaitDI di00_JawsInClose,1;! MoveL Offs(ppPick,nXOffs,nYOffs,80),vMinLoad ,z10 ,tGripper\WObj:=Wobj Compressor ;! MoveL Offs(ppPick,nXOffs,nYOffs,400),vMaxLoad ,fine ,tGripper\WObj:=Wo bjCompressor ;MoveL Offs(ppPick,0,0,80),vMinLoad ,z10 ,tGripper\WObj:=WobjCompressor ;MoveL Offs(ppPick,0,0,400),vMaxLoad ,fine ,tGripper\WObj:=WobjCompresso r ;ConfL\On;rPlace;! TEST di16_giBCD! CASE 1:IF nCount =40 THENnCount :=0;nCountX:=1;nCountY:=1;reg2:=0;nInpos:=0;rZhanban ;IF nCountZ=2 THENrCompressorOutPos;nCountZ:=1;ENDIFENDIF! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTENDPROCPROC rPlace ()MoveJ Offs (Place,0,0,200) ,vMaxLoad ,z40 , tGripper\WObj:= WobjCompressor ;Set do13_Placing;Waitdi di06_AssemblyLineOK, 0;MoveL Offs (Place,0,0,50) ,vMinLoad ,z5 , tGripper\WObj:= WobjCompressor;MoveL Place ,v100 ,fine , tGripper\WObj:= WobjCompressor;Reset do01_JawsClose ;Set do00_JawsOpen ;WaitDI di01_JawsInOpen ,1;MoveL Offs (Place,0,0,300) ,vMinEmpty ,fine, tGripper\WObj:= WobjCompressor;Reset do13_Placing ;WaitTime 0.4;Reset do00_JawsOpen ;ENDPROCPROC rnXCal()! TEST di16_giBCD! CASE 1:TEST nCountCASE1,2,3,4,5,11,12,13,14,15,21,22,23,24,25,31,32,33,34,35 :nX:=0;CASE 6,7,8,9,10,16,17,18,19,20,26,27,28,29,30,36,37,38,39,40 :nX:=65;ENDTEST! ENDTESTENDPROCPROC rAngle()! TEST di16_giBCD! CASE 1:TEST nCountCASE1,2,3,4,5,11,12,13,14,15,21,22,23,24,25,31,32,33,34,35 :nAngle:=0;CASE 6,7,8,9,10,16,17,18,19,20,26,27,28,29,30,36,37,38,39,40 :nAngle:=180;ENDTEST! ENDTESTENDPROCPROC rZhanban ()nTotalPalletHigh:=nTotalPalletHigh+nPalletHigh;TEST nCountZCASE 1:PZhanban:=PZhanbanUp;nPalletHigh:=nPalletHighUp;CASE 2:PZhanban:=PZhanbanDown;nPalletHigh:=nPalletHighDown;DEFAULT :TPErase ;TPWrite" The 'nCountZ' have a trouble ,Please check it ";ENDTESTMoveJ Offs( PZhanban,0,0,300) ,vBigMaxEmpty ,fine , tGripper \WObj:= WobjCompressor ;Set do02_BigJaws1 ;WaitTime 0.6;Set do03_BigJaws2;WaitDI di08_BigJawsInOpen, 1;MoveL PZhanban ,vMinEmpty ,fine, tGripper\WObj:= WobjCompressor ;WaitTime 0.5;Reset do02_BigJaws1 ;Reset do03_BigJaws2 ;WaitTime 0.3;WaitDI di08_BigJawsInOpen,1;pActualpos:=CRobT(\Tool:=tGripper\WObj:=WobjCompressor1);pActualpos.trans.z:=2000;MoveLpActualpos,vMinEmpty,z20,tGripper\WObj:=WobjCompressor1 ; ! MoveL Offs ( PZhanban,0,0,400) ,vMinEmpty ,z20 , tGripper\WObj:= WobjCompressor ;WaitDI di05_PalletInPos ,1;IF nInpos =2 THENMoveJ PZhanbanSafe ,vMinEmpty ,z20 , tGripper\WObj:= WobjCompressor ;ENDIFpActualpos:=PlaceZhanban;pActualpos.trans.z:=2000;MoveJpActualpos,vMinLoad,z20,tGripper\WObj:=WobjCompressor1 ;! MoveJ Offs( PlaceZhanban ,0,0,nTotalPalletHigh+700 ) ,v500 ,z5 , tGripper\WObj:= WobjCompressor ;MoveL Offs( PlaceZhanban ,0,0,nTotalPalletHigh) ,vMinLoad ,fine, tGripper\WObj:= WobjCompressor ;WaitTime 0.5;Set do02_BigJaws1 ;Set do03_BigJaws2;WaitDI di08_BigJawsInOpen,1;MoveL Offs( PlaceZhanban ,0,0,nTotalPalletHigh+700 ) ,vMaxEmpty ,fine, tGripper\WObj:= WobjCompressor ;Reset do03_BigJaws2;WaitTime 0.6;Reset do02_BigJaws1;WaitDI di07_BigJawsInClose, 1;rCompressorOutPos;IF nTotalPalletHigh>1200 THENset do06_PalletEmpty ;waittime 1;reset do06_PalletEmpty;nTotalPalletHigh:=0;nPalletHigh:=0;ENDIFENDPROCPROC rCompressorInPos()! bInpos:=TRUE;! WHILE bInpos=TRUE DO! IF di03_Compressor1InPos =1 THENWobjCompressor:=WobjCompressor1;bInpos:= FALSE;nInpos:=2;! ELSEIF di04_Compressor2InPos =1 THEN ! WobjCompressor:=WobjCompressor2; ! bInpos:=FALSE;! nInpos:=3;! ELSE! bInpos:=TRUE;! ENDIF! WaitTime 0.3;! ENDWHILEENDPROCPROC rCompressorOutPos()IF WobjCompressor=WobjCompressor1 THENSet do04_Compressor1Empty ;WaitTime 1;Reset do04_Compressor1Empty;ELSEIF WobjCompressor=WobjCompressor1 THENSet do05_Compressor2Empty ;WaitTime 1;Reset do05_Compressor2Empty;ENDIFENDPROCFUNC bool CurrentPos(robtarget ComparePos,INOUT tooldata TCP)VAR num Counter:=0;VAR robtarget ActualPos;ActualPos:=CRobT(\Tool:=TCP\WObj:=wobj0);IF ActualPos.trans.x>ComparePos.trans.x-25 AND ActualPos.trans.x<ComparePos.trans.x+25 Counter:=Counter+1;IF ActualPos.trans.y>ComparePos.trans.y-25 AND ActualPos.trans.y<ComparePos.trans.y+25 Counter:=Counter+1;IF ActualPos.trans.z>ComparePos.trans.z-25 AND ActualPos.trans.z<ComparePos.trans.z+25 Counter:=Counter+1;IF ActualPos.rot.q1>ComparePos.rot.q1-0.1 AND ActualPos.rot.q1<ComparePos.rot.q1+0.1 Counter:=Counter+1;IF ActualPos.rot.q2>ComparePos.rot.q2-0.1 AND ActualPos.rot.q2<ComparePos.rot.q2+0.1 Counter:=Counter+1;IF ActualPos.rot.q3>ComparePos.rot.q3-0.1 AND ActualPos.rot.q3<ComparePos.rot.q3+0.1 Counter:=Counter+1;IF ActualPos.rot.q4>ComparePos.rot.q4-0.1 ANDActualPos.rot.q4<ComparePos.rot.q4+0.1 Counter:=Counter+1;RETURN Counter=7;ENDFUNCPROC rCheckHomePos()IF NOT CurrentPos(pHome,tGripper) THEN pActualpos:=CRobT(\Tool:=tGripper\WObj:=wobj0);pActualpos.trans.z:=pHome.trans.z;MoveL pActualpos,v300,z30,tGripper;MoveJ pHome,v500,fine,tGripper;ENDIFENDPROCPROC rKindChoose()! IF di16_giBCD=1 THENCompensation:=CompensationA;nPalletHighUp:=nPalletHighUpA;nPalletHighDown:=nPalletHighDownA;Pick:= PickA;Vision :=VisionA;Place:=PlaceA;PZhanbanUp:=PZhanbanUpA;PZhanbanDown:=PZhanbanDownA;PlaceZhanban:=PlaceZhanbanA;! ELSEIF di16_giBCD=2 THEN! Compensation:=CompensationB;! nPalletHighUp:=nPalletHighUpB;! nPalletHighDown:=nPalletHighDownB;! Pick:= PickB;! Vision :=VisionB;! Place:=PlaceB;! PZhanbanUp:=PZhanbanUpB;! PZhanbanDown:=PZhanbanDownB;! PlaceZhanban:=PlaceZhanbanB;! ELSE! TPErase;! TPWrite "Please select product type in the PLC"; ! ENDIFENDPROCPROC rModPos ()MoveJ pHome, v1000, fine, tGripper\WObj:=Wobj0;MoveJ PZhanbanSafe, v1000, fine,tGripper\WObj:=WobjCompressor1;MoveJ PickA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ VisionA , v1000, fine,tGripper\WObj:=WobjCompressor1 ;MoveJ PlaceA, v1000, fine,tGripper\WObj:=WobjCompressor1;MoveJ PZhanbanUpA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PZhanbanDownA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PlaceZhanbanA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PickB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ VisionB , v1000, fine,tGripper\WObj:=WobjCompressor1 ;MoveJ PlaceB, v1000, fine,tGripper\WObj:=WobjCompressor1;MoveJ PZhanbanUpB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PZhanbanDownB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PlaceZhanbanB, v1000, fine, tGripper\WObj:= WobjCompressor1;ENDPROCPROC rMoveAbsj()MoveAbsJ jposHome, v1000, fine, tGripper\WObj:=wobj0;ENDPROCPROC rServer()SocketClose server_socket;SocketClose client_socket;SocketCreate server_socket;SocketBind server_socket, "192.168.125.1", 3001;SocketListen server_socket;SocketAccept server_socket,client_socket\ClientAddress:=client_ip;ENDPROCPROC rClient()SocketClose client_socket;SocketCreate client_socket;SocketConnect client_socket, "192.168.125.120", 1000;SocketReceive client_socket \Str:=stReceived;ENDPROC ENDMODULE。

ABBRobotstudio仿真软件项目式使用说明

ABBRobotstudio仿真软件项目式使用说明

项目一:焊接机器人1.打开Robot studio软件,单击创建新建空工作站,同时保存一下,如下图所示;2.选择ABB机器人模型IRB1600,单击添加,选择承重能力和到达距离,选择确定,如下图所示:3.导入设备-tools-Binzel air 22,并拖动安装在机器人法兰盘上:4.选择建模-固体-矩形体,设定长宽高,点击创建:5.选择基本-机器人系统-从布局创建系统-下一步-下一步-完成;6.控制器启动完成后,选择路径-创建一个空路径,7.创建成功后,修改下方参数:moveJ , V1000,Z1008.激活当前路径,选择机器人起点,单击示教指令9.开启捕捉末端或角点,同时将机器人的移动模式设为手动线性,将机器人工具移到矩形体的一个角点上,单击示教指令,形成第一条路径,依次示教四个角点,形成路径,右击路径,选择查看机器人目标,可将机器人移动到当前位置10.路径制作完成后,选择基本-同步到VC,在弹出的对话框中全部勾选,并点击确定,同步完成后选择仿真-仿真设定-将路径添加到主队列,选择应用--确定;11.选择仿真录像,点击播放,开始仿真录像。

项目二:搬运机器人1.新建空工作站--导入机器人IRB4600--选择最大承重能力,选择建模-固体-圆柱体,添加两个圆柱体,半径为200mm,高度分别为60mm和500mm,把其中一个作为工具添加到法兰盘上,同时导入两个设备Euro pallet如下图所示:2.右击物体或在左侧布局窗口中右击物体名称,在下拉菜单中选择设定颜色来更改颜色:3.根据布局创建机器人系统,细节与项目一相同,系统完全启动后,选择控制器-配置编辑器,在下拉菜单中选择I/O,在弹出窗口中新建Unit,细节如下图所示;4.Unit新建完毕后,右击新建signal,新建do1和do2,细节如下图所示:5.新建完毕后,重启控制器6.重启完毕后,选择仿真-配置-事件管理器-添加事件,细节如下图所示:7.事件添加完成后,开始创建路径啊,依次示教,机器人到达指定位置时,右击插入逻辑指令,如图所示:8.路径创建完成后,同步到VC,仿真设定,然后进行仿真录像项目三:叉车搬运1.打开软件,新建空工作站,导入机器人模型IRB4600,选择最大承重能力,然后选择基本--导入几何体--浏览几何体--选择本地几何体--打开,如下图所示:2.利用平移和旋转指令,将不同几何体按下图位置摆放整齐:3.创建一个300*300*70的方体分别作为tool,将其创建为工具,具体操作如下图所示:4.设定tool的本地原点为它的中心点,如下图所示:5.选中tool,点击创建工具,将tool创建为工具,具体操作如下:6.创建完成后将其安装在机器人法兰盘上,右击机器人选择显示机器人工作范围,可看到机器人最大到达距离,再次选择取消显示:4.创建四个200*200*200的方体分别作为Box1~Box4,设定为不同颜色,将Box2~Box4设为不可见5.布局结束,如下图所示:,6.根据布局创建机器人系统,待系统启动完毕后,选择控制器--配置编辑器-新建Unit --新建signal,包括do1~do 15,如下图所示:7.设置完成后,重启控制器,打开事件管理器,添加所需事件,包括显示对象,附加对象,提取对象,移动对象四类事件,具体如下:显示对象具体设置如下:附加对象具体设置如下提取对象设置如下:移动对象设置如下:8.事件添加完成后,创建路径,分别将Box1,Box2,Box3,Box4移动到垛板上,并排列整齐,路径如下图所示9.路径创建完成后,同步到VC :10.同步完成后进行仿真设定,按下图顺序添加路径,之后进行仿真录像:。

abb机器人搬运编程程序实例

abb机器人搬运编程程序实例

abb机器人搬运编程程序实例abb机器人是一种智能化的机器人系统,可以用于搬运编程程序。

它具备高度的自动化和智能化能力,可以帮助人们提高工作效率,减轻工作负担。

abb机器人搬运编程程序的过程可以分为几个步骤。

abb机器人搬运编程程序的实例非常丰富多样。

比如,在工业生产中,abb机器人可以被用来搬运零部件或成品,从而提高生产效率。

在仓储物流领域,abb机器人可以被用来搬运货物,实现自动化的物流操作。

在医疗领域,abb机器人可以被用来搬运医疗设备或药品,提高医疗服务的效率和质量。

abb机器人搬运编程程序也可以应用于其他领域。

比如,在农业领域,abb机器人可以被用来搬运农作物或农机设备,提高农业生产的效率。

在建筑领域,abb机器人可以被用来搬运建筑材料或辅助施工,提高施工速度和质量。

在家庭生活中,abb机器人可以被用来搬运家具或清洁用品,减轻家庭劳动的负担。

abb机器人搬运编程程序的应用还可以进一步扩展。

比如,可以将abb机器人与其他智能设备进行联动,实现更加复杂的自动化操作。

可以利用人工智能技术,让abb机器人具备自主学习和决策的能力,提高其适应不同场景和任务的能力。

可以将abb机器人与大数据和云计算等技术相结合,实现更加高效的数据管理和分析。

然而,abb机器人搬运编程程序的应用也面临一些挑战和限制。

首先,abb机器人的成本较高,不是所有企业或个人都能够负担得起。

其次,abb机器人的使用需要一定的技术和操作人员的培训,对于一些没有相关经验的人来说可能存在一定的学习成本。

此外,abb 机器人的安全性也是一个需要重视的问题,特别是在与人员共同工作的环境中,需要采取相应的安全措施。

总结起来,abb机器人搬运编程程序具备广泛的应用前景和潜力。

它可以在多个领域中发挥重要的作用,帮助人们提高工作效率,降低工作风险。

随着技术的不断进步和创新,abb机器人搬运编程程序的应用将变得越来越普遍,为人们的生活和工作带来更多的便利和效益。

工业机器人abb软件使用流程

工业机器人abb软件使用流程

工业机器人abb软件使用流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 软件安装。

从 ABB 官方网站或授权渠道下载适用于你的机器人型号的软件安装包。

abb机器人编程实例

abb机器人编程实例

abb机器人编程实例
ABB机器人是世界上著名的工业机器人品牌之一,其应用领域涵盖了汽车、电子、机械制造等多个行业。

ABB机器人编程的实例可以帮助工程师快速了解机器人的应用和编程方法,提高工程师的技术水平。

以下是一些ABB机器人编程的实例:
1. 拾取和放置:该示例展示了如何使用ABB机器人拾取和放置物体。

首先,机器人需要移动到物体的位置上,然后使用机器人手臂夹住物体并将其移动到另一个位置。

2. 焊接:该示例展示了如何使用ABB机器人进行自动焊接。

机器人需要在预设的位置上进行点焊和连续焊接,并且需要根据工件的形状和大小来调整焊接路径。

此外,机器人还需要自动识别焊接位置,并在需要时进行矫正。

3. 机器人视觉:ABB机器人还可以配备视觉系统,用于实现更高级的任务。

例如,机器人可以使用视觉系统来检测工件的位置和方向,并据此进行自动操作。

这可能包括将物体放置在正确的位置上,或者调整机器人的位置以对准物体。

4. 夹具设计:适当的夹具设计可以极大地简化机器人编程工作。

一个好的夹具设计应该考虑到工件的尺寸、形状和材料,同时还应该考虑机器人的可行性和夹具的成本。

ABB机器人可以使用常见的夹具类型,例如平面夹具和摆臂夹具,也可以根据需要定制夹具。

5. 机器人协作:ABB机器人还可以与其他机器人和设备进行协作,以实现更高效的生产流程。

例如,多个机器人可以协作完成复杂的装配任务,或者使用机器人和传送带来实现物流自动化。

ABB robotstudio使用详细顺序

ABB robotstudio使用详细顺序

搬运码垛工作站建模1、创建机器人系统2、创建动态输送链3、创建动态夹具4、添加source组件5、设置物料本地原点6、添加LINEMOVER和QUEUE组件7设置LINEMOVER属性8、添加面传感器组件9、设置输送链不能被传感器检测10、设置SC_输送链的属性连接11、设置信号连接12、添加信号处理组件,用于检测传感器下降沿13、传感器下降沿触发source进行copy17、11、添加信号处理取非和锁定组件12、继续信号连接13、添加一个示教物料14、应用手动线性验证SC_工具四、工作站逻辑连接五、参考代码MODULEMainMoudlePERStooldatatGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327, 116.889],[1,0,0,0],0,0,0]];!1路放置0度姿态!1路放置90度姿态PERSrobtargetpPlace2:=[[-317.378,-1857.99,55.449],[0,0.707108,0.707106,0],[-2,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];PERSspeeddataMinSpeed:=[1000,300,5000,1000];PERSspeeddataMidSpeed:=[2500,400,5000,1000];PERSspeeddataMaxSpeed:=[4000,500,5000,1000];!搬运速度定义PERSboolbPalletFull1:=FALSE;PERSboolbPalletFull2:=FALSE;!逻辑布尔量,拾取后为UE,放置后为FALSE PERSnumnCount1:=1;ENDPROCPROCrInitAll()ResetdoGrip;pActualPos:=CRobT(\tool:=tGrip); MoveLpActualPos,MinSpeed,fine,tGrip\WObj:=wobj0; MoveJpHome,MidSpeed,fine,tGrip\WObj:=wobj0;bPalletFull1:=FALSE;nCount1:=1;bPalletFull2:=FALSE;nCount2:=1;ENDPROCPROCrPick1()PROCrPlace1()rPosition1;MoveJOffs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveLpPlace1,MinSpeed,fine,tGrip\WObj:=wobj0; ResetdoGrip;WaitTime0.3;GripLoadLoadEmpty;MoveLOffs(pPlace1,0,0,400),MidSpeed,z50,tGrip\WObj:=wobj0; MoveJOffs(pPick1,0,0,400),MaxSpeed,z50,tGrip\WObj:=wobj0; nCount1:=nCount1+1;IFnCount1>20THENbPalletFull1:=TRUE;ENDPROCPROCrPosition1()TESTnCount1CASE1:pPlace1:=Offs(pBase1_0,0,0,0);CASE2:pPlace1:=Offs(pBase1_0,600+10,0,0);CASE3:pPlace1:=Offs(pBase1_90,0,400+10,0);CASE4:pPlace1:=Offs(pBase1_90,400+10,400+10,0); CASE5:CASE13:pPlace1:=Offs(pBase1_90,0,400+10,400); CASE14:pPlace1:=Offs(pBase1_90,400+10,400+10,400); CASE15:pPlace1:=Offs(pBase1_90,800+20,400+10,400);CASE16:pPlace1:=Offs(pBase1_0,0,600+10,600); CASE17:pPlace1:=Offs(pBase1_0,600+10,600+10,600); CASE18:pPlace1:=Offs(pBase1_90,0,0,600);pPlace2:=Offs(pBase2_0,600+10,0,0);CASE3:pPlace2:=Offs(pBase2_90,0,400+10,0);CASE4:pPlace2:=Offs(pBase2_90,400+10,400+10,0); CASE5:pPlace2:=Offs(pBase2_90,800+20,400+10,0); CASE6:pPlace2:=Offs(pBase2_0,0,600+10,200); CASE7:pPlace2:=Offs(pBase2_0,600+10,600+10,200); CASE8:CASE16:pPlace2:=Offs(pBase2_0,0,600+10,600); CASE17:pPlace2:=Offs(pBase2_0,600+10,600+10,600); CASE18:pPlace2:=Offs(pBase2_90,0,0,600);精心整理CASE19:pPlace2:=Offs(pBase2_90,400+10,0,600); CASE20:pPlace2:=Offs(pBase2_90,800+20,0,600); DEFAULT:TPErase;。

ABB工业机器人教程

ABB工业机器人教程

ABB工业机器人教程标题第一章:初识工业机器人 1-1 机器人简介1-2 ABB机器人的型号与结构1-3 Robotstudio的安装1-4 创建工作站(1)1-5 创建工作站(2)第二章:基本操作2-1 机器人系统(1)2-2 机器人系统(2)2-3 机器人的启动与关闭2-4 认识示教器2-5 单轴运动2-6 更新转数计数器2-7 线性运动2-8 工具坐标tooldata(1)2-9 工具坐标tooldata(2)2-10 工件坐标wobjdata2-11 坐标系方向设定与修改2-12 有效载荷loaddata2-13 重定位运动与快捷操作第三章:ABB机器人通讯 3-1 IO信号与IO板3-2 配置信号(1)3-3 配置信号(2)第四章:编程与调试 4-1 程序模块与rapid程序4-2 运动类指令(1)4-3 运动类指令(2)4-4 程序数据(1)4-5 程序数据(2)4-6 赋值指令4-7 IO类指令(1)4-8 IO类指令(2)4-9 信号关联、监视与仿真4-10 程序的编辑4-11 程序的调试4-12 运算符与表达式4-13 IF语句4-14 IF语句嵌套4-15 TEST语句4-16 WHILE语句4-17 FOR语句4-18 功能菜单4-19 循环嵌套4-20 程序调用4-21 速度控制指令第五章:编程应用5-1 编程实例(1)5-2 编程实例(2)5-3 编程实例(3)5-4 编程实例(4)5-5 编程实例(5)第六章:rapid高级编程 6-1 计数指令6-2 程序的中断6-3 中断指令详解(1)6-4 中断指令详解(2)6-5 运动指令详解6-6 自动识别tooldata与loaddata6-7 IO信号与虚拟IO6-8 IO逻辑控制6-9 程序运行控制指令第七章:Robotstudio仿真 7-1 工作站打包与解包7-2 创建工具工件坐标7-3 创建与调试路径7-4 轨迹仿真与碰撞检测7-5 离线编程。

ABB机器人程序实例

ABB机器人程序实例

MODULE MainModuleCONST robtarget pHome:=[[1525.42,272.18,1873.69],[4.42963E-05,0.699969, -0.714173,-2.80277E-05],[0,-1,-1,0],[9E+09,9E+09,9E+09, 9E+09,9E+09,9E+09]];CONST robtarget pPrePickMould:=[[1653.99,272.19,1779.41],[5.83312E-05,0 .69997,-0.714172,-3.47922E-05],[0,-1,-1,0],[9E+09,9E+09 ,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePickClapboard:=[[2036.17,-741.24,1235.05],[0.678651 ,0.73435,-0.0119011,0.00467586],[-1,-2,2,0],[9E+09,9E+0 9,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPickMould:=[[1943.13,173.08,630.89],[4.66987E-05,0.699 977,-0.714166,-3.24109E-05],[0,-1,-1,0],[9E+09,9E+09,9E +09,9E+09,9E+09,9E+09]];CONST robtarget pPickClapboard:=[[1943.19,173.08,620.72],[1.61422E-05,0 .699977,-0.714165,-7.62858E-06],[0,-1,-1,0],[9E+09,9E+0 9,9E+09,9E+09,9E+09,9E+09]];CONST robtargetpPrePlace:=[[785.90,-957.40,1722.38],[0.00231652,0.0492 402,-0.998779,-0.00310842],[-1,-1,-1,0],[9E+09,9E+09,9E +09,9E+09,9E+09,9E+09]];CONST robtarget pPrePlace10:=[[-277.40,-1202.57,1621.17],[0.00183571,-0 .0139794,-0.999895,-0.00341408],[-2,-1,-2,0],[9E+09,9E+ 09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePlace20:=[[-491.18,-1082.85,1505.90],[0.000663644,0 .69408,0.719887,0.00386364],[-2,0,-1,0],[9E+09,9E+09,9E +09,9E+09,9E+09,9E+09]];CONST robtarget pPlaceMould:=[[-92.13,-2580.19,1171.45],[0.000771646,0. 713144,0.701007,0.00383692],[-2,0,-1,0],[9E+09,9E+09,9E +09,9E+09,9E+09,9E+09]];CONST robtarget pPlaceClapboard:=[[1585.08,1761.04,787.33],[0.00645323, -0.00552996,-0.726358,-0.687263],[0,1,-1,0],[9E+09,9E+0 9,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePlaceClapboard:=[[1017.30,955.85,1443.17],[1.0621E-05,-0.00849593,-0.999964,4.01139E-05],[0,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePickClapboard10:=[[2257.17,-841.03,1579.56],[0.6675 17,0.74457,-0.00360206,0.00487631],[-1,-1,2,0],[9E+09,9 E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtarget pPrePickMould10:=[[530.24,-1703.27,1762.63],[5.07659E-0 5,0.96161,0.274421,2.37287E-05],[-1,0,0,0],[9E+09,9E+09 ,9E+09,9E+09,9E+09,9E+09]];CONST num nOffs:=100;PERS num nCurOffs:=100;CONST num nLayer:=0;PERS num nCurLayer:=0;CONST num nThickness:=40;VAR bool bTimeOut:=FALSE;PERS bool bDryCycle:=FALSE;VAR intnum iDryCycle;VAR intnum iResDryCycle;VAR intnum iVacuum;PERS tooldatatGripper:=[TRUE,[[0,0,100],[1,0,0,0]],[88.5,[-3.7,-1.4, 132.1],[1,0,0,0],5.5,17.831,25.067]];PROC main()rInitAll;WHILE TRUE DOIF siDryCycle=1 or nCurLayer<1 thenrPickClapboard;ELSErPickMould;ENDIFWaittime 0.2;ENDWHILEENDPROCPROC rPickMould()DIWait diMouldready,1,3,"entrance Conveyer","ready for pick";DIWait diPlaceReady,1,3,"exit Conveyer","ready for remove";MoveJ pPrePickMould, v1500, z50, tGripper;IF BitCheck(nCurlayer,1) THENnCurOffs:=nOffs;ELSEnCurOffs:=-nOffs;ENDIFMoveLoffs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness),v1000, z50, tGripper;MoveLoffs(pPickMould,0,nCurOffs,(nCurLayer-1)*nThickness),v200, fine, tGripper;GripClose;Decr nCurLayer;MoveLoffs(pPickMould,0,nCurOffs,100+nCurLayer*nThickness),v200, z50, tGripper;MoveJ pPrePickMould, v1000, z50, tGripper;DIWait diPlaceReady,1,3,"exit Conveyer","ready for remove";MoveJ pPrePlace10, v1500, z10, tGripper;MoveL offs(pPlaceMould,0,0,100), v1500, z10, tGripper;MoveL pPlaceMould, v200, fine, tGripper;GripOpen;MoveL offs(pPlaceMould,0,0,100), v200, z10, tGripper;MoveL pPrePlace10, v1500, z10, tGripper;MoveJ pPrePickMould, v1500, z10, tGripper;PulseDO\PLength:=2, doMouldPlaceOK;ENDPROCPROC rPickClapboard()DIWait diMouldready,1,3,"entrance Conveyer","ready for pick";MoveL offs(pPickClapboard,0,0,100), v1000, z50, tGripper;MoveL pPickClapboard, v200, fine, tGripper;GripClose;MoveL offs(pPickClapboard,0,0,100) ,v200, z50, tGripper;MoveL offs(pPickClapboard,0,0,500) ,v1000, z50, tGripper;MoveL pPrePlaceClapboard, v1000, z10, tGripper;DIWait diClapboardReady, 1, 3, "exit Conveyer", "ready for remove";MoveL offs(pPlaceClapboard,-700,-200,250), v1000, z10, tGripper;MoveL offs(pPlaceClapboard,00,-10,100), v1000, z10, tGripper;MoveL pPlaceClapboard, v100, fine, tGripper;GripOpen;MoveL offs(pPlaceClapboard,0,-50,100), v1000, z10, tGripper;MoveL offs(pPlaceClapboard,-700,-200,250), v1000, z10, tGripper;MoveL pPrePlaceClapboard, v1000, z10, tGripper;PulseDO\PLength:=1.0, doClapboardPickOK;MoveJ pHome, v1500, fine, tGripper;PulseDO\PLength:=1.0, doUnStackOk;WaitTime 2;DIWait diMouldready,0,3,"exit Conveyer","ready for remove";nCurLayer:=nLayer;ENDPROCPROC rInitAll()IF diVacuum1=0 THENWaitTime 1;ELSEErrWrite "The Rob1 gripper error! " ,"The gripper is not opened!"\RL2:="Check the gripper signal postion ."\RL3:=" open the gripper manually and take away the part from gripper.";Stop;Exit;ENDIFrMoveHome;nCurLayer:=nLayer;IDelete iVacuum;CONNECT iVacuum WITH tLostPart;ISignalDI diVacuum1, 1, iVacuum;ISleep iVacuum;ENDPROCROC GripClose()SetDO doVacuum,1;SetDO doBlow,0;WaitUntildiVacuum1=1\MaxTime:=10\TimeFlag:=bTimeOut;IF bTimeOut THENErrWrite "Rob Gripper Signal error ! " ,"Fatal error in Gripper"\RL2:="Check the gripper signal postion ."\RL3:=" change a new sensor .";Stop;ENDIFWaittime 0.5;IWatch iVacuum;ENDPROCPROC GripOpen()ISleep iVacuum;SetDO doVacuum,0;PulseDO \PLength:=2.0, doBlow;WaitUntil diVacuum1=0 \MaxTime:=5\TimeFlag:=bTimeOut;IF bTimeOut THENErrWrite "Rob Gripper Signal error ! " ,"Fatal error in Gripper"\RL2:="Check the gripper signal postion ."\RL3:=" change a new sensor .";Stop;ENDIFWaittime 0.5;ENDPROCPROC rMoveHome()VAR string HomeOffset;CONST num MinX:=-500;CONST num MaxX:=500;CONST num MinY:=-500;CONST num MaxY:=500;CONST num MinZ:=500;CONST num MaxZ:=1200;VAR robtarget ActualPos;VelSet 100,500;AccSet 70, 70;IF bCurrentPos(pHome,tGripper,50)=TRUE THEN M oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIFbCurrentPos(pPrePickMould,tGripper,50\wobj:=Wobj0)= TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIFbCurrentPos(pPrePickClapboard,tGripper,100\wobj:=Wobj0) = TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIFbCurrentPos(pPreplace,tGripper,100\wobj:=Wobj0)= TRUE THENM oveJ pHome,v500,fine,tGripper\WObj:=wobj0;ENDIFIF bCurrentPos(pHome,tGripper,100)=FALSE THEN! If no known position is found, check if the robot is in a specified! window and move him to the first position in the programActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0); IF ActualPos.trans.x<MinX OR ActualPos.trans.x>MaxX OR ActualPos.trans.y<MinY OR ActualPos.trans.y>MaxY OR ActualPos.trans.z<MinZ OR ActualPos.trans.z>MaxZ THENHomeOffset:="";IF ActualPos.trans.x<MinX THENHomeOffset:=HomeOffset+"X :"+NumToStr(MinX-ActualPos.tr ans.x,0)+" ";ELSEIF ActualPos.trans.x>MaxX THENHomeOffset:=HomeOffset+"X :"+NumToStr(MaxX-ActualPos.tr ans.x,0)+" ";ELSEHomeOffset:=HomeOffset+"X : OK ";ENDIFIF ActualPos.trans.y<MinY THENHomeOffset:=HomeOffset+"Y :"+NumToStr(MinY-ActualPos.tr ans.y,0)+" ";ELSEIF ActualPos.trans.y>MaxY THENHomeOffset:=HomeOffset+"Y :"+NumToStr(MaxY-ActualPos.tr ans.y,0)+" ";ELSEHomeOffset:=HomeOffset+"Y : OK ";ENDIFIF ActualPos.trans.z<MinZ THENHomeOffset:=HomeOffset+"Z :"+NumToStr(MinZ-ActualPos.tr ans.z,0)+" ";ELSEIF ActualPos.trans.z>MaxZ THENHomeOffset:=HomeOffset+"Z :"+NumToStr(MaxZ-ActualPos.tr ans.z,0)+" ";ELSEHomeOffset:=HomeOffset+"Z : OK ";ENDIFErrWrite HomeOffset,"Move robot manually near homeposition";WHILE OpMode()<>OP_MAN_PROG DOTPErase;TPWrite "Please switch robot to Manual mode"; !TPErase;Stop;ENDWHILEStop;MoveJ pHome,v500,fine,tGripper;!npallet:=4;ActualPos:=CRobT(\Tool:=tGripper\WObj:=wobj0);WHILE OpMode()<>OP_AUTO DOTPErase;TPWrite "Please switch robot to AUTO mode"; !TPErase;Stop;ENDWHILEENDIFENDIFVelSet 100,3000;ENDPROCTRAP tLostPartErrWrite "Part lost!" ,"Fatal error in Gripper"\RL2:="Check the gripper ."\RL3:=" check the vacuum .";Stop;ENDTRAPENDMODULE。

ABB机器人学习课件--RobotStudio

ABB机器人学习课件--RobotStudio

9.定义X轴正方向 上的一个点。
11.点击创建,创 建好box_base的工 件坐标系
12.创建好的工件 坐标系,符合右手 法则。
2.7 创建机器人的运行路径
1.点击路径,创建 “空路径”
2. 选中此处,再次 单击,既可以重命名 路径名称,将路径名 称改成Path_BOX
1.选择工件坐标为 BOX_Base, 工具坐标为 Weldgun
各轴单独操作的方法
1.单击“手动关节” 图形菜单
2.单击机器人相应 的轴,按住鼠标左 键,移动鼠标,相 应的轴就会随着鼠 标移动
笛卡尔坐标系中线性手动操作的方法
2.选择相应的工具 坐标,默认准备为 tool0,在六轴的 法兰盘上
1.单击“手动线性” 图形菜单
3.按住相应的箭头 方向,拖动鼠标, 实现TCP在笛卡尔 坐标系中的线性手 动操作
4.右键单击要放置的几何模型, 弹出菜单选择“放置”命令,选 择“两点”法
5.单击一下此处输入框
6.点击“选择表面”图形按钮
10.第二个点要重合 的方向上的一个点
11.单击“应用”, 完成放置
8.第一个点要重 合的位置
7.选择第一个点
9.选择第二个点
放置好的图形如下图所示:
2.5 在RobotStudio中手动操作机器人
11.可以在此 处查看此时 焊枪在路径 中的姿态
12.单击修改
13.单击“旋转”
11.选择第一个点
1.鼠标对准 “Binzel_water”按 住左键不放。
2.将“Binzel_water”拉 到IRB1410_s_144_01上, 松开左键
弹出的对话框,单击“是” 这样就把工具安装到机器 人的法兰盘上了。

abb机器人仿真步骤

abb机器人仿真步骤

作图步骤:1、双击桌面ROBOTSTUDIO 图标,如下图所示。

点击左侧选项栏,选择授权。

然后选择激活向导,选择如下:2、点击创建文件,出现如下界面。

3、选择机器人模型,点击ABB模型库,出现如下界面,选择IRB2600.把承重能力改为20KG.4、然后点击导入模型库,下拖选择MYTOOL后,然后把左侧边mytool工具拖到IRB2600-20-165-01,机器人上自动安装了喷头工具。

5、然后点击机器人系统菜单,选择从布局创建系统。

在此项目中,可以在名称处修改系统的名称,尤其在系统多的情况下。

在主菜单中,一定要修改工具,把原始的tool10改为mytool。

或者,在放入机器人时,即完成此项设置,可以不需要修改此项。

一直选择下一个,即可成功。

成功后,屏幕右下角变为绿色。

5、选择建模,在菜单中选择固体,再选择矩形体。

6、选择矩形体后,设置矩形体的长宽高参数为400、500、400后,点击创建,后关闭,即可在屏幕上看到矩形体。

在此项中选择左侧布局后,双击部件1,修改名称为box。

7、点击菜单中大地坐标中的移动,即可移动矩形体。

此项中一定要注意看俯视图,使正方体在机器人运动范围内,否则出错。

8、点击基本菜单中的路径。

一种路径就设置为PATH10,如果有其他,就要多设置几个路径。

后选择捕捉末端和手动线性,并把屏幕右下方的几个参数设置为MOVEJ,V300,Z为fine,准备设置示教指令。

9、做6个示教指令,第一个和最后一个为MOVEJ,其他都为MOVEL。

每移动一个点,点一次示教指令。

10、设置完示教指令后,点击基本菜单下同步,选择同步到VC然后,所有同步下选项都选择,点击确定即可。

11、然后选择仿真菜单。

首先点击仿真设定,把原有路径删除,把新的路径添加到主队列中,然后确定。

12、设定好后,点击播放,即可进行仿真。

13、如需要录像,则应该先点击仿真录像,后在点击播放,即可进行仿真录像。

14、最终保存和打包。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ABB机器人(ROBOT studio 6.01)程序实例MODULE MainModulePERS tooldatatGripper:=[TRUE,[[0.533078,1.51617,583.739],[1,0,0,0]],[30,[0,0,50],[1,0,0,0],0,0,0] ];TASK PERS wobjdataVisionWobj:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[-934.534,1807.34,-76.7707],[0.4 00996,0.0128267,-0.0292473,-0.915523]]];TASK PERS wobjdataWobjCompressor1:=[FALSE,TRUE,"",[[518.656,-1088.9,164.25],[0,0,0,1]],[[686.65 1,296.298,-588.529],[0.917114,1.69419E-06,-7.35001E-05,-0.398626]]];TASK PERS wobjdataWobjCompressor2:=[FALSE,TRUE,"",[[518.656,-1088.9,164.25],[0,0,0,1]],[[-944.87 1,-657.402,-323.406],[0.918098,-1.98999E-05,-6.49686E-06,0.396353]]];PERS wobjdata WobjCompressor;VAR robtarget pActualPos;VAR socketdev server_socket;VAR socketdev client_socket;VAR string client_ip;VAR string stReceived;VAR num NumCharacters:=9;VAR bool bOK;PERS num nXOffs;PERS num nYOffs;PERS num nAngleOffs;VAR string XData:="";VAR string YData:="";VAR string AngleData:="";VAR num nPresenceOrAbsence;PERS num nPickH:=-400;PERS num nCountX;PERS num nCountY;PERS num nCountZ;PERS num nCount;VAR num nPlaceNo;PERS bool bSMPreOrAbs;PERS bool bInpos;VAR robtarget PVision;VAR robtarget Vision;VAR robtarget ppPick;VAR robtarget pPick;PERS robtarget Pick;PERS robtarget ErCiDingWeiPlace;PERS robtarget ErCiDingWeiPick;PERS robtarget pPlace;PERS robtarget PlaceVision;PERS robtarget PZhanban;PERS robtarget PZhanbanUp;PERS robtarget PZhanbanDown;PERS robtarget PlaceZhanban;PERS robtarget Place;PERS bool bKindChoose;VAR num nAngle;VAR num nX;VAR num nCamOut;VAR num nInpos;VAR num nTotalPalletHigh;VAR num nPalletHigh;PERS num nPalletHighUp;PERS num nPalletHighDown;VAR num Compensation{8,3};VAR num CompensationTwo{8,3};PERS numCompensationErr{8,3}:=[[999999,999999,999999],[999999,999999,999999],[999999 ,999999,999999],[999999,999999,999999],[999999,999999,999999],[999999,999999 ,999999],[999999,999999,999999],[999999,999999,999999]];PERS jointtargetjposHome:=[[0,0,0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetpHome:=[[621.23,-975.96,1166.44],[0.00703884,-0.385671,-0.922573,-0.00826231], [-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanSafe:=[[-162.69,-1703.07,2270.38],[0.0109452,-0.955357,-0.295179,-0.006 45602],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetVisionA:=[[-228.96,94.47,643.11],[0.00434955,-0.699954,0.714102,-0.0101798],[-2, -1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPickA:=[[90.09,79.65,61.29],[0.0102135,0.00299714,0.999935,-0.00417093],[-2,-1,1, 0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceA:=[[-644.46,-1019.60,396.56],[0.00841448,-0.692574,0.721298,0.000680825], [-1,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanUpA:=[[549.64,541.39,821.21],[0.000808037,-0.999985,-0.00498684,-0.00 209158],[-2,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanDownA:=[[548.40,560.53,179.18],[0.00417276,0.999929,-0.00436864,0.01 02239],[-2,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceZhanbanA:=[[2456.73,-1154.76,205.32],[0.0106126,-0.0247295,-0.999603,0.00 838785],[1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];PERS numCompensationA{8,3}:=[[0,0,0],[210,136,0],[430,264,99999999],[645,403,99999999], [855,533,99999999],[99999999,670,99999999],[99999999,800,99999999],[99999999 ,936,99999999]];PERS numCompensationA1{8,3}:=[[860,936,0],[0,0,0],[215,133,99999999],[430,264,99999999 ],[645,403,99999999],[99999999,533,99999999],[99999999,670,99999999],[999999 99,800,99999999]];PERS numCompensationA2{8,3}:=[[860,0,0],[0,133,0],[215,264,99999999],[430,403,99999999 ],[645,533,99999999],[99999999,670,99999999],[99999999,800,99999999],[999999 99,936,99999999]];CONST num nPalletHighUpA:=100;CONST num nPalletHighDownA:=200;CONST robtargetVisionB:=[[936.63,959.75,378.90],[0.00373262,0.105479,-0.994406,-0.00407233],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPickB:=[[1180.22,1009.95,213.74],[0.00373443,0.1055,-0.994404,-0.00406331],[-1,0 ,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceB:=[[-1194.30,-1552.83,582.17],[0.0062614,0.795938,-0.605346,-0.000999941] ,[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanUpB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99997,-0.00060 6164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPZhanbanDownB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99997,-0.000 606164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];CONST robtargetPlaceZhanbanB:=[[511.86,550.08,92.05],[0.00172284,-0.00758955,-0.99997,-0.0006 06164],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];PERS numCompensationB{8,3}:=[[0,0,300],[210,136,0],[430,264,99999999],[645,403,9999999 9],[855,533,99999999],[99999999,670,99999999],[99999999,800,99999999],[99999999,936,99999999]];PERS numCompensationB1{8,3}:=[[860,936,300],[0,0,0],[215,133,99999999],[430,264,999999 99],[645,403,99999999],[99999999,533,99999999],[99999999,670,99999999],[9999 9999,800,99999999]];PERS numCompensationB2{8,3}:=[[860,0,300],[0,133,0],[215,264,99999999],[430,403,999999 99],[645,533,99999999],[99999999,670,99999999],[99999999,800,99999999],[9999 9999,936,99999999]];CONST num nPalletHighUpB:=100;CONST num nPalletHighDownB:=200;PERS speeddata vMinEmpty:=[1300,100,6000,1000];PERS speeddata vMidEmpty:=[1400,100,6000,1000];PERS speeddata vMaxEmpty:=[1500,100,6000,1000];PERS speeddata vBigMaxEmpty:=[1500,100,6000,1000];PERS speeddata vMinLoad:=[1200,100,6000,1000];PERS speeddata vMaxLoad:=[1300,100,6000,1000];PERS speeddata vBigMaxLoad:=[1400,100,6000,1000];TASK PERS wobjdatawobj1:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[1984.06,-1180.48,453.803],[0.661114, -0.659907,-0.252753,0.252124]]];PROC Main()rInitAll;WHILE TRUE DOrPickCal;rPick;ENDWHILEWaitTime 0.3;ENDPROCPROC rInitAll()AccSet 60,100;Compensation:=CompensationErr;CompensationTwo:=CompensationErr;reg1 :=0;reg2 :=0;nCountX:=1;nCountY:=1;nCount:=0;nCountZ:=1;nTotalPalletHigh:=0;nPalletHigh:=0;nInpos:=0;rKindChoose;rCheckHomePos;Reset do00_JawsOpen ;Reset do01_JawsClose ;Set do00_JawsOpen ;Reset do02_BigJaws1 ;WaitTime 0.3;Reset do03_BigJaws2;Reset do00_JawsOpen ;Reset do13_Placing;Reset do12_PlaceOK;ENDPROCPROC rPickCal ()Set do00_JawsOpen ;bSMPreOrAbs:=TRUE;IF nCount =0 THENrCompressorInPos;ENDIFWHILE bSMPreOrAbs=TRUE DOIncr nCount ;IF nCount =1 THENMoveL Offs(Vision ,0,0,Compensation{nCountZ,3}+100) ,vBigMaxEmpty ,z20 ,tGripper\WOb j:=WobjCompressor ;MoveJ Offs(Vision ,0,0,Compensation{nCountZ,3}),vBigMaxEmpty ,fine ,tGripper\WObj:=W objCompressor ;GOTO C;ENDIFIncr reg2 ;rnXCal ;pVision:=Offs(Vision ,Compensation{nCountX,1} ,Compensation{nCountY,2} ,Compensation{ nCountZ,3});MoveLpVision,vMidEmpty ,fine,tGripper\WObj:=WobjCompressor;C:nPresenceOrAbsence:=1;! rServer;! socketsend client_socket \Str:="T1";! socketReceive client_socket \Str:=stReceived;! bOK:=StrToVal(stReceived,nPresenceOrAbsence);! IF nPresenceOrAbsence =2 OR nPresenceOrAbsence =3 THEN ! bSMPreOrAbs:=FALSE ;! ELSEIF nPresenceOrAbsence =5 THEN! bSMPreOrAbs:=TRUE ;! IF di02_PhotoelectricSensor =1 THEN! TPErase ;! TPWrite "The camera get picture there is a problem, Please check it!(2) ";! SystemStopAction \Halt ;! ELSEIF di02_PhotoelectricSensor =0 THEN! reg2 :=0;! ENDIF! ELSEIF nPresenceOrAbsence =1 OR nPresenceOrAbsence =4 THEN! TPErase ;! TPWrite "The Camera is wrong, and camera will restart ,"; ! TPWrite "after a few seconds the robot will continue ";! Stop ;! ENDIFWaitTime 1;IF di02_PhotoelectricSensor =1 THENbSMPreOrAbs:=FALSE ;ELSEbSMPreOrAbs:=TRUE ;ENDIFIncr nCountX;! TEST di16_giBCD! CASE 1:IF nCountX=6 THENnCountX :=1;Incr nCountY;IF nCountY=9 THENnCountY :=1;SystemStopAction \Halt;ENDIFENDIFIF nCount =40 THENnCount :=0;Incr nCountZ;nCountX:=1;nCountY:=1;nInpos:=0;IF reg2=0 THENrZhanban ;IF nCountZ=2 THENrCompressorOutPos;nCountZ:=1;ENDIFENDIFreg2:=0;ENDIF! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTENDWHILEENDPROCPROC rPick ()! TEST di16_giBCD! CASE 1:IF nCountX=1 THENCompensationTwo:=CompensationA1;ELSECompensationTwo:=CompensationA2;ENDIFpPick:=Offs(Pick,CompensationTwo{nCountX,1}+nX ,CompensationTwo{nCountY,2},Compe nsationTwo{nCountZ,3});! CASE 2:! pPick:=Offs(Pick,CompensationTwo{nCountX,1}+nX ,CompensationTwo{nCountY,2},Compe nsationTwo{nCountZ,3});! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTWaitTime 0.2;nCamOut:=1;! rServer;! socketsend client_socket \Str:="T2";! socketReceive client_socket \Str:=stReceived;! XData:= StrPart(stReceived, 3, NumCharacters);! YData:= StrPart(stReceived, NumCharacters, NumCharacters);! AngleData:= StrPart(stReceived, 2*NumCharacters, NumCharacters);! bOK:=StrToVal(XData,nXOffs);! bOK:=StrToVal(YData,nYOffs);! bOK:=StrToVal(AngleData,nAngleOffs);rAngle;! ppPick :=RelTool (pPick,0,0,0\Rz:= -nAngleOffs+nAngle);ppPick :=RelTool (pPick,0,0,0\Rz:= nAngle);ConfL\Off;! MoveL Offs (ppPick,nXOffs ,nYOffs,120), vMinEmpty, fine , tGripper\WObj:=WobjCompressor;! MoveL Offs (ppPick,nXOffs ,nYOffs,0), v100, fine ,tGripper\WObj:=WobjCompressor;MoveL Offs(ppPick,0 ,0,200), vMinEmpty, fine ,tGripper\WObj:=WobjCompressor;MoveL Offs(ppPick,0 ,0,0), v100, fine ,tGripper\WObj:=WobjCompressor;Reset do00_JawsOpen ;Set do01_JawsClose ;WaitDI di00_JawsInClose,1;! MoveL Offs(ppPick,nXOffs,nYOffs,80),vMinLoad ,z10 ,tGripper\WObj:=WobjCompressor ; ! MoveL Offs(ppPick,nXOffs,nYOffs,400),vMaxLoad ,fine ,tGripper\WObj:=WobjCompressor ;MoveL Offs(ppPick,0,0,80),vMinLoad ,z10 ,tGripper\WObj:=WobjCompressor ;MoveL Offs(ppPick,0,0,400),vMaxLoad ,fine ,tGripper\WObj:=WobjCompressor ;ConfL\On;rPlace;! TEST di16_giBCD! CASE 1:IF nCount =40 THENnCount :=0;nCountX:=1;nCountY:=1;reg2:=0;nInpos:=0;rZhanban ;IF nCountZ=2 THENrCompressorOutPos;nCountZ:=1;ENDIFENDIF! DEFAULT:! TPErase ;! TPWrite " The PLC communication there is a problem ,Please check it ";! ENDTESTENDPROCPROC rPlace ()MoveJ Offs (Place,0,0,200) ,vMaxLoad ,z40 , tGripper\WObj:= WobjCompressor ;Set do13_Placing;Waitdi di06_AssemblyLineOK, 0;MoveL Offs (Place,0,0,50) ,vMinLoad ,z5 , tGripper\WObj:= WobjCompressor;MoveL Place ,v100 ,fine , tGripper\WObj:= WobjCompressor;Reset do01_JawsClose ;Set do00_JawsOpen ;WaitDI di01_JawsInOpen ,1;MoveL Offs (Place,0,0,300) ,vMinEmpty ,fine, tGripper\WObj:= WobjCompressor;Reset do13_Placing ;WaitTime 0.4;Reset do00_JawsOpen ;ENDPROCPROC rnXCal()! TEST di16_giBCD! CASE 1:TEST nCountCASE 1,2,3,4,5,11,12,13,14,15,21,22,23,24,25,31,32,33,34,35 :nX:=0;CASE 6,7,8,9,10,16,17,18,19,20, 26,27,28,29,30,36,37,38,39,40 :nX:=65;ENDTEST! ENDTESTENDPROCPROC rAngle()! TEST di16_giBCD! CASE 1:TEST nCountCASE 1,2,3,4,5,11,12,13,14,15,21,22,23,24,25,31,32,33,34,35 :nAngle:=0;CASE 6,7,8,9,10,16,17,18,19,20, 26,27,28,29,30,36,37,38,39,40 :nAngle:=180;ENDTEST! ENDTESTENDPROCPROC rZhanban ()nTotalPalletHigh:=nTotalPalletHigh+nPalletHigh;TEST nCountZCASE 1:PZhanban:=PZhanbanUp;nPalletHigh:=nPalletHighUp;CASE 2:PZhanban:=PZhanbanDown;nPalletHigh:=nPalletHighDown;DEFAULT :TPErase ;TPWrite" The 'nCountZ' have a trouble ,Please check it ";ENDTESTMoveJ Offs ( PZhanban,0,0,300) ,vBigMaxEmpty ,fine , tGripper\WObj:= WobjCompressor ;Set do02_BigJaws1 ;WaitTime 0.6;Set do03_BigJaws2;WaitDI di08_BigJawsInOpen, 1;MoveL PZhanban ,vMinEmpty ,fine, tGripper\WObj:= WobjCompressor ;WaitTime 0.5;Reset do02_BigJaws1 ;Reset do03_BigJaws2 ;WaitTime 0.3;WaitDI di08_BigJawsInOpen,1;pActualpos:=CRobT(\Tool:=tGripper\WObj:=WobjCompressor1);pActualpos.trans.z:=2000;MoveL pActualpos,vMinEmpty,z20,tGripper\WObj:=WobjCompressor1 ; ! MoveL Offs ( PZhanban,0,0,400) ,vMinEmpty ,z20 ,tGripper\WObj:= WobjCompressor ;WaitDI di05_PalletInPos ,1;IF nInpos =2 THENMoveJ PZhanbanSafe ,vMinEmpty ,z20 , tGripper\WObj:= WobjCompressor ;ENDIFpActualpos:=PlaceZhanban;pActualpos.trans.z:=2000;MoveJ pActualpos,vMinLoad,z20,tGripper\WObj:=WobjCompressor1 ;! MoveJ Offs ( PlaceZhanban ,0,0,nTotalPalletHigh+700 ) ,v500 ,z5 , tGripper\WObj:= WobjCompressor ;MoveL Offs ( PlaceZhanban ,0,0,nTotalPalletHigh) ,vMinLoad ,fine, tGripper\WObj:= WobjCompressor ;WaitTime 0.5;Set do02_BigJaws1 ;Set do03_BigJaws2;WaitDI di08_BigJawsInOpen,1;MoveL Offs( PlaceZhanban ,0,0,nTotalPalletHigh+700 ) ,vMaxEmpty ,fine,tGripper\WObj:= WobjCompressor ;Reset do03_BigJaws2;WaitTime 0.6;Reset do02_BigJaws1;WaitDI di07_BigJawsInClose, 1;rCompressorOutPos;IF nTotalPalletHigh>1200 THENset do06_PalletEmpty ;waittime 1;reset do06_PalletEmpty;nTotalPalletHigh:=0;nPalletHigh:=0;ENDIFENDPROCPROC rCompressorInPos()! bInpos:=TRUE;! WHILE bInpos=TRUE DO! IF di03_Compressor1InPos =1 THENWobjCompressor:=WobjCompressor1;bInpos:= FALSE;nInpos:=2;! ELSEIF di04_Compressor2InPos =1 THEN! WobjCompressor:=WobjCompressor2;! bInpos:=FALSE;! nInpos:=3;! ELSE! bInpos:=TRUE;! ENDIF! WaitTime 0.3;! ENDWHILEENDPROCPROC rCompressorOutPos()IF WobjCompressor=WobjCompressor1 THENSet do04_Compressor1Empty ;WaitTime 1;Reset do04_Compressor1Empty;ELSEIF WobjCompressor=WobjCompressor1 THENSet do05_Compressor2Empty ;WaitTime 1;Reset do05_Compressor2Empty;ENDIFENDPROCFUNC bool CurrentPos(robtarget ComparePos,INOUT tooldata TCP) VAR num Counter:=0;VAR robtarget ActualPos;ActualPos:=CRobT(\Tool:=TCP\WObj:=wobj0);IF ActualPos.trans.x>ComparePos.trans.x-25 AND ActualPos.trans.x<ComparePos.trans.x+25 Counter:=Counter+1;IF ActualPos.trans.y>ComparePos.trans.y-25 AND ActualPos.trans.y<ComparePos.trans.y+25 Counter:=Counter+1;IF ActualPos.trans.z>ComparePos.trans.z-25 AND ActualPos.trans.z<ComparePos.trans.z+25 Counter:=Counter+1;IF ActualPos.rot.q1>ComparePos.rot.q1-0.1 AND ActualPos.rot.q1<ComparePos.rot.q1+0.1 Counter:=Counter+1;IF ActualPos.rot.q2>ComparePos.rot.q2-0.1 AND ActualPos.rot.q2<ComparePos.rot.q2+0.1 Counter:=Counter+1;IF ActualPos.rot.q3>ComparePos.rot.q3-0.1 AND ActualPos.rot.q3<ComparePos.rot.q3+0.1 Counter:=Counter+1;IF ActualPos.rot.q4>ComparePos.rot.q4-0.1 AND ActualPos.rot.q4<ComparePos.rot.q4+0.1 Counter:=Counter+1;RETURN Counter=7;ENDFUNCPROC rCheckHomePos()IF NOT CurrentPos(pHome,tGripper) THENpActualpos:=CRobT(\Tool:=tGripper\WObj:=wobj0);pActualpos.trans.z:=pHome.trans.z;MoveL pActualpos,v300,z30,tGripper;MoveJ pHome,v500,fine,tGripper;ENDIFENDPROCPROC rKindChoose()! IF di16_giBCD=1 THENCompensation:=CompensationA;nPalletHighUp:=nPalletHighUpA;nPalletHighDown:=nPalletHighDownA;Pick:= PickA;Vision :=VisionA;Place:=PlaceA;PZhanbanUp:=PZhanbanUpA;PZhanbanDown:=PZhanbanDownA;PlaceZhanban:=PlaceZhanbanA;! ELSEIF di16_giBCD=2 THEN! Compensation:=CompensationB;! nPalletHighUp:=nPalletHighUpB;! nPalletHighDown:=nPalletHighDownB;! Pick:= PickB;! Vision :=VisionB;! Place:=PlaceB;! PZhanbanUp:=PZhanbanUpB;! PZhanbanDown:=PZhanbanDownB;! PlaceZhanban:=PlaceZhanbanB;! ELSE! TPErase;! TPWrite "Please select product type in the PLC";! ENDIFENDPROCPROC rModPos ()MoveJ pHome, v1000, fine, tGripper\WObj:=Wobj0;MoveJ PZhanbanSafe, v1000, fine, tGripper\WObj:=WobjCompressor1;MoveJ PickA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ VisionA , v1000, fine, tGripper\WObj:=WobjCompressor1 ;MoveJ PlaceA, v1000, fine, tGripper\WObj:=WobjCompressor1;MoveJ PZhanbanUpA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PZhanbanDownA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PlaceZhanbanA, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PickB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ VisionB , v1000, fine, tGripper\WObj:=WobjCompressor1 ;MoveJ PlaceB, v1000, fine, tGripper\WObj:=WobjCompressor1;MoveJ PZhanbanUpB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PZhanbanDownB, v1000, fine, tGripper\WObj:= WobjCompressor1;MoveJ PlaceZhanbanB, v1000, fine, tGripper\WObj:= WobjCompressor1;ENDPROCPROC rMoveAbsj()MoveAbsJ jposHome, v1000, fine, tGripper\WObj:=wobj0;ENDPROCPROC rServer()SocketClose server_socket;SocketClose client_socket;SocketCreate server_socket;SocketBind server_socket, "192.168.125.1", 3001;SocketListen server_socket;SocketAccept server_socket,client_socket\ClientAddress:=client_ip;ENDPROCPROC rClient()SocketClose client_socket;SocketCreate client_socket;SocketConnect client_socket, "192.168.125.120", 1000;SocketReceive client_socket \Str:=stReceived;ENDPROCENDMODULE。

相关文档
最新文档