天天看點

海康visionmaster-循環子產品搭配腳本使用的方法

作者:專業于機器視覺visionman

描述

環境:VM4.0.0

現象: 使用VM子產品搭配腳本子產品如何實作擷取所有資料一次性全部輸出

解答

如下圖1,需要實作每個試劑盒中有無試紙的檢測,并一次性輸出四個結果給客戶。

海康visionmaster-循環子產品搭配腳本使用的方法

正常的實作方式如下圖2所示:

海康visionmaster-循環子產品搭配腳本使用的方法

對每個檢測都做模闆比對、位置修正、blob分析。這樣子產品較多,功能相同卻無法服複用,浪費資源。是以就會想到:是否可以使用循環的方式來實作以上功能需求呢?答案肯定是可以的。

使用循環子產品後,方案如下圖3所示:

海康visionmaster-循環子產品搭配腳本使用的方法

綜上,循環實作的本質是單組工具多次運作,與程式設計中的for、while性質一樣,根據前置輸入的循環次數執行。

既然選擇了循環的方案,還有以下兩個問題點需要我們注意:

一是,循環的位置關系。即需要保證循環内的工具能夠在每次的循環中進行檢測位置的正确變化,将所有工件進行檢測,而不是重複檢測某一個工件。VM軟體引入了循環标記LoopIndex,在循環内的子產品可以訂閱到該值,以幫助子產品實作位置修正的效果。

一般來說,位置關系的輸入有兩種:

1. 繼承。直接繼承前序定位子產品的檢測區域。可配置為如下圖4所示:

海康visionmaster-循環子產品搭配腳本使用的方法

2. 通過位置修正,這種情況下,可以将位置修正作為循環内的首子產品,并在位置修正資訊内配置循環标記,是位置修正能夠正确輸出位置修正資訊引導後後續子產品進行相對的位置修正來實作精準檢測,如下圖5所示:

海康visionmaster-循環子產品搭配腳本使用的方法

而是,循環輸出的結果,我們該如何處理?這個是本文章的重點内容。因為VM的機制是,你執行一次,我輸出結果,是一種順序型的結構。如果使用格式化子產品來接受,僅能擷取到循環内子產品的最後次運作結果。根據循環邏輯,我們應當在每次執行時将獲得結果緩存下來,在達到循環次數時進行輸出。要是實作以上功能,就需要用VM腳本工具來實作。

按照以上案例,腳本的配置如下圖6所示:

海康visionmaster-循環子產品搭配腳本使用的方法

首先我們應當初始化相關變量,并确定腳本邏輯為:循環内每次執行,将相關資料緩存到腳本内自定義的變量内,達到循環執行次數時,将所有資料彙總輸出。是以我們首先建立一個Int數組用以存放每次檢測的結果。并通過循環次數與工件數量比較,在達到循環次數時指派輸出。如下圖7所示:

海康visionmaster-循環子產品搭配腳本使用的方法
海康visionmaster-循環子產品搭配腳本使用的方法

問題根因:

1. 方案設計階段,需要考慮配置與性能關系,重點考慮流程時間是否滿足現場需求,決定是否采用循環方式;

2. 腳本内資料次數緩存、次數判斷和資料清理。這裡提一點,如果僅是擷取點的坐标可以通過點集工具開始循環使能實作

3. 位置修正:①先保證前序定位子產品僅比對到一個工件;②基于該工件定位建立位置修正;③基于位置修正,調整後續工具的相對ROI;④確定單組工具運作檢測正常時,再将前序定位子產品數量設定為理想數量,并點選單詞運作檢視整體運作效果。

繼續閱讀