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

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

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