EPSON机械手培训-课件.ppt

上传人:牧羊曲112 文档编号:5429175 上传时间:2023-07-06 格式:PPT 页数:72 大小:3.55MB
返回 下载 相关 举报
EPSON机械手培训-课件.ppt_第1页
第1页 / 共72页
EPSON机械手培训-课件.ppt_第2页
第2页 / 共72页
EPSON机械手培训-课件.ppt_第3页
第3页 / 共72页
EPSON机械手培训-课件.ppt_第4页
第4页 / 共72页
EPSON机械手培训-课件.ppt_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《EPSON机械手培训-课件.ppt》由会员分享,可在线阅读,更多相关《EPSON机械手培训-课件.ppt(72页珍藏版)》请在三一办公上搜索。

1、EPSON 机械手培训,深圳市长荣科机电设备有限公司2012年8月,一、关于机械手的基础知识二、硬件概要三、EPSON RC+用户界面四、RC+5.4.3软件操作五、SPEL+语言六、动作指令七、I/O八、Pallet 九、!.!并列处理十、多任务处理十一、循环控制指令十二、程序实例,1、机械手坐标系,1.1 SCARA机械手坐标系,XY方向坐标(前后左右),Z方向坐标(上下),U方向坐标(旋转),2.机械手的手臂姿势 在使用机械手作业时,有必要使其用示教时的手臂姿势在指定的点上动作。如果不这样做,根据手臂姿势的不同,会产生轻微的位臵偏移,或朝着意想不到的路径动作的结果,有干涉周边设备的危险。

2、为了避免这种情况,在点数据中必须事先指定使其在此点上动作时的手臂姿势(如下图)。此信息也也可以从程序中变更(L或者R)。,2.1 SCARA机械手的手臂姿势图,系统构成,NPN接法,PNP接法,NPN接法,PNP接法,1、控制器运行时序图,2、急停时序图,3、程序执行时序图,4、安全门输入时序图,1、I/O扩展板输入输出定义及设置,2、1号I/O扩展引脚定义,不外接急停时可以将安全I/O按如下方式接线:1,2,3,7,9,18,20短接 4,11短接 8,19,21,25短接 12,17短接 10,14,15,16短接,1.软件IP设置(使用以太网连接时用)(1)单击“设置”“电脑与控制器通讯

3、”进入IP设置画面,然后单击工具栏图 标“”进入IP设置画面,然后单击“增加”进入右下图画面选择“通 过以太网连接到控制器”单击确定,(2)设置新增以太网连接名称及IP地址,控制器出厂默认控制器IP设置如右下图所示 设置好IP后单击应用,如果控制器IP忘记了,可以先用USB线连接控制器然后在“设置”|控制器|configuration里可以查看控制器IP,电脑IP的前三位要与控制 器的前三位相同,例如“192.168.0.10”。设置好IP地址后单击“连接”连接控 制器。,2.控制器设置(1)单击“设置”“控制器”进入控制器设置画面,然后单击“configuration”设置控制的IP地址及控

4、制方式,当要使用外部I/O控制时须将“Control Device”远程I/O,然后单击“Apply”,再单击关闭,等待控制器重启完毕后,按“F5”,单击“激活远程I/O”后关闭软件即可使用外部I/O控制控制器,3.示教画面打开Jog&Teach页面:Tools Robot Manager Jog&Teach或单击工具栏 图标后,选择Jog&Teach页面。如下图示,Mode说明:World:在当前的局部坐标系、工具坐标系、机械手属性、ECP坐标系上,向X、Y、Z轴的方向微动动作。如果是SCARA型机械手,也可以向U方向微动。如果是垂直6轴型机械手,则可以向U方向(倾斜)、V方向(仰卧)、W方

5、向(偏转)微动。Tool:向工具定义的坐标系的方向微动移动。Local:向定义的局部坐标系的方向微动移动。Joint:各机械手的关节单独微动移动。不是直角坐标型的机械手使用Joint模式时,显示单独的微动按钮。ECP:在用当前的外部控制点定义的坐标系上,微动动作。,4.示教点步骤(1)在“点数据”页面中“点文件”下拉菜单中选择需要教点的点文件,单击选择点文件,(2)在步进示教页面右下角位位置选择需要示教的点编号,单击选择要示教的点位,(3)微动将机械手移动的需要示教点的位置。如果是SCARA机械手,Motor On情况下,可以在Control Panel 页面Free All释放所有轴后,手动

