KeenVision Light InspectionIşık Denetimi
Complete operator and engineer guide · Build v152 · Made by KeenStudio for AGASAN
Tam operatör ve mühendis kılavuzu · v152 · KeenStudio tarafından AGASAN için yapıldı
Machine-vision system that captures images of automotive light assemblies and measures colour and intensity inside polygon zones. Results go to a Siemens PLC as OK / NOK.
Otomotiv ışık montajlarını yakalayan ve çokgen bölgelerde renk/yoğunluğu ölçen makine görme sistemi. Sonuçlar Siemens PLC'ye OK / NOK olarak gider.
Camera: DFK 37BUX178 (IC4 SDK, USB3, 1080p @ 130 fps)
PLC: Siemens S7 via Snap7 · default IP 192.168.0.1
Alt cameras: any USB/RTSP via OpenCV backend
Kamera: DFK 37BUX178 (IC4 SDK, USB3, 1080p @ 130 fps)
PLC: Snap7 aracılığıyla Siemens S7 · varsayılan IP 192.168.0.1
Diğer kameralar: OpenCV arka ucu ile herhangi bir USB/RTSP kamera
Full Application View
Tam Uygulama Görünümü
| Prog | Func | Cam | Fr | Tool | R | G | B | I |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1 | 240 | 230 | 148 | 224 |
| 1 | 1 | 1 | 1 | 2 | 227 | 215 | 117 | 207 |
Home Dashboard
Ana Gösterge Paneli
Visible to all users — no login required
Tüm kullanıcılara görünür — giriş gerekmez
Shows the inspection result for the LEFT camera station. Displays Dynamic Timeline (for dynamic functions) or a camera image with overlaid polygon tool results (for static functions).
Sol kamera istasyonunun denetim sonucunu gösterir. Dinamik fonksiyonlar için zaman çizelgesi, statik fonksiyonlar için araç sonuçları ile kamera görüntüsü gösterilir.
Large coloured banner at top of each panel. Green = All OK · Red = NOK. For dynamic functions shows how many frames passed.
Her panemin üstündeki renkli büyük bant genel sonucu gösterir. Yeşil = Tümü OK · Kırmızı = NOK. Dinamik fonksiyonlarda kaç karenin geçtiğini gösterir.
Her panemin üstündeki renkli bant. Yeşil = Tümü OK · Kırmızı = NOK.
Function Pills Strip
Fonksiyon Hapları Şeridi
Below the timeline is a row of pill buttons — one per configured function for this program. Click any pill to switch the display. Dynamic functions show ⚡. Border colour = last result.
Zaman çizelgesinin altında, bu program için yapılandırılmış her fonksiyon için bir hap düğmesi satırı bulunur. Görüntüyü değiştirmek için herhangi bir hap düğmesine tıklayın. Dinamik fonksiyonlar ⚡ gösterir. Kenarlık rengi = son sonuç.
Zaman çizelgesinin altında fonksiyon başına bir hap düğmesi bulunur. Herhangi birine tıklayarak görüntüyü değiştirin. Dinamik fonksiyonlarda ⚡ gösterilir.
Dynamic Timeline on Home Page
Ana Sayfada Dinamik Zaman Çizelgesi
Clicking a frame thumbnail
Kare küçük resmine tıklama
Click the thumbnail image inside any tile to open a full-resolution pop-up viewer. The viewer shows the captured frame with all polygon tools drawn in green/red, a per-tool RGBI sidebar, and an overall OK/NOK result. Scroll to zoom, drag to pan, Esc to close.
Herhangi bir karonun içindeki küçük resim görüntüsüne tıklayarak tam çözünürlüklü açılır pencere görüntüleyiciyi açın. Görüntüleyici, tüm çokgen araçların yeşil/kırmızı çizildiği yakalanan kareyi, araç başına RGBI kenar çubuğunu ve genel OK/NOK sonucunu gösterir. Yakınlaştırmak için kaydırın, kaydırmak için sürükleyin, kapatmak için Esc tuşuna basın.
Herhangi bir karonun içindeki küçük resme tıklayarak tam çözünürlüklü açılır pencere görüntüleyiciyi açın. Araçlar yeşil/kırmızı çizilmiş ve RGBI kenar çubuğu gösterilir.
| Tile element | Meaning |
|---|---|
| F1, F2… | Frame number (matches capture order) |
| LED 1, LED 2… | Corresponding LED number in the lighting sequence |
| ✓ OK | All tools in this frame passed their tolerances |
| ✗ NOK | One or more tools failed — click thumbnail to see which ones |
| R G B I | Average Red/Green/Blue/Intensity values measured in this frame |
Recipe Tab
Reçete Sekmesi
F1/F2 Settings → Recipe
☐ Secondary camera
Recipe Controls Reference
Reçete Kontrolleri Referansı
| Control | Description |
|---|---|
| Program | 1–9999. Must match the PLC program number in DBW4/DBW6. |
| Function | 1–999. Must match DBW8/DBW10 from PLC. |
| Name | Human-readable label shown on Home page (Turn, Fog, Brake, Park, Reverse, or custom). |
| ⚡ Dynamic Function | Enables burst capture. Badge turns green ON. Must press Save Tools to persist. |
| Frames | (Dynamic) Number of frames to capture = number of LEDs in your sequence. |
| Interval | (Dynamic) Delay between frames in ms. Min ~7.7ms at 1080p (130fps). Set to match LED on-time. |
| Edit Frame | (Dynamic) Which frame is currently shown in the viewport for tool editing. |
| Save Tools | Saves all polygons, tolerances, and function options to the database. Always save before leaving. |
Camera Tab
Kamera Sekmesi
| Control | Description |
|---|---|
| Exposure (ms)Pozlama (ms) | Shutter time. Minimum useful ~1ms. In Dynamic keep below interval time. Converted to µs internally for IC4. |
| Gain | Sensor gain 0–255. Acts like ISO. Keep low for clean measurements. |
| ResolutionÇözünürlük | Native / 1920×1080 (130fps) / 1280×720 / 640×480. Auto-locked to 1920×1080 when Dynamic is ON. |
| Colour ModeRenk Modu | Colour (RGB) — full colour debayering (default). Monochrome — greyscale, intensity-only inspection. |
| Camera BackendKamera Arka Ucu | IC4: DFK cameras (recommended). OpenCV: USB webcam, IP camera (RTSP/HTTP), WDM. Auto: tries IC4 first. |
| RotationDöndürme | Software rotation after capture: 0°/90°/180°/270°. Use when camera is mounted sideways. |
| Full Device / IC4 PropsTam Cihaz | Opens full GenICam property browser. View and set any camera property. Changes saved to recipe. |
| CaptureYakala | Single frame (static) or full burst sequence (dynamic). Progress bar shown during dynamic. |
| Live ViewCanlı Görünüm | Continuous preview for alignment. Not available in Dynamic mode. Click again to stop. |
Tools Tab
Araçlar Sekmesi
Left-click body → move tool
Shift+click → multi-select
Ctrl+Z → undo · Ctrl+Y → redo
Right-click edge → add point
Middle-click point → remove
| T | R min | R max | G min | G max | I min |
|---|---|---|---|---|---|
| 1 | 180 | 255 | 170 | 255 | 160 |
| 2 | 185 | 255 | 175 | 255 | 165 |
| T | R | G | B | I |
|---|---|---|---|---|
| 1 | 240 | 228 | 120 | 220 |
| 2 | 235 | 222 | 118 | 215 |
| Action | Result |
|---|---|
| Left-click corner dotköşe noktası | Drag to reshape polygon |
| Left-click inside polygonçokgen içi | Select + drag to move single tool |
| Shift+Click | Toggle tool into/out of group (amber highlight) |
| Drag any amber toolKehribar aracı sürükle | All selected tools move together |
| Ctrl+A | Select all tools at once |
| Ctrl+Z | Undo last action (up to 50 steps) |
| Ctrl+Y orveya Ctrl+Shift+Z | Redo last undone action |
| Esc | Clear all selections |
| Right-click edgekenar | Insert new vertex |
| Middle-click pointnokta | Remove vertex (min 3) |
| Scroll | Zoom in/out |
Measure Tab
Ölçüm Sekmesi
| Tool | R | G | B | I | OK |
|---|---|---|---|---|---|
| T1 | 238 | 226 | 119 | 218 | ✓ |
| T2 | 12 | 8 | 6 | 9 | ✗ |
| Control | Description |
|---|---|
| Teach Tolerance ±Öğret Toleransı ± | Range added to measured values. E.g. Red=200, tolerance=30 → R_min=170, R_max=230. |
| Measure AllHepsini Ölç | Measures all tools on all enabled cameras for the current frame. Polygons turn green/red. Results saved to DB. |
| Teach Active CameraAktif Kamerayı Öğret | Sets each tool's min/max = (measured ± tolerance). Auto-saves. Run Measure first. |
Dynamic Function — What & Why
Dinamik Fonksiyon — Ne & Neden
Your lighting has 15 LEDs firing one at a time over 200ms. A single photo captures all LEDs simultaneously — impossible to inspect each zone independently. Dynamic mode captures one photo per LED in a synchronized burst.
Işıklandırmanızda 200ms boyunca tek tek yanan 15 LED var. Tek bir fotoğraf tüm LED'leri aynı anda yakalar — her bölgeyi bağımsız olarak denetlemek imkânsız. Dinamik mod, senkronize bir patlama halinde her LED için bir fotoğraf çeker.
15 LED 200ms boyunca tek tek yanıyor. Tek fotoğraf hepsini yakalar. Dinamik mod, her LED için bir fotoğraf senkronize patlama halinde çeker.
LED Sequence Animation
LED Dizisi Animasyonu
Burst Capture
Patlama Yakalama
App writes 11 immediately (busy)Uygulama hemen 11 yazar (meşgul)
Dynamic Function Setup
Dinamik Fonksiyon Kurulumu
Badge turns green ON, frames/interval controls appearRozet yeşil ON'a döner, kareler/aralık kontrolleri görünür
Total 195ms. At 1080p min interval is 7.7ms (130fps).Toplam 195ms. 1080p'de minimum aralık 7,7ms'dir (130fps).
Without this the Dynamic checkbox will reset on reload.Bu olmadan Dinamik onay kutusu yeniden yüklemede sıfırlanır.
Progress bar appears. All frames captured in one burst. Frame strip shown below viewport.İlerleme çubuğu görünür. Tüm kareler tek patlama ile yakalanır. Görünüm penceresinin altında kare şeridi gösterilir.
Copy Tools Between Frames
Kareler Arasında Araç Kopyalama
In Dynamic mode the frame strip shows a ⧉ Copy Tools… button. Opens the Copy Tools dialog.
Dinamik modda kare şeridi ⧉ Araçları Kopyala… düğmesini gösterir.
| Option | Description |
|---|---|
| Copy FROM frameKaynaktan kopyala | Source frame dropdown. Shows tool count per frame. |
| Copy TO framesHedef kareler | Checkboxes for each destination. Select All / Select None shortcuts. Source always disabled. |
| Replace existing toolsMevcut araçları değiştir | Destination cleared first. Best for starting from a uniform baseline. |
| Keep + add copied toolsTut + kopyalanmış araçları ekle | Adds copies on top of existing tools. Use to add a shared polygon to frames that already have unique ones. |
App Screenshots & Animations
Uygulama Ekranları & Animasyonlar
Annotated live mockups of every key screen
Her önemli ekranın açıklamalı canlı taslakaları
| Fr | T | R | G | B | I |
|---|---|---|---|---|---|
| 1 | 1 | 240 | 228 | 148 | 224 |
| 1 | 2 | 235 | 222 | 142 | 218 |
| 2 | 1 | 242 | 230 | 150 | 226 |
Ctrl+Z → undo (50 steps)→ geri al (50 adım)
Ctrl+Y → redo→ yenile
| T | Rmin | Rmax | Imin |
|---|---|---|---|
| 1 | 180 | 255 | 160 |
| 2 | 180 | 255 | 160 |
| T | R | G | I | |
|---|---|---|---|---|
| 1 | 238 | 225 | 218 | ✓ |
| 2 | 8 | 6 | 9 | ✗ |
IDLE
DBW12=10
Busy=11
N frames
all tools
12/13
Undo / Redo
Geri Al / Yenile
New in v152 — up to 50 undo steps in the viewport
v152'de yeni — görünüm penceresinde 50 geri alma adımına kadar
Every time you finish a tool action, a snapshot of the complete polygon state is saved. Undo restores the previous snapshot. Redo re-applies the undone step. The history is per-session and clears when you load new tools or images.
Her araç eylemi tamamlandığında, tam çokgen durumunun bir anlık görüntüsü kaydedilir. Geri Al, önceki anlık görüntüyü geri yükler. Yenile, geri alınan adımı yeniden uygular. Geçmiş, oturum başınadır ve yeni araçlar veya görüntüler yüklendiğinde temizlenir.
Her araç eylemi tamamlandığında, tam çokgen durumunun bir anlık görüntüsü kaydedilir. Geri Al önceki anlık görüntüyü geri yükler. Yenile geri alınan adımı yeniden uygular.
Interactive Demo
Etkileşimli Demo
What Triggers a Snapshot
Anlık Görüntüyü Tetikleyen Eylemler
| Action | When saved |
|---|---|
| Move single tool (drag body) | On mouse release after drag |
| Move multiple tools (Shift+drag) | On mouse release after group drag |
| Drag a corner point | On mouse release after point drag |
| Add new tool (Add Tool button) | Immediately on add |
| Delete tool | Immediately on delete |
| Add vertex (right-click edge) | Immediately on add |
| Remove vertex (middle-click point) | Immediately on remove |
Keyboard Shortcuts for Undo/Redo
Geri Al/Yenile Klavye Kısayolları
| Shortcut | Action |
|---|---|
| Ctrl+Z | Undo last tool action |
| Ctrl+Y | Redo last undone action |
| Ctrl+Shift+Z | Also Redo (alternative shortcut) |
| ↩ Undo button↩ Geri Al düğmesi | Same as Ctrl+Z (Tools tab) |
| ↪ Redo button↪ Yenile düğmesi | Same as Ctrl+Y (Tools tab) |
PLC Page
PLC Sayfası
Owner access only · Siemens S7 via Snap7
Yalnızca Sahip erişimi · Snap7 üzerinden Siemens S7
DBW12=10
11 (busy)
all frames
all tools
12/13 OK/NOK
| Register | Direction | Value → Meaning |
|---|---|---|
DBW4/6 | PLC→PC | F1/F2 Program number |
DBW8/10 | PLC→PC | F1/F2 Function number |
DBW12/14 | Her iki yön | 10=start · 11=busy · 12=OK · 13=NOK · 98=reset · 100=done |
DBX0.0 | PC→PLC | PC Ready bit |
DBX0.1 | PC→PLC | Heartbeat toggle (changes every cycle) |
Users Page
Kullanıcılar Sayfası
Export Config — saves a .kvconfig file with the full database (recipes, tools, results) and all reference images. Save to USB/network after each production session.
Yapılandırmayı Dışa Aktar — tam veritabanı ve tüm referans görüntülerini içeren .kvconfig dosyası kaydeder.
Import Config — restores from a .kvconfig. App restarts automatically.
Yapılandırmayı İçe Aktar — bir .kvconfig dosyasından geri yükler. Uygulama otomatik olarak yeniden başlar.
Yapılandırmayı İçe Aktar — .kvconfig dosyasından geri yükler. Uygulama otomatik yeniden başlar.
Keyboard Shortcuts
Klavye Kısayolları
| Key | Action | Where |
|---|---|---|
| F11 | Toggle fullscreen | Anywhere |
| Esc | Exit fullscreen / clear tool selection | Anywhere / Viewport |
| Ctrl+Z | Undo last tool action (up to 50) | Viewport |
| Ctrl+Y | Redo | Viewport |
| Ctrl+Shift+Z | Also Redo (alternative shortcut) | Viewport |
| Ctrl+A | Select all tools | Viewport |
| Shift+Click | Multi-select tool | Viewport |
| Right-click edgekenar | Add polygon vertex | Viewport |
| Middle-click pointnokta | Remove vertex | Viewport |
| Scroll | Zoom viewport | Viewport |
Troubleshooting
Sorun Giderme
| Problem | Fix |
|---|---|
| Black & white images | Camera tab → Colour Mode = "Colour (RGB)" → Save Camera Recipe → recapture. Run test_ic4_api.py and send output to support. |
| Image rotated / sideways | Camera tab → Rotation → 90°/180°/270° → Save Camera Recipe. |
| Dynamic stays OFF after saving | Tick the checkbox, then press Save Tools. The box must be ticked when you click Save. |
| Camera not found | Install IC4 SDK, reconnect USB, wait for Windows driver. Full Device / IC4 Props → Refresh. |
| PLC not connecting | PLC page → verify IP (default 192.168.0.1), Rack=0, Slot=1. PC and PLC must be on the same subnet. |
| All measurements 0 0 0 0 | Image is likely black. Capture with Live View first to confirm camera is working. Check IC4 SDK installed. |
| Undo not working | Click inside the viewport first (it needs keyboard focus). Then Ctrl+Z. |