ERETEK
BİLGİ SİSTEMLERİ

Siemens S7 PLC’den Veri Okuma Yöntemleri: PUT/GET, OPC UA ve Diğerleri

S7 PLC veri okuma: PUT/GET, optimize blok erişimi, dahili OPC UA sunucusu ve PLC’den aktif gönderim; güvenlik, PLC yükü ve sahada sık görülen hatalar.

Bu makalede8 bölüm
Teknik özet
Teknoloji
Siemens S7-300/400/1200/1500, S7comm (ISO-on-TCP, TCP 102), PUT/GET, OPC UA, TIA Portal, MQTT
Konu
Siemens S7 PLC verisini SCADA, historian ve IIoT sistemlerine aktarma yöntemleri
Seviye
Orta–ileri
Ön koşullar
  • TIA Portal veya STEP 7 ile temel proje deneyimi
  • Veri bloğu (DB) ve adresleme kavramları

SCADA, historian veya IIoT projesinde ilk teknik toplantının sorusu çoğu zaman aynıdır: “PLC’deki veriyi nasıl alacağız?” Siemens S7 sahada en yaygın kontrol platformlarından biri olduğu için bu soru sık gelir; cevap PLC serisine, firmware sürümüne, güvenlik gereksinimine ve PLC’ye ne kadar iletişim yükü bindirilebileceğine bağlıdır. Yanlış yöntem seçildiğinde ya PLC’nin bağlantı kaynakları tükenir ya da kimlik doğrulamasız bir yazma kapısı açık kalır. Aşağıda S7-300/400/1200/1500 ailesinde PUT/GET, dahili OPC UA sunucusu, harici sunucular ve PLC’den aktif gönderimi saha gözüyle karşılaştırıyoruz.

S7 PLC ailesi ve haberleşme yetenekleri

Dört seri farklı nesillerden gelir; dışarıya veri verme yetenekleri de buna göre ayrışır:

  • S7-300 ve S7-400: STEP 7 Classic döneminin CPU’larıdır. Entegre veya CP üzerinden Ethernet arayüzünde S7comm protokolüyle mutlak adresleme (DB, M, I, Q) kullanılarak erişilir. Dahili OPC UA sunucusu yoktur.
  • S7-1200: TIA Portal ile programlanır. Güncel firmware sürümlerinde harici istemcilerin PUT/GET erişimi varsayılan olarak kapalıdır ve projede açılması gerekir. Güncel firmware sürümlerinde dahili OPC UA sunucusu da sunulur.
  • S7-1500: TIA Portal ile programlanır. Dahili OPC UA sunucusu ve istemcisi, gelişmiş güvenlik ayarları ve daha fazla bağlantı kaynağı vardır.

Hangi firmware sürümünün hangi özelliği desteklediği ve OPC UA için hangi lisansın gerektiği CPU’ya göre değişir. Karar vermeden önce CPU’nun sipariş numarası ve firmware sürümüyle Siemens Industry Online Support üzerindeki kılavuzlardan doğrulama yapın. Sahada ilk iş, envanteri gerçek CPU etiketinden ve TIA projesinden çıkarmaktır; elektrik projesindeki sipariş numarası ile panodaki CPU her zaman aynı değildir.

S7comm, ISO-on-TCP (RFC 1006) üzerinde TCP 102 numaralı portu kullanır. Firewall kuralları ve derin paket incelemesi açısından bu protokolün nasıl ele alındığı endüstriyel firewall’da Modbus ve S7 derin paket inceleme yazısında anlatılıyor.

S7comm PUT/GET erişimi ve sınırlamaları

PUT/GET, harici bir istemcinin PLC belleğindeki alanları mutlak adresle okuması (GET) ve yazmasıdır (PUT). Birçok SCADA sürücüsü, harici OPC sunucusu ve açık kaynak kütüphane (örneğin Snap7) bu mekanizmayı kullanır.

