İçeriğe geç

Haberleşme Protokolleri

inSCADA, saha cihazları ile haberleşmeyi standart bir hiyerarşik yapı üzerinden yönetir. Kullanılan protokol ne olursa olsun — MODBUS, DNP3, IEC 104, OPC UA veya diğerleri — veri modeli her zaman aynı dört seviyeli yapıyı izler.

Veri Modeli: Connection → Device → Frame → Variable

Section titled “Veri Modeli: Connection → Device → Frame → Variable”
Connection (Bağlantı)
│ Protokol tipi, IP adresi, port ve protokole özgü parametreler
└── Device (Cihaz)
│ Cihaz adresi, tarama periyodu
└── Frame (Veri Bloğu)
│ Bellek alanı tipi, başlangıç adresi, blok boyutu
└── Variable (Değişken)
Blok içi ofset adresi, veri tipi

Bir saha cihazına veya sisteme açılan haberleşme kanalıdır. Her Connection tek bir protokol tipine ve hedef adrese bağlıdır.

  • IP adresi ve port bilgisi
  • Protokol seçimi (MODBUS TCP, DNP3, OPC UA vb.)
  • Timeout, retry gibi haberleşme parametreleri
  • Protokole özgü ayarlar (güvenlik, kimlik doğrulama vb.)

Bir Connection altında birden fazla Device tanımlanabilir.

Connection üzerinden erişilen fiziksel veya lojik bir birimdir. Protokole göre farklı şekilde adreslenir:

ProtokolDevice AdresiÖrnek
MODBUSStation Address (Slave ID)1
DNP3Local/Remote Address çifti1 / 10
IEC 104Common Address (CASDU)1
IEC 61850Object Reference (Logical Device)IED1LD1
OPC UABase PathPLC_1
S7Rack / Slot0 / 0
EtherNet/IPSlot0

Her Device’ın bir Scan Time (tarama periyodu) parametresi vardır. inSCADA, bu periyotta Device’a bağlı tüm Frame’leri sırayla okur.

Device içindeki belirli bir bellek bölgesini veya veri grubunu temsil eder. Frame, neyin okunacağını tanımlar:

  • Hangi bellek alanı (Holding Register, Analog Input, DataBlock vb.)
  • Başlangıç adresi
  • Blok boyutu (kaç birim okunacak)

Bir Device altında birden fazla Frame tanımlanabilir — her biri farklı bir bellek bölgesini veya veri grubunu temsil eder.

Frame içindeki tek bir veri noktasıdır. inSCADA’nın temel yapı taşıdır — loglama, ölçekleme, alarm, animasyon ve tüm diğer fonksiyonlar Variable üzerinden çalışır.

Adresleme Mantığı: Absolute vs Relative

Section titled “Adresleme Mantığı: Absolute vs Relative”

Bu konu, inSCADA’yı ilk kez kullanan geliştiricilerin en çok karıştırdığı noktadır. Doğru anlaşılması, hatasız yapılandırma için kritiktir.

Frame: Cihaz İçindeki Gerçek (Absolute) Adres

Section titled “Frame: Cihaz İçindeki Gerçek (Absolute) Adres”

Frame tanımlarken girilen Start Address, cihazın bellek alanındaki gerçek (absolute) başlangıç adresidir. Quantity ise bu başlangıç adresinden itibaren kaç birimlik bir alanın okunacağını belirler.

Frame, cihaz belleğinden bir pencere açar:

Cihaz Belleği (ör. Holding Register)
┌──────────────────────────────────────────────────────────┐
│ Addr: 0 1 2 ... 99 100 101 102 ... 119 120 │
│ ▲ ▲ │
│ │ Frame Penceresi │ │
│ │◄─────────────────────────►│ │
│ Start: 100 Quantity: 20 │
└──────────────────────────────────────────────────────────┘

Bu örnekte Frame, cihazın Holding Register alanında adres 100’den başlayarak 20 register’lık bir blok okur.

Variable: Frame İçindeki Bağıl (Relative) Adres

Section titled “Variable: Frame İçindeki Bağıl (Relative) Adres”

