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şimi | PLC’ler arasında veya SCADA sistemlerine veri gönderimi. |
Veri Depolama | Yapısal verileri dosya veya veritabanında saklama. |
Optimize Bellek Yönetimi | Standart ve optimize bellek alanları arasında veri uyumluluğu sağlama. |
Temel Parametreler:
Parametre | Veri Tipi | Açıklama |
---|---|---|
EN | BOOL | Komutu aktifleştirmek için "1" olmalı. |
ENO | BOOL | İşlem başarılıysa "1", değilse "0" döner. |
SRC_VARIABLE | Herhangi bir tip | Serileştirilecek kaynak veri (örneğin, STRUCT, ARRAY). |
DEST_ARRAY | ARRAY[*] of BYTE/CHAR | Serileştirilmiş verinin yazılacağı hedef dizi. |
POS | DINT | Yazmanın başlayacağı byte indeksi (sıfır tabanlı). |
RET_VAL | INT | Hata kodu; başarı durumunda "0" döner. |
Hata Kodları:
Hata Kodu (W#16#...) | Açıklama |
---|---|
0000 | İşlem başarılı. |
80B0 | SRC_VARIABLE ve DEST_ARRAY bellek alanları çakışıyor. |
8150 | SRC_VARIABLE geçersiz bir pointer (NULL) içeriyor. |
8253 | DEST_ARRAY’da yeterli bellek alanı yok. |
8382 | POS değeri dizinin sınırları dışında. |
Optimize Bellek ve Standart Bellek Farkları:
Özellik | Standart Bellek | Optimize Bellek |
---|---|---|
Hizalama | Fixed padding bytes | Dinamik hizalama |
BOOL Boyutu | 1 bit | Bağlama bağlı (1-2 byte) |
Performans | Düşük | Yüksek |
Kombine Örnek: Farklı Senaryolar
Sistem: Serialize fonksiyonunun farklı kullanım alanları:
Kullanım Amacı | Örnek Senaryo |
---|---|
Veri İletişimi | PLC’den SCADA’ya ürün bilgilerini (STRUCT) gönderme. |
Veri Depolama | Sensör verilerini (ARRAY) veritabanına kaydetme. |
Optimize Bellek Yönetimi | Optimize 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
Yorum Gönder