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. |
| Sınır | Bir kanala eklenebilecek cihaz sayısı sürücüye göre sınırlıdır (ör. FINS 32, S7 1024, Modbus TCP 8192) — bkz. Kanal ve Cihaz Sınırları. |
Kanal ve Cihaz Sınırları
Her sürücü için açılabilecek en fazla kanal ve bir kanaldaki en fazla cihaz sayısı sınırlıdır. Değerler endüstri standardı OPC sunucusunun sürücü kılavuzlarındaki sınırlarla aynıdır; kanal tavanı ayrıca 1024 ile kapatılmıştır. Sınır sürücü başınadır, proje toplamı değildir: farklı sürücülerle toplamda daha fazla kanal açılabilir.
| Sürücü | En fazla kanal · kanal başına en fazla cihaz |
| Modbus TCP/IP Ethernet | 1024 kanal · 8192 cihaz |
| Modbus RTU Serial | 1024 kanal · 255 cihaz |
| Modbus ASCII Serial | 100 kanal · 247 cihaz |
| DNP Client Ethernet | 1024 kanal · 1024 cihaz |
| IEC 60870-5-104 Client | 1024 kanal · 1024 cihaz (istasyon) |
| IEC 61850 MMS Client | 256 kanal · 256 cihaz |
| MQTT Client | 60 kanal (broker bağlantısı) · 1024 cihaz |
| OMRON FINS Ethernet | 512 kanal · 32 cihaz |
| OMRON NJ Ethernet | 256 kanal · 1024 cihaz |
| Siemens S7 TCP/IP | 1024 kanal · 1024 cihaz |
| OPC UA Client | 256 kanal (oturum) · 256 cihaz |
| Simulator | 1024 kanal · 999 cihaz |
Ne zaman denetlenir: yalnız ekleme sırasında — kanal/cihaz oluşturma (arayüz, REST API, AI asistanı/MCP), kopyalama ve içe aktarma (Kepware JSON, proje paketi, şablon). Sınır doluysa işlem reddedilir, nedeni ekranda yazar ve proje hiç değişmez. Kayıtlı mevcut proje yüklenirken hiçbir şey reddedilmez ya da silinmez; sınırı aşan eski bir proje çalışmaya, düzenlenmeye ve silinmeye devam eder, yalnız o sürücüye yeni ekleme yapılamaz.
Doğrulama: her değer, çalışan bir MergenHub'a karşı protokol simülatörleriyle sınırın kendisinde denendi: tüm tag'ler Good oldu, değerler kesintisiz güncellendi, sınırın bir fazlası reddedildi, silince tüm bağlantılar bırakıldı. Sınırlar sürücü başına olduğundan, tüm sürücüler aynı anda sınırındayken de denendi.
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