虚拟零件供料功能

在Epson RC+ Standard Edition及以上版本中,可以在模拟器上确认零件供料动作。这里将介绍使用虚拟零件供料功能构建简单系统的步骤。

步骤概要

  1. 创建虚拟控制器并设置机器人
  2. 创建项目
  3. 在系统设置中添加并设置零件供料机
  4. 添加并设置相当于零件放置目标工作台的对象
  5. 添加并设置虚拟相机
  6. 执行视觉校准
  7. 创建视觉序列
  8. 设置零件和供料机
  9. 执行供料机校准
  10. 创建并执行程序

步骤详情

  1. 准备

    1. 新建虚拟控制器连接。
      在系统设置中,将机器人1设置为"GX8-C652S"(名称为robot1)。

    2. 创建项目 "PF_Sample"。

    3. 在Epson RC+ 8.0菜单 - [设置] - [系统配置]的[控制器] - [工件供料机]中添加供料机(IF-A1520),并进行以下设置。

      • 启用[料斗1安装]
      • 位置设置(Position X, Y, Z): -100, 450, 0
      • 碰撞检测设置(Collision Check) : false

    4. 添加相当于零件放置目标工作台的对象(Box对象),并进行如下设置。

      • 对象名称(Name): Table
      • 尺寸设置(Half size X, Y, Z): 100, 100, 50
      • 位置设置(Position X, Y, Z): 350, 0, 50
    5. 添加相机设置。

      1. 在Epson RC+ 8.0菜单 - [设置] - [系统配置]的[视觉]中添加虚拟相机。

      2. 勾选[虚拟],选择"acA640-120gm"作为型号,然后单击[应用]按钮。

      3. 按如下方式设置相机对象,并将其配置在供料机对象的上方。

        • 位置设置(Position X, Y, Z): 65, 440, 770
        • 姿态设置(Rotation X, Y, Z) : 180, 0, 90

    6. 执行视觉校准。
      在此创建并执行名为"Calib"的校准。
      完成视觉校准后,将所使用的校准用CAD数据移动到不妨碍作业的位置。

      有关相机校准,请参阅以下视频手册。

      Procedure for Using the Vision Simulator (opens new window)

      或者,请参阅以下手册。

      《视觉指南8.0软件手册》- 视觉校准

      用于视觉校准的CAD数据已作为示例CAD数据准备在以下文件夹中。

      C:\EpsonRC80\Simulator\CAD\CalibBoard

      使用该CAD数据进行校准。

    7. 创建视觉序列,并按照以下步骤确认是否能够正确检测零件。

      1. 在供料机操作面板中,向供料机对象上供应1个作为零件的对象。

        • 单击供料机操作面板的[供应设置]按钮
        • 从当前已配置在3D显示中的对象中选择零件的基础对象
        • 这里选择默认的"Default Box"
      2. 创建用于识别该零件的序列"BoxDetection"。

        • 使用Blob对象作为用于识别的视觉对象
        • 如果无法正确识别零件,将"ThresholdHigh"属性值设置为"180"并进行调整
        • 将NumberToFind属性从"1"更改为"All",以识别供料机上的所有零件
      3. 执行BoxDetection序列,确认零件能够被正确识别。

      4. 在Calibration属性中设置按照上述步骤创建的校准"Calib"。

      5. 确认能够识别零件后,先清除供料机上的零件。

        • 单击供料机操作面板的[清除]按钮

    8. 按照以下步骤设置零件和供料机。

      1. 打开Epson RC+ 8.0菜单 - [工具] - [工件供料],添加零件。

      2. 首次添加零件时,将自动生成PartFeeding.prg。

      3. 必须设置视觉序列,按如下方式进行设置。

      4. 在零件供应设置中,选择"1"作为料斗。

      5. 其他设置根据需要进行。

        有关设置的详细信息,请参阅以下手册。

        "Part Feeding 8.0导入&软件篇 - 软件篇 - Part Feeding GUI - 零件供料对话框"

        这里保持默认设置。

    9. 按照以下步骤执行供料机校准。

      1. 在零件设置画面的[校准]中,单击[校准&测试]。

      2. 首先测量零件区域。

        1. 单击[零件供应]按钮打开供料机操作面板,仅供应1个零件。
        2. 单击[运行]按钮,计算零件面积。
        3. 根据需要设置和调整供料机参数。

        有关设置的详细信息,请参阅以下内容。

        "Part Feeding 8.0导入&软件篇 - 软件篇 - Part Feeding GUI - 校准&测试"

  2. 创建程序

    新添加第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
    
  3. 执行程序

    1. 单击工具栏的[打开运行窗口]按钮,显示[运行]窗口。

    2. 选择函数“main”,单击[开始]按钮。

    3. 将显示用于输入执行Pick & Place的零件数量的对话框。
      输入任意数量,然后单击[OK]按钮。

    4. 零件供应到供料机后,请确认机器人拾取零件并将其移动到工作台的过程。