Kanallar (Channel)
Proje üç seviyeli bir hiyerarşidir. Bir kanal, tek bir iletişim yolunu ve sürücüyü temsil eder; ayarları o kanaldaki tüm cihazlar için ortak ağ/seri parametrelerini taşır.
| Sürücü | Kanalın protokolü (bir kez seçilir). |
| Yazma optimizasyonu | Yöntem + duty cycle (tur başına en fazla N yazma). |
| Soket paylaşımı | Tek-soket cihazlarda kanal başına tek bağlantı (One-Socket-per-Channel). |
Cihazlar (Device)
Bir cihaz, kanaldaki fiziksel bir PLC/RTU/gateway'dir. Adres/kimlik (IP, unit id, rack/slot…) ve zamanlama cihaz seviyesindedir.
| Data Collection | Cihaz taraması aç/kapa (servermain.DEVICE_DATA_COLLECTION). |
| Simulated | Donanımsız sentetik veri (test). |
| Tag Generation | Sürücü destekliyorsa otomatik tag üretimi (adres doğrulamalı). |
| Kopyala | Cihazı tüm tag/gruplarıyla çoğaltma. |
Tag'ler
Bir tag, cihazdaki tek bir adrese bağlı değişkendir. Adres biçimi sürücüye özeldir (bkz. Protokoller).
| Veri tipi | Boolean, Word, Short, DWord, Long, Float, Double, String… |
| Erişim | Read Only / Read-Write (endüstriyel standart: 0=RO, 1=RW). |
| Tarama hızı | Tag/grup bazlı; client-driven da olabilir. |
| Ölçekleme | Ham cihaz değeri → mühendislik değeri (bkz. Ölçekleme). |
Toplu ekleme: tag'ler dizi olarak POST edilebilir (batch). Geçersiz tag atlanır, atlanma raporu tutulur (lenient import).
Tag Grupları
Tag'ler cihaz altında gruplara ("Tag Group") ayrılabilir; gruplar iç içe (nested) olabilir. Her grup OPC UA adres uzayında bir klasör olarak görünür: istemci Kanal.Cihaz.Grup.Tag yolundan erişir.
| Amaç | Büyük cihazları mantıksal alt-kümelere böler (ör. "Motorlar", "Sıcaklıklar") — 1000'lerce tag'te gezinmeyi kolaylaştırır. |
| Parent Group | Otomatik tag üretiminde üretilen tag'lerin altına konacağı hedef grup. |
| Kopyala / taşı | Grup, içindeki tüm tag'lerle birlikte çoğaltılabilir. |
Ölçekleme (Scaling)
Ölçekleme, ham cihaz değerini mühendislik birimine çevirir ("Scaling") ve bu tag'i özellik editöründeki Scaling grubunda ayarlanır.
| Tip | Yok (ham), Lineer, Karekök (Square-Root — akış/basınç sensörleri). |
| Raw Lo/Hi | Cihazdan gelen ham aralık (ör. 0–65535 ya da 4–20 mA'nın ham karşılığı). |
| Scaled Lo/Hi | Mühendislik aralığı (ör. 0–100 m³/h). |
| Scaled Data Type / Clamp / Negate | Ölçekli tip, alt/üst sınırlama (clamp), işaret çevirme. |
Lineer: eng = (raw − rawLo)/(rawHi − rawLo) × (engHi − engLo) + engLo. Kapalıysa ham değer kullanılır. Ölçekleme yalnız açık (abone/taranan) tag'lerde uygulanır (performans için slot-bazlı).
Zamanlama (Timing)
Cihaz zamanlaması referans sunucuyla birebir:
| Request Timeout | Tek istek için bekleme (ms). Aşılırsa yeniden dener. |
| Attempts Before Timeout | Bağlantı ve istek denemelerine uygulanır. |
| Inter-Request Delay | İstekler arası nefes; yavaş cihazlar için. |
| Auto-Demotion / Failure Backoff | Ard arda hata veren cihazı geçici deviren geri-çekilme. |
Tarama Modu: Eager vs Talep-Güdümlü
İki tarama davranışı vardır (Ayarlar → Tarama):
| Eager (endüstriyel parite) | Tüm etkin kanallar açılışta bağlanır ve sürekli taranır — tüketici olmasa da. Kanallar "hep okur". |
| Talep-güdümlü | Cihaz yalnız bir tüketicisi (OPC abonesi / UI / Logger) varken taranır; boşta cihaz soket/CPU/RAM harcamaz. |
Tüm tag'e abone olan bir OPC istemcisinde ikisi de kararlı durumda ~aynı sonucu verir; fark açılışta ve tüketicisiz durumdadır. _System._DemandPoll ve bekleyen yazma her iki modda cihazı uyandırır.
MergenHub