系統總覽

「擎添耳溫槍探頭套檢測系統」是一套工業級自動化 HMI 軟體,用於檢測耳溫槍探頭套品質。系統透過 藍芽 連接最多 12 支耳溫槍、與 PLC 整合產線觸發信號,並以 Master-Slave 雙機架構 分散管理通道。

核心功能一覽
  • 12 通道同時監測 — Master 負責 6 通道 (CH1/3/5/7/9/11),Slave 負責另外 6 通道 (CH2/4/6/8/10/12)
  • 自動量測判定 — 空槍值 → 量測值 → 誤差計算 → PASS/FAIL 自動判定
  • PLC 整合 — 接收產線觸發信號,回寫判定結果與異常狀態
  • 異常即時警報 — 藍芽斷線、溫度異常、連續無耳溫套、PLC/網路異常
  • CSV 完整記錄 — 每次量測自動記錄,含溫度、耳套狀態、OK/NG 計數

快速導覽

系統架構

硬體架構圖

PLC FX5U MC Protocol 3E D500~D542 MASTER Port 8080 CH11, CH9, CH7 CH5, CH3, CH1 判定邏輯 / CSV 記錄 異常偵測 / PLC 通訊 BT x6 通道 SLAVE Port 8081 CH12, CH10, CH8 CH6, CH4, CH2 資料收集 / 轉發 BT x6 通道 耳溫槍 x6 Bluetooth RFCOMM SPP 耳溫槍 x6 Bluetooth RFCOMM SPP TCP TCP 5001 圖例 PLC MC Protocol (TCP) Master-Slave TCP Bluetooth RFCOMM

軟體模組

模組檔案功能
主程式 / UImain.pyNiceGUI 介面、事件處理、異常偵測
藍芽通訊bluetooth_comm.pyRFCOMM SPP 連線、封包解析、自動重連
PLC 通訊plc_comm.py三菱 MC Protocol 3E、讀寫 D 暫存器
網路通訊network_comm.pyMaster-Slave TCP 同步、指令與資料傳輸
量測邏輯measurement.pyPASS/FAIL 判定、CSV 批次記錄
設定管理config.pyJSON 設定檔讀寫、參數定義

Master vs Slave 差異

功能MASTERSLAVE
管理通道CH1, CH3, CH5, CH7, CH9, CH11CH2, CH4, CH6, CH8, CH10, CH12
PLC 通訊
量測判定完整 PASS/FAIL 判定僅收集資料轉發
CSV 記錄有(批次檔)
異常偵測全面偵測僅藍芽狀態
手動觸發有按鈕
OK/NG 計數顯示 & 寫入 PLC不顯示
Web UI Port80808081

啟動與關閉

啟動前準備

啟動前確認清單
  • 確認電腦的 藍芽 已開啟,且 12 支耳溫槍已開機
  • 確認 PLC 已上電且網路線已連接(Master 端)
  • 確認 Master 與 Slave 兩台電腦在同一網段,可互相 ping 通
  • 確認 config.json 中的 IP 位址、MAC 位址正確

啟動程式

  1. 先啟動 Slave(建議)
    執行 python main.py 或雙擊捷徑
    Slave 會在 Port 8081 等待 Master 連入
  2. 再啟動 Master
    執行 python main.py 或雙擊捷徑
    Master 會在 Port 8080 開啟 UI,並主動連線到 Slave
  3. 確認連線狀態
    等待畫面頂部的 PLC 與網路指示燈變成 綠色
    各通道的 BT 圖示也應逐步變成 藍色
  4. 系統就緒
    畫面右上方顯示「運行中」即表示系統已準備好接收 PLC 觸發

關閉程式

直接關閉視窗即可。系統會自動執行以下清理動作:

  • 關閉所有藍芽 Socket 連線
  • 停止 PLC 監控
  • 斷開 Master-Slave 網路
注意事項