S7-1200 ve S7-1500’de bu erişim için TIA Portal’da CPU özelliklerinde “Protection & Security → Connection mechanisms” altındaki Permit access with PUT/GET communication from remote partner seçeneği işaretlenmelidir. S7-300/400’de böyle bir anahtar yoktur; erişim varsayılan olarak açıktır. İstemci bağlanıyor ama okuma hata veriyorsa konsolda ilk bakılacak yer bu onay kutusu ve okunan DB’nin erişim tipidir.

Basit bir okuma örneği (python-snap7 kütüphanesiyle, standart erişimli DB10’dan):

import snap7
from snap7.util import get_real, get_int, get_bool

plc = snap7.client.Client()
# rack 0, slot 1: S7-1200/1500 için tipik; S7-300 için genellikle slot 2
plc.connect('10.20.30.11', 0, 1)

data = plc.db_read(10, 0, 8)        # DB10, bayt 0'dan 8 bayt
sicaklik = get_real(data, 0)        # DBD0  (REAL)
sayac    = get_int(data, 4)         # DBW4  (INT)
calisiyor = get_bool(data, 6, 0)    # DBX6.0 (BOOL)

plc.disconnect()

PUT/GET’in sınırları:

  • Kimlik doğrulama yoktur. Erişim açıldığında ağdan ulaşabilen her istemci izin verilen alanları okuyup yazabilir. Yöntemin en zayıf noktası budur.
  • Mutlak adres bağımlılığı: DB yapısı değişip adresler kayarsa istemci hata vermez, yanlış veri okur. Trend düzgün görünür, değer yanlıştır. Değişiklik kontrolü şarttır.
  • PDU boyutu: Tek istekte taşınabilecek veri, bağlantıda anlaşılan PDU boyutuyla sınırlıdır; büyük okumalar birden fazla isteğe bölünür.
  • Optimize bloklara erişilemez: S7-1200/1500’de mutlak adresle yalnız standart erişimli bloklar okunabilir.

Optimize blok erişimi ve veri bloğu tasarımı

S7-1200 ve S7-1500’de DB’ler varsayılan olarak “optimized block access” ile oluşturulur. Bu modda değişkenlerin bellekteki yerini derleyici belirler, mutlak adres (DBX, DBW, DBD) kavramı yoktur; değişkenlere yalnız sembolik adla erişilir. PUT/GET ile okunacak bir DB bu yüzden standart erişimli olmalıdır.

Doğru yol, programın tamamında optimize erişimi kapatmak değil, dış dünyaya açılan ayrı bir arayüz DB’si kurmaktır:

  1. Standart erişimli (optimized block access kapalı) bir DB oluşturun, örneğin DB_Interface.
  2. Dışarıya verilecek değişkenleri bu DB’de sabit sırayla, aynı veri tipleri bir arada olacak şekilde tanımlayın. Sona yedek alan bırakın; yeni değişken eklerken mevcut adresler kaymaz.
  3. PLC programında, örneğin döngüsel bir OB içinde, optimize DB’lerdeki değerleri bu DB’ye kopyalayın.
  4. Dışarıdan yazılacak komutları ayrı bir DB’ye alın ve PLC’de doğrulayarak işleyin; harici sistem doğrudan proses değişkenlerine yazmasın.

Bu yapı aynı zamanda bir sözleşmedir. IT ve otomasyon ekipleri hangi verinin hangi adreste olduğunu tek bir DB tanımından takip eder. Otomasyon tarafında bir değişiklik yapıldığında kimin haberdar edileceği de bu sözleşmenin parçası olmalıdır.

Dahili OPC UA sunucusu kullanımı

S7-1500 ve OPC UA destekleyen S7-1200 CPU’larında sunucu TIA Portal’da CPU özelliklerinden etkinleştirilir. Getirdikleri:

  • Değişkenlere sembolik adla erişilir; optimize DB’ler kullanılabilir.
  • Sertifika tabanlı şifreleme ve imzalama ile kullanıcı adı/parola kimlik doğrulaması desteklenir.
  • Abonelik (subscription) ile istemci her seferinde sorgulamak yerine değişiklikleri alır.
  • Hangi değişkenlerin OPC UA’dan görünür ve yazılabilir olacağı DB ve değişken düzeyinde belirlenebilir; sunucu arayüzü tanımlanarak yalnız seçilen değişkenler yayımlanabilir.

