虚拟零件供料功能
在Epson RC+ Standard Edition及以上版本中,可以在模拟器上确认零件供料动作。这里将介绍使用虚拟零件供料功能构建简单系统的步骤。
步骤概要
- 创建虚拟控制器并设置机器人
- 创建项目
- 在系统设置中添加并设置零件供料机
- 添加并设置相当于零件放置目标工作台的对象
- 添加并设置虚拟相机
- 执行视觉校准
- 创建视觉序列
- 设置零件和供料机
- 执行供料机校准
- 创建并执行程序
步骤详情
准备
新建虚拟控制器连接。
在系统设置中,将机器人1设置为"GX8-C652S"(名称为robot1)。创建项目 "PF_Sample"。
在Epson RC+ 8.0菜单 - [设置] - [系统配置]的[控制器] - [工件供料机]中添加供料机(IF-A1520),并进行以下设置。
- 启用[料斗1安装]
- 位置设置(Position X, Y, Z): -100, 450, 0
- 碰撞检测设置(Collision Check) : false
添加相当于零件放置目标工作台的对象(Box对象),并进行如下设置。
- 对象名称(Name): Table
- 尺寸设置(Half size X, Y, Z): 100, 100, 50
- 位置设置(Position X, Y, Z): 350, 0, 50
添加相机设置。
在Epson RC+ 8.0菜单 - [设置] - [系统配置]的[视觉]中添加虚拟相机。
勾选[虚拟],选择"acA640-120gm"作为型号,然后单击[应用]按钮。
按如下方式设置相机对象,并将其配置在供料机对象的上方。
- 位置设置(Position X, Y, Z): 65, 440, 770
- 姿态设置(Rotation X, Y, Z) : 180, 0, 90
执行视觉校准。
在此创建并执行名为"Calib"的校准。
完成视觉校准后,将所使用的校准用CAD数据移动到不妨碍作业的位置。有关相机校准,请参阅以下视频手册。
Procedure for Using the Vision Simulator (opens new window)
或者,请参阅以下手册。
《视觉指南8.0软件手册》- 视觉校准
用于视觉校准的CAD数据已作为示例CAD数据准备在以下文件夹中。
C:\EpsonRC80\Simulator\CAD\CalibBoard使用该CAD数据进行校准。
创建视觉序列,并按照以下步骤确认是否能够正确检测零件。
在供料机操作面板中,向供料机对象上供应1个作为零件的对象。
- 单击供料机操作面板的[供应设置]按钮
- 从当前已配置在3D显示中的对象中选择零件的基础对象
- 这里选择默认的"Default Box"
创建用于识别该零件的序列"BoxDetection"。
- 使用Blob对象作为用于识别的视觉对象
- 如果无法正确识别零件,将"ThresholdHigh"属性值设置为"180"并进行调整
- 将NumberToFind属性从"1"更改为"All",以识别供料机上的所有零件
执行BoxDetection序列,确认零件能够被正确识别。
在Calibration属性中设置按照上述步骤创建的校准"Calib"。
确认能够识别零件后,先清除供料机上的零件。
单击供料机操作面板的[清除]按钮
按照以下步骤设置零件和供料机。
打开Epson RC+ 8.0菜单 - [工具] - [工件供料],添加零件。
首次添加零件时,将自动生成PartFeeding.prg。
必须设置视觉序列,按如下方式进行设置。
在零件供应设置中,选择"1"作为料斗。
其他设置根据需要进行。
有关设置的详细信息,请参阅以下手册。
"Part Feeding 8.0导入&软件篇 - 软件篇 - Part Feeding GUI - 零件供料对话框"
这里保持默认设置。
按照以下步骤执行供料机校准。
在零件设置画面的[校准]中,单击[校准&测试]。
首先测量零件区域。
- 单击[零件供应]按钮打开供料机操作面板,仅供应1个零件。
- 单击[运行]按钮,计算零件面积。
- 根据需要设置和调整供料机参数。
有关设置的详细信息,请参阅以下内容。
"Part Feeding 8.0导入&软件篇 - 软件篇 - Part Feeding GUI - 校准&测试"
创建程序
新添加第1个零件设置时,会自动创建名为PartFeeding.prg和PartFeeding.inc的程序文件。其中已添加回调函数模板,该函数会在零件供料的运行过程中满足规定条件时自动调用。
有关回调函数的详细信息,请参阅以下内容。
"Part Feeding 8.0导入&软件篇 - 软件篇 - 前言 - Part Feeding软件结构 - 回调函数"
这里添加使机器人动作所需的处理。
用于在程序开始运行时指定机器人执行Pick & Place的零件数量的程序。创建以下程序并保存为Main.prg。
Global Integer gMaxCount ' Number of parts to pick and place Global Integer gCount ' Current number of picked parts Function main String input$ InputBox "Please input number of parts to pick and place", "Number of parts", "10", input$ gMaxCount = Val(input$) SimSet Feeder_1.ClearSupply Motor On Power High Accel 100, 100 Speed 100 Jump XY(240, 100, -50, 0) PF_Start 1 Xqt StartRobot Fend Function StartRobot TmReset 0 Do If gCount >= gMaxCount Then Exit Do EndIf Loop Print "Total: ", Tmr(0), "[s]" PF_Stop 1 Fend在PartFeeding.prg开头添加以下内容。
Global Integer gMaxCount Global Integer gCount此外,将函数"PF_Robot"改写如下。
Function PF_Robot(PartID As Integer) As Integer 'Robot number is set by [Tool] - [PartFeeding] - [General]. 'Set Tool, Arm, ECP if needed. If gCount >= gMaxCount Then PF_Robot = PF_CALLBACK_SUCCESS Exit Function EndIf String name$ Do While PF_QueLen(PartID) > 0 'Get position of part to be picked in the calibration robot local P0 = PF_QueGet(PartID) 'Pick (Jump P0 etc) Go Here :Z(-50) Jump P0 /R :Z(-160) :U(0) LimZ -50 SimGet robot1.NearestObjToTool(0), name$ SimSet robot1.Pick, name$ 'Place (Jump P1 etc) Jump XY(300 + (gCount / 6) * 30, -70 + (gCount Mod 6) * 30, -160, 0) LimZ -50 SimSet robot1.Place, name$ SimSet name$.SetParent, Table 'Deque PF_QueRemove PartID 'Check Cycle stop gCount = gCount + 1 If PF_IsStopRequested(PartID) = True Or gCount >= gMaxCount Then Exit Do EndIf Loop PF_Robot = PF_CALLBACK_SUCCESS Fend另外,将函数"PF_Control"改写如下。
Function PF_Control(PartID As Integer, Control As Integer) As Integer String msg$ Select Control Case PF_CONTROL_SUPPLY_FIRST ' Request for part supply (when empty) msg$ = PF_Name$(PartID) + CRLF + CRLF + "Supply " + Str$(PF_Info(PartID, PF_INFO_ID_FEEDER_CALIB_CORRECT_MAXNUM)) + " parts." 'Sample for hopper control PF_Hopper 1, PartID, 3000 Wait 3.0 Case PF_CONTROL_SUPPLY ' Request for part supply (add up to optimum number) msg$ = PF_Name$(PartID) + CRLF + CRLF + "Supply additional parts." 'Sample for hopper control PF_Hopper 1, PartID, 3000 '(For parallel supplying, Wait is not needed here.) Case PF_CONTROL_LIGHT_ON ' Request for Front Light On msg$ = PF_Name$(PartID) + CRLF + CRLF + "Turn front light On." Case PF_CONTROL_LIGHT_OFF ' Request for Front Light Off msg$ = PF_Name$(PartID) + CRLF + CRLF + "Turn front light Off." Send If False And CtrlDev = 21 Then MsgBox msg$, MB_ICONINFORMATION Else Print msg$ EndIf PF_Control = PF_CALLBACK_SUCCESS Fend执行程序
单击工具栏的[打开运行窗口]按钮,显示[运行]窗口。
选择函数“main”,单击[开始]按钮。
将显示用于输入执行Pick & Place的零件数量的对话框。
输入任意数量,然后单击[OK]按钮。零件供应到供料机后,请确认机器人拾取零件并将其移动到工作台的过程。