跳至內容
測試伺服器
開發伺服器

故障排除#

本主題有助於診斷和解決在使用 pypylon 和工業相機時遇到的常見問題。

重點在於實用的偵錯策略與典型失敗情境。

常見症狀與原因#

症狀 可能原因
未偵測到相機 缺少驅動程式、連接線問題、未安裝 SDK
逾時於 RetrieveResult() 觸發設定錯誤、無訊號、逾時時間不正確
掉格 頻寬受限、處理速度緩慢
擷取錯誤 網路不穩定、封包遺失
應用程式凍結 阻斷式呼叫、死結、佇列溢位

相機偵測問題#

若要解決相機偵測問題,您有兩種選擇:

  • 檢查硬體:

    • 確認連接線連接。
    • 確認相機電源。
    • 請嘗試使用另一個 USB 連接埠或乙太網路線。
  • 檢查軟體:

    • 請確保已安裝 pylon SDK。
    • 請驗證驅動程式是否已載入。
    • 使用 pylon Viewer 進行測試。

逾時問題#

常見原因#
  • 已啟用 Trigger Mode 但無觸發訊號
  • Exposure Time 過長
  • 逾時值過低
偵錯策略#
camera.TriggerMode
camera.TriggerSource

停用觸發以進行測試:

camera.TriggerMode.Value = "Off"

擷取錯誤#

指示器#
if not grab_result.GrabSucceeded():
    print(grab_result.ErrorDescription)
常見原因#
  • 網路壅塞 (GigE)
  • 頻寬不足
  • 連線不穩定

影像損壞與掉幀#

常見原因#
  • 封包遺失 (GigE 相機)
  • CPU 過載
  • 緩衝區不足
緩解策略#
  • 啟用巨型封包 (Jumbo Frames)。
  • 增加 MaxNumBuffer.
  • 減少 ROI 或影格速率。

效能問題#

指示器#
  • 延遲增加
  • 增加佇列大小
  • 掉格
偵錯策略#
  • 量測影格速率。
  • 監控 CPU 使用率。
  • 檢查佇列大小。

執行緒問題#

指示器#
  • 因封鎖造成的死結 queue.get()
  • 關閉時執行緒未停止
修復#
  • 使用逾時:

    q.get(timeout=0.1)
    
  • 使用停止訊號:

    stop_event = threading.Event()
    

OpenCV GUI 問題#

指示器#
QObject::killTimer error
典型原因#
  • 在工作執行緒中執行 GUI 函式
修復#
  • 執行 cv2.imshow() 僅限主執行緒。

網路問題 (GigE)#

指示器#
  • 封包遺失
  • 張數遺失
緩解策略#
  • 使用專用網路介面卡 (NIC)
  • 啟用巨型封包 (Jumbo Frames)。
  • 調整封包延遲。

偵錯檢查清單#

第一步是識別哪一個層級造成此問題。

Hardware → Transport → Driver → Application

尋找下列問題指標:

  • 是否已偵測到相機?
  • pylon Viewer 是否正常運作?
  • 您是否已正確設定 TriggerMode ?
  • 頻寬是否充足?
  • CPU 是否過載?
  • 佇列是否阻塞?

記錄建議#

使用結構化記錄取代 print:

import logging
logging.exception("Camera error")

重點整理#

  • 大多數問題都與設定或時序有關。
  • 務必隔離硬體與軟體問題。
  • 持續監控系統資源。
  • 採用系統化的除錯方法。