Variable tanımlarken girilen adres, cihazın gerçek adresi değildir — Frame’in başlangıcına göre bağıl (relative) ofsettir. Yani Variable adresi, “Frame penceresinin içindeki kaçıncı birimde” olduğunu belirtir.

Frame: Start Address = 100, Quantity = 20
Cihaz Belleği: [100] [101] [102] [103] [104] ... [119]
Frame Ofseti: 0 1 2 3 4 ... 19
▲ ▲ ▲
│ │ │
Variable A Variable B Variable C
Offset: 0 Offset: 3 Offset: 4
(Gerçek: 100) (Gerçek: 103) (Gerçek: 104)

Bir enerji analizöründen gerilim ve akım değerlerini okumak istiyorsunuz. Cihaz dokümantasyonunda:

  • Faz-A Gerilim: Holding Register 40100 (REAL, 2 register)
  • Faz-B Gerilim: Holding Register 40102 (REAL, 2 register)
  • Faz-C Gerilim: Holding Register 40104 (REAL, 2 register)
  • Faz-A Akım: Holding Register 40106 (REAL, 2 register)

Frame tanımı:

ParametreDeğerAçıklama
TypeHolding RegisterBellek alanı
Start Address100Cihazın gerçek başlangıç adresi
Quantity1010 register okunacak (100-109)

Variable tanımları:

VariableOfsetVeri TipiGerçek AdresAçıklama
Voltage_A0Float100-101Faz-A Gerilim
Voltage_B2Float102-103Faz-B Gerilim
Voltage_C4Float104-105Faz-C Gerilim
Current_A6Float106-107Faz-A Akım

S7 PLC’de DB8’den sıcaklık ve durum bilgilerini okumak istiyorsunuz:

  • Çalışma durumu: DB8.DBX0.0 (BIT)
  • Alarm durumu: DB8.DBX0.1 (BIT)
  • Sıcaklık: DB8.DBD2 (REAL, 4 byte)
  • Basınç: DB8.DBD6 (REAL, 4 byte)
  • Setpoint: DB8.DBW10 (INT, 2 byte)

Frame tanımı:

ParametreDeğerAçıklama
TypeDBDataBlock alanı
DB Number8DataBlock numarası
Start Address0Byte 0’dan başla
Quantity1212 byte oku (0-11)

Variable tanımları:

VariableByte OfsetBit OfsetVeri TipiS7 AdresiAçıklama
Running00BITDBX0.0Çalışma durumu
Alarm01BITDBX0.1Alarm durumu
Temperature2REALDBD2Sıcaklık (4 byte)
Pressure6REALDBD6Basınç (4 byte)
Setpoint10INTDBW10Setpoint (2 byte)

Dikkat edin: Variable ofsetleri Frame’in başlangıcına (byte 0) göredir. S7’de adresleme byte tabanlı olduğu için Frame Start Address = 0 ise Variable ofsetleri doğrudan S7 byte adresine eşittir. Ancak Frame Start Address farklı olsaydı (ör. 100), Variable ofsetleri yine 0’dan başlayacaktı.

Frame boyutunu (Quantity) doğru ayarlamak haberleşme performansını doğrudan etkiler:

  • Çok büyük Frame: Tek istekte çok veri çekilir ama bir hata tüm bloğu etkiler
  • Çok küçük Frame: Her variable için ayrı istek gider, haberleşme yavaşlar
  • Boşluklu adresler: Arada kullanılmayan adresler varsa bile tek Frame’e dahil etmek genellikle ayrı Frame’lerden daha verimlidir

Her Frame’de bir Scan Time Factor parametresi bulunur. Frame’in gerçek tarama periyodu şu formülle hesaplanır:

Frame Tarama Periyodu = Device Scan Time × Scan Time Factor

Bu özellik, yavaş değişen verilerin daha seyrek taranmasını sağlar. Örneğin Device Scan Time = 1000 ms ise:

FrameScan Time FactorGerçek PeriyotKullanım
Anlık ölçümler11 snAkım, gerilim, güç
Durum bilgileri55 snÇalışma modu, alarm durumu
Konfigürasyon601 dkSetpoint, parametre

Detaylı yapılandırma bilgileri için ilgili protokol sayfasına gidin: