Otomasyon

SCADA Sistemleri: Endüstriyel Kontrol ve Uzaktan İzleme

Fatih Algül
13.03.2026 190 görüntülenme

SCADA Nedir ve Neden Önemlidir?

SCADA (Supervisory Control and Data Acquisition), endüstriyel süreçlerin uzaktan izlenmesi, kontrol edilmesi ve veri toplanması için kullanılan bir sistem mimarisidir. Enerji santralleri, su arıtma tesisleri, petrol rafinerileri, üretim hatları ve ulaşım altyapıları gibi kritik sektörlerde SCADA sistemleri vazgeçilmez bir rol oynar.

SCADA sistemleri, sahada bulunan sensörler ve aktüatörlerden veri toplayarak merkezi bir kontrol odasına iletir. Operatörler bu veriler üzerinden anlık kararlar alabilir, alarm durumlarını yönetebilir ve süreçleri optimize edebilir. Günümüzde Endüstri 4.0 ve IoT (Nesnelerin İnterneti) kavramlarının yaygınlaşmasıyla birlikte SCADA sistemleri de önemli bir dönüşüm geçirmektedir.

SCADA Sisteminin Temel Bileşenleri

1. RTU (Remote Terminal Unit)

RTU'lar, sahada bulunan sensörlerden analog ve dijital verileri toplayan mikrodenetleyici tabanlı cihazlardır. Sıcaklık, basınç, akış hızı, seviye gibi fiziksel büyüklükleri ölçerek merkeze iletirler. RTU'lar genellikle zorlu çevre koşullarına dayanıklı olarak tasarlanır ve uzak noktalarda otonom çalışabilir.

2. PLC (Programmable Logic Controller)

PLC'ler, endüstriyel otomasyon süreçlerinde mantıksal kontrol işlemlerini gerçekleştiren programlanabilir cihazlardır. RTU'lara göre daha hızlı işlem kapasitesine sahiptirler ve karmaşık kontrol algoritmalarını çalıştırabilirler. Ladder Diagram, Structured Text ve Function Block Diagram gibi IEC 61131-3 standardındaki dillerle programlanırlar.

3. HMI (Human-Machine Interface)

HMI, operatörlerin SCADA sistemiyle etkileşime girdiği grafik arayüzdür. Proses akış diyagramları, trend grafikleri, alarm listeleri ve kontrol panelleri HMI üzerinde görüntülenir. Modern HMI'lar web tabanlı arayüzler sunarak uzaktan erişim imkanı sağlar.

4. İletişim Altyapısı

SCADA bileşenleri arasındaki veri iletişimi çeşitli protokoller üzerinden gerçekleşir:

  • Modbus (RTU/TCP): En yaygın endüstriyel iletişim protokolü. Basit, güvenilir ve açık standarttır.
  • DNP3 (Distributed Network Protocol): Özellikle enerji sektöründe kullanılır. Zaman damgası ve olay sıralama desteği sunar.
  • OPC UA (Open Platform Communications Unified Architecture): Platform bağımsız, güvenli ve modern bir iletişim standardıdır.
  • IEC 61850: Elektrik şebekelerinde kullanılan uluslararası standarttır.
  • MQTT: IoT entegrasyonlarında tercih edilen hafif mesajlaşma protokolüdür.

5. Master Station (Ana İstasyon)

Tüm saha verilerinin toplandığı, işlendiği ve depolandığı merkezi sunucu sistemidir. SCADA yazılımı bu sunucu üzerinde çalışır ve veri tabanı yönetimi, alarm işleme, raporlama ve tarihsel veri arşivleme gibi işlevleri üstlenir.

SCADA Haberleşme Mimarisi

Tipik bir SCADA sisteminde üç katmanlı bir mimari bulunur:

  1. Saha Katmanı: Sensörler, aktüatörler, RTU'lar ve PLC'ler bu katmanda yer alır.
  2. İletişim Katmanı: Ethernet, fiber optik, radyo frekans, hücresel ağ (4G/5G) veya uydu bağlantıları kullanılır.
  3. Kontrol Merkezi Katmanı: SCADA sunucuları, HMI istemcileri, veri tabanı sunucuları ve historian (tarihsel veri) sunucuları bu katmandadır.

