Deserialize: Deserialize (Seri Halden Çöz)

Deserialize: Deserialize (Seri Halden Çöz)

Siemens TIA (Totally Integrated Automation) Portal’da Deserialize fonksiyonu, serileştirilmiş veriyi (örneğin, byte dizisi) orijinal veri yapısına (PLC veri tipi, STRUCT veya ARRAY) dönüştürmek için kullanılır. Bu fonksiyon, özellikle veri iletişimi, veri depolama ve bloklar arası veri aktarımı gibi senaryolarda kritik bir rol oynar. Bu rehberde, Deserialize fonksiyonunun mantığını, kullanım örneklerini, avantajlarını, dikkat edilmesi gereken noktaları ve pratik ipuçlarını detaylıca ele alacağız.

Deserialize Fonksiyonu Nedir?

Deserialize (Serileştirmeyi Geri Alma), serileştirilmiş bir byte dizisini orijinal veri yapısına (örneğin, STRUCT, ARRAY) dönüştüren bir fonksiyondur. Serileştirme (Serialize), bir veri yapısını byte dizisine çevirirken, Deserialize bu işlemi tersine çevirir. Bu işlem, özellikle endüstriyel iletişimde (PLC-PLC, PLC-SCADA) ve veri depolamada sıkça kullanılır.

Çalışma Mantığı: Deserialize fonksiyonu, bir kaynak diziden (SRC_ARRAY) serileştirilmiş veriyi okur ve bu veriyi hedef değişkene (DEST_VARIABLE) orijinal formatında yazar. İşlem, EN girişiyle tetiklenir ve ENO çıkışı işlemin başarısını gösterir.

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

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

Kullanım AmacıAçıklama
Veri İletişimiFarklı cihazlar arasında veri aktarımı (örneğin, PLC-PLC veya PLC-SCADA).
Veri DepolamaYapısal verileri dosya veya veritabanında saklama.
Bloklar Arası UyumlulukOptimize edilmiş ve standart bellek alanları arasında veri dönüşümü.
Hata AyıklamaSerileştirilmiş veriyi analiz ederek hata kaynaklarını tespit etme.

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_ARRAYARRAY[*] of BYTE/CHARSerileştirilmiş verinin bulunduğu kaynak dizi.
DEST_VARIABLEHerhangi bir tipOrijinal verinin yazılacağı hedef değişken.
POSDINTOkumanı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_ARRAY ve DEST_VARIABLE bellek alanları çakışıyor.
8136SRC_ARRAY standard bellek alanında değil veya geçersiz erişim.
8382POS değeri dizinin sınırları dışında.
8250DEST_VARIABLE geçersiz bir pointer (NULL) içeriyor.

Kombine Örnek: Farklı Senaryolar

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

Kullanım AmacıÖrnek Senaryo
Veri İletişimiPLC’den SCADA’ya gönderilen serileştirilmiş veriyi geri dönüştürme.
Veri DepolamaVeritabanından alınan byte dizisini STRUCT’a çevirme.
Bloklar Arası UyumlulukOptimize edilmiş bellekten standart belleğe veri aktarımı.
Hata AyıklamaSerileştirilmiş veriyi analiz ederek iletişim hatalarını bulma.

Açıklama: Deserialize, farklı sistemler arasında veri uyumluluğunu sağlar ve veri kaybını önler.

PLC Programlama Örnekleri

Deserialize fonksiyonu, veri iletişimi, depolama ve hata ayıklama gibi senaryolarda kullanılır. İşte detaylı örnekler:

Örnek 1: STRUCT Veriyi Geri Dönüştürme

Network 1: STRUCT Veriyi Geri Dönüştürme
EN----[ Deserialize ]----ENO
      | SRC_ARRAY: "BufferDB".ByteArray  |
      | DEST_VARIABLE: "ArticleData"     |
      | POS: #StartIndex                 |
      | RET_VAL: #ErrorCode              |
        

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

Örnek 2: ARRAY Veriyi Geri Okuma

Network 2: ARRAY Veriyi Geri Okuma
EN----[ Deserialize ]----ENO
      | SRC_ARRAY: "CommDB".RxBuffer |
      | DEST_VARIABLE: "SensorData"  |
      | POS: #BufferPos              |
      | RET_VAL: #Error              |
        

Açıklama: EN = 1 olduğunda, "CommDB".RxBuffer’daki serileştirilmiş veri, "SensorData" (ARRAY[1..10] of INT) değişkenine dönüştürülür. #BufferPos, okumanın başlangıç indeksini gösterir.

Örnek 3: Hata Yönetimi

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

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

Günlük Hayattan Örnekler

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

  • Paket Açma: Bir kargodan gelen sıkıştırılmış paketi (SRC_ARRAY) açarak içindeki eşyaları (DEST_VARIABLE) orijinal haline getirme.
  • E-posta Eki: E-postada gelen sıkıştırılmış bir dosyayı (SRC_ARRAY) açarak orijinal belgeleri (DEST_VARIABLE) elde etme.
  • Arşiv Çıkarma: Bir ZIP dosyasını (SRC_ARRAY) açarak içindeki dosyaları (DEST_VARIABLE) orijinal formatına döndürme.
  • Kutu Düzenleme: Bir kutuya sıkıştırılmış eşyaları (SRC_ARRAY) çıkararak orijinal yerlerine (DEST_VARIABLE) yerleştirme.

Avantajlar

  • Veri Uyumluluğu: Farklı sistemler arasında (örneğin, PLC-SCADA) veri alışverişini kolaylaştırır.
  • Veri Bütünlüğü: Serileştirilmiş veriyi orijinal haline getirerek veri kaybını önler.
  • 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 edilmiş bellekte BOOL 1 byte yer kaplar; bu, S7-1500’de yapıların boyutunu artırabilir (örneğin, 1 DWORD + 1 BYTE = 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 Kaybı: Kaynak ve hedef veri tipleri uyumsuzsa (örneğin, eksik byte’lar) veri kaybı olabilir; Serialize işlemiyle uyumluluğu kontrol edin.
  • Bellek Çakışması: SRC_ARRAY ve DEST_VARIABLE aynı bellek alanını paylaşırsa (W#16#80B0) hata oluşur.

İpuçları

  • Simülasyon: PLCSIM ile Deserialize 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 Doğrulama: Serialize işleminden sonra veriyi doğrulayın; eksik byte’lar Deserialize’da hata yaratabilir.

Sonuç

Siemens TIA Portal’daki Deserialize fonksiyonu, endüstriyel iletişim ve veri yönetimi senaryolarında vazgeçilmez bir araçtır. Serileştirilmiş veriyi orijinal formatına döndürerek veri bütünlüğünü korur ve sistemler arası uyumluluğu sağlar. Hata kodlarını düzenli kontrol ederek güvenilir bir şekilde kullanabilirsiniz. Daha fazla bilgi için Siemens Online Destek sayfasını ziyaret edebilirsiniz.

Yorumlar