PF_Vision
要編寫成像處理(照明控制、執行視覺、SPEL程式處理)時使用。在僅執行視覺難以檢測到零件或判別姿態(如正反面)時使用。若要使用本功能,請在Epson RC+ 8.0功能表 - [工具] - [Part Feeding] - [Vision]中,選擇[使用PF_Vision callback進行視覺處理]。
格式
Function PF_Vision(零件ID As Integer, ByRef numBack As Integer) As Integer
' (視覺處理)
Fend
參數
- 零件ID
輸入零件ID(整數值1~32)。
多種零件運作時,輸入主動零件。 - numBack
指派不可拾取的零件(如背面朝上等)數量。(以ByRef指定。)
此值用於在Part Feeding程序中判斷是否需要翻轉。
對於沒有正反面的零件,設定為「0」。
傳回值
若要繼續處理,請設定PF_CALLBACK_SUCCESS。
若要進行錯誤處理,請設定使用者定義錯誤編號(8000 - 8999)。
此值會作為PF_Status回呼函數的引數被傳遞。
描述
此函數用於結合多個視覺序列和外部照明控制來檢測零件座標的情況。您可編寫如下處理:
- 自訂照明控制
- 執行視覺(執行VGet陳述式)
- 零件座標佇列管理(初始化及點資料註冊)
程式範例
以下程式是使用2個視覺序列VSeq1(包含1個Geom物件)及VSeq2(包含1個Geom物件)檢測零件的範例。VSeq1與自訂照明1一起使用,可檢測到零件位置,但無法判定姿態。VSeq2與自訂照明2一起使用,僅檢測正面零件。
使用PF_QueAdd命令將檢測到的零件座標(設為本地編號1)放入座標佇列。此時,將透過以下方式獲得的值指派給Z座標。
教導視窗
若要啟用翻轉功能,請參閱以下內容。
一般設定
在[零件視覺序列]中指定VSeq2,以開啟自訂照明2。請參閱以下內容。
視覺系統
進行翻轉的校準。請參閱以下內容。
校準
' ** IO Label (Output) **
' O_FrontLight1 自訂照明1
' O_FrontLight2 自訂照明2
Function PF_Vision(partID As Integer, ByRef NumBack As Integer) As Integer
Boolean found
Integer i, numFound
Real PX_X, PX_Y, PX_U
Real RB_X, RB_Y, RB_U, RB_Z
' 拾取Z座標
RB_Z = -80.0
' 初始化座標佇列
PF_QueRemove partID, All
' 開啟自訂照明1
On O_FrontLight1
' 檢測零件(執行UsrVisionSeq1)
VRun VSeq1
VGet VSeq1.Geom01.NumberFound, numFound
' 關閉自訂照明1
Off O_FrontLight1
' 開啟自訂照明2
On O_FrontLight2
numBack = 0
For i = 1 To numFound
' 取得VSeq1.Geom01檢測到的零件XY像素座標
' 並設定VSeq2.Geom01的搜尋視窗以圍繞該零件
' 零件大小 = 100 × 100 p × l
VGet VSeq1.Geom01.PixelXYU(i), found, PX_X, PX_Y, PX_U
VSet VSeq2.Geom01.SearchWinLeft, (PX_X - 50)
VSet VSeq2.Geom01.SearchWinTop, (PX_Y - 50)
' 執行VSeq2
VRun VSeq2
VGet VSeq2.Geom01.Found, found
If found = True Then
' 若能檢測到則為正面零件,註冊至座標佇列
' 本地編號為1
VGet VSeq1.Geom01.RobotXYU(i), found, RB_X, RB_Y, RB_U
PF_QueAdd partID, XY(RB_X, RB_Y, RB_Z, RB_U) /1
Else
' 若無法檢測到則為背面零件
numBack = numBack + 1
EndIf
Next
' 關閉外部照明2
Off O_FrontLight2
PF_Vision = PF_CALLBACK_SUCCESS
Fend