- TMflow 軟體版本:詳細版本要求請參照Image Manager說明書,本文章使用版本為2.14.6100
- TM 手臂硬體版本:詳細版本要求請參照Image Manager說明書,本文章使用HW3.2
- 伺服器端 Image Manager 版本:詳細版本要求請參照Image Manager說明書,本文章使用2.13.1400
- 控制器端 Image Manager TMCraft/Service 版本: 214_v1_1,可以至TMcraft下載
- 其他特殊軟硬體需求:
- 待檢測電控箱一台
- 偏光片
- 請注意,新舊版本之差異可能導致操作介面、步驟上會有所差異。
電控箱檢測任務說明 #
檢測流程 :
- 以電控箱上顯示面板進行Pattern matching定位,並將手臂移至檢測區域,透過AI Classification依序檢測下列項目 :
- 電源線上是否裝置濾波磁環
- 線頭是否確實插進插槽
- 上方螺絲孔是否有螺絲
- 側邊螺絲孔是否有螺絲
- 排線方式是否正確
- 配合TM Image Manager傳圖並進行管理
- 詳細AI Classification分類結果及說明可參考技術文件
檢測情境介紹 #
情境一 :
- 依序檢測電控箱,將各項檢測原始圖及檢測結果傳至TM Image Manager
情境二:
- 依序檢測電控箱,並透過Image Manager Node搭配Decision變數將檢測結果傳入TM Image Manager進行複判
- 檢測數量設定為2,同一個電控箱上五個檢測區域,均進行2次檢測,模擬單一流水線上有2台須檢測的電控箱
- 加入Layout的介面,可以由使用者自行設定要參考的樣品,以便進行複判
TM Image Manager 設定 #
選擇Device Station中的Device Management,可以透過自動偵測同網域下的設備進行加入,或是點擊Create自行加入設備
選擇Create,自行填入操作裝置的名稱及IP,可以在TMflow Login頁面中察看手臂名稱
找到裝置後,勾選Licensed
選擇Station Management,點擊Create,建立工作站
填入工作站名稱,並選擇操作裝置名稱,點擊送出
選擇Process中的Process Settings,點擊Create,建立Process
填入Process內相關資訊,並於工作站中選擇操作裝置及於手臂編輯的專案,其Reference_Key 對應於TMcraft Startprocess node的設定
若是連線成功,點擊刷新,可以看到執行的專案中的Vision Job
TMflow 編輯及設定 #
匯入 TMcraft Node/Service至TMFlow
將指定檔案放入Techman SSD或名稱為TMROBOT的USB儲存裝置裡的指定資料夾
- TM_Export/[your_compute]/ TMcraft/Node : TM_IM_[Authorize, Startprocess, Batch, Endprocess, UpdateSerialNumber].zip
- TM_Export/[your_compute]/ TMcraft/Service : image_manager_shadow_[checksum].zip
- 如果沒有存在TMcraft/Node 和 TMcraft/Service 需要自己創建資料夾
匯入 TMcraft Node/Service至TMFlow
TMflow->System->Import/Export: 選擇 TMcraft
- 選擇 Node: TM_IM_[Authorize, Startprocess, Batch, Endprocess, UpdateSerialNumber].zip
- 選擇 Service: image_manager_shadow[checksum].zip
Enable TMcraft Node
TMflow->Configure->TMcraft Management : 選擇Node
Enable TMcraft Service
TMflow->Configure->TMcraft Management :選擇Service
- 允許 image_manager_shadow.exe 並重新啟動TMflow
- 重新啟動TMflow後,確認Executing變為綠色
情境一 : 檢測電控箱,並傳圖及結果至IM #
Authorize node
編輯Image Manager Node,設定Authorize node
- 輸入資訊
- 點擊OK
- 可以點擊Test測試是否連線
Startprocess node
- 輸入Reference_Key,請對齊於Image Manager設定的Reference_Key
- 可以點擊Select,選擇自己於local variable設定的變數,也可以自行輸入值設定
- 設定 Part no, Work order, Bacth no 之後可以在 Image Manager 被搜尋到
- 點擊Ok
編輯視覺任務
以檢測電磁環為例子,透過顯示面板定位,並移動手臂至檢測電磁環區域,進行拍攝
以檢測電磁環為例,透過AI Classification判別是否有電磁環,有電磁環為OK,無則為NG,編輯完視覺流程後(建議使用者視覺存圖時,把原始圖勾選為JPG,可以減少傳輸時間與存圖空間)
- 點擊Save Image Setting
- 啟用 Save Source Image以及Save Result Image,儲存視覺任務
依此類推,將各個檢測任務均加入流程中,並編輯及儲存視覺任務
Endprocess node
- 選擇是否要在Image Manager Review 結果,我們未進行結果判斷,送至Image Manager Review均為FAILED,所以這裡勾選False
- 選擇此專案流程的 process_Order_Id (默認值)
- 點擊Ok
執行情境一任務
執行此專案,TMflow沒有針對視覺任務進行判斷式時,底層會等待5s並且傳送fail出去,並於Image manager選擇Station Overview中點擊你的工站
可以於你的工站中看到,你所傳送的圖檔及AI判斷結果,等待專案執行完成,於Inspection Records中找到你執行的Inspection Order No.,點擊查看全部的結果
- 執行情況一時,僅進行傳圖至Image Manager,並未透過Image Manager進行複判
- 執行情況一的任務,送至Image Manager的結果均預設為FAILED
- 當點擊Check all result時,可進入此頁面中,進行Confirmed
- Confirmed後,完成此次任務
情境二 : 檢測電控箱,透過IM進行複判 #
Authorize node
編輯Image Manager Node,設定Authorize node
- 輸入資訊
- 點擊OK
- 可以點擊Test測試是否連線
Startprocess node
- 輸入Reference_Key,請對齊於Image Manager設定的Reference_Key
- 可以點擊Select,選擇自己於local variable設定的變數,也可以自行輸入值設定
- 點擊Ok
編輯視覺任務
以檢測電磁環為例子,透過顯示面板定位,並移動手臂至檢測電磁環區域,進行拍攝
以檢測電磁環為例,透過AI Classification判別是否有電磁環,有電磁環為OK,無則為NG
- 於INITIATE中,勾選Snap-n-go
- 完成視覺任務後,點擊Save Image Setting
- 啟用 Save Source Image以及Save Result Image,儲存視覺任務(建議使用者視覺存圖時,把原始圖勾選為JPG,可以減少傳輸時間與存圖空間)
由於勾選Snap-n-go,我們會得到兩組參數,Pass以及Done,Done表示視覺任務是否已拍完照並運算完結果,Pass表示視覺任務是否運行成功
依此類推,將各個檢測任務均加入流程中,並編輯及儲存視覺任務
WaitforVisionDone node
- Is_classification_check_cable_Done_TM==“true”
- 確保最後一個視覺任務完成,得以進行下一批次的任務或是流程
Batch node
- 情境二需要檢測五個區域各2次,表示一條流水線上可能有2台電控相需要檢測
- 將此流程的數量設定為2
- 需要自己創建流程
- 在Batch Node下方創建 IF node,並輸入以下表達式
- var_Batch_Clear==true並將IF Node的
- Yes:連接至 Endprocess
- No:返回至顯示面板定位
- 點擊OK
Endprocess node
- 選擇是否要在Image manager Review 結果,我們於情境二中會進行複判,透過Thread流程判別結果為PASS或是FAILED,所以這裡勾選True
- 選擇此專案流程的 process_Order_Id (默認值)
- 點擊Ok
Thread – vision decision
建立Decision變數,以此變數進行判定任務結果是否為NG,若是視覺任務執行結果為NG,送至IM為FAILED,執行結果為OK,送至IM為PASS,可於IM中進行複判
可以透過以下步驟,自訂vision decision,這邊先以檢測電磁環的任務進行範例(視覺任務名稱為classification_check_line),其餘任務依此類推
- Waitfor node
- 等待100ms,等待視覺任務執行
Gateway and Gateway condition
- Is_classification_check_line_TM_Done == true
- 判斷是哪一項視覺任務拍攝完成
If node Decision
- is_classification_check_line_TM_Pass ==true
- 判斷視覺任務時否完成,若是完成,執行其下列程序
- is_classification_check_line_AI_Classification_1_TM==“OK“
- 以是否有電磁環為例,若是有電磁環為“OK“,無電磁環為“NG“
SET_PASS, SET_NG
- var_decision_vision_result == “PASS“
- 若是電磁環檢測為OK,將送PASS至Image Manager var_decision_vision_result == “FAILED”
- 若是電磁環檢測為NG,將送NG至Image Manager
SET_Variable
- var_decision_vision_metadata = “metatdata“
- 送入一些參考資訊至Image Manager
- var_decision_vision_name =”classification_check_line”
- 填入要送至Image Manager的視覺任務名稱
TMScript Name: Script_Send_and_Rest_Vision_Result
- 加入以下設定,透過decision變數及Scrip node將判斷結果送至IM
Set_Vision_Done
- is_classification_check_line_Done = false
- 關閉視覺任務完成的Flag變數,以等待下次Flag再次為True時觸發Logic Decision流程
回到Wait100ms
- 回到等待100ms,等待下一個視覺任務完成
其餘四個檢測任務,也是以相同方式進行編輯
執行情境二任務
於情境二中,我們可以自訂Image Manager 即時監控的Layout版面,點擊Create建立檢驗版(必須完成前置作業,包含建立設備、工站及流程),再選擇Process並輸入Layout Name進入Image Manager/Layout Designer/Layout Name頁面
Image Manager/Layout Designer/Layout Name中可設計Layout頁面,設定要於工站中比較的樣本,執行任務時,可以於Station Overview中,進入你的工站中察看Layout設計的結果
執行此專案,於Image manager選擇Station Overview中點擊你的工站
可以於你的工站中看到,你所傳送的圖檔及AI判斷結果,由於我們有勾選複判,所以將會於結束拍攝任務後,跳出Check all result的通知,若是有設定Layout,也可以於工站中看到你所設定的圖像,其圖像中可以顯示正在檢測的視覺任務
- 執行情況二時,傳圖至Image Manager
- 且透過Image Manager進行複判
- 例如未有電磁環,判斷為NG,應送FAILED至Image Manager進行複判,而OK則送PASS
- 當點擊Check all result時,可進入此頁面中,進行複判,可以針對FAILED的情形進行複判
- 當確認完成後,點擊Confirmed,完成此次任務
- 與情境一相同,可以於Inspection Records中找到你的Inspection Order No.(這邊以Inspection Order No.457為例),可以察看結果,若是複判確認時,有一張FAILED,則result就會顯示FAILED,表示這件工單有瑕疵
- 一個Inspection Order No.表示一條流水線(457便是其中一條),我們檢測數量設定為2表示我們這一條流水線有兩個電控箱要檢測,所以SerialNo有兩個組數字,之後會於下一章介紹如何客製Serial No的編號
設定Inspection order No.及SerialNo #
Inspection Order No.
每當我們執行一次Startprocess node時,便會產生一個Inspection Order No.,表示一條流水線的開始,或是一個工單的開始
若是未取用UpdateSerialNumber node,預設的SerialNo是從0開始往上加,如下圖所示
- 要客製自己的SerialNo,必須使用UpdateSerialNumber node,這邊示範如何讓SerialNo從300開始增加
- 我們首先要先建立一個SerialNo的int變數以及要將此變數存成string的Set_SerialNo變數,便透過此變數更新我們於IM中所看到的SerialNo編號(變數名稱均可更改,須於後續的UpdateSerialNumber中選擇你所設的string型態的變數)
於SETSerNo中進行變數設定,若是Batch還沒做完,須接回去更新SerialNo
設定UpdateSerialNumber node,選擇你所建立的string變數
執行專案後,於Inspection Record中,可以發現我們工單下的SerialNo從300開始往上加