關閉 Master 前,建議先確認目前無正在進行的量測流程(量測狀態為「待機中」)。若在量測過程中強制關閉,該筆資料可能不會寫入 CSV。

主畫面介紹

主畫面由上而下分為四大區域:

A. 頂部資訊列

元件說明
系統標題顯示「擎添耳溫槍探頭套檢測系統」與版本號
模式徽章MASTER 藍色 或 SLAVE 橘色
目前批次MASTER 顯示目前 CSV 批次檔名(如 20260312100000.csv
換批按鈕MASTER 點擊建立新 CSV 批次並歸零 PLC OK/NG 計數
測試週期MASTER 顯示 PLC D516 的測試計數值
系統狀態運行中已停止
判定模式MASTER 正常判定 / 強制OK / 強制NG
暖槍狀態MASTER 讀取 PLC D542,顯示 暖槍中OFF
PLC 指示燈 已連線 / 連線中 / 斷線
網路指示燈同上,顯示 Master-Slave 網路連線狀態
異常復歸MASTER 按鈕,清除所有異常狀態與警報
設定齒輪開啟右側進階設定面板

B. 警報橫幅

平時隱藏。當發生異常時會出現紅色閃爍橫幅,顯示警報訊息,右側有「確認」按鈕可關閉橫幅。警報內容會同時記錄到 D:\logs\Alarm\ 下的 CSV 檔。

C. 通道量測區

MASTER 畫面有兩張卡片:「本機通道」和「Slave 通道」。SLAVE 只有一張「本機通道」。

每一列(每一通道)的欄位說明:

欄位說明
CH 名稱通道編號(如 CH11),停用通道會顯示紅色「停用」標籤
BT 圖示 已連線   連線中   錯誤   未連線
耳套 = 有耳溫套 (1111)   = 無耳溫套 (0000)   -- = 尚無資料
空槍值青色數字,空槍量測時記錄的基準溫度
量測值黃色數字,溫度量測時的實際溫度
誤差白色數字,= 量測值 - 空槍值
狀態 WAIT 等待   PASS 合格   FAIL 不合格
OKMASTER 累計合格次數(對應 PLC D517~D528)
NGMASTER 累計不合格次數(對應 PLC D529~D540)
無套MASTER 連續無耳溫套計數,超過門檻時變橘色

D. 下方面板

面板說明
目前設定顯示誤差上下限、空槍值上下限
量測流程顯示目前量測狀態(待機中、等待空槍、空槍完成、等待量測、計算中、量測完成),附「清空 Log」按鈕
手動觸發MASTER「空槍量測」和「溫度量測」按鈕,可手動觸發量測流程
PLC 監控MASTER 即時顯示所有 D 暫存器狀態值
系統 Log滾動式訊息記錄,最多顯示 100 行,顯示所有系統事件

量測流程

每次完整量測包含兩個階段:空槍量測(記錄基準值)→ 溫度量測(記錄實測值並判定)。

流程總覽

PLC 發送 D515=1(空槍觸發)
或手動按「空槍量測」
Master 通知 Slave:request_empty
所有通道同時發送 CD 指令(要求耳溫槍量測)
等待 empty_collect_delay 秒
收集空槍值 → 記錄到 CSV → 清除 D515
空槍值檢查(上下限)
量測狀態:空槍完成
PLC 發送 D500=1(量測觸發)
或手動按「溫度量測」
Master 通知 Slave:request_measure
所有通道同時發送 CD 指令
等待 measure_collect_delay 秒
收集量測值 + 異常偵測(溫度異常、連續無套)
計算誤差 = 量測值 - 空槍值
誤差下限 ≤ 誤差 ≤ 誤差上限?
PASS
D50x = 2
FAIL
D50x = 1
寫入判定結果到 PLC D501~D512
更新 OK/NG 計數 → 記錄到 CSV → 清除 D500
量測狀態:量測完成

判定公式

誤差 = 量測值 - 空槍值

判定條件:-|誤差下限| ≤ 誤差 ≤ +|誤差上限|

  • 符合 → PASS(PLC 寫入 2)
  • 不符合 → FAIL(PLC 寫入 1)
  • 通道停用 → 不判定(PLC 寫入 0)

例:誤差上限 = 0.30,誤差下限 = 0.50 → 合格範圍 = -0.50 ~ +0.30

判定模式

模式行為用途
正常判定依公式判定 PASS/FAIL正式生產使用
強制 OK不論誤差值,全部判定為 PASS系統測試 / 暖機用
強制 NG不論誤差值,全部判定為 FAIL系統測試用

手動觸發

MASTER 畫面下方有「手動觸發」面板,提供兩個按鈕:

  • 空槍量測 — 等同 PLC D515=1 觸發(如果 PLC 已連線,會先寫入 D515 再由 PLC 回送觸發)
  • 溫度量測 — 等同 PLC D500=1 觸發

注意:手動觸發主要用於調試和無 PLC 環境下測試,正式生產以 PLC 觸發為主。

批次與記錄

量測 CSV 批次檔

檔案位置

D:\logs\{時間戳}.csv

每個批次一個檔案,檔名為建立時的時間戳記(例:20260312143025.csv

CSV 欄位結構(54 欄)

欄位範圍內容說明
A 欄種類empty = 空槍 / {D516值} = 量測
B ~ M 欄scan1 ~ scan1212 通道溫度值(對應 CH1~CH12)
N 欄Time量測時間 YYYY/MM/DD HH:MM:SS
O ~ P 欄誤差上/下限本次使用的判定設定
Q ~ AB 欄scan1~12 cover耳套狀態 (1111/0000)
AC ~ AN 欄scan1~12 OK各通道 OK 累計次數
AO ~ AZ 欄scan1~12 NG各通道 NG 累計次數
BA ~ BB 欄TOTAL OK / NG全通道 OK/NG 加總

換批操作

  1. 確認目前量測狀態為「待機中」
  2. 點擊頂部的「換批」按鈕
  3. 系統會自動建立新 CSV 檔案,並將 PLC 的 OK/NG 計數(D517~D540)全部歸零
  4. 頂部批次檔名會更新為新檔名

異常記錄(Alarm CSV)

檔案位置

D:\logs\Alarm\alarm_{日期}.csv(每天一個檔案)

欄位說明
日期時間YYYY-MM-DD HH:MM:SS
異常類型藍芽斷線 / 溫度異常 / 連續無套 / PLC異常 / 網路異常 / 通道不一致 / 空槍異常
詳細內容具體的異常描述

如果檔案被 Excel 鎖定,系統會自動寫入備用檔案 alarm_{日期}_1.csv

Debug 記錄

系統 Log 同步寫入 logs/debug_{日期}_{時間}.txt,包含所有 console 輸出,用於後續排查問題。

異常警報處理

系統會自動偵測多種異常,並在畫面上方顯示紅色閃爍橫幅。所有異常都會記錄到 Alarm CSV。

異常類型一覽

📶 藍芽斷線
觸發條件任何啟用通道的藍芽狀態變為 DISCONNECTED 或 ERROR
影響PLC D513 對應位元設為 1,該通道無法收集量測數據
處理方式系統會自動重連(漸進式冷卻),正常情況下等待即可恢復。
若持續斷線,請檢查耳溫槍電源與藍芽配對
自動恢復重新連線後自動清除警報與 D513 位元
🌡 溫度異常
觸發條件量測溫度超出設定範圍(溫度異常上限 ~ 下限),需開啟「溫度異常」開關
影響PLC D513 bit12 設為 1,異常通道列變紅色高亮
處理方式檢查耳溫槍感應器是否正常,或環境溫度是否影響量測
自動恢復下次量測所有通道恢復正常範圍時自動解除
🚫 連續無套
觸發條件同一通道連續 N 次偵測到「無耳溫套」(0000),需開啟「連續無套」開關
影響PLC D513 bit13 設為 1,無套計數欄變橘色
處理方式確認探頭套是否正確安裝
自動恢復偵測到有耳溫套 (1111) 時,該通道計數歸零
空槍值超限
觸發條件空槍量測值超出空槍上限/下限範圍
影響PLC D513 bit14 設為 1;暖槍中(D542=1)時容忍前 2 次,第 3 次才發警報
處理方式確認耳溫槍是否正常,可能需要繼續暖機
🔌 PLC / 網路異常
觸發條件PLC 連線中斷 或 Master-Slave 網路斷線
處理方式檢查網路線、IP 設定、防火牆規則
自動恢復重新連線後自動恢復

異常復歸操作

手動復歸

點擊畫面右上方的「異常復歸」按鈕(黃色),將執行以下動作:

  • 清除 PLC D513 所有位元(異常掩碼歸零)
  • 重置溫度異常與連續無套狀態
  • 清除所有通道的無套計數
  • 移除通道紅色高亮
  • 隱藏警報橫幅

PLC D541 升沿也會觸發相同的復歸動作。

進階設定面板

點擊右上角的齒輪圖示 ⚙ 開啟右側設定面板。

密碼保護

部分設定需要管理密碼才能修改。輸入密碼後點擊「登入」即可解鎖。

登出後設定區域會重新隱藏,防止未授權修改。

設定項目一覽

系統設定(需登入)

設定項說明預設值
誤差上限PASS/FAIL 判定的正向容許誤差+0.50 °C
誤差下限PASS/FAIL 判定的負向容許誤差-0.50 °C
空槍上限空槍值的合理上限,超出會發警報40.0 °C
空槍下限空槍值的合理下限20.0 °C
判定模式正常 / 強制OK / 強制NG正常
溫度異常開關啟用後需設定溫度上下限關閉
連續無套開關啟用後需設定觸發次數關閉
運行模式master 或 slave(修改後需重啟程式)master

網路設定(需登入)

設定項說明預設值
Master IPSlave 連入的 Master IP 位址192.168.1.100
PortMaster-Slave TCP 通訊埠5001

時序設定(需登入,僅 Master)

設定項說明預設值
空槍收集延遲發送量測指令後等待多久收集空槍資料0.5 秒
量測收集延遲發送量測指令後等待多久收集量測資料0.5 秒

PLC 設定(需登入,僅 Master)

設定項說明預設值
IP 位址PLC FX5U 的 IP192.168.1.10
PortPLC 通訊埠5000

藍芽設定(不需登入)

設定項說明預設值
CH MAC 位址各通道對應耳溫槍的藍芽 MAC 位址(空白)
重連間隔每輪重連後的固定等待時間5.0 秒
超時單次 socket.connect() 的最長等待時間10.0 秒

通道啟用(不需登入)

以開關方式控制每個通道的啟用/停用。停用的通道:

  • 不參與量測與判定
  • 不發送藍芽量測指令
  • 不會觸發藍芽斷線警報
  • PLC 寫入 0(不使用)
  • UI 上會半透明顯示

儲存 vs 即時套用

按鈕行為
儲存進階設定將設定寫入 config.json,重啟後仍有效。部分參數需重啟才生效(如運行模式)
更新資料(即時套用)儲存 + 立即套用到所有執行中的管理器。不需重啟程式,包括:誤差範圍、通道啟用、藍芽 MAC、PLC IP/Port、網路參數、時序參數

藍芽連線管理

系統使用 Windows 原生藍芽 RFCOMM 協定,透過 SPP (Serial Port Profile) 與耳溫槍通訊。

連線流程

BluetoothManager 啟動
藍芽堆疊暖機(探測連線 3 秒)
所有啟用通道 同時並行連線
每通道一條 Thread,最多等 connect_timeout 秒
進入監控迴圈
偵測斷線通道 → 同時重連
每輪間隔 reconnect_interval 秒
連續失敗 ≥ 3 次
啟用漸進式冷卻
min(失敗次數 × 5, 30)

三個關鍵時間參數

參數預設值作用
connect_timeout 10 秒 單次 socket.connect() 最長等待。超時即視為連線失敗
reconnect_interval 5 秒 每輪重連嘗試後的固定等待間隔
cooldown(冷卻) min(n×5, 30) 秒 連續失敗 ≥ 3 次後的額外等待,第 6 次以上固定 30 秒

冷卻時間對照

連續失敗冷卻單輪最長等待
第 1~2 次0 秒(立即重試)10 + 5 = 15 秒
第 3 次15 秒10 + 5 + 15 = 30 秒
第 4 次20 秒10 + 5 + 20 = 35 秒
第 5 次25 秒10 + 5 + 25 = 40 秒
第 6 次以上30 秒(上限)10 + 5 + 30 = 45 秒

BT 圖示顏色對照

藍色CONNECTED — 已連線,可正常收發資料
黃色CONNECTING — 正在嘗試連線
紅色ERROR — 連線失敗或異常斷開
灰色DISCONNECTED — 未連線

PLC 通訊

MASTER 透過 MC Protocol 3E (TCP) 與三菱 FX5U PLC 通訊。

PLC 監控面板

位於畫面左下方,即時顯示 D500~D542 暫存器的值:

暫存器名稱方向說明
D500量測觸發PLC→HMI升沿(0→1)觸發溫度量測
D501~D512判定結果HMI→PLC0=不使用, 1=FAIL, 2=PASS
D513異常掩碼HMI→PLCbit0~11:藍芽, bit12:溫度, bit13:無套, bit14:空槍
D514PC 心跳HMI→PLC0/1 每秒交替,PLC 可偵測 HMI 是否存活
D515空槍觸發PLC→HMI升沿觸發空槍量測
D516測試週期PLC→HMI累計測試次數
D517~D528OK 計數HMI→PLCCH1~CH12 各通道合格次數
D529~D540NG 計數HMI→PLCCH1~CH12 各通道不合格次數
D541異常復歸PLC→HMI升沿觸發異常復歸
D542暖槍訊號PLC→HMI0=正常, 1=暖槍中

D513 異常掩碼詳解

位元內容
bit 0 ~ 11CH1~CH12 藍芽連線異常(對應各通道)
bit 12溫度異常(任一通道超出設定範圍)
bit 13連續無套異常
bit 14空槍值超限異常

PLC 監控面板以十六進位顯示(如 0x0004 = bit2 = CH3 藍芽斷線)。

Master-Slave 網路

系統使用 TCP 在 Master 與 Slave 之間同步資料與指令。

角色分工

項目MASTERSLAVE
TCP 角色Server(監聽 Port 5001)Client(連線到 Master IP)
啟動順序建議後啟動建議先啟動
發送指令request_empty / request_measure / sync_bt_status
發送資料各通道溫度 + 藍芽狀態 + 耳套狀態

資料流

Master 發送指令(如 request_measure)
Slave 收到指令 → 執行藍芽量測
Slave 收到耳溫槍回傳資料
Slave 將溫度/耳套/藍芽狀態封裝為 JSON 發回 Master
Master 整合本地+Slave 資料 → 統一判定

連線建立後的同步

  • Master 連線後會自動請求 Slave 重送所有通道的藍芽狀態
  • Slave 收到 sync_bt_status 指令後,補送所有通道狀態 + 通道啟用設定
  • Master 收到 Slave 通道啟用設定後,會比對兩端是否一致,不一致時發出「通道不一致」警報

通道對應表

系統使用內部通道編號(1~12)與顯示名稱(CH1~CH12),兩者的映射關係如下:

Master 通道(內部 1~6)

內部編號顯示名稱PLC 對應藍芽
1CH11D512 / D528 / D540Master 第 1 組 MAC
2CH9D510 / D526 / D538Master 第 2 組 MAC
3CH7D508 / D524 / D536Master 第 3 組 MAC
4CH5D506 / D522 / D534Master 第 4 組 MAC
5CH3D504 / D520 / D532Master 第 5 組 MAC
6CH1D502 / D518 / D530Master 第 6 組 MAC

Slave 通道(內部 7~12)

內部編號顯示名稱PLC 對應藍芽
7CH12D513(結果) / D529 / D541Slave 第 1 組 MAC
8CH10D511 / D527 / D539Slave 第 2 組 MAC
9CH8D509 / D525 / D537Slave 第 3 組 MAC
10CH6D507 / D523 / D535Slave 第 4 組 MAC
11CH4D505 / D521 / D533Slave 第 5 組 MAC
12CH2D503 / D519 / D531Slave 第 6 組 MAC
CSV 欄位映射

CSV 中的 scan1~scan12 對應 CH1~CH12(按顯示名稱排序,非內部編號):

scan1=CH1, scan2=CH2, ... scan12=CH12

常見問題

Q: 啟動後通道一直顯示灰色,藍芽連不上?

A: 請依序檢查:

  1. 確認耳溫槍已開機且藍芽已啟用
  2. 確認 Windows 藍芽已開啟
  3. 確認進階設定中的 MAC 位址正確(格式:XX:XX:XX:XX:XX:XX
  4. 確認該通道的啟用開關已打開
  5. 查看系統 Log 是否有「連線失敗」的錯誤訊息
  6. 嘗試在 Windows 藍芽設定中先手動配對該耳溫槍
Q: Master 的 Slave 通道全部灰色?

A: 表示 Master-Slave 網路未連線。請確認:

  1. Slave 程式是否已啟動
  2. 兩端的 Master IP 與 Port 設定是否一致
  3. Windows 防火牆是否允許 Port 5001
  4. 查看網路指示燈是否為 綠色
Q: PLC 指示燈一直是紅色?

A: 請確認:

  1. PLC 是否上電且網路線已連接
  2. 確認 PLC IP 位址與 Port 設定正確
  3. 可用 ping {PLC IP} 測試網路連通性
  4. 確認 config.jsonplc.enabledtrue
Q: 如何修改誤差範圍?

A:

  1. 點擊右上角齒輪 ⚙ 開啟設定面板
  2. 輸入管理密碼登入
  3. 在「系統設定」中修改「誤差上限」和「誤差下限」
  4. 點擊「更新資料(即時套用)」立即生效
Q: 如何在無硬體環境下測試?

A:config.json 中設定 "simulation_mode": true,系統會模擬藍芽連線與量測數據。模擬模式下可使用手動觸發按鈕測試完整流程。

Q: CSV 被 Excel 開啟時系統寫入會失敗嗎?

A: 量測 CSV 使用 append 模式寫入,Excel 開啟時通常可正常寫入。異常記錄 CSV(Alarm)若被鎖定,系統會自動寫入備用檔案(_1.csv後綴),不會遺失資料。

Q: 停用通道後需要重啟程式嗎?

A: 不需要。修改通道啟用狀態後點擊「更新資料(即時套用)」,系統會立即:

  • 停止向停用通道發送量測指令
  • 斷開停用通道的藍芽連線
  • 清除 PLC 對應的錯誤位元
  • UI 上以半透明方式顯示
Q: 暖槍中空槍值超限會立即報警嗎?

A: 不會。暖槍中(PLC D542=1 時),系統會容忍前 2 次空槍超限,直到連續第 3 次才發出警報。暖槍結束(D542=0)後,超限計數自動歸零。

Q: 按了 F5 畫面刷新後資料會消失嗎?

A: 按 F5 只會重新載入 UI 畫面,所有後端管理器(藍芽、PLC、網路、量測)仍在運行中。畫面會重新同步到最新狀態。已經寫入 CSV 的資料不受影響。