6、将机械手移动需要示教点的位置后,Lock ALL锁定所有轴。,微动按钮,点位追踪按钮,在马达上伺服ON时直接移动到之前示教的点位,一般在之前点位变化需做微调时用,(4)点击Teach按钮,系统自动记录下示教点在当前坐标系的具体数值。如果需要示教的点为新增点,将弹出以下对话框,用户可根据需要对该点编辑标签及描述,编辑点标签及描述然后单击“确定”,(5)在“点数据”页面单击“保存”按钮,完成示教点。,5.马达重置及伺服OFF工具 机器人管理器控制面板或单击工具栏 图标后,选择“控制面板”页面。如下图示,伺服ON,运行功率设置,马达报警时重置马达,刹车释放,Z轴刹车释放后要按住伺服指示灯旁边白色按钮

7、才能手动移动Z轴,6.工具坐标设置工具 机器人管理器工具或单击工具栏 图标后,选择“工具”页面。如下图示,(1)在“工具”画面单击“工具向导”,进入工具向导画面,选择工具坐标编号,(2)选择好工具坐标编号后单击“NEXT”,进入如下画面,单击“Teach”进入机器人示教画面,(3)将U轴旋转到0度,在机器人运动范围内固定一个参考位置,然后通过移动X、Y轴移动到参考位置,然后单击确定,(4)示教好第一个位置后单击“Teach”进入如下画面,然后单击“Teach”进入第二点示 教画面,(5)将Z后提起后,旋转180度后,重新移动X、Y轴至之前保存的位置,然后单击“Teach”进入下图画面,然后单击

8、“Finish”,完成工具坐标校准,7.I/O监控“工具”“I/O监视器”工具或单击工具栏 图标后,进入如下图示画面监控I/O状态,双击输出位时可以强制输出ON,1.概述SPEL+是在RC170/180、RC90控制器上运行的与BASIC相近的程序语言。它支持多任务,动作控制和I/O控制。程序以ASCII文本形式创建,被编辑在可以执行的对象文件中。2.程序结构一个SPEL+程序包括有函数,变量和宏指令,每一个程序以.PRG的扩展名保持到对应的项目里(Project)。一个项目至少包含有一个程序和一个main函数。函数以Function开始,Fend结束,函数名可以使用最多32个字符的半角英文数

9、字和下划线,不区分大小写,但是不可以使用以数字和下划线开始的名称或SPEL+关键字。3.变量SPEL+中有3种不同的变量。Local:局部变量(用在同一Function内使用的变量)Module:模块变量(在同一程序内使用的变量)Global:全局变量(在同一项目内使用的变量),程序示例:,MAIN.PRG Function Main Call Func1.Fend Function Func1 Jump pickpnt.,Integer m_i模块变量m_iGlobal(Preserve)Integer g_i全局变量(全局保护变量)g_iFunction mainInteger I局部变量

10、i.FendFunction Func1Integer I局部变量i.Fend,4.变量的数据类型 变量有多种数据类型,使用前先说明类型,格式为:数据类型变量名。例如:Integer i,定义变量i为整型数据。另外,代入的数据和变量的类型必须一致。在下表中列出SPEL+语言中使用的数据类型。,动作指令分类使机械手动作的指令叫作动作指令。可分为:PTP动作指令,CP动作指令,Curves动作指令,Joint动作指令。,NOTE:*CP模式,即Continuous Path 连续路径模式。*指定PTP动作指令和Joint动作指令的速度和加/减速度时,使用SPEED指令和ACCEL指令。指定CP模式

11、动作指令时,使用使用SPEEDS指令和ACCELS指令。,2.PTP指令包括指令:Go、Jump、BGo、TGoPTP(Pose To Pose)动作,是与其动作轨迹无关,以机械手的工具顶端为目标位臵使其动作的动作方法。PTP动作,使用各关节上配置的电动机,使机械手通过最短的路径到达目标位置。优点:运动速度快,缺点:运动轨迹无法预测。指定PTP动作速度和加/减速,使用SPEED指令和ACCEL指令。2.1 Go 指令功能:全轴同时的PTP动作,动作的轨迹是各关节分别对从当前的点到目标坐标进行插补。格式:Go 目标坐标示例:1.Go P1 机械手动作到P1点2.Go XY(50,400,0,0)

