openssl genpkey -algorithm RSA -out private.pem
openssl req -new -key private.pem -out mydomain.csr
openssl x509 -req -days 365 -in mydomain.csr -signkey private.pem -out certificate.pem
最終得到的private.pem與certificate.pem
openssl genpkey -algorithm RSA -out private.pem
openssl req -new -key private.pem -out mydomain.csr
openssl x509 -req -days 365 -in mydomain.csr -signkey private.pem -out certificate.pem
最終得到的private.pem與certificate.pem
首先安裝 NVM (Node Version Manager),由它安裝及管理Node的開發環境版本。
使用npm init -y 建立一個node的專案
使用npm install express, request –save安裝此次所使用到的express.js與request Package.
建立server.js文件
修改package.json
使用npm start運行程式server.js
使用postman進行測試
本系統功能為量測O型環的真圓度,採用ISO 12181-2: 2011所定義的方式進行量測。
使用一個接觸式的量測探針來接觸工件的外部輪廓,會得到一個外部輪廓起伏的量測數據圖(圖二),從數據中得到 Rmax 與 Rmin 的兩個數據而求出真圖度 Rmin / Rmax
圖一
圖二
術語說明
曝光時間是指工業相機的感光元件(如 CMOS 或 CCD)接收光線的時間長度。這個時間通常以微秒(μs)或毫秒(ms)為單位。曝光時間的調整直接影響進入相機的光量,因此是影響影像亮度和清晰度的重要參數。
影像的灰階值是指每個像素在灰階影像中的亮度程度,數值範圍通常為 0 至 255(8 位元影像)。
灰階值的意義在於它反映了像素所接收到的光線強度:
實驗平台
白色背光 | 工業電腦及光源控器 |
相機夾具可以調整高低位置 | 檢測平台夾具可以調整高低位置 |
工業相機 | 規格 |
系統功能
使用者操作界面
數位影像 | 相機取像儲存影像檢測功能設定灰階值設定門檻值光源亮度 |
影像顯示比例 | |
工業相機曝光時間 |
程式啟動方式
連接工業相機進行取像
請按下「尋找相機」按鈕請按下「開始取像」按鈕 |
顯示即時的數位影像
設定檢測功能
白色為目標灰階值,顯示O型環 | |
顯示即時數位影像,不進行檢測。 |
實際進行檢測的操作情節:
設定真圓度半徑比例0.97為良品 Value <= 0.97 | |
設定真圓度半徑差7為良品 Value <= 7 | |
逼近外輪廓
紅色輪廓為O型環的外邊緣輪廓藍色為可以包覆紅色輪廓的圓綠色為中心點後外逼近紅色輪廓的圓 |
逼近外輪廓及內輪廓
紅色輪廓為O型環的外邊緣輪廓藍色為可以包覆紅色輪廓的圓綠色為中心點後外逼近O型環的內邊緣輪廓 |
調整曝光時間
調整光源亮度
放大影像
延伸影像
極大化使用者操作界面
儲存影像
螢幕鍵盤
關閉程式
關閉電腦
系統主畫面
尋找相機 | |
相機資訊 (相機型號 序號) | |
FPS 每秒張數 | |
開始啟像 | |
停止啟像 | |
儲存影像 | |
檢測功能 (有四個檢測功能) | |
顯示數據 (半徑比例、半徑差) | |
良品門檻值 | |
最大灰階值 | |
最小面積 | |
尋找相機 Find Device
按下「尋找相機 Find Device」,系統會偵測相機。
當系統並沒有相機時
當系統找到相機時
設定FPS
FPS: 每秒取像張數
開始取像 Start
停止取像 Stop
儲存影像 Save Image
檢測功能
曝光時間
程式主畫面
程式功能
教導:每個焦段的偏移值與Motion Zoom Focus | |
RS232通訊埠設定 | |
搜尋相機 | |
相機的IP | |
開始取像 | |
停止取像 | |
載入校正檔 | |
儲存影像 | |
Color Map | |
是否套用影像偏移 | |
每個焦段的按鈕: 透過RS232下 ZOOMPOS positionTime.Sleep(3)透過RS232下 FOCUSPOSposition |
設定畫面
RS232通訊設定
影像明暗調整
調整影像灰階比例:new image = image x aplpha + beta | |
Min: 0 Max: 255 | Min: 18 Max: 179 |
佈署及執行程式:
噴液異常視覺檢測
鴻博資訊有限公司
系統架構圖
此專案規劃一台電腦最多可以跑四隻AOI程式,同時跑多隻AOI程式時的運行順暢度取決於電腦硬體本身的規格。
AOI程式與Modbus程式間是透過Socket進行通訊,每隻AOI程式需配置一個唯一序號,1到4號,當AOI程式偵測到異常時會發送一個訊號給Modbus程式,Modbus根據訊號中的AOI程式唯一序號,在對應的PLC Modbus位址上發送一個100 ms的ON訊號。
AOI ID | Modbus Address |
1 | 100 |
2 | 101 |
3 | 102 |
4 | 103 |
工業相機
官網:https://www.toshiba-teli.co.jp/en/products/industrial-camera/index.htm
請點選【Support】【Software Download】下載軟體SDK
【註】使用Ubuntu 22.04
下載TeliCamSDKforLinux_S5104031.zip
壓縮檔內容
請開啟Readme檔案
程式安裝路徑 /opt/TeliCamSDK
TeliViewer
說明文件:請參閱/opt/TeliCamSDK/documents/
啟用Dongle硬體
$ sudo vim /etc/udev/rules.d/99-my-hid.rules
99-my-hid.rules內容為:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”096e”, ATTRS{idProduct}==”0304″, MODE=”0666″
$sudo udevadm control –reload-rules
Modbus 程式
Listen Port:此欄位是設定與 AOI 程式 Socket 交握的埠。
Modbus Slave IP: 此欄位是設定 PLC 的網路 IP 位址。
Modbus Slave Port: 此欄位是設定 PLC 的網路埠。
Modbus Slave:此欄位是設定 PLC 的 Slave ID。
Start Address:此欄位是設定AOI異常位址。
AOI ID | Modbus Address |
1 | 100 |
2 | 101 |
3 | 102 |
4 | 103 |
如上圖:按下Start及Connection按鈕,啟動與AOI程式及PLC連線。
按上右上角的關閉按鈕,會提示此程式會隱藏並顯示在狀態列。
滑鼠移到Modbus 程式圖示上,按滑鼠右鍵,會跳出下列選單,按下【Show】則顯示主畫面;按下【Quit】則結果程式。
AOI程式
Camera下拉式選單,指定AOI程式連接的相機 Frame Rate:指定相機的Frame Rate Exposure (us):指定相機的曝光時間 micro second Connect:連接相機 Start:開始取像 Video:開始錄影 Demo:撥放Demo影片 Reset:清除 Demo影像 TCP Port:與Modbus通訊的Socket Port Modbus:此AOI程式的唯一識別碼 | |
Clear Count: 設定當Error Image大於100時,進行清除Error Image Error Image:開啟存放Error Image的路徑 Log:開啟Log的路徑 Video:開啟Video的路徑 About:程式的開發公司的聯絡資訊 Exit:結束程式 |
ROI Height:檢測區域的高度 ROI Width:檢測區域的寬度 ROI offset:檢測區域的Y軸位置的偏移 Min Row:設定原始影像X軸最低位置 Max Row:設定原始影像X軸最高位置 Min Area:噴嘴治具在影像中會打光成白色,最小的白色面積 Max Width:噴嘴治具在影像中會打光成白色,最大寬度 Min Gray:噴嘴治具在影像中會打光成白色,最低灰階值 Threshold:檢測區域會進行AOI分析會得到一個數值,大於 Threshold的設定值被判定為異常。 Show Bin:勾選時顯示Binary Image,未勾選顯示原始影像 Kernel:用於影像的的斷開 Set:儲存參數 |
Error Image路徑
About:程式的開發公司的聯絡資訊
異常影像
由左至右分為四個區塊:相機的觸發影像區塊,檢查異常的影像區塊,量測數據區塊、功能作業區塊。
設定:進入教導畫面
開啟相機:執行開啟相機操作
開始取像:執行連續取像 (相機中心點會顯示十字,用於相機鎖附時調整中心點)
曝光時間:執行變更相機曝光時間操作(以拖拉及輸入的方式)
連續取像:執行連續取像
教導影像:執行擷取影像到教導所需的影像
練習:連續取像
練習:教導影像
練習:
先設定ROI(檢測區域),輸入圓的座標(X,Y)及半徑R
設定外圈最及內圈的亮度值。建議初始值如下所示。
亮度設定值:數值越小,比較暗的區域也會被選取;數值越大,比較亮的區域才會被選取。
偏心率:是焦距(焦點之間的距離)與長軸長度之比。該值在區間 [0, 1) 中。為 0 時,橢圓變為圓形。數值越小代表趨近圓形。
偏心率就偏高0.77
周長:區域輪廓的周長
右側周長為3648 左側周長為4707
面積:區域佔了多少像素。下圖有絕緣片翹起的情況,會造成內圈面積的差異。
填滿面積:將綠色區域填滿的面積。如右圖白色后域為左圖綠色區域填滿。
半徑差:下圖綠色區域有兩個圓,外側圓、內側圓這兩個的圓的半徑值相減。
(此拉條設定曝光時間)
將教導參數儲存到檔案
放棄此次教導設定,回復初始設定
儲存教導中的影像
載入教導所需影像
用於查看指定的影像,當初為何被判定良品或不良品。
操作方式:
設定相機、是否儲存影像,儲存位置、Modbus通訊參數。
上圖紅色方框可以以拖拉的方式與填入數值的方式進行設定,建議從1000這個數值為基準進行設定,當影像藍色的區域比較像真實的顏色,不會過白、過暗,即完成設定。
下圖左側的影像會比右側好,因為右側的影像有過亮的情況。
進入「光學檢測參數設定」畫面,可以看到「步驟1. 原始影像」區塊,紅色圈ROI,其中心點座標及半徑。
圖一:為ROI 中心座標為(400,512)半徑400,設定數字後,按下「設定」進行套用。
圖二:為ROI 中心座標為(100,512)半徑400,設定數字後,按下「設定」進行套用。
圖三:為ROI 中心座標為(100,100)半徑400,設定數字後,按下「設定」進行套用。
圖四:為ROI 中心座標為(640,512)半徑100,設定數字後,按下「設定」進行套用。
圖五:為ROI 中心座標為(640,512)半徑300,設定數字後,按下「設定」進行套用。
圖六:為ROI 中心座標為(640,512)半徑400,設定數字後,按下「設定」進行套用。
可以看下圖左上角的區域,可以看到外圈的亮度的變化,亮點由80到255的變化。當製造發生異常造成外圈破損時,破損處的影像的光影變化處會呈現比較暗的情況。
圖一:請看右側的影像,外圈亮度80的變化。
圖二:請看右側的影像,外圈亮度90的變化。
圖三:請看右側的影像,外圈亮度100的變化。
圖四:請看右側的影像,外圈亮度110的變化。
外圈的亮度,目前的建議值為亮度100,比亮度100暗的情況就會造成外圈斷掉,檢測邏輯就可以檢出。
圖一:內圈亮度150,所呈現的影像
圖二:內圈亮度170,所呈現的影像
圖三:內圈亮度250,所呈現的影像
建議設定在250以上,可以看上面的圖示可以清楚正確的捉到內圈的輪廓。
可以發覺當發生這種異常時,就可以被AOI檢測出異常。
斷開設定為3的影像,可以看到外圈3點鐘方向有一點輕微的異常,如果這種情況也捉取的話,可以改設定為5,可以看看調整後的檢測情況。
可以看到斷開參數調整成5時,就可以正確捉到這種異常。
WSL2 環境
Java 環境
sudo apt install openjdk-17-jdk
Windows-based X Server
在Windows主機下查詢IP
修改WSL2中的~/.bashrc內容,增加一行
Android Studio環境
~/.bashrc 增加下列
執行Android-studio
下載額外的Hardware Profiles
由ARM 改成 x86_64
NPM 環境
click a to run on Android