AI 驅動文件
您想了解什麼?
可程式設計整合
從韌體 2026.10.30 開始,OV Spark Pro 可以從產線接收資料,使用您自己的邏輯進行判定,並以您自己的格式傳送結果,全部在相機上完成。共有四個部分,大多數設定只會用到其中一兩個:
| 部分 | 說明 | 需要程式碼? |
|---|---|---|
| 變數 | 從外部傳入的值,例如來自 PLC 或 MQTT 的序列號或批號。每次捕獲都會儲存其執行時所用的值 | 否 |
| 程式指令碼 | 判定步驟上的 JavaScript,用於帶原因地判定通過或失敗、新增後設資料和標籤,併為 PLC 寫入您自己的位元組 | 是 |
| 相機指令碼 | 一個相機級指令碼,用於向 MQTT 釋出訊息、響應傳入訊息,並維護計數器和告警 | 是 |
| MQTT | 內建的 MQTT 客戶端。配置好 broker 後,每條檢測結果都會被髮布,無需任何指令碼 | 否 |
它們位於相機左側導航欄的 Integration 下:Variables、Camera Script 和 Data Connectors。程式指令碼位於每個程式的 判定 步驟上。

程式指令碼還是相機指令碼
| 程式指令碼 | 相機指令碼 | |
|---|---|---|
| 歸屬 | 單個程式,並隨之匯出 | 相機本身,在程式切換時保持執行 |
| 執行時機 | 每次檢測時執行,在工具之後、PLC 看到結果之前 | 發生事件時:結果、MQTT 訊息、PLC User Data 變化、定時器 |
| 記憶體 | 沒有可靠的記憶體:將每次檢測視為重新開始 | 在事件之間保留狀態,直到重新載入 |
| 時間限制 | 預設 25 ms,最多 200 ms | 到達鉤子首次 await 前為 1 秒,之後每部分 50 ms |
| 可以 | 設定通過或失敗及其原因,寫入 PLC User Results 位元組,新增後設資料和標籤 | 釋出 MQTT、設定變數、觸發告警、執行定時器 |
| 不能 | 使用網路、保持狀態、使用定時器 | 更改判定、寫入 PLC 位元組、編輯已完成的捕獲 |
經驗法則
如果 PLC 需要在 Inspection Completed 變為高電平時就得到它,就放到程式指令碼中。如果要通過網路傳送,或需要在不同部分之間記住某些內容,就放到相機指令碼中。
兩者通過變數連線:相機指令碼設定變數,程式指令碼讀取該變數,該值會隨捕獲一起儲存,這樣您始終可以檢視判定所依據的內容。
常見設定
| 您想要 | 使用 |
|---|---|
| 儲存 PLC 隨每張影象一起傳送的序列號或條碼 | 繫結到 PLC User Data 的變數。無需程式碼:每次捕獲都會儲存它,庫中會顯示它,遠端儲存的檔名也可以使用它,例如資料夾用 {camera}/{var.lot},檔名用 {var.serial}_{capture_id} |
| 對照 PLC 期望的內容檢查部件 | 一個程式指令碼,將 OCR 文字或條碼與序列號變數進行比較,失敗時標註 serial differs。同樣的思路也適用於對照訂單數量檢查計數 |
| 從 MES 或其他系統獲取資料 | 繫結到 MQTT 主題和 JSON 欄位的變數,或一個相機指令碼,從供應商訊息中提取欄位並設定變數 |
| 讓操作員手動輸入批號 | 在 Variables 頁面手動設定變數。使用手動輸入值的捕獲會帶有 manual 標記。這也是在沒有 PLC 的臺架上測試指令碼的方式 |
| 稍後按批號或按接近失敗的程度查詢捕獲 | 一個程式指令碼,將值儲存為後設資料併為捕獲打標籤,例如 near-miss 或 review |
| 向 PLC 傳送您自己的資料 | 一個程式指令碼,使用 pack() 將計數、每個區域的一個位或每個工具的一個程式碼打包到 User Results |
| 按型號執行不同的檢查 | PLC 傳送部件型別;程式指令碼將其他部件型別標記為 Not inspected,或開啟/關閉某項檢查 |
| 使用您自己的通過邏輯 | 例如,當 80 個區域中至少 78 個通過時判定通過,或將失敗工具的名稱放入原因中 |
| 在資料缺失或過時時不檢測部件 | 一個程式指令碼,在序列號尚未到達或 PLC 的最後值過舊時返回 Not inspected |
| 釋出每條結果 | 無需編寫:在 Data Connectors 下配置好 broker 後,每條結果和心跳都會傳送到 MQTT。使用相機指令碼可自定義主題或訊息格式 |
| 監控產線 | 一個相機指令碼,在連續 N 次拒絕後觸發告警,以 CSV 形式釋出每班次的通過和失敗計數,或釋出心跳 |
| 通過 MQTT 應答請求 | 一個相機指令碼,用於應答諸如 last result 或 value of a variable 之類的請求 |
上述使用指令碼的每種設定,在指令碼編輯器的 Templates 庫中都有現成的模板。
指令碼工作臺
兩種指令碼都在相機上的同一編輯器中編寫,具備以下功能:
- 模板:針對上述每種任務的可用示例。選擇一個並填入它所使用的工具或變數
- 自動補全和參考面板,記錄了每個鉤子、全域性變數和型別,並附有簡短指南
- 測試可針對實時相機或最近的捕獲執行,這樣您就無需在 HMI 和指令碼選項卡之間切換
- 歷史:最近儲存的 20 個版本,可用於比較或回滾
- 測試在實時觸發或儲存的捕獲(最新一次、最近 N 次最多 500 次、庫過濾條件或捕獲編號)上執行草稿。對於相機指令碼,這是一次空執行,會重放最近的結果而不傳送任何內容

儲存前請先測試
丟擲異常或執行超時的程式指令碼會使該部件變為未檢測,並將 PLC 使用者結果清零。儲存前請使用失敗部件和合格部件分別執行測試,並保持指令碼簡短:其耗時會累加到每個週期中。
須知事項
- 變數、指令碼和 MQTT 設定會隨程式匯出一同遷移。密碼和證書不會被匯出:如果源使用了目標沒有的憑據,MQTT 到達時會處於關閉狀態;否則保持源的設定
- HTTP API 現在以與 MQTT 和指令碼相同的格式返回結果。如果您是針對 2026.10.13 版本進行整合的,請檢視該頁面上的欄位變更
- 尚不支援:從相機指令碼觸發檢測或切換程式(仍由 PLC 和 HTTP 完成)、TCP 和 OPC-UA,以及用於顯示或設定變數的 HMI 小部件