Flow Tasarımı
Flow Editor, bir denetim pipeline’ını görsel olarak tasarladığınız drag-and-drop arayüzdür. Her pipeline adımı bir node’dur; node’lar port bağlantılarıyla birbirine bağlanır.
Arayüze Genel Bakış
| Alan | İçerik |
|---|---|
| Sol panel | Node kategorileri ve listesi (sürükle bırak) |
| Canvas | Pipeline tasarım alanı |
| Sağ panel | Seçili node’un özellikleri |
| Üst araç çubuğu | Kaydet, Çalıştır, Durdur, Reçeteler, Hata ayıklama |
Node Ekleme
Sol panelden istediğiniz kategoriye tıklayın. Node’u canvas’a sürükleyin. Node üzerine tıklayınca sağ panelde özellikleri açılır.
Bağlantı Oluşturma
Node’un çıktı port’undan (sağ taraf) bir başka node’un girdi port’una (sol taraf) çizgi çekin. Port uyuşmazlığı varsa sistem bağlantıya izin vermez.
Temel bağlantı örneği:
CameraGrab.output
│
└─► DetectionInference.image
│
└─► RoiAnalyze.detections
│
┌────────┴────────┐
│ │
QcDashboard IODigitalWriteParalel Yürütme
Aynı seviyedeki bağımsız node’lar paralel çalışır. Sistem topolojik sıralama ile bağımlılık seviyelerini otomatik belirler:
Level 0: CameraGrab1, CameraGrab2, IODigitalRead ← paralel
Level 1: DetectionInference1, DetectionInference2 ← paralel
Level 2: RoiAnalyze, LogicGate ← paralel
Level 3: QcDashboard, IODigitalWrite ← paralelHer seviye tamamlanmadan bir sonraki seviye başlamaz.
Hata Yönetimi
- Bir node başarısız olursa downstream node’lar atlanır (Skip)
- Çoklu upstream merge node’da: tüm upstream’ler başarısız → skip, en az biri başarılı → çalış
- 10 ardışık pipeline hatası → Job otomatik durur
Kaynak Node’lar (Level 0)
Pipeline’ın başlangıç noktalarıdır: CameraGrab, IODigitalRead, HttpTrigger. Her kaynak node bağımsız bir async task’ta çalışır.
Tetikleme davranışı: Kaynak node çıktı ürettiğinde downstream pipeline tetiklenir. Birden fazla kaynak aynı anda çıktı üretirse pipeline en yakın tetikleyiciyle bir kez çalışır; biriken tetikler temizlenir.
IODigitalRead ile Tetikleme
PLC sinyali bekleyen senaryolarda IODigitalRead node’unu kaynak olarak kullanın:
- Role:
trigger— Rising/Falling/AnyEdge tespitinde pipeline’ı tetikler - ReadMode:
RisingEdge— 0’dan 1’e geçiş tetikler - Bağlantı: I/O provider seçin, kanal numarasını girin
UIInput Node
Pipeline’ı durduran bir node’dur. Operatör yanıt verene kadar bekler.
- Prompt tipi:
confirm(Evet/Hayır),select(dropdown),text,number - Koşul:
always,when_true,when_false - Timeout: 0 = pipeline timeout’a kadar bekle
UIInput node’unu tetikleyici (Level 0) olarak kullanmayın. Bu node pipeline içine yerleştirilmelidir; aksi hâlde pipeline süresiz bekler.
Reçeteler
Flow > Reçeteler sekmesinden reçete tanımlayabilirsiniz. Her reçete belirli node’ların parametrelerini override eder.
Reçete JSON yapısı örneği:
{
"recipe_hassas": {
"name": "Hassas Denetim",
"nodeOverrides": {
"inference_001": { "confidence_threshold": 0.8 },
"roi_002": { "__enabled": true }
},
"swapMode": "hot"
}
}Kaydetme ve Yayınlama
Flow’u kaydettiğinizde değişiklikler Job.FlowJson olarak veritabanına yazılır. Çalışan bir Job için kaydetme işlemi bir sonraki döngüde geçerli olur (hot reload).
Flow Editor’da otomatik kayıt yoktur. Değişikliklerinizi kaydetmeden sayfadan çıkmaya çalışırsanız onay istenir.