Modbus TCP ile Veri Okuma: Python Örneği

SCADA sistemlerinde en yaygın kullanılan protokollerden biri olan Modbus TCP üzerinden veri okuma işlemi Python ile şu şekilde gerçekleştirilir:

# pymodbus kütüphanesi ile Modbus TCP haberleşmesi
# Kurulum: pip install pymodbus

from pymodbus.client import ModbusTcpClient
import time
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# PLC veya RTU bağlantı ayarları
MODBUS_HOST = "192.168.1.100"
MODBUS_PORT = 502
UNIT_ID = 1

def read_scada_registers():
    """Saha cihazından holding register verilerini okur."""
    client = ModbusTcpClient(MODBUS_HOST, port=MODBUS_PORT)

    if not client.connect():
        logger.error("Modbus bağlantısı kurulamadı!")
        return None

    try:
        # Holding Register okuma (adres: 0, adet: 10)
        result = client.read_holding_registers(
            address=0,
            count=10,
            slave=UNIT_ID
        )

        if result.isError():
            logger.error(f"Register okuma hatası: {result}")
            return None

        registers = result.registers
        logger.info(f"Okunan register değerleri: {registers}")

        # Ham veriyi mühendislik birimine dönüştürme
        sicaklik = registers[0] / 10.0    # °C
        basinc = registers[1] / 100.0     # bar
        akis_hizi = registers[2] / 10.0   # m³/h
        seviye = registers[3] / 10.0      # %

        return {
            "sicaklik_C": sicaklik,
            "basinc_bar": basinc,
            "akis_hizi_m3h": akis_hizi,
            "seviye_yuzde": seviye
        }

    finally:
        client.close()

def write_setpoint(address, value):
    """PLC'ye set değeri yazar."""
    client = ModbusTcpClient(MODBUS_HOST, port=MODBUS_PORT)

    if not client.connect():
        logger.error("Bağlantı hatası!")
        return False

    try:
        result = client.write_register(
            address=address,
            value=int(value * 10),
            slave=UNIT_ID
        )
        return not result.isError()
    finally:
        client.close()

# Sürekli veri toplama döngüsü
if __name__ == "__main__":
    while True:
        veriler = read_scada_registers()
        if veriler:
            print(f"Sıcaklık: {veriler['sicaklik_C']}°C")
            print(f"Basınç: {veriler['basinc_bar']} bar")
            print(f"Akış Hızı: {veriler['akis_hizi_m3h']} m³/h")
            print(f"Seviye: {veriler['seviye_yuzde']}%")
            print("-" * 40)

            # Alarm kontrolü
            if veriler['sicaklik_C'] > 85.0:
                logger.warning("YÜKSEK SICAKLIK ALARMI!")
            if veriler['basinc_bar'] > 10.0:
                logger.warning("YÜKSEK BASINÇ ALARMI!")

        time.sleep(5)  # 5 saniye aralıkla oku

OPC UA ile Modern SCADA Entegrasyonu

OPC UA, modern SCADA sistemlerinin tercih ettiği platform bağımsız ve güvenli bir protokoldür:

# opcua kütüphanesi ile OPC UA istemci örneği
# Kurulum: pip install opcua

from opcua import Client
import time

OPC_SERVER_URL = "opc.tcp://192.168.1.50:4840"

def opc_ua_okuma():
    client = Client(OPC_SERVER_URL)

    try:
        client.connect()
        print("OPC UA sunucusuna bağlanıldı.")

        # Node ID ile değişken okuma
        sicaklik_node = client.get_node("ns=2;i=1001")
        basinc_node = client.get_node("ns=2;i=1002")

        sicaklik = sicaklik_node.get_value()
        basinc = basinc_node.get_value()

        print(f"Sıcaklık: {sicaklik}°C")
        print(f"Basınç: {basinc} bar")

        # Subscription ile anlık veri izleme
        handler = SubHandler()
        sub = client.create_subscription(500, handler)
        sub.subscribe_data_change(sicaklik_node)

    finally:
        client.disconnect()

class SubHandler:
    """Veri değişikliği bildirim işleyicisi."""
    def datachange_notification(self, node, val, data):
        print(f"Değişiklik: {node} -> {val}")