Dikkat edilecekler: Siemens, dahili sunucunun kullanımı için CPU sınıfına göre bir runtime lisansı ister; lisans durumu projede kontrol edilmelidir. Desteklenen eşzamanlı oturum ve izlenen öğe sayısı CPU sınıfına göre sınırlıdır. Çok sayıda değişkene kısa örnekleme aralığıyla abone olmak CPU’nun iletişim yükünü artırır; çevrim süresi uzar. Güvenlik politikası ve sertifika yönetimi doğru kurulmalıdır; ayrıntılar OPC UA güvenlik ayarları yazısında.

PLC’den aktif veri gönderimi

Bazı durumlarda veriyi dışarıdan okumak yerine PLC’nin kendisinin göndermesi daha doğrudur. Seçenekler:

  • Open User Communication (TCP/UDP): TSEND_C / TRCV_C gibi bloklarla PLC, bir sunucuya kendi tanımladığı formatta veri gönderir. Esnektir, ama karşı tarafta özel bir alıcı uygulama ve yazılı format sözleşmesi gerekir.
  • MQTT istemcisi: Siemens’in S7-1200/1500 için yayımladığı MQTT istemci kütüphanesiyle PLC doğrudan bir broker’a yayın yapabilir. TLS desteği ve PLC kaynak tüketimi kütüphane sürümüne göre değerlendirilmelidir.
  • OPC UA istemcisi (S7-1500): PLC, üst sistemdeki bir OPC UA sunucusunda yöntem çağırabilir veya değişken yazabilir.

Aktif gönderimin asıl avantajı, olayın PLC tarafında tam zamanında ve zaman damgasıyla yakalanmasıdır: parça sonucu veya alarm, okuma aralığından bağımsız iletilir. Bedeli de vardır. Her değişiklik PLC programında yapılır ve program iletişim hatalarını (karşı taraf kapalı, tampon dolu) yönetmek zorundadır. Hata yönetimi yazılmamış bir TSEND_C çağrısı, sunucu kapandığı gün sessizce veri kaybeder.

Yöntem karşılaştırma tablosu

Yöntem PLC serisi Güvenlik PLC yükü
S7comm PUT/GET 300, 400, 1200, 1500 Kimlik doğrulama yok Düşük–orta, okuma sıklığına bağlı
Dahili OPC UA 1500, güncel 1200 Şifreleme, sertifika, kullanıcı Orta, abonelik sayısına bağlı
Harici OPC/gateway (PLC tarafı S7) Tümü PLC tarafı PUT/GET kadar; üst taraf güvenli Düşük–orta
Open User Communication 300, 400, 1200, 1500 Uygulamaya bağlı Düşük, programa bağlı
PLC içinde MQTT istemcisi 1200, 1500 TLS ve broker kimlik doğrulaması Orta

Pratik karar sırası: PLC S7-1500 veya OPC UA destekli bir S7-1200 ise ve lisans uygunsa dahili OPC UA ilk tercihtir. Eski seri PLC’lerde veya çok sayıda PLC’nin tek noktada toplandığı yapılarda PLC tarafında S7 protokolü konuşan bir edge gateway kullanılır, üst sistemlere OPC UA veya MQTT ile yayın yapılır. Olay bazlı ve zaman açısından hassas veriler için PLC’den aktif gönderim tamamlayıcı olarak eklenir.