12、机械手动作到X=50,Y=400,Z=0,U=0 3.Go P1+X(50)机械手动作到P1点X坐标值偏移量为+50的位置4.Go P1:X(50)机械手动作到P1点对应X坐标值为50的位置2.2 Jump 指令功能:通过“门形动作”使手臂手臂从当前位臵移动至目标坐标。格式:Jump 目标坐标示例:1.Jump P1 机械手以“门形动作”动作到P1点2.Jump P1 LimZ-10以限定第三轴目标坐标Z=-10的门形动作移动到P1点,如图1示3.Jump P1:Z(-10)LimZ-10 以限定第三轴目标坐标Z=-10的门形动作移动到P1点位臵Z坐标值为-10的位置,图1,NOTE:Go与J

13、ump的区别Jump与Go都是使机械手手臂用PTP动作移动的命令。但是Jump有Go没有的一个功能。Jump将机械手的手部先抬起至LimZ 值,然后使手臂水平移动,快要到目标坐标上空的时候使其下降移动。此动作的标准是可以更准确地避开障碍物这一点,更重要的是通过吸附、配置动作,提高作业的周期时间。3.CP指令包括指令:Move、Arc、Arc3、Jump3/Jump3CP、BMove、TMove、CVMoveCP(Continuous Path)指令可以指定机械手到达目标位臵的运动轨迹。优点:轨迹可以控制,匀速动作。缺点:速度慢。指定Linear动作速度和加/减速度,使用SPEEDS指令和ACC

14、ELS指令。3.1 Move 指令功能:以直线轨迹将机械手从当前位置移动到指定目标位置。全关节同时启动,同时停止。格式:Move 目标坐标示例:Move P1机械手以直线轨迹动作到P1点NOTE:Move与Go的区别到达目标点时的手臂的姿势重要的时候使用Go命令,但是比控制动作中的手臂的轨迹重要的时候,使用Move 命令。在SCARA机械手只有Z轴上下动作时,Go与Move的轨迹一样。,3.2 Arc和Arc3 指令功能:Arc 在XY平面上以圆弧插补动作。Arc3 在3D空间里以圆弧插补动作。格式:Arc 经过坐标,目标坐标说明:将机械手从当前位臵到目标坐标,通过经过坐标用圆弧插补动作活动时

15、使用。从所给的3点(当前坐标、经过坐标、目标坐标)自动演算圆弧插补轨道,并沿着此轨道移动机械手直至目标坐标为止。示例:Arc P2,P3NOTE:即使目标坐标在机械手的动作范围内,一旦在Move或Arc运动轨迹超过允许动作范围外,机械手会突然停止,给伺服电机带来撞击,有产生故障的危险。为了防止这样的事发生,请在高速执行之前先以低速进行动作范围确认。,3.3 Jump3/Jump3CP指令功能将手臂用3 维门形动作移动。Jump3是两个CP动作与1个PTP动作的组合格式Jump3 退避坐标,接近开始坐标,目标坐标示例Jump3 P1,P2,P3从当前位臵经过保存坐标P1,接近坐标P2运动到目标坐

16、标P3。图2示NOTE:1、Jump不能用于6轴机械手,6轴机械手只能使用Jump3和Jump3 CP指令2、Jump3CP指令用法与Jump3类似,不同在于Jump3CP是3个CP动作的组合3、SCARA机械手Z轴上升或下降动作时,使用Jump指令可以提高运动速度3.4 BMove、TMove、CVMove 指令BMove 在指定的局部坐标系(Local)上执行偏移直线插补动作。没有指定局部坐标系时,以局部0(基准坐标系)为基准,进行进行偏移PTP 动作。TMove 在当前的工具坐标系上执行偏移直线插补动作。,图2,CVMove 用Curve 命令执行定义的自由曲线CP 动作。CVMove

17、执行设定控制器硬盘上的文件名的文件数据的自由曲线CP 动作。此文件必须事先用Curve 命令制作。Curve“mycurve”,O,0,4,P1,P2,On 2,P(3:7)设定自由曲线 Jump P1用直线将手臂移动至P1 CVMove“mycurve”用定义的自由曲线“mycurve”移 动手臂5.速度设定指令5.1 PTP指令的速度设定Speed 功能用于设定PTP动作速度的百分比格式:Speed s,a,b说明:s 速度设定值;a 第三轴上升速度设定值;b 第三轴下降速度设定值。示例:1.Speed 80 2.Speed 80,40,30Accel 功能用于设定PTP动作加减速度的百分

