Serialize: Serialize (Seri Hale Getir)

Serialize: Serialize (Seri Hale Getir)

Siemens TIA (Totally Integrated Automation) Portal’da Serialize fonksiyonu, PLC veri tiplerini (UDT), STRUCT veya ARRAY yapılarını byte dizisine dönüştürmek için kullanılan bir fonksiyondur. Bu işlem, verilerin iletişim, depolama veya bloklar arası aktarım için hazırlanmasını sağlar. Bu rehberde, Serialize fonksiyonunun mantığını, kullanım örneklerini, avantajlarını, dikkat edilmesi gereken noktaları ve pratik ipuçlarını detaylıca ele alacağız.

Serialize Fonksiyonu Nedir?

Serialize (Serileştirme), bir veri yapısını (örneğin, STRUCT, ARRAY) byte dizisine (ARRAY of BYTE/CHAR) dönüştüren bir fonksiyondur. Bu işlem, özellikle endüstriyel iletişimde (PLC-PLC, PLC-SCADA) ve veri depolamada sıkça kullanılır. Serialize, veriyi sıkıştırılmış bir formata çevirerek sistemler arası transferi kolaylaştırır.

Çalışma Mantığı: Serialize fonksiyonu, bir kaynak değişkenden (SRC_VARIABLE) veriyi alır ve bu veriyi hedef diziye (DEST_ARRAY) byte formatında yazar. İşlem, EN girişiyle tetiklenir ve ENO çıkışı işlemin başarısını gösterir.

Serialize Fonksiyonunun Mantığı ve Kullanım Alanları

Serialize fonksiyonu, aşağıdaki senaryolarda kullanılır:

Kullanım AmacıAçıklama
Veri İletişimiPLC’ler arasında veya SCADA sistemlerine veri gönderimi.
Veri DepolamaYapısal verileri dosya veya veritabanında saklama.
Optimize Bellek YönetimiStandart ve optimize bellek alanları arasında veri uyumluluğu sağlama.

Temel Parametreler:

ParametreVeri TipiAçıklama
ENBOOLKomutu aktifleştirmek için "1" olmalı.
ENOBOOLİşlem başarılıysa "1", değilse "0" döner.
SRC_VARIABLEHerhangi bir tipSerileştirilecek kaynak veri (örneğin, STRUCT, ARRAY).
DEST_ARRAYARRAY[*] of BYTE/CHARSerileştirilmiş verinin yazılacağı hedef dizi.
POSDINTYazmanın başlayacağı byte indeksi (sıfır tabanlı).
RET_VALINTHata kodu; başarı durumunda "0" döner.

Hata Kodları:

Hata Kodu (W#16#...)Açıklama
0000İşlem başarılı.
80B0SRC_VARIABLE ve DEST_ARRAY bellek alanları çakışıyor.
8150SRC_VARIABLE geçersiz bir pointer (NULL) içeriyor.
8253DEST_ARRAY’da yeterli bellek alanı yok.
8382POS değeri dizinin sınırları dışında.

Optimize Bellek ve Standart Bellek Farkları:

ÖzellikStandart BellekOptimize Bellek
HizalamaFixed padding bytesDinamik hizalama
BOOL Boyutu1 bitBağlama bağlı (1-2 byte)
PerformansDüşükYüksek

Kombine Örnek: Farklı Senaryolar

Sistem: Serialize fonksiyonunun farklı kullanım alanları:

Kullanım AmacıÖrnek Senaryo
Veri İletişimiPLC’den SCADA’ya ürün bilgilerini (STRUCT) gönderme.
Veri DepolamaSensör verilerini (ARRAY) veritabanına kaydetme.
Optimize Bellek YönetimiOptimize bellekten standart belleğe veri aktarımı.

Açıklama: Serialize, farklı sistemler arasında veri uyumluluğunu sağlar ve veri transferini kolaylaştırır.

PLC Programlama Örnekleri

Serialize fonksiyonu, veri iletişimi, depolama ve bellek yönetimi gibi senaryolarda kullanılır. İşte detaylı örnekler:

Örnek 1: STRUCT Veriyi Serileştirme

Network 1: STRUCT Veriyi Serileştirme
EN----[ Serialize ]----ENO
      | SRC_VARIABLE: "ArticleData"      |
      | DEST_ARRAY: "BufferDB".ByteArray |
      | POS: #StartIndex                 |
      | RET_VAL: #ErrorCode              |
        

Açıklama: EN = 1 olduğunda, "ArticleData" STRUCT’ı (örneğin, ürün bilgileri) "BufferDB".ByteArray’e serileştirilir. #StartIndex (örneğin, 0) yazmanın başlangıç konumunu belirler. #ErrorCode, işlemin hata kodunu (örneğin, W#16#0000) döndürür.

Örnek 2: ARRAY Veriyi Serileştirme

Network 2: ARRAY Veriyi Serileştirme
EN----[ Serialize ]----ENO
      | SRC_VARIABLE: "SensorData"    |
      | DEST_ARRAY: "CommDB".TxBuffer |
      | POS: #BufferPos               |
      | RET_VAL: #Error               |
        

Açıklama: EN = 1 olduğunda, "SensorData" (ARRAY[1..10] of INT) "CommDB".TxBuffer’a serileştirilir. #BufferPos, yazmanın başlangıç indeksini gösterir.

Örnek 3: Hata Yönetimi

Network 3: Hata Yönetimi
EN----[ Serialize ]----ENO
      | SRC_VARIABLE: "ClientData"       |
      | DEST_ARRAY: "BufferDB".ByteArray |
      | POS: #StartIndex                 |
      | RET_VAL: #ErrorCode              |
|----[ #ErrorCode <> W#16#0000 ]----( Q0.0 )----|
        

Açıklama: EN = 1 olduğunda, Serialize işlemi gerçekleştirilir. Eğer #ErrorCode W#16#0000 (başarı) değilse, Q0.0 (hata çıkışı) aktif olur.

Örnek 4: POS ile Ardışık Serileştirme

Network 4: POS ile Ardışık Serileştirme
EN----[ Serialize ]----ENO
      | SRC_VARIABLE: "ProductData1"     |
      | DEST_ARRAY: "BufferDB".ByteArray |
      | POS: #CurrentPos                 |
      | RET_VAL: #ErrorCode              |
EN----[ Serialize ]----ENO
      | SRC_VARIABLE: "ProductData2"     |
      | DEST_ARRAY: "BufferDB".ByteArray |
      | POS: #CurrentPos                 |
      | RET_VAL: #ErrorCode              |
        

Açıklama: EN = 1 olduğunda, önce "ProductData1" serileştirilir ve #CurrentPos güncellenir. Ardından "ProductData2" aynı diziye, güncellenmiş #CurrentPos’tan itibaren serileştirilir.

Örnek 5: Optimize Bellek Kullanımı

Network 5: Optimize Bellek Kullanımı
EN----[ Serialize ]----ENO
      | SRC_VARIABLE: "OptData"          |
      | DEST_ARRAY: "BufferDB".ByteArray |
      | POS: #StartIndex                 |
      | RET_VAL: #ErrorCode              |
        

Açıklama: EN = 1 olduğunda, optimize bellekteki "OptData" (örneğin, BOOL içeren bir STRUCT) serileştirilir. Optimize bellekte BOOL 1-2 byte yer kaplayabilir, bu nedenle boyut farklılıkları dikkate alınmalıdır.

Günlük Hayattan Örnekler

Serialize fonksiyonunun mantığını anlamak için günlük hayattan benzetmeler:

  • Paketleme: Bir kutuya eşyaları (SRC_VARIABLE) sıkıştırarak (DEST_ARRAY) kargoya hazırlama.
  • E-posta Eki: Bir belgeyi (SRC_VARIABLE) sıkıştırıp (DEST_ARRAY) e-posta ile gönderme.
  • Arşivleme: Dosyaları (SRC_VARIABLE) bir ZIP dosyasına (DEST_ARRAY) sıkıştırma.
  • Kutu Düzenleme: Eşyaları (SRC_VARIABLE) bir kutuya (DEST_ARRAY) sıkıca yerleştirme.

Avantajlar

  • Veri Uyumluluğu: Farklı sistemler arasında (örneğin, PLC-SCADA) veri transferini kolaylaştırır.
  • Veri Sıkıştırma: Kompleks veri yapılarını byte dizisine çevirerek depolama ve iletişim verimliliğini artırır.
  • Esneklik: STRUCT, ARRAY gibi karmaşık veri yapılarını destekler.
  • Hata Yönetimi: RET_VAL ve ENO ile işlem başarısını kontrol ederek güvenilirlik sağlar.

Dikkat Edilmesi Gerekenler

  • Bellek Hizalama: Optimize bellekte BOOL 1-2 byte yer kaplar; bu, S7-1500’de yapıların boyutunu artırabilir (örneğin, 1 DWORD + 1 BOOL = 5 byte, ancak hizalama için 6 byte olabilir).
  • POS Değeri: POS sıfır tabanlıdır; ARRAY sınırlarını aşarsa (W#16#8382) hata oluşur.
  • Veri Boyutu: DEST_ARRAY’ın boyutu, serileştirilecek veriden büyük olmalıdır; aksi halde W#16#8253 hatası alınır.
  • Bellek Çakışması: SRC_VARIABLE ve DEST_ARRAY aynı bellek alanını paylaşırsa (W#16#80B0) hata oluşur.

İpuçları

  • Simülasyon: PLCSIM ile Serialize işlemlerini test ederek hata durumlarını önceden tespit edin.
  • POS Kontrolü: POS değerini artırmadan önce ARRAY sınırlarını kontrol edin.
  • Hata Yönetimi: RET_VAL ve ENO’yu bir hata göstergesine bağlayarak (örneğin, Q0.0) hataları izleyin.
  • Veri Boyutu Kontrolü: DEST_ARRAY boyutunu, serileştirilecek verinin boyutuna göre önceden hesaplayın; gerekirse daha büyük bir dizi kullanın.
  • Optimize Bellek Kullanımı: Performans için optimize bellek tercih edin, ancak boyut farklılıklarını dikkate alın.

Sonuç

Siemens TIA Portal’daki Serialize fonksiyonu, endüstriyel otomasyonda veri iletişimi ve veri yönetimi için kritik bir araçtır. Kompleks veri yapılarını byte dizisine dönüştürerek sistemler arası uyumluluğu sağlar ve veri transferini kolaylaştırır. Doğru parametre kullanımı ve hata kodlarının takibiyle güvenilir bir şekilde kullanılabilir. Daha fazla bilgi için Siemens Online Destek sayfasını ziyaret edebilirsiniz.

Yorumlar