PLC yükü ve güvenlik açısından öneriler

  • Toplayıcı sayısını sınırlayın. Aynı PLC’ye SCADA, historian, MES ve bir test aracının ayrı ayrı bağlanması bağlantı kaynaklarını tüketir ve her biri CPU’ya ayrı iletişim yükü bindirir. Tek bir gateway veya OPC UA toplayıcısı veriyi alıp diğer sistemlere dağıtmalıdır.
  • Bitişik blok okuyun. Dağınık tek tek değişken okumak yerine arayüz DB’sinden tek seferde blok okuyun.
  • Okuma aralığını ihtiyaca göre seçin. Tüm değişkenleri 100 ms’de okumak nadiren gerekir; trend ve ekran verisini olay verisinden ayırın.
  • Yazma erişimini ayırın. Dış sistemlerin yazabileceği alanları ayrı bir DB ile sınırlayın; OPC UA’da değişken bazında yalnız okuma yetkisi verin.
  • Ağ erişimini daraltın. PLC’nin TCP 102 ve OPC UA portuna (varsayılan 4840) endüstriyel ağ altyapısında yalnız toplayıcı sunucunun erişmesine izin verin; mühendislik erişimini ayrı kurala bağlayın.
  • Erişim seviyesi ve parola koruması. CPU’nun erişim seviyesi ve parolaları, uzaktan program yükleme ve mod değişikliğini engelleyecek şekilde ayarlanmalıdır.

Protokol tercihinin genel çerçevesi için OPC UA mı MQTT mi yazısı tamamlayıcıdır. Mevcut PLC envanterine göre yöntem seçimi ve devreye alma için PLC–PLC ve PLC–sunucu entegrasyonu ile OPC UA, MQTT ve veri entegrasyonu hizmetlerimize bakabilirsiniz.

Sık sorulan sorular

S7-1200’de PUT/GET’i açmak güvenlik açığı mıdır?

PUT/GET erişimi kimlik doğrulama içermez; PLC’ye ağ üzerinden ulaşabilen her cihaz izin verilen alanları okuyabilir ve yazabilir. Tek başına açmak bu yüzden risklidir. Açılması gerekiyorsa PLC’ye erişim ağ segmentasyonu ve firewall ile yalnız toplayıcı sunucuya sınırlanmalı, S7 protokolünü tanıyan bir firewall varsa yalnız okuma işlemlerine izin verilmelidir.

Optimize edilmiş DB’leri kapatmak PLC performansını düşürür mü?

S7-1200 ve S7-1500’de optimize blok erişimi, işlemcinin veriye daha verimli erişmesini ve bazı özellikleri (örneğin DB’ye değişken eklerken mevcut değerleri koruyarak yeniden başlatmadan yükleme) sağlar. Tüm programda optimize erişimi kapatmayın; yalnız dış erişime açılan ayrı bir arayüz DB’sini standart erişimli yapın. Hem performans hem bakım kolaylığı korunur.

S7-300 için OPC UA kullanmanın yolu var mı?

S7-300 CPU’larında dahili OPC UA sunucusu yoktur. Pratik seçenek, PLC ile S7 protokolüyle konuşan harici bir OPC UA sunucusu veya edge gateway kullanmaktır. Bu yapıda PLC tarafında yine S7 protokolü çalışır, OPC UA yalnız gateway ile üst sistem arasında kullanılır.

PLC’den okuma aralığı ne olmalı?

Verinin kullanım amacına göre belirlenir. Ekran ve trend için 1 saniye genellikle yeterlidir; sayaç ve durum için daha seyrek okuma ile değişimde gönderme birlikte kullanılabilir. Hızlı olaylar yakalanacaksa daha sık okumak yerine olayı PLC içinde zaman damgasıyla tamponlamak daha güvenilirdir.

Teknik özet
Teknoloji
Siemens S7-300/400/1200/1500, S7comm (ISO-on-TCP, TCP 102), PUT/GET, OPC UA, TIA Portal, MQTT
Konu
Siemens S7 PLC verisini SCADA, historian ve IIoT sistemlerine aktarma yöntemleri
Seviye
Orta–ileri
Ön koşullar
  • TIA Portal veya STEP 7 ile temel proje deneyimi
  • Veri bloğu (DB) ve adresleme kavramları
Eretek uzman desteği

Bu sorunu kendi hattınızda mı yaşıyorsunuz?

Mevcut yapıyı yerinde inceleriz. Bulguya dayalı, bakım ekibinizin sürdürebileceği bir plan öneririz.