TÀI LIỆU ĐƯỢC HỖ TRỢ BỞI AI
Bạn muốn biết điều gì?
Scriptable Integration
Từ firmware 2026.10.30, OV Spark có thể nhận dữ liệu từ dây chuyền của bạn, quyết định bằng logic riêng của bạn, và gửi kết quả ra ngoài theo định dạng riêng của bạn, tất cả đều trên camera. Có bốn thành phần, và hầu hết các cài đặt chỉ sử dụng một hoặc hai trong số đó:
| Thành phần | Nó là gì | Mã? |
|---|---|---|
| Variables | Các giá trị đến từ bên ngoài, chẳng hạn như số serial hoặc số lô từ PLC hoặc MQTT. Mỗi lần chụp lưu lại các giá trị mà nó đã chạy với | Không |
| Recipe script | JavaScript trên bước Judgment quyết định pass hay fail kèm theo lý do, thêm metadata và tag, và ghi các byte riêng của bạn cho PLC | Có |
| Camera script | Một script phạm vi toàn camera, publish lên MQTT, phản ứng với các tin nhắn đến, và duy trì các bộ đếm và cảnh báo | Có |
| MQTT | Một MQTT client tích hợp sẵn. Sau khi broker được thiết lập, mọi kết quả inspection đều được publish, mà không cần script nào cả | Không |
Chúng nằm trong mục Integration ở thanh điều hướng bên trái của camera: Variables, Camera Script và Data Connectors. Recipe script nằm ở bước Judgment của mỗi recipe.

