虛擬料件送料功能
在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]按鈕。料件供應至供料器後,確認機器人拾取料件並將其移動至工作台的情況。