Tia Portal : Variant ve Array İşlemleri

Tia Portal : Variant ve Array İşlemleri

Siemens TIA Portal’da VariantGet, VariantPut, CountOfElements, ReadFromArrayDB, WriteToArrayDB, ReadFromArrayDBL ve WriteToArrayDBL komutları, Variant ve Array veri tipleriyle çalışmak için kullanılan güçlü araçlardır. Bu komutlar, dinamik veri yönetimi, bellek erişimi ve Array eleman sayısını öğrenme gibi işlemleri kolaylaştırır. Bu rehberde, Siemens TIA Portal’da Variant ve Array komutlarının mantığını, kullanım örneklerini, avantajlarını, dikkat edilmesi gereken noktaları ve pratik ipuçlarını detaylıca ele alacağız.

1. Siemens TIA Portal’da Variant ve Array Komutları Nedir?

Siemens TIA Portal’da Variant ve Array komutları, dinamik veri yönetimi ve bellek erişimi için kullanılır.

  • Kullanım: VariantGet, Variant işaretçisinden veri okur; VariantPut, veri yazar; CountOfElements, Array eleman sayısını hesaplar.
  • Örnek: ReadFromArrayDB ve WriteToArrayDB, çalışma belleğindeki Array veri bloklarından okuma/yazma yapar.
  • Fayda: Dinamik veri erişimi ve Array işlemleri için esneklik sağlar.

2. Variant ve Array Komutlarının Mantığı ve Kullanım Alanları

Bu komutlar, dinamik veri yönetimi ve Array işlemleri için farklı senaryolarda kullanılır.

  • Kullanım: Dinamik veri erişimi, Array boyut kontrolü ve veri depolama.
  • Örnek: VariantGet ile farklı veri tiplerine erişim, CountOfElements ile Array eleman sayısını öğrenme.
  • Fayda: Esnek veri yönetimi ve hata önleme sağlar.
Kullanım AmacıAçıklama
Dinamik Veri ErişimiVariant ile farklı veri tiplerine erişim (VariantGet/VariantPut).
Array Boyut KontrolüArray eleman sayısını öğrenme (CountOfElements).
Veri DepolamaÇalışma veya yükleme belleğinde Array DB’lere veri okuma/yazma.

Temel Parametreler:

KomutParametreVeri TipiBellek AlanıAçıklama
VariantGetENBOOLI, Q, M, D, L veya sabitKomutu aktifleştirmek için "1" olmalı.
ENOBOOLI, Q, M, D, Lİşlem başarılıysa "1", değilse "0" döner.
SRCVariantL (Input, InOut, Temp)Okunacak verinin adresini tutan Variant.
DSTBit dizileri, tamsayılar, kayan noktalı sayılar, vb.I, Q, M, D, L, POkunan değerin yazılacağı değişken.
VariantPutENBOOLI, Q, M, D, L veya sabitKomutu aktifleştirmek için "1" olmalı.
ENOBOOLI, Q, M, D, Lİşlem başarılıysa "1", değilse "0" döner.
SRCBit dizileri, tamsayılar, kayan noktalı sayılar, vb.I, Q, M, D, L, PYazılacak değer.
DSTVariantL (Input, InOut, Temp)Hedef bellek alanını gösteren Variant.
CountOfElementsENBOOLI, Q, M, D, L veya sabitKomutu aktifleştirmek için "1" olmalı.
ENOBOOLI, Q, M, D, Lİşlem başarılıysa "1", değilse "0" döner.
INVariantL (Input, InOut, Temp)Eleman sayısı öğrenilecek Array.
RET_VALUDINTI, Q, M, D, LArray’in toplam eleman sayısı.

3. Örnek 1: VariantGet ile Değer Okuma

VariantGet komutu, Variant işaretçisinden veri okur.

  • Kullanım: Variant işaretçisinden bir değer okunur.
  • Örnek: EN = 1 olduğunda, #VariantSource (Variant, bir INT değişkenini işaret ediyor, örneğin 100) değeri okunur ve MW20’ye yazılır. Sonuç: MW20 = 100, ENO = 1.
  • Fayda: Dinamik veri erişimi sağlar.
Network 1: VariantGet ile Değer Okuma
EN----[ VariantGet ]----ENO
      | SRC: #VariantSource |
      | DST: MW20           |
    

4. Örnek 2: VariantPut ile Değer Yazma

VariantPut komutu, bir değeri Variant işaretçisinin gösterdiği bellek alanına yazar.

  • Kullanım: Variant işaretçisine veri yazılır.
  • Örnek: EN = 1 olduğunda, MD30 (REAL, örneğin 3.14) değeri #VariantTarget’ın işaret ettiği bellek alanına yazılır. İşlem başarılıysa ENO = 1.
  • Fayda: Dinamik veri yazma işlemleri için esneklik sağlar.
Network 2: VariantPut ile Değer Yazma
EN----[ VariantPut ]----ENO
      | SRC: MD30           |
      | DST: #VariantTarget |
    

5. Örnek 3: CountOfElements ile Çok Boyutlu Array Eleman Sayısı

CountOfElements komutu, bir Array’in toplam eleman sayısını hesaplar.

  • Kullanım: Çok boyutlu Array’in eleman sayısı hesaplanır.
  • Örnek: EN = 1 olduğunda, #ArrayVariant (ARRAY[0..2, 0..3] of INT) eleman sayısı hesaplanır. Toplam eleman: (2+1) * (3+1) = 12. Sonuç: MD40 = 12, ENO = 1.
  • Fayda: Dinamik programlama için Array boyutlarını öğrenme imkanı sunar.