18、比。格式:Accel a,b,c,d,e,f说明:a/b 加/减速度设定值;c/d 第三轴上升加/减速度设定值;e/f 第三轴下降加/减速度设定值示例:1.Accel 80,80 2.Accel 80,80,30,30,60,60,图2,5.2 CP指令的速度设定SpeedS 功能用于设定CP动作速度值格式:SpeedS 速度设定值说明:表1 为不同机型对应的速度设定值范围示例:SpeedS 800 CP动作的速度设置为800mm/sAccelS功能用于设定CP动作加减速度值格式:AccelS 加速设定值,减速设定值说明:表1 为不同机型对应的加减速度设定值范围示例:AccelS 800 加减

19、速度均为800mm/S,表1,4.3 Power指令功能:电源模式的设定格式:Power High|Low说明:默认值为Low。低功率模式下电机输出被限制,实际动作速度变为默认初始值的范围内。低功率模式设定时,从监控窗口或程序中即使出现设为高速的指示,也会按初始值速度动作。如果需要用更高的速度动作时,必须设定为Power High。4.4 Weight指令功能:进行补偿PTP 动作时的速度加减速度的参数设定格式:Weight 手部重量说明:手部重量指指定手臂上垂挂的夹治具和其他工件的重量。由设定值计算出的等价搬运重量超过最大可搬运重量时,会出现错误。,5.Jump 指令的修饰5.1 拱形动作在

20、Jump指令后通过指定门形参数Cn(n=07),可以改变拱形的形状。上图中a,b的值与C06对默认初始值(单位:mm)如下表列,7为门形动作。要改变C06对应的a,b的值,使用Arch指令。也可以Tools|Robot Manager|Arch选项卡中修改。,5.2 Arch指令功能:用于设定Jump动作拱形参数设定格式Arch 拱形编号,垂直上升距离,垂直下降距离说明设定值比垂直移动距离大时变为门形动作。设定值即使掉电也会被保持。运动轨迹根据运动速度、机械手的动作方式而改变,所以动作前请先确认动作轨迹示例:Arch 0,10,40,RC90控制器标配了24位输入和16位输出,用户可以通过安装

21、I/O板卡扩展I/O位数。每张I/O板卡包括32位输入和32位输出,最多可以安装4张I/O板卡,既最多可增加128位输入和128位输出。1硬件连接1.1 输入电路:输入电压范围:+12 24V 10ON 电压:+10.8V(最小)OFF 电压:+5V(最大)输入电流:10mA,24V输入时,典型值,1.2 输出电路额定输出电压:+12 24V 10最大输出电流::100mA(典型值)1输出输出驱动器::Photo Mos继电器通态电阻(平均)::23.5以下输出,2 输出指令On 功能:打开指定输出位格式:On 输出位编号,时间,非同步指定输出位编号:可使用的输出位编号;时间:以秒为单位,最小

22、有效位为0.01秒;非同步指定:0或1说明:非同步指定在时间指定时可以指定,功能如表1 示示例:1.On 1 2.On 1,0.5,0Off 功能:关闭指定输出位格式:Off 输出位编号,时间,非同步指定输出位编号:可使用的输出位编号;时间:以秒为单位,最小有效位为0.01秒;非同步指定:0或1说明非同步指定在时间指定时可以指定,功能如表1 示示例:1.Off 1 2.Off 1,0.5,0,表1,2 输出指令Out 功能:同时设定输出8个输出位格式:Out 端口编号,输出数据 端口编号:构成可使用输出位的组;输出数据:用端口编号指定的组的输出模式说明:端口编号与输出数据的组合后同时设定8个输

23、出位。输出位8位1组。首先在用端口编号指定的组中指定输出数据参数中特定的输出模式。输出数据参数用10进制数(0255)或16进制数(&H0&HFF)指定。端口编号如下与位编号对应。端口编号位编号 0 0-7 1 8-15 2 16-23.63 504-511示例:Out 0,0 将07位全部关闭Out 1,255将815位全部打开Out 0,100将2,5,6位全部关闭Out 0,&H64 将2,5,6位全部关闭,3 输入指令3.1 Wait 功能:时间等待或输入位等待格式:Wait 时间 Wait 输入条件,时间 时间:02147483,最小有效位为0.01秒;输入条件:记述待机条件说明:只

