《爱普生机器人初级教学课件》由会员分享,可在线阅读,更多相关《爱普生机器人初级教学课件(67页珍藏版)》请在金锄头文库上搜索。
1、1EPSON EPSON 机械手培训机械手培训2一、关于机械手的基础知识二、硬件概要三、EPSON RC+ 用户界面四、RC+软件操作五、SPEL+语言六、动作指令七、I/O八、Pallet 九、!.! 并列处理十、多任务处理十一、循环控制指令十二、程序实例内容内容内容内容3一、关于机械手的基础知识一、关于机械手的基础知识一、关于机械手的基础知识一、关于机械手的基础知识1、机械手坐标系1.1 SCARA机械手坐标系XY方向坐标(前后左右)Z方向坐标(上下)U方向坐标(旋转)4一、关于机械手的基础知识一、关于机械手的基础知识一、关于机械手的基础知识一、关于机械手的基础知识2. 机械手的手臂姿势
2、在使用机械手作业时,有必要使其用示教时的手臂姿势在指定的点上动作。如果不这样做,根据手臂姿势的不同,会产生轻微的位置偏移,或朝着意想不到的路径动作的结果,有干涉周边设备的危险。为了避免这种情况,在点数据中必须事先指定使其在此点上动作时的手臂姿势(如下图)。此信息也也可以从程序中变更(L或者R)。2.1 SCARA机械手的手臂姿势图5二、硬件概要二、硬件概要二、硬件概要二、硬件概要系统构成6RCRC9090普通普通普通普通I/OI/O定义定义定义定义7RCRC9090普通输入接法普通输入接法普通输入接法普通输入接法NPN接法PNP接法8RCRC9090普通输出接法普通输出接法普通输出接法普通输出
3、接法NPN接法(出厂默认)PNP接法9RCRC9090普通普通普通普通I/OI/O时序图时序图时序图时序图1、动作执行序列的时序(msec)2、紧急停止序列的时序10RCRC9090普通普通普通普通I/OI/O时序图时序图时序图时序图3、程序执行序列的时序11RCRC9090普通普通普通普通I/OI/O时序图时序图时序图时序图4、安全门输入序列的时序12RCRC9090安全安全安全安全I/OI/O定义定义定义定义 13RCRC9090安全安全安全安全I/OI/O接线图(使用控制器经典接法)接线图(使用控制器经典接法)接线图(使用控制器经典接法)接线图(使用控制器经典接法)不外接急停不外接急停时
4、接接线: :1,9,14短接短接 ; ; 2,3短接;短接;15,16短接;短接;4,11短接;短接;17,12短接;短接;24,8,21,19短接;短接;22, ,7,20,18短接短接 .14三、三、三、三、EPSON RC+ EPSON RC+ 用户界面用户界面用户界面用户界面15四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作1. 软件软件IP设置(使用以太网连接时用)设置(使用以太网连接时用) 配置与控制器的通信,从设置菜单中选择电脑与控制器通信。将打开如 下所示的对话框:设置新增以太网连接名称及IP地址 :点击增加-选择通过以太网连接控制器-确定-填写控制器IP地址。1
5、6四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(2)控制器出厂默认控制器IP设置如右下图所示 设置好IP后单击应用,如果控制器IP忘记了,可以先用USB线连接控制器然后在 “设置”|控制器|配置里可以查看控制器IP,电脑IP的前三位要与控制 器的前三位相同,例如“192.168.0.10” 17四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作2.控制器设置控制器设置 (1)单击设置” “控制器”进入控制器设置画面,然后单击“配置” 设置控制的IP地址及控制方式,当要使用外部I/O控制时须将“控制设备”改为 远程I/O,然后单击“应用”,再单击关闭,等待控制器重启完毕
6、后,按“F5”, 单击“激活远程I/O”后关闭软件即可使用外部I/O控制控制器。18四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作3. 示教画面示教画面打开Jog&Teach页面:Tools Robot Manager Jog&Teach或单击工具栏 图标后,选择Jog&Teach页面。如下图示Mode说明:World:在当前的局部坐标系、工具坐标系、机械手属性、ECP坐标系上,向X、Y、Z轴的方向微动动作。如果是SCARA型机械手,也可以向U方向微动。如果是垂直6轴型机械手,则可以向U方向(倾斜)、V方向(仰卧)、W方向(偏转)微动。Tool : 向工具定义的坐标系的方向微动移
7、动。Local: 向定义的局部坐标系的方向微动移动。Joint : 各机械手的关节单独微动移动。不是直角坐标型的机械手使用Joint模式时,显示单独的微动按钮。ECP : 在用当前的外部控制点定义的坐标系上,微动动作。19四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作4. 示教点步骤示教点步骤(1)在“点数据”页面中“点文件”下拉菜单中选择需要教点的点文件 单击选择点文件20四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(2)在步进示教页面右下角位位置选择需要示教的点编号单击选择要示教的点位21四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(3)微动将
8、机械手移动的需要示教点的位置。如果是SCARA机械手,Motor On情况下,可以在Control Panel 页面Free All释放所有轴后,手动将机械手移动需要示教点的位置后,Lock ALL锁定所有轴。微动按钮点位追踪按钮,在马达上伺服ON时直接移动到之前示教的点位,一般在之前点位变化需做微调时用22四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(4)点击Teach按钮,系统自动记录下示教点在当前坐标系的具体数值。如果需要示教的点为新增点,将弹出以下对话框,用户可根据需要对该点编辑标签及描述编辑点标签及描述然后单击“确定”23四、四、四、四、RC+RC+软件操作软件操作软
9、件操作软件操作(5)在“点数据”页面单击“保存”按钮,完成示教点。24四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作5. 马达重置及伺服马达重置及伺服OFF工具 机器人管理器控制面板或单击工具栏 图标后,选择“控制面板”页面。如下图示伺服ON运行功率设置马达报警时重置马达刹车释放Z轴刹车释放后要按住伺服指示灯旁边白色按钮才能手动移动Z轴25四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作6. 工具坐标设置工具坐标设置工具 机器人管理器工具或单击工具栏 图标后,选择“工具”页面。如下图示26四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(1)在“工具”画面
10、单击“工具向导”,进入工具向导画面,选择工具坐标编号27四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(2)选择好工具坐标编号后单击“下一个”,进入如下画面,单击“示教”进入机器人示教画面28四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(3)将U轴旋转到0度,在机器人运动范围内固定一个参考位置,然后通过移动X、Y轴移动到参考位置,然后单击确定29四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(4)示教好第一个位置后单击“示教”进入如下画面,然后单击“示教”进入第二点示 教画面30四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作(5)将Z后
11、提起后,旋转180度后,重新移动X、Y轴至之前保存的位置,然后单击“示教”进入下图画面,然后单击“完成”,完成工具坐标校准31四、四、四、四、RC+RC+软件操作软件操作软件操作软件操作7. I/O监控监控 “工具” “I/O监视器”工具或单击工具栏 图标后,进入如下图示画面监控I/O状态,双击输出位时可以强制输出ON32五、五、五、五、SPEL+SPEL+语言语言语言语言1. 概述SPEL+是在RC170/180、RC90控制器上运行的与BASIC相近的程序语言。它支持多任务,动作控制和I/O控制。程序以ASCII文本形式创建,被编辑在可以执行的对象文件中。2. 程序结构一个SPEL+程序包
12、括有函数,变量和宏指令,每一个程序以.PRG的扩展名保持到对应的项目里(Project)。一个项目至少包含有一个程序和一个main函数。函数以Function开始,Fend结束,函数名可以使用最多32个字符的半角英文数字和下划线,不区分大小写,但是不可以使用以数字和下划线开始的名称或SPEL+关键字。3. 变量SPEL+中有3种不同的变量。 Local : 局部变量(用在同一Function内使用的变量) Module : 模块变量(在同一程序内使用的变量) Global : 全局变量(在同一项目内使用的变量)程序示例:MAIN.PRG Function Main Call Func1 . F
13、end Function Func1 Jump pickpnt. Integer m_i模块变量m_iGlobal (Preserve) Integer g_i全局变量(全局保护变量)g_iFunction mainInteger I局部变量i.FendFunction Func1Integer I局部变量i.Fend33五、五、五、五、SPEL+SPEL+语言语言语言语言4. 变量的数据类型 变量有多种数据类型,使用前先说明类型,格式为:数据类型变量名。例如:Integer i,定义变量i为整型数据。另外,代入的数据和变量的类型必须一致。在下表中列出SPEL+ 语言中使用的数据类型。34六、
14、动作指令六、动作指令六、动作指令六、动作指令1.动作指令分类使机械手动作的指令叫作动作指令。可分为:PTP动作指令,CP动作指令,Curves动作指令,Joint动作指令。类型指令说明PTPGo、Jump、BGo、TGo 是经过机械手结构上最容易活动的路径到达目标位臵的动作命令CPMove、Arc、Arc3、Jump3/Jump3CP、 Bmove、TMove、CVMove 指定机械手到达目标位臵运动轨迹的指令NOTE: * CP模式,即Continuous Path 连续路径模式。* 指定PTP动作指令和Joint动作指令的速度和加/减速度时,使用SPEED指令和ACCEL指令。指定CP模式
15、动作指令时,使用使用SPEEDS指令和ACCELS指令。35六、动作指令六、动作指令六、动作指令六、动作指令2. PTP指令包括指令:Go、Jump、BGo、TGoPTP(Pose To Pose)动作,是与其动作轨迹无关,以机械手的工具顶端为目标位臵使其动作的动作方法。PTP动作,使用各关节上配置的电动机,使机械手通过最短的路径到达目标位置。优点:运动速度快,缺点:运动轨迹无法预测。指定PTP动作速度和加/减速,使用SPEED指令和ACCEL指令。2.1 Go 指令功能:全轴同时的PTP动作,动作的轨迹是各关节分别对从当前的点到目标坐标进行插补。格式:Go 目标坐标示例:1. Go P1 机
16、械手动作到P1点2. Go XY(50, 400, 0, 0) 机械手动作到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
17、=-10的门形动作移动到P1点位置Z坐标值为-10的位置图136六、动作指令六、动作指令六、动作指令六、动作指令NOTE:Go与Jump的区别Jump与Go都是使机械手手臂用PTP动作移动的命令。但是Jump有Go没有的一个功能。Jump将机械手的手部先抬起至LimZ 值,然后使手臂水平移动,快要到目标坐标上空的时候使其下降移动。此动作的标准是可以更准确地避开障碍物这一点,更重要的是通过吸附、配置动作,提高作业的周期时间。3. CP指令包括指令:Move、Arc、Arc3、Jump3/Jump3CP、BMove、TMove、CVMoveCP(Continuous Path )指令可以指定机械手
18、到达目标位置的运动轨迹。优点:轨迹可以控制,匀速动作。缺点:速度慢。指定直线动作速度和加/减速度,使用Speeds指令和Accels指令。3.1 Move 指令功能:以直线轨迹将机械手从当前位置移动到指定目标位置。全关节同时启动,同时停止。格式:Move 目标坐标示例:Move P1机械手以直线轨迹动作到P1点NOTE:Move与Go的区别到达目标点时的手臂的姿势重要的时候使用Go命令,但是比控制动作中的手臂的轨迹重要的时候,使用Move 命令。在SCARA机械手只有Z轴上下动作时,Go与Move的轨迹一样。37六、动作指令六、动作指令六、动作指令六、动作指令3.2 Arc和Arc3 指令功能
19、:Arc 在XY平面上以圆弧插补动作。 Arc3 在3D空间里以圆弧插补动作。格式:Arc 经过坐标,目标坐标说明:将机械手从当前位置到目标坐标,通过经过坐标用圆弧插补动作活动时使用。从所给的3点(当前坐标、经过坐标、目标坐标)自动演算圆弧插补轨道,并沿着此轨道移动机械手直至目标坐标为止。示例:Arc P2,P3NOTE:即使目标坐标在机械手的动作范围内,一旦在Move或Arc运动轨迹超过允许动作范围外,机械手会突然停止,给伺服电机带来撞击,有产生故障的危险。为了防止这样的事发生,请在高速执行之前先以低速进行动作范围确认。38六、动作指令六、动作指令六、动作指令六、动作指令3.3 Jump3/
20、Jump3CP指令功能将手臂用3 维门形动作移动。Jump3是两个CP动作与1个PTP动作的组合格式Jump3 退避坐标,接近开始坐标,目标坐标示例Jump3 P1,P2,P3从当前位臵经过保存坐标P1,接近坐标P2运动到目标坐标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)上执行偏移
21、直线插补动作。没有指定局部坐标系时,以局部0(基准坐标系)为基准,进行进行偏移PTP 动作。TMove 在当前的工具坐标系上执行偏移直线插补动作。图239六、动作指令六、动作指令六、动作指令六、动作指令CVMove 用Curve 命令执行定义的自由曲线CP 动作。CVMove 执行设定控制器硬盘上的文件名的文件数据的自由曲线CP 动作。此文件必须事先用Curve 命令制作。 Curve “mycurve”, O, 0, 4, P1, P2, On 2, P(3:7) 设定自由曲线 Jump P1用直线将手臂移动至P1 CVMove “mycurve” 用定义的自由曲线“mycurve”移 动手
22、臂5. 速度设定指令5.1 PTP指令的速度设定Speed 功能用于设定PTP动作速度的百分比格式:Speed s,a,b说明:s 速度设定值;a 第三轴上升速度设定值;b 第三轴下降速度设定值。示例:1. Speed 80 2. Speed 80,40,30Accel 功能用于设定PTP动作加减速度的百分比。格式: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图240六、动作指令六、动作指令六、动作指令六、动作指令
23、5.2 CP指令的速度设定SpeedS 功能用于设定CP动作速度值格式:SpeedS 速度设定值说明:表1 为不同机型对应的速度设定值范围示例:SpeedS 800 CP动作的速度设置为800mm/sAccelS功能用于设定CP动作加减速度值格式:AccelS 加速设定值,减速设定值说明:表1 为不同机型对应的加减速度设定值范围示例:AccelS 800 加减速度均为800mm/S机械手型号Speeds值范围mm/sAccelS值范围mm/sE2系列1112015000G 系列12000125000RS系列12000125000C4系列12000125000(c4L 15000)LS系列120
24、00125000表1:41六、动作指令六、动作指令六、动作指令六、动作指令4.3 Power指令功能:电源模式的设定格式:Power High|Low说明:默认值为Low。低功率模式下电机输出被限制,实际动作速度变为默认初始值的范围内。低功率模式设定时,从监控窗口或程序中即使出现设为高速的指示,也会按初始值速度动作。如果需要用更高的速度动作时,必须设定为Power High。4.4 Weight指令功能:进行补偿PTP 动作时的速度加减速度的参数设定格式:Weight 手部重量说明:手部重量指指定手臂上垂挂的夹治具和其他工件的重量。由设定值计算出的等价搬运重量超过最大可搬运重量时,会出现错误。
25、42六、动作指令六、动作指令六、动作指令六、动作指令5. Jump 指令的修饰5.1 拱形动作在Jump指令后通过指定门形参数Cn(n=07),可以改变拱形的形状。上图中a,b的值与C06对默认初始值(单位:mm)如下表列,7为门形动作。要改变C06对应的a,b的值,使用Arch指令。也可以Tools|Robot Manager|Arch选项卡中修改。拱形编号01234567a30405060708090门型运动b3040506070809043六、动作指令六、动作指令六、动作指令六、动作指令5.2 Arch指令功能:用于设定Jump动作拱形参数设定格式Arch 拱形编号,垂直上升距离,垂直下
26、降距离说明设定值比垂直移动距离大时变为门形动作。设定值即使掉电也会被保持。运动轨迹根据运动速度、机械手的动作方式而改变,所以动作前请先确认动作轨迹示例:Arch 0,10,4044七、七、七、七、I/OI/O控制指令控制指令控制指令控制指令RC90控制器标配了24位输入和16位输出,用户可以通过安装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输
27、入时,典型值45七、七、七、七、I/OI/O控制指令控制指令控制指令控制指令1.2 输出电路额定输出电压: + 12 24V 10最大输出电流::100mA(典型值)1输出输出驱动器::Photo Mos继电器通态电阻(平均)::23.5以下输出46七、七、七、七、I/OI/O控制指令控制指令控制指令控制指令2 输出指令On 功能:打开指定输出位格式:On 输出位编号, 时间, 非同步指定输出位编号:可使用的输出位编号;时间:以秒为单位,最小有效位为0.01秒;非同步指定:0或1说明:非同步指定在时间指定时可以指定,功能如表1 示示例:1. On 1 2. On 1,0.5,0Off 功能:关
28、闭指定输出位格式:Off 输出位编号, 时间, 非同步指定输出位编号:可使用的输出位编号;时间:以秒为单位,最小有效位为0.01秒;非同步指定:0或1说明非同步指定在时间指定时可以指定,功能如表1 示示例:1. Off 1 2. Off 1,0.5,0指定1时指定时间打开后关闭,执行下一个命令。指定0时On命令开始执行的同时,执行下一个命令。省略时与指定1时限同表147七、七、七、七、I/OI/O控制指令控制指令控制指令控制指令2 输出指令Out 功能:同时设定输出8个输出位格式:Out 端口编号,输出数据 端口编号:构成可使用输出位的组;输出数据:用端口编号指定的组的输出模式说明:端口编号与
29、输出数据的组合后同时设定8个输出位。输出位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位全部关闭48七、七、七、七、I/OI/O控制指令控制指令控制指令控制指令3 输入指令3.1 Wait 功能:时间等待或输入位等待格式:Wait
30、时间 Wait 输入条件,时间 时间:02147483,最小有效位为0.01秒;输入条件:记述待机条件说明:只指定时间时,指定时间待机后执行下一个命令。只指定输入条件式时,待机至条件成立。指定输入条 件与时间时,条件式成立或指定时间到都会执行下一个命令。使用Sw函数,可以确认输入条件式是否成 立,或指定时间是否已到。示例:Wait 1.5 待机1.5秒后,继续执行程序 Wait Sw(3)=On 待机直到输入位3开启3.2 Sw函数功能:返回指定的输入位状态格式:Sw (输入位编号) 输入位编号:可以使用的输入位编号说明:进行I/O输入的状态确认。指定的输入打开时返回1,关闭时返回0。示例:P
31、rint Sw(3)打印输入位3的状态 Wait Sw(1)=On and Sw(2)=On 待机直到输入位1和2开启 Wait Sw(1)=On or Sw(2)=On 待机直到输入位1或2开启49七、七、七、七、I/OI/O控制指令控制指令控制指令控制指令3.3 In函数功能:返回指定的输入位端口格式:In(端口编号) 端口编号:构成可以使用输入位的组说明:可同时确认8个输入位的值。可以使其待机直到2个以上的I/O位的状态在特定的条件下一致。 返回值为0255范围的整数值。示例:Print In(0)打印输入位3的状态 Wait In(0)=0 待机到07位全部关闭 Wait In(0)=
32、255 待机到07位全部开启50八、八、八、八、PalletPallet格式:Pallet Outside, Pallet 编号, Pi, Pj, Pk,Pm , 列数, 行数参数: Outside 创建在指定的行及列的范围外可以访问的Pallet。指定范围:-32768 to 32767。可省略。 Pallet 编号用0到15的整数指定Pallet编号。 Pi, Pj, Pk 指定使用在Pallet定义(标准的3 点定义)中的点变量。 Pm 与Pi, Pj, Pk 一起使用定义Pallet的点变量。可省略。 列数 用整数指定Pi 与Pj的列数。范围为1到32767。(行数列数32767) 行
33、数 用整数指定Pi 与Pk的行数。范围为1到32767。(行数列数32767)说明:在机械手上至少必须示教Pi, Pj, Pk这3 点,并指定Pi 与Pj的分割数及Pi 与Pk的分割数,才能定义pallet。51八、八、八、八、PalletPallet Pallet 如果是高精度的四方形,则只要指定角上4 点中的3 个点就足够了,但是,还是建议指定全角4点的位臵后进行pallet 定义。 定义pallet 时,首先要示教角的3 或4 个点,4 点定义时:以下表示P1、P2、P3 及P4。P1-P2 间有3 点,P1-P3 间有4点,总计使用12点用以下格式定义。表示Pallet的分割的各点自动
34、地分配分割编号(1-12)。 示教P1、P2、P3 时,尽量使三点的姿势一致。 Notes: 不正确的pallet的定义 如果搞错了点的顺序或点间的分割数,会出现错误的pallet顺序。52八、八、八、八、PalletPalletPallet 面的定义 用角上3 点的Z 坐标值定义pallet 平面的高度。所以,也可以定义垂直方向的pallet。1 列pallet 的pallet 定义 通过3 点指定的Pallet 命令,也可以定义1 列的pallet。如果是1 列,应示教两端的2 点,并如下输入、执行。 同一编号方向的分割数为1。 Pallet 2, P20, P21, P20, 5, 1
35、定义一个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 如右图所示。53九、九、九、九、!.! !.! 并列处理并列处理并列处理并列处理动作中并列进行I/O 等的输入输出处理。使用示例 1) 将并列处理连同Jump命令同时使用。第3 关节上升移动结束,第1、第2、第4 关节 开始动作的阶段打开输出位1。输出
36、位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 命令结束前动作结束的情况下 即使结束特定动作命令的动作所有的并列处理语句的执行也没有结束时,等全部结束以后执行下一个程 序。这种状况在必须并列处理多个I/O 命令的短
37、距离移动动作时特别要注意用停止手臂的Till 语句中途结束动作时,并联I/O 的执行 如果移动的中途停止手臂的Till 语句被使用,动作语句执行的下一个语句等待至全部并列处理语句执行结 束后执行。54十、多任务处理十、多任务处理十、多任务处理十、多任务处理多重任务是多个作业同时执行,可以大幅度缩短任务时间(作业时间)。也可以同时控制周边设备,这样系统整体效率提高生产性也会提高。作业分为各个任务后,程序会变得易懂,且维修也可以对各任务分别进行,要新增作业时只需添加任务就可以了。可以同时执行的任务最多可以是16 个。格式:Xqt 任务编号, 函数名(自变量一览表) ,Normal | NoPaus
38、e | 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.5LoopFend55十一、循环控制指令十一、循环控制指令十一、循环控制指令十一、循环控制指令1、Do . Loop功能:条件一致或不一致时反复执行Do . Loop直接的程序,直到条件一致为止格式1:Do while |until条件式 语句】 Exit Do 语句
39、 Loop格式2:Do 语句】 Exit 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
40、移动P2位置 Off 8 关闭输入8 Loop 56十一、循环控制指令十一、循环控制指令十一、循环控制指令十一、循环控制指令2、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
41、 以后部分。按照格式1编辑程序时必须以Endif结束,按照格式2将语句编辑到同一行时可省略 Endif,If.Then.Else 语句的程序段,嵌套最多可以有20段示例: If SW(8)=ON then 当输入8接通时移动到P1 Go P1 Endif57十一、循环控制指令十一、循环控制指令十一、循环控制指令十一、循环控制指令3、 For . Next功能:For . Next 之间一连串的语句执行指定次数格式1:For 变量名=初始值 To 结束值 Step 增值 语句 . Next 变量名说明: 初始值的数值为计数器最初的值。如果正确设定了结束值变量与增值,就可以设定负的数值。结束值为计
42、数器的最终值。到达此值后循环立即结束,程序控制移至Next 命令的下一个命令。 For 语句的下一个语句被执行至到达Next 命令为止。计数器变量(变量名)根据增值参数,只增值指定的值。如果没有设定增值值,计数器每1增减。 然后计数器变量(变量名) 与最终值比较。计数器比最终值小或相同时, For 命令的下一个语句被再次执行。计数器变量(变量名)大于最终值时在For.Next循环以外分支,在Next 命令的下一个命令上继续。 在For. Next间再次使用For.Next语句叫做嵌套。嵌套最高可以到16段 。示例: For ctr = 1 to 10 Go Pctr Next ctr For
43、ctr = 10 to 1 Step -1 Go Pctr Next ctr 58十一、循环控制指令十一、循环控制指令十一、循环控制指令十一、循环控制指令4、Goto功能:GoTo命令是将程序控制转移至指定的行或标签格式:GoTo 行编号 | 标签 说明:GoTo 命令将程序控制转移至指定的语句行或标签。程序执行转移目标的语句行,并执行以下的行NOTE:在1 个程序中,如果过多使用GoTo命令,程序就会变得难懂,请注意。通常尽量不要使用GoTo命令。实际上,有时不得不使用GoTo,但是像GoTo 语句将源代码到处转移的使用会造成错误或引起其他问题。示例:Function main If Sw(
44、1) = Off Then GoTo mainAbort EndIf Print Input 1 was On, continuing cycle . Exit Function mainAbort: Print Input 1 was OFF, cycle aborted! Fend59十一、循环控制指令十一、循环控制指令十一、循环控制指令十一、循环控制指令5、Call功能:将函数作为子程序调出格式1:Call 函数名 ( 自变量列表) .说明:通过Call 命令,Function.Fend 将程序控制移至定义的函数。通过Call 命令,程序的执行从当前的函数移至Call 命令指定的函数。程
45、序一直用调出的函数继续,直到找开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 Robot savRobot Fend60十一、循环控制指令十一、循环控制指令十一、循环控制指令十一、循环控制指
46、令7、Select. Send功能:根据表达式的值将控制移至几个语句中的任意一个上。格式1:Select 表达式 Case项目 语句 Default 语句 Send .说明:1)Case 语句的项目中如果有与Select 语句的表达式结果一致的,则执行Case 语句后的语 句群。执行后,程序控制移至Send语句上连接的语句。 2)Case 语句的项目中如果没有与Select 语句的表达式结果一致的,则执行Default语句,程 序控制移至Send语句上连接的语句。 3)Case 语句的项目中如果没有与Select 语句的表达式结果一致的,且Default被省略,不执 行任何语句,程序控制移至S
47、end语句的下一个语句。 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 761十一、循环控制指令十一、循环控制指令十一、循环控制指令十一、循环控制指令8、OnErr功能:发生错误时,在错误处理子程序上设定使控制分支的中断。使用记可以进行错误处理。格式1: OnErr GoTo 标签 | 行编号
48、 | 0 .说明:1)通过OnErr 用户可以进行错误处理。如果没有使用OnErr,发生错误时任务被中止,显示 错 误。但是,如果使用OnErr,为做到自动地从错误中恢复,可以将控制移至错误处理子 程序。恢复错误后,控制移至用OnErr 命令指定的行编号。这样,即使发生错误,也不会 中断任务的执行,且可以自动进行错误处理。另外,容易变得复杂的问题也可以用同样的 方法自动处理,所以可以明显地提高工作效率。 2)OnErr 命令在指定参数0后被设定时,清除当前的OnErr 设定。 OnErr 0执行后,如 果发生错误,程序的执行会立即停止。示例:Function errDemo Integer i
49、, 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 62十二、程序实例十二、程序实
50、例十二、程序实例十二、程序实例1、以下程序为一个分拣演示程序,先通过EPSON视觉照相获取模版位置,然后 将不同的料排列到不同矩阵盘,然后再从矩阵盘就料取出随意放入料盘, 如此往复运行。Integer num, num1 定义整形变量*主函数*Function mainCall InitRobot 调用初始化子函数Jump daiji 移动到待机位置DoCall Robot1 调用Robot1子函数LoopFend*初始化子函数*Function InitRobotIf Motor = Off Then 当马达伺服未上时使伺服ONMotor On 开伺服EndIfPower High 运行功率
51、为高功率Speed 10 定义PTP速度Accel 80, 80 定义加减速Off 8 关闭输出8Pallet 1, y1, y2, y3, 3, 2 定义一个三列二行矩阵1Pallet 2, y10, y11, y12, 3, 2 定义一个三列二行矩阵2Fend63十二、程序实例十二、程序实例十二、程序实例十二、程序实例*视觉子程序*Function Vision1Integer i, j 定义整形变量Real X(50), Y(50), Z, U(50) 定义二个实形变量Z = -100 给Z赋值VRun seq1 运行seq1序列VGet seq1 .Geom03.NumberFound
52、, num 获取模版Geom03个数 If num 0 Then For i = 1 To num VGet seq1.Geom03.RobotXYU(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 seq1.Geom02.NumberFound, num1 获取模版Geom02个数Print num1 打印搜索到模版个数If num1 0 Then For j = 1 To num1 VGet seq1.Geom02.R
53、obotXYU(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) - 0.2, Z, U(j + 10) /L 将模版Geom02坐标赋值给P(j+100) Next EndIfFend64十二、程序实例十二、程序实例十二、程序实例十二、程序实例*机器人动作程序*Function Robot1Integer i, k, j, k1 定义整形变量Tool 0 使用Tool 0LimZ -30.00 设定Z轴极限Jump P(35)
54、 移动到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 Pallet(1, i) +Z(10) C1 移动到矩阵1的第i号位置上方相距10mm Move Pallet(1, i) 移动到矩阵1的第i号位置 Off 8 关闭真空 Wait 0.1 等待0.1S Next EndIf65十二、程序实例十二、程序实例十二、程序实例十
55、二、程序实例 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的第j号位置上方相距10mm Move Pallet(2, j) 移动到矩阵2的第j号位置 Off 8 关闭真空 Wait 0.1 等待0.1S Next EndIf For k =
56、 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 66十二、程序实例十二、程序实例十二、程序实例十二、程序实例 For k1 = 1 To num1 Tool 6 使用Tool 6 Jump Pallet(2, k1) C1 移动到矩阵1的第K1号位置 On 8 打开真空 Wait 0.5 延时0.5S Jump P(59 + k1) +Z(11) C1 移动到P(59+k)上方相距10mm Off 8 关闭真空 Wait 0.2 延时0.1sNext Fend67结束结束结束结束谢 谢