Recipe script hay camera script
| Recipe script | Camera script | |
|---|---|---|
| Thuộc về | Một recipe, và được export cùng với recipe đó | Camera, và tiếp tục chạy qua các lần đổi recipe |
| Chạy | Trên mỗi inspection, sau các tool và trước khi PLC nhìn thấy kết quả | Khi có sự kiện xảy ra: một kết quả, một tin nhắn MQTT, một thay đổi PLC User Data, một timer |
| Bộ nhớ | Không có bộ nhớ đáng tin cậy: coi mỗi inspection như bắt đầu mới | Giữ trạng thái giữa các sự kiện cho đến khi reload |
| Giới hạn thời gian | 25 ms mặc định, tối đa 200 ms | 1 giây cho đến await đầu tiên của hook, sau đó 50 ms cho mỗi phần sau |
| Có thể | Đặt pass hoặc fail và lý do, ghi các byte PLC User Results, thêm metadata và tag | Publish MQTT, đặt variable, phát cảnh báo, chạy timer |
| Không thể | Sử dụng mạng, giữ trạng thái, sử dụng timer | Thay đổi verdict, ghi byte PLC, chỉnh sửa capture đã hoàn thành |
Nếu PLC cần nó khi Inspection Completed chuyển lên mức cao, hãy đưa vào recipe script. Nếu nó đi qua mạng, hoặc phải ghi nhớ điều gì đó giữa các phần, hãy đưa vào camera script.
Hai cái này kết nối với nhau thông qua variable: camera script đặt một variable, recipe script đọc nó, và giá trị được lưu cùng với capture, vì vậy bạn luôn có thể thấy quyết định được dựa trên điều gì.
Các cài đặt phổ biến
| Bạn muốn | Sử dụng |
|---|---|
| Lưu serial hoặc barcode mà PLC gửi kèm với mỗi hình ảnh | Một variable gắn với PLC User Data. Không cần code: mỗi capture lưu nó, Library hiển thị nó, và tên file Remote Storage có thể sử dụng nó, ví dụ {camera}/{var.lot} cho thư mục và {var.serial}_{capture_id} cho tên file |
| Kiểm tra phần so với những gì PLC mong đợi | Một recipe script so sánh văn bản OCR hoặc barcode với variable serial và fail với serial differs. Ý tưởng tương tự áp dụng cho việc đếm số lượng so với số lượng đơn hàng |
| Nhận dữ liệu từ MES hoặc hệ thống khác | Một variable gắn với topic MQTT và trường JSON, hoặc một camera script lấy một trường từ tin nhắn của nhà cung cấp và đặt variable |
| Cho phép người vận hành nhập số lô | Đặt variable bằng tay trên trang Variables. Các capture sử dụng giá trị nhập tay sẽ nhận được huy hiệu manual. Đây cũng là cách bạn test một script trên bàn thử nghiệm mà không cần PLC |
| Tìm các capture sau này theo lô, hoặc theo mức độ gần đạt ngưỡng fail | Một recipe script lưu các giá trị dưới dạng metadata và gắn tag các capture, chẳng hạn như near-miss hoặc review |
| Gửi dữ liệu riêng của bạn đến PLC | Một recipe script đóng gói một số đếm, một bit cho mỗi vùng, hoặc một mã cho mỗi tool vào User Results bằng pack() |
| Chạy các kiểm tra khác nhau cho mỗi model | PLC gửi loại phần; recipe script đánh dấu các loại phần khác là Not inspected, hoặc bật/tắt một kiểm tra |
| Sử dụng logic pass riêng của bạn | Ví dụ, pass khi ít nhất 78 trong 80 vùng pass, hoặc đưa tên của tool bị fail vào lý do |
| Không inspect một phần khi dữ liệu bị thiếu hoặc cũ | Một recipe script trả về Not inspected khi serial chưa đến, hoặc khi giá trị cuối cùng của PLC quá cũ |
| Publish mọi kết quả | Không cần viết gì: với một broker được thiết lập trong Data Connectors, mọi kết quả và một heartbeat đều được gửi đến MQTT. Sử dụng camera script cho topic hoặc định dạng tin nhắn riêng của bạn |
| Giám sát dây chuyền | Một camera script phát cảnh báo sau N lần fail liên tiếp, publish số lượng pass và fail theo ca dưới dạng CSV, hoặc publish một heartbeat |
| Trả lời các yêu cầu qua MQTT | Một camera script trả lời các yêu cầu như kết quả cuối cùng hoặc giá trị của một variable |
Mỗi cài đặt ở trên sử dụng script đều có một template có sẵn trong thư viện Templates của script editor.
Script workbench
Cả hai script đều được viết trong cùng một editor trên camera, với:
- Templates: các ví dụ hoạt động cho mỗi công việc ở trên. Chọn một và điền vào tool hoặc variable mà nó sử dụng
- Autocomplete và một panel Reference ghi lại mọi hook, global và type, kèm theo các hướng dẫn ngắn
- Test trên camera trực tiếp hoặc các capture gần đây, vì vậy bạn không còn phải chuyển qua lại giữa HMI và tab script
- History: 20 phiên bản đã lưu gần nhất của bạn, để so sánh hoặc quay lại
- Test chạy bản draft trên trigger trực tiếp hoặc trên các capture đã lưu (mới nhất, N gần nhất lên đến 500, một bộ lọc Library, hoặc số capture). Đối với camera script, đây là một dry run phát lại các kết quả gần đây mà không gửi bất cứ thứ gì

Một recipe script bị throw hoặc hết thời gian sẽ làm phần đó trở thành Not inspected và đưa PLC User Results về 0. Chạy Test với một phần fail cũng như một phần tốt trước khi lưu, và giữ script ngắn gọn: thời gian của nó cộng vào mỗi chu kỳ.
Cần biết
- Các cài đặt Variables, script và MQTT đi theo recipe exports. Mật khẩu và chứng chỉ không được export: nếu nguồn sử dụng credentials mà đích không có, MQTT sẽ được chuyển sang trạng thái tắt; nếu không, nó giữ nguyên cài đặt của nguồn
- HTTP API giờ đây trả về kết quả theo cùng định dạng như MQTT và script. Nếu bạn đã tích hợp với 2026.10.13, hãy xem các thay đổi trường trên trang đó
- Chưa có: trigger một inspection hoặc chuyển recipe từ camera script (PLC và HTTP vẫn làm điều đó), TCP và OPC-UA, và một HMI widget để hiển thị hoặc đặt một variable
Đi đâu tiếp theo
- Variables
- Recipe script, kèm theo một playground bạn có thể thử trong trình duyệt
- Camera script
- MQTT