Network 3: CountOfElements ile Çok Boyutlu ARRAY Eleman Sayısı
EN----[ CountOfElements ]----ENO
      | IN: #ArrayVariant  |
      | RET_VAL: MD40      |
    

6. Örnek 4: Hata Yönetimi (Veri Tipi Uyumsuzluğu)

Veri tipi uyumsuzluğunda hata yönetimi yapılabilir.

  • Kullanım: Veri tipi uyumsuzluğu kontrol edilir.
  • Örnek: EN = 1 olduğunda, #VariantSource (Variant, bir REAL değişkenini işaret ediyor) ve MW20 (INT) veri tipleri uyumsuz olduğundan işlem başarısız olur, ENO = 0 ve Hata_Alarm aktif olur.
  • Fayda: Hataları önceden tespit ederek program güvenilirliğini artırır.
Network 4: Hata Yönetimi (Veri Tipi Uyumsuzluğu)
EN----[ VariantGet ]----ENO
      | SRC: #VariantSource |
      | DST: MW20           |
|----[ ENO = 0 ]----( Hata_Alarm )----|
    

7. Örnek 5: ReadFromArrayDB ile String Okuma

ReadFromArrayDB komutu, Array veri bloğundan veri okur.

  • Kullanım: Array veri bloğundan String okunur.
  • Örnek: EN = 1 olduğunda, ArrayDB (ARRAY[0..5] of STRING) veri bloğunun 1. elemanı okunur ve TargetString’e yazılır. Örneğin, ArrayDB[1] = "Hello" ise TargetString = "Hello", ENO = 1.
  • Fayda: Çalışma belleğindeki Array DB’lerden veri okuma işlemini kolaylaştırır.
Network 5: ReadFromArrayDB ile STRING Okuma
EN----[ ReadFromArrayDB ]----ENO
      | DB: ArrayDB         |
      | INDEX: 1            |
      | VALUE: TargetString |
      | RET_VAL: MW10       |
    

8. Günlük Hayattan Örnekler

Variant ve Array komutlarının mantığını anlamak için günlük hayattan benzetmeler:

  • Adres Defterinden Bilgi Okuma (VariantGet): Bir adres defterinden bir kişinin telefon numarasını okuma.
  • Adres Defterine Bilgi Yazma (VariantPut): Bir kişinin telefon numarasını adres defterine yazma.
  • Kutudaki Eşya Sayısını Sayma (CountOfElements): Bir kutudaki eşyaların toplam sayısını öğrenme.
  • Arşivden Belge Alma (ReadFromArrayDBL): Arşivde saklanan bir belgeyi yavaşça getirip okuma.

9. Siemens TIA Portal Variant ve Array Komutlarının Avantajları

  • Siemens TIA Portal’da Variant ile farklı veri tiplerine dinamik erişim sağlar (VariantGet/VariantPut).
  • Array eleman sayısını öğrenerek dinamik programlama imkanı sunar (CountOfElements).
  • Çalışma ve yükleme belleğinde Array DB’lerle veri okuma/yazma işlemleri.
  • ENO ve RET_VAL ile işlem başarısını kontrol ederek güvenilirlik sunar.

10. Dikkat Edilmesi Gerekenler

  • VariantGet ve VariantPut’ta SRC ve DST veri tipleri eşleşmelidir; aksi halde ENO = 0 olur.
  • CountOfElements, BOOL Array’lerinde dolgu bitlerini sayar (örneğin, ARRAY[0..1] of BOOL için 8 döner).
  • Array DB’lerde "Data block write-protected in the device" aktifse, CountOfElements 0 döner.
  • S7-1200 için firmware >4.2, S7-1500 için firmware ≥2.1 gereklidir.

11. Kullanım İpuçları

  • Siemens TIA Portal’da VariantGet ve VariantPut kullanmadan önce Variant’ın işaret ettiği veri tipini doğrulayın. Daha fazla bilgi için Variant Kullanımı sayfasını inceleyebilirsiniz.
  • ENO çıkışını bir hata göstergesine bağlayarak hataları izleyin.
  • CountOfElements ile çok boyutlu Array’lerde toplam eleman sayısını hesaplayın. Örnekler için Array Kullanımı sayfasını ziyaret edebilirsiniz.
  • CPU’nuzun firmware sürümünü TIA Portal’da "Hardware Configuration" üzerinden kontrol edin.
  • Array DB’lerle çalışırken ReadFromArrayDB/WriteToArrayDB kullanmak, daha iyi hata değerlendirmesi sağlar.

12. Sonuç

Siemens TIA Portal’daki Variant ve Array komutları, S7-1200 ve S7-1500 serisi PLC’lerde dinamik veri yönetimi ve bellek erişimi için güçlü bir çözüm sunar. Doğru veri tipi eşleşmesi ve hata kontrolleriyle güvenilir programlama yapılabilir. Tüm bilgiler Siemens Industry Online Support’tan doğrulanmıştır. Siemens TIA Portal’da Variant ve Array komutları hakkında ne düşünüyorsunuz? Yorumlarınızı aşağıda paylaşın!

Yorumlar