opc_ua_okuma()

SCADA Güvenliği: Kritik Önlemler

SCADA sistemleri kritik altyapıları kontrol ettiğinden siber güvenlik hayati önem taşır. Tarihte Stuxnet, BlackEnergy ve Triton gibi saldırılar SCADA güvenliğinin ne kadar kritik olduğunu göstermiştir.

Temel Güvenlik Prensipleri

  • Ağ Segmentasyonu: SCADA ağı, kurumsal IT ağından fiziksel veya mantıksal olarak ayrılmalıdır. DMZ (Demilitarized Zone) kullanılarak katmanlı bir mimari oluşturulmalıdır.
  • Kimlik Doğrulama ve Yetkilendirme: Tüm kullanıcı erişimleri rol tabanlı (RBAC) olarak yönetilmelidir. Varsayılan şifrelerin mutlaka değiştirilmesi gerekir.
  • Şifreli İletişim: OPC UA gibi TLS/SSL destekli protokoller tercih edilmelidir. Modbus gibi eski protokoller VPN tünelleri içinden geçirilmelidir.
  • Güncelleme Yönetimi: ICS-CERT (Industrial Control Systems Cyber Emergency Response Team) tavsiyelerine uygun yama yönetimi yapılmalıdır.
  • İzleme ve Loglama: Ağ trafiği sürekli izlenmeli, anormal davranışlar tespit edilmelidir. SIEM entegrasyonu sağlanmalıdır.
  • Fiziksel Güvenlik: RTU ve PLC panellerine fiziksel erişim kontrol altında tutulmalıdır.

NIST SP 800-82 ve IEC 62443 standartları, SCADA güvenliği için temel referans çerçeveleridir.

Modern SCADA Trendleri

Bulut Tabanlı SCADA

Geleneksel on-premise SCADA sistemleri yerini giderek bulut tabanlı çözümlere bırakmaktadır. AWS IoT, Azure IoT Hub ve Google Cloud IoT gibi platformlar, SCADA verilerinin bulutta işlenmesine olanak tanır. Ancak gecikme (latency) ve güvenlik gereksinimleri nedeniyle hibrit mimariler daha yaygın tercih edilmektedir.

Edge Computing

Saha seviyesinde veri işleme yaparak merkeze sadece anlamlı verileri ileten edge computing çözümleri, bant genişliği kullanımını azaltır ve gerçek zamanlı karar alma süreçlerini hızlandırır.

Yapay Zeka ve Makine Öğrenmesi

Prediktif bakım (predictive maintenance), anomali tespiti ve süreç optimizasyonu gibi alanlarda yapay zeka algoritmaları SCADA verileri üzerinde uygulanmaktadır. Tarihsel veriler üzerinde eğitilen modeller, ekipman arızalarını önceden tahmin edebilir.

Digital Twin (Dijital İkiz)

Fiziksel sistemlerin sanal kopyaları olan dijital ikizler, SCADA verileriyle sürekli güncellenerek simülasyon, analiz ve optimizasyon imkanı sunar. Bu teknoloji özellikle enerji ve üretim sektörlerinde hızla benimsenmektedir.

Sonuç

SCADA sistemleri, endüstriyel otomasyonun temel taşlarından biri olmaya devam etmektedir. Modbus ve DNP3 gibi geleneksel protokollerden OPC UA ve MQTT gibi modern standartlara geçiş süreci devam ederken, bulut entegrasyonu, yapay zeka ve edge computing gibi teknolojiler SCADA sistemlerini yeni bir boyuta taşımaktadır. Bu dönüşümde siber güvenliğin ihmal edilmemesi, IEC 62443 ve NIST standartlarına uyumlu bir şekilde sistem tasarlanması büyük önem taşır. SCADA alanında çalışan mühendislerin hem otomasyon protokollerini hem de modern yazılım teknolojilerini iyi bilmesi, geleceğin akıllı fabrikalarını inşa etmek için kritik bir gerekliliktir.

Yazar Hakkında
Fatih Algül
TechSoft Solutions
Proje mi var?

Yazılım, IoT veya otomasyon konularında destek almak ister misiniz?

İletişime Geç