機器視覺小教室 Aurora Vision Studio 入門篇【05】Formula工具、HMI設計Recipe及顯示OK、NG

弘翔精密科技股份有限公司
1粉絲
2024年10月15日
機器視覺小教室 Aurora Vision Studio 入門篇線上教學網站
https://www.urvision-tw.com/article_detail/25.htm
本篇介紹Formula工具的使用情境、設計公式來判斷影像處理數值的OK/NG,以及HMI如何使用StateControlBox製作簡易的Recipe下拉式選單以儲存畫面中的設定參數。
那我們這一集還是繼續玩這個
接續這個數錢的範例
那我們回顧一下
我們上一集就是
我們去設計這個HMI
讓它可以去顯示這個錢的個數
以及可以用這個
互動式的視窗
讓你去控制這個上面的法子
那我們這一集呢
仍然繼續玩這個
HMI的這個設計
那HMI設計我們
在經過這一集
我暫時先打住
那我們接下來下一集
好那
我們這一集要修改什麼呢
就是說
我們來做一個很有趣的應用
好那
在做之前呢
我們先修改一下這個HMI
好那這個
已經示範過
我們這一集不會用到
我先把它刪掉
這個把它刪掉
好那我們這一集想要說
我現在可不可以
去設定
我現在不是已經知道
錢的個數嗎
比如說現在這個地方有
六個銅板
好那它就會顯示六
好那我這邊可不可以
有一個視窗
那這個視窗
比如說我填入六
填入六了以後
那這個六
跟這個是相等的
好那
我就是會有OK的結果
好那如果我填入是四
那這不一樣
所以它就會變成是NG
好我給它一個答案
我在HMI上面設定
它的答案應該是多少
好那我們來玩一下這個
這個要怎麼設計出來
好那第一個呢
我們當然要先寫程式
那寫程式我就介紹了
我們有個工具
那這個工具在
這個
左邊這個側邊欄
Dropbox的Logic & Math
Logic & Math裡面可以找到
那這邊有個叫做
Formula的工具
那你可以自己去設計這個
Logic
好或者說你到這個上面
打Formula
那有時候因為你忘記它
躲在這個
躲在這個這個這個菜單裡面
Logic & Math
那你記得它的名字
好像叫Formula
好那你就
打它就會跑出來
那這個是
就是這個
Empty Formula
那或者你把它
拉下來
它會跑到這個
Show Library裡面這個菜單
裡面有一樣的東西
好那我們就把這個工具
把它拉到下面
好那這個東西要怎麼使用
這個東西就是
你點下它
你可以自己有
自由的新增輸入跟輸出
那裡面可以寫公式
好我現在新增一個輸入
這個輸入叫做
Answer
然後給它一個
行碟
那這個
行碟就是
你在這個軟體裡面
所有可以用的行碟
都可以使用
那行碟叫做
整數
因為我們答案是
個數
答案是個數
那接下來就是
我們要這個Count
好那麼
你把它拉過來
拉到這個Input
不要拉到這裡喔
把它拉到這裡
它會彈出來
就是New Input
那你如果
你如果把它拉到這個
Answer上面
其實就是Answer
就等於這個Count
好的其實不是
我們需要這個Count
當作一個新的輸入
好按下去了以後
就會是一個BlockCount
它會幫你取一個名字
就看到你拉什麼東西
它就幫你取什麼
好按OK
它就會自動連上去
那我再閃掉
好另外一個方法就是
我新增一個Add Input
然後自己取名字
比如叫CoinCount
然後Integer
OK
然後再把這個BlockCount
拉到CoinCount上面
這個
結果是一樣的
那就看你
怎麼設計它
這個是設計非常的彈性
好那接下來
就是我的輸出是什麼
就按Add Output
按下Add Output
那Add Output以後
它會幫你取一個名字
那你的Output
一定要是OUT開頭
你不可以亂打
OUT開頭
那它預設你彈出來
會Out Name
這個Name是指說
請你麻煩幫它取個名字吧
那名字我們就叫Result好了
Result
好那
這個Result是什麼
Result就是
Int
CoinCount
等於等於
等於等於就是
在這個C++
或是C++的時候
就是
相等的意思
好那我們在寫程式的時候
就會說
if
什麼東西等於等於什麼東西
else
然後就會怎麼樣
這個是
邏輯的寫法
好那你寫完以後
你就按外列
它自己
就會變成一個不零值
自己會變成不零值
因為
你裡面寫這個公式的結果
其實就是一個不零值
好那你如果要
強制指定它的型別的話
就是在這個OUT的後面
打一個冒號
輸入不零值
那它就會是一個不零值
那你不可以亂打
你就打一個integer
會出錯
因為這個等於
它就會是不零值
不是integer
所以它不可以
是不零值
它不可以是integer
它只能是一個不零值
那我建議
你就讓它自己去判斷
它自己會去判斷
它該是什麼型別
你這個公式結構
會是什麼型別
好那至於說
到底有什麼公式可以用
你可以去按這個help
你點到這裡
按這個help
好它會
打開一個
這個瀏覽器
它會打開這個瀏覽器
那這個瀏覽器
就是它的手冊
那你只要在這些工具上面
按F1
F1
在工具上按F1
就會自動的打開瀏覽器
那或者說你在這個工具
點完這個工具
在左下角按help
可以打開瀏覽器
看它的功能
好那這個工具裡面
就可以寫說
你的公式可以用哪些
它會有舉一些範例
out value等於
in value加10
然後in value乘以0.3
加in value2乘以0.7
好這四者運算
加減乘除
好那也可以寫一些判斷詞
我剛才寫的就是判斷詞
他說這個值等於什麼
如果這個in value大於等於負
and in value小於等於負
然後寫一個判斷詞
如果這個條件成真的時候
它的結果就是這個
照這個方式
如果不成真的時候
就會是逆往
好那這個判斷詞
也是符合規則
那後面有很多的
可用的這個工具
這個語法
好那就很像在寫一個
小小的判斷詞一樣
那你可以自己去看
它有支援一些簡易的函數
學的函數
好那這個是這一集介紹
主要的一個功能
我們可以寫完一些
影像處理以後
我們可以寫一個
簡單的判斷詞
去判斷它的結果
那這些判斷詞呢
你當然你可以在這個工具裡面
直接找到
好找哪裡
比如說我要
這個叫等號
它叫equal
所以你在這個地方輸入equal
好那它裡面可以找到
單獨的判斷詞
好test integer equal to
好它這個
你如果拉進來的時候
它的input value是一個integer
reference value是一個integer
然後拋出一個
是否equal是一個不一
那這個效果
就跟你自己寫的很像
那我是習慣就是說
因為我有時候懶得找
大概有哪些判斷詞可以用
所以我就直接用
Omega自己寫
自己寫比較快
因為有時候
你在判斷的時候
可能想一想
那你可能會自己
有一些邏輯出來
所以影像處理用它的工具
然後判斷詞你就自己寫
那這樣子的話
思路會比較簡潔一點
好那這個結果
我們就可以去
把它拉出來看
好這個座標我不要
我把這個0照拿出來
好那這個answer你要給
answer目前你給
這個出來以後
你沒有給字
所以它是0
所以我把它改成6
改成6
好我們去執行
好執行了
我們執行了以後
我們可以看到這個有6個
所以它的結果是true
如果我拿走一個
它現在只剩5個
所以結果就會是false
好那我們怎麼把這個
放到這個HMI上面
好那我們就要用
HMI這邊去加一個工具
好這個工具
在這個control裡面
在control裡面
那你可以用這個textbox
好那你直接在裡面填數字
那或者說你可以用這個
up and down
那就是這個
這個工具你只能
它會有限制條件的輸入
那我們用這個
好那你可以
你拉了這個以後
你就要到左下角去改
好改
那這個它是有限制條件
好那這個限制條件是什麼
就是這個
它會限制你說你是
位數你的位數
它要不要有這個小數點
好我們目前是整數值
所以不可以有小數點
好那你每次
按這個加跟減的時候
一次會調多少
所以1
好那最小值是多少
0
然後最大值是100
你可以去設定它的上下限
那你如果用這個textbox的時候
就沒辦法
就是人家愛輸入什麼
如果輸入錯了
你要寫程式去判斷
所以我如果是要設定數值的話
那我比較推薦用這個動作
好那你目前給它一個預設值
預設值在這裡
在value這邊
所以預設值是6
好所以到這邊是6
那這個字太小
我把它改大一點
把它出題
好那把這個out value
拉到這個answer裡面
好執行
好所以目前的結果是true
所以我如果答案是5的話
結果就是false
那答案是不是
必須要拿走一個才會是true
好那這樣子的話
看起來好像就做完了
其實沒有
我們再加一個功能
我們在
比如說我們在結帳的時候
有的產品是應該要6
有的產品應該要7
那我們可不可以在這邊設計一個菜單
設計一個菜單
我們去區分不同的這個recipe
好所以recipe的工具在這個地方
recipe的工具
我們看
一樣看到這個HMI Control
State Management
這個地方
好那State Management
看到第二個
這個叫State Control Box
這個是簡單應用的
recipe工具
那它的
你可以看到的時候
我們叫Allow to Save and Load State of HMI Application
in Manageable Configuration List
就是可以在HMI設計一個
可以去調參數的一個清單
好我們就把這個東西拉上來
拉上來以後它是一個下拉式選單
然後有載入儲存
讀取跟儲存的這個按鈕
好那一樣就是它的字很小
所以我們把這個字型稍微改大一點
我們用20
然後這個icon就會點大
好那
這個怎麼用
怎麼用
我們需要寫程式去
設計它的讀取跟寫入嗎
不用它已經設計了
那怎麼去設定這個東西
怎麼去設定這個東西
那它的設定的一個重點
在這個地方
大家可以看到這個叫做
這個欄位叫做Control Range
Control Range
它的預設值目前是Global
那它的用意是什麼
它說Define if the State Control Box
Save and Restore State of All Control
in Application
or Only Control in Same Container
好那這個是什麼意思
它就說它要儲存的這些設定值
它的這個Scope
觀測的範圍就是它
目前是Global
Global的意思
All Application
也就是說我這個整個App
這個App裡面所有的設定程度
都是我的觀測範圍
好那我不要這個
我習慣用In Container這個設定
In Container
那In Container
什麼叫Container
Container就是一個
我用白話文解釋
它其實就是像框框一樣
這樣子的東西
反正你把它弄成框框
然後把參數設定
丟在那個裡面
那隻要這個菜單跟那個框框
以及參數設定在同一個框框裡
那這樣子
它就可以把這個參數設定
打包起來
所以我們還要給一個框框
我們把這個視窗稍微調整一下
我要找空間放一個框框
那框框的話
我們就到這個上面
這邊有個叫Container
拉下來
Container有好幾種
四種叫Group Box
Group Box就是一個框框
然後左上角有寫一個類別
Panel就是一個框框
但是沒有寫字
Split Container就是分割視窗
Tab Control就是列遷
像這個東西叫列遷
我們用最簡單的Group Box
把它拉進來
拉進來了以後
我們先調一下位置
然後把我們的東西
都把它丟到這個裡面去
這個叫做Container
好,那Group Box
我就改它的名稱
它的名稱叫Text
叫Group Box
我們就叫Recipe
這個它的名字叫Recipe
那這個
我們就可以在這個裡面
用In Container
好,那它除了存的東西
要放在哪裡
好,存的東西
會跟這個Project Directory
放在一起
這是預設值
那也就是說
它存下來的東西
會自動的跟它的專案
你的專案在哪裡
你存的這個Recipe
就會自動跟專案
放在同一個資料夾
好,那同一個資料夾
那要不要有紙資料夾
我習慣是要的
所以我會給它一個
叫Recipe的資料夾
好,那再來就是這個
Create Soft Directory
那這個
把它開成True
好,再來就是這個Auto Load
把它打開
好,存檔
那我們就可以開始玩
好,按一下Play
它會出來
好,6
好,把它存檔
Save Configuration as
那幫它取一個名字
取什麼名字
取叫
這個叫漢堡
OK
這個菜單就會多出一個漢堡
好,那這漢堡存在哪裡
你可以把這個專案資料夾打開
裡面會冒出一個Recipe
然後它的檔案叫做漢堡
好,那
我如果還要有別的
我把它調成5
然後再Save Configuration as
好,這個叫做
那個包子
OK
好,所以包子是5
漢堡是6
包子是5
漢堡是6
好,所以現在漢堡
的時候答案是6
所以是True
好,所以
我拿走一個
但是你的Recipe是漢堡
所以應該是6
可是其實是5
那我就要切到包子
答案才會是True
好,那這個就是Recipe的功能
好,那做完這個Recipe
那你最後當然就可以把這個OpenNG
把它畫在螢幕上
看你要畫在螢幕上
還是直接顯示在這個菜單
這個UI上
那我示範一下
怎麼把它顯示在UI上
好,那這個
我們就要到這個Indicator
Indicator這邊有一個PassFail
把這個拉進來
放在右上角
好,那這個PassFail
這邊有個Value
Value
把它拉到這個Result這裡
把這個Result顯示出來
好,顯示出來以後
按下去
好,這邊就是有這個
Fail的Text
那FailText顯示什麼叫做Fail
那我可以改叫NG
Unknown
沒有結果會顯示Unknown
那它因為不是True就是False
所以這一定有結果
那如果是OK的話
它預設只是顯示Pass
我可以改叫OK
好,那等你又改完這個值了以後
我們就可以開始玩
然後再OK
看棒
到值
一句
然後拿走
留一首OK
看棒
然後回去
OK
好,那這個就是一個
延伸的這個教學
就是
主要是告訴你這個HMI
一些基礎的工具要怎麼用
那我們下一集呢
就是
暫時比較不會花太多時間
在玩這個HMI
先點到為止
那繼續介紹
後面的各種影像處理
的技巧跟應用
