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。

  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。

相关文档
最新文档