24、指定时间时,指定时间待机后执行下一个命令。只指定输入条件式时,待机至条件成立。指定输入条 件与时间时,条件式成立或指定时间到都会执行下一个命令。使用Sw函数,可以确认输入条件式是否成 立,或指定时间是否已到。示例:Wait 1.5 待机1.5秒后,继续执行程序 Wait Sw(3)=On 待机直到输入位3开启3.2 Sw函数功能:返回指定的输入位状态格式:Sw(输入位编号)输入位编号:可以使用的输入位编号说明:进行I/O输入的状态确认。指定的输入打开时返回1,关闭时返回0。示例:Print Sw(3)打印输入位3的状态 Wait Sw(1)=On and Sw(2)=On 待机直到输入位1和2

25、开启 Wait Sw(1)=On or Sw(2)=On 待机直到输入位1或2开启,3.3 In函数功能:返回指定的输入位端口格式:In(端口编号)端口编号:构成可以使用输入位的组说明:可同时确认8个输入位的值。可以使其待机直到2个以上的I/O位的状态在特定的条件下一致。返回值为0255范围的整数值。示例:Print In(0)打印输入位3的状态 Wait In(0)=0 待机到07位全部关闭 Wait In(0)=255 待机到07位全部开启,格式:Pallet Outside,Pallet 编号,Pi,Pj,Pk,Pm,列数,行数参数:Outside 创建在指定的行及列的范围外可以访问的P

26、allet。指定范围:-32768 to 32767。可省略。Pallet 编号用0到15的整数指定Pallet编号。Pi,Pj,Pk 指定使用在Pallet定义(标准的3 点定义)中的点变量。Pm 与Pi,Pj,Pk 一起使用定义Pallet的点变量。可省略。列数 用整数指定Pi 与Pj的列数。范围为1到32767。(行数列数32767)行数 用整数指定Pi 与Pk的行数。范围为1到32767。(行数列数32767)说明:在机械手上至少必须示教Pi,Pj,Pk这3 点,并指定Pi 与Pj的分割数及Pi 与Pk的分割数,才能定义pallet。,Pallet 如果是高精度的四方形,则只要指定角上

27、4 点中的3 个点就足够了,但是,还是建议指定全角4点的位臵后进行pallet 定义。定义pallet 时,首先要示教角的3 或4 个点,4 点定义时:以下表示P1、P2、P3 及P4。P1-P2 间有3 点,P1-P3 间有4点,总计使用12点用以下格式定义。表示Pallet的分割的各点自动地分配分割编号(1-12)。示教P1、P2、P3 时,尽量使三点的姿势一致。Notes不正确的pallet 的定义 如果搞错了点的顺序或点间的分割数,会出现错误的pallet顺序。,Pallet 面的定义 用角上3 点的Z 坐标值定义pallet 平面的高度。所以,也可以定义垂直方向的pallet。1 列

28、pallet 的pallet 定义 通过3 点指定的Pallet 命令,也可以定义1 列的pallet。如果是1 列,应示教两端的2 点,并如下输入、执行。同一编号方向的分割数为1。Pallet 2,P20,P21,P20,5,1 定义一个5x1 的palletPallet 使用示例 以下是从监控窗口设定用P1、P2、P3 定义的pallet 的示例。Pallet 而平均配臵15 点,P1-P2 间排列。pallet 1,P1,P2,P3,3,5 jump pallet(1,2)Jump to position on pallet 此设定的创建的pallet 如右图所示。,动作中并列进行I/O

29、 等的输入输出处理。使用示例 1)将并列处理连同Jump命令同时使用。第3 关节上升移动结束,第1、第2、第4 关节 开始动作的阶段打开输出位1。输出位1 在Jump动作完成50%的阶段再次关闭。Function testJump P1!D0;On 1;D50;Off 1!Fend2)将并列处理连同Jump 命令一起使用。第3 关节上升移动结束,第1、第2、第4 关节各自完成到P1 的移动的 10%的阶段打开输出位5,0.5 秒后关闭输出位5。Function test2Jump P1!D10;On 5;Wait 0.5;Off 5!Fend注意:所有I/O 命令结束前动作结束的情况下 即使结

30、束特定动作命令的动作所有的并列处理语句的执行也没有结束时,等全部结束以后执行下一个程 序。这种状况在必须并列处理多个I/O 命令的短距离移动动作时特别要注意用停止手臂的Till 语句中途结束动作时,并联I/O 的执行 如果移动的中途停止手臂的Till 语句被使用,动作语句执行的下一个语句等待至全部并列处理语句执行结 束后执行。,多重任务是多个作业同时执行,可以大幅度缩短任务时间(作业时间)。也可以同时控制周边设备,这样系统整体效率提高生产性也会提高。作业分为各个任务后,程序会变得易懂,且维修也可以对各任务分别进行,要新增作业时只需添加任务就可以了。可以同时执行的任务最多可以是16 个。格式:X

31、qt 任务编号,函数名(自变量一览表),Normal|NoPause|NoEmgAbort 动作任务1:重复P1P4的Jump动作任务2:每5秒打开/关闭1次I/O。程序:Function test9Integer iXqt IODoFor i=1 To 4 Jump P(i)NextLoopFENDFUNCTION IODoOn 1;Wait 0.5Off 1;Wait 0.5LoopFend,1、Do.Loop功能:条件一致或不一致时反复执行Do.Loop直接的程序,直到条件一致为止格式1:Do while|until条件式 语句】Exit Do 语句 Loop格式2:Do 语句】Exit

32、 Do 语句 Loopwhile|until条件式说明:当条件式省略时,且Do.Loop循环中没有Eixt Do语句则为一个无限循环。当条件式成立时退出循环。退出Do.Loop的另一个方法是可以在Do.Loop中的任何位置,插入任意个Exit Do语句。Exit Do经常使用在对If.Then 等几个条件进行评价之后。在If.Then 上使用Exit Do语句后,将控制Loop移至下一个语句。示例:Do While Sw(8)=On 当输入8为ON时一直执行Do.Loop之间语句 Go p1 移动到P1位置 On 8 打开输入8 Go p2 移动P2位置 Off 8 关闭输入8 Loop,2、

33、If.Then.Elseif.Endif功能:根据指定条件分歧执行命令格式1:If 条件式 Then 语句 T1.Elseif 条件式 Then 语句 T1.Else 语句 F1.Endif格式2:If 条件式 Then 语句T1;语句T2.Else 语句 F1;语句 F2.说明:If.Then.Else 在满足条件时执行语句T1以后部分,不满足条件时执行F1以后部分,Else部分可省略,不满足条件时就执行 Endif 以后部分。按照格式1编辑程序时必须以Endif结束,按照格式2将语句编辑到同一行时可省略 Endif,If.Then.Else 语句的程序段,嵌套最多可以有20段示例:If S

34、W(8)=ON then 当输入8接通时移动到P1 Go P1 Endif,3、For.Next功能:For.Next 之间一连串的语句执行指定次数格式1:For 变量名=初始值 To 结束值 Step 增值 语句.Next 变量名说明:初始值的数值为计数器最初的值。如果正确设定了结束值变量与增值,就可以设定负的数值。结束值为计数器的最终值。到达此值后循环立即结束,程序控制移至Next 命令的下一个命令。For 语句的下一个语句被执行至到达Next 命令为止。计数器变量(变量名)根据增值参数,只增值指定的值。如果没有设定增值值,计数器每1 增减。然后计数器变量(变量名)与最终值比较。计数器比最

35、终值小或相同时,For 命令的下一个语句被再次执行。计数器变量(变量名)大于最终值时在For.Next循环以外分支,在Next 命令的下一个命令上继续。在For.Next间再次使用For.Next语句叫做嵌套。嵌套最高可以到16段 示例:For ctr=1 to 10 Go Pctr Next ctr For ctr=10 to 1 Step-1 Go Pctr Next ctr,4、GoSub.Return功能:GoSub 是将程序控制转移至子程序。子程序的执行结束后控制回到GoSub 命令的下 一行。格式1:GoSub 行编号|标签 行编号|标签:语句 Return.说明:GoSub 命令

36、将程序控制转移至指定的行或标签。程序执行转移目标的语句,就这样一直执行转移目标行,直到Return 命令。GoSub 命令在执行子程序以后用Return 返回GoSub 命令的下一行。请务必用Return 结束子程序。NOTE:1)GoSub 命令在转移目标中指定不存在的行编号或标签后,会发生错误1650。2)GoSub 命令的嵌套最多只能有16段。即转移目标的子程序内再次执行GoSub 命令,并再次执行子程序可以有16次。想执行第17次GoSub 命令就会发生错误7。3)Return 命令将执行了GoSub 命令的部分恢复至原来的程序。如果没有GoSub,但使 用了Return,就会发生错误

37、3。没有GoSub 时使用Return,不知道恢复至哪里,所以 无任何意义。示例:Function main Go Sub checkio GoSub using Label On 1 Exit Function checkio:Subroutine starts here var1=In(0)var2=In(1)Return Subroutine ends here,5、Goto功能:GoTo命令是将程序控制转移至指定的行或标签格式:GoTo 行编号|标签 说明:GoTo 命令将程序控制转移至指定的语句行或标签。程序执行转移目标的语句行,并执行以下的行NOTE:在1 个程序中,如果过多使用G

38、oTo命令,程序就会变得难懂,请注意。通常尽量不要使用GoTo命令。实际上,有时不得不使用GoTo,但是像GoTo 语句将源代码到处转移的使用会造成错误或引起其他问题示例:Function main If Sw(1)=Off Then GoTo mainAbort EndIf Print Input 1 was On,continuing cycle.Exit Function mainAbort:Print Input 1 was OFF,cycle aborted!Fend,6、Call功能:将函数作为子程序调出格式1:Call 函数名(自变量列表).说明:通过Call 命令,Functi

39、on.Fend 将程序控制移至定义的函数。通过Call 命令,程序的执行 从当前的函数移至Call 命令指定的函数。程序一直用调出的函数继续,直到找开Exit Function 或Fend。接着用Call 命令的下一个语句返回原来的函数控制。示例:Function main Call InitRobot(1)Fend Function InitRobot(robotNumber As Integer)Integer savRobot savRobot=Robot Robot robotNumber Motor On If Not MCalComplete Then MCal End If Ro

40、bot savRobot Fend,7、While.Wend功能:条件成立期间,执行While.Wend 之间的指定的语句。格式1:While 条件式 语句 Wend.说明:指定While条件。如果条件成立,在WhileWend 间的语句被执行,再一次确认While条件。While条件成立期间,重复WhileWend 间的语句的执行与While条件的确认。如果While 条件不成立,程序控制移至Wend的下一个命令。如果第1 次确认后While条件不成立,WhileWend 间的语句一次都不被执行。NOTE:在一个While.Wend 循环中可嵌套的While.Wend循环最多为16段。示例:

41、Long i i=1 While i 60 Execute statements between While/Wend if i 60.i=i+2 Wend,8、Select.Send功能:根据表达式的值将控制移至几个语句中的任意一个上。格式1:Select 表达式 Case项目 语句 Default 语句 Send.说明:1)Case 语句的项目中如果有与Select 语句的表达式结果一致的,则执行Case 语句后的语 句群。执行后,程序控制移至Send语句上连接的语句。2)Case 语句的项目中如果没有与Select 语句的表达式结果一致的,则执行Default语句,程 序控制移至Send

42、语句上连接的语句。3)Case 语句的项目中如果没有与Select 语句的表达式结果一致的,且Default被省略,不执 行任何语句,程序控制移至Send语句的下一个语句。4)Select 语句的表达式与CASE 语句的项目中可以指定使用常数、变量、And Or Xor 等 的逻辑算符。5)1 个Select 命令上最多可以创建250 段的Case 语句。示例:Select I Case 0 Off 1;On 2;Jump P1 Case 3 On 1;Off 2 Jump P2;Move P3;On 3 Case 7,9、OnErr功能:发生错误时,在错误处理子程序上设定使控制分支的中断。使

43、用记可以进行错误处理。格式1:OnErr GoTo 标签|行编号|0.说明:1)通过OnErr 用户可以进行错误处理。如果没有使用OnErr,发生错误时任务被中止,显示 错 误。但是,如果使用OnErr,为做到自动地从错误中恢复,可以将控制移至错误处理子 程序。恢复错误后,控制移至用OnErr 命令指定的行编号。这样,即使发生错误,也不会 中断任务的执行,且可以自动进行错误处理。另外,容易变得复杂的问题也可以用同样的 方法自动处理,所以可以明显地提高工作效率。2)OnErr 命令在指定参数 0 后被设定时,清除当前的OnErr 设定。OnErr 0执行后,如 果发生错误,程序的执行会立即停止。

44、示例:Function errDemo Integer i,errNum OnErr GoTo errHandler For i=0 To 399 temp=CX(P(i)Next i Exit Function errHandler:errNum=Err If errNum=78 Then Print Point number P,i,is undefined!Else Print ERROR:Error number,errNum,occurred while Print trying to process point P,i,!EndIf EResume Next Fend,1、以下程序

45、为一个分拣演示程序,先通过EPSON视觉照相获取模版位置,然后 将不同的料排列到不同矩阵盘,然后再从矩阵盘就料取出随意放入料盘,如此往复运行。Integer num,num1 定义全局整形变量*主函数*Function mainCall InitRobot 调用初始化子函数Jump daiji 移动到待机位置DoCall Robot1 调用Robot1子函数LoopFend*初始化子函数*Function InitRobotIf Motor=Off Then 当马达伺服未上时使伺服ONMotor On 开伺服EndIfPower High 运行功率为高功率Speed 10 定义PTP速度Acc

46、el 80,80 定义加减速Off 8 关闭输出8Pallet 1,y1,y2,y3,3,2 定义一个三列二行矩阵1Pallet 2,y10,y11,y12,3,2 定义一个三列二行矩阵2Fend,*视觉子程序*Function Vision1Integer i,j 定义整形变量Real X(50),Y(50),Z,U(50)定义二个实形变量Z=-106.5 给Z赋值VRun wyl 运行wyl序列VGet wyl.Geom03.NumberFound,num 获取模版Geom03个数 If num 0 Then For i=1 To num VGet wyl.Geom03.RobotXYU(

47、i),found1(i),X(i),Y(i),U(i)获取模版Geom03坐标 P(i)=XY(X(i),Y(i),Z,0)/L 将模版Geom03坐标赋值给P(i)Next EndIf VGet wyl.Geom02.NumberFound,num1 获取模版Geom02个数Print num1 打印搜索到模版个数If num1 0 Then For j=1 To num1 VGet wyl.Geom02.RobotXYU(j),found1(j+10),X(j+10),Y(j+10),U(j+10)获取模版 Geom02坐标 P(j+100)=XY(X(j+10)-0.2,Y(j+10)-

48、0.2,Z,U(j+10)/L 将模版Geom02坐标赋值给P(j+100)Next EndIfFend,*机器人动作程序*Function Robot1Integer i,k,j,k1 定义整形变量Tool 0 使用Tool 0LimZ-30.00 设定Z轴极限Jump P(35)移动到P35点 Call Vision1 调用视觉子程序 If num 0 Then For i=1 To num Tool 6 使用Tool 6 Jump P(i)+Z(10)C1 移动到P(i)点上方相距10mm Move P(i)移动到P(i)点 On 8 打开中空 Wait 0.5 等待0.5s Jump

49、Pallet(1,i)+Z(10)C1 移动到矩阵1的第i号位置上方相距10mm Move Pallet(1,i)移动到矩阵1的第i号位置 Off 8 关闭中空 Wait 0.1 等待0.1S Next EndIf,If num1 0 ThenFor j=1 To num1 Tool 6 使用Tool 6 Jump P(j+100)+Z(10)C1 移动到P(j+100)点上方相距10mm Move P(j+100)移动到P(j+100)点 Print Here 输出当前位置 On 8 打开中空 Wait 0.5 等待0.5s Jump Pallet(2,j)+Z(10)C1 移动到矩阵2的第

50、j号位置上方相距10mm Move Pallet(2,j)移动到矩阵2的第j号位置 Off 8 关闭中空 Wait 0.1 等待0.1S Next EndIf For k=1 To num Tool 6 使用Tool 6 Jump Pallet(1,k)C1 移动到矩阵1的第K号位置 On 8 打开中空 Wait 0.5 延时0.5S Jump P(59+k)+Z(10)C1 移动到P(59+k)上方相距10mm Off 8 关闭中空 Wait 0.1 延时0.1s Next,For k1=1 To num1 Tool 6 使用Tool 6 Jump Pallet(2,k1)C1 移动到矩阵1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号