GATHER: Merge Individual Bits into a Bit Sequence (Ayrı Bitleri Bit Dizisine Birleştir)

GATHER: Merge Individual Bits into a Bit Sequence (Ayrı Bitleri Bit Dizisine Birleştir)

Siemens TIA (Totally Integrated Automation) Portal’da GATHER (Bitleri Birleştirme) komutu, ARRAY of BOOL, STRUCT veya PLC veri tipindeki (UDT) bitleri birleştirerek BYTE, WORD, DWORD veya LWORD tipinde bir değişkene dönüştüren bir fonksiyondur. Bu komut, dağınık bitlerin tek bir veri yapısında toplanmasını sağlar ve özellikle SCATTER ile ayrıştırılmış bitleri tekrar birleştirmek için kullanılır. Bu rehberde, GATHER komutunun mantığını, kullanım örneklerini, avantajlarını, dikkat edilmesi gereken noktaları ve pratik ipuçlarını detaylıca ele alacağız.

GATHER Komutu Nedir?

GATHER, ARRAY of BOOL, STRUCT veya UDT yapısındaki bitleri birleştirerek BYTE, WORD, DWORD veya LWORD tipinde bir bit dizisi oluşturan bir komuttur. Bu, özellikle bit bazında yapılan değişikliklerden sonra veriyi tek bir yapıya toplamak için kullanışlıdır. Örneğin, SCATTER ile ayrıştırılmış bitler, GATHER ile tekrar birleştirilebilir.

Çalışma Mantığı: GATHER, EN girişiyle tetiklenir. EN = 1 olduğunda, IN’deki yapıdan (örneğin, ARRAY[0..15] of BOOL) bitler okunur ve OUT’taki bit dizisine (örneğin, WORD) yazılır. İşlem başarılıysa ENO = 1 olur; aksi halde (örneğin, IN yapısı yetersizse) ENO = 0 döner.

GATHER Komutunun Mantığı ve Kullanım Alanları

GATHER komutu, aşağıdaki senaryolarda kullanılır:

Kullanım AmacıAçıklama
Bit BirleştirmeDağınık bitleri tek bir bit dizisine (örneğin, WORD) toplama.
Veri PaketlemeBit bazında değiştirilen verileri birleştirerek kompakt bir yapı oluşturma.
Durum Kelimesi OluşturmaBit seviyesinde durumları birleştirerek bir durum kelimesi (status word) oluşturma.

Temel Parametreler:

ParametreVeri Tipi (S7-1200)Veri Tipi (S7-1500)Açıklama
ENBOOLBOOLKomutu aktifleştirmek için "1" olmalı.
ENOBOOLBOOLİşlem başarılıysa "1", değilse "0" döner.
INARRAY[*] of BOOL, STRUCT, UDT (*: 8, 16, 32, 64 eleman)ARRAY[*] of BOOL, STRUCT, UDT (*: 8, 16, 32, 64 eleman)Bitlerin okunacağı kaynak yapı (örneğin, ARRAY[0..15] of BOOL).
OUTBYTE, WORD, DWORDBYTE, WORD, DWORD, LWORDBirleştirilen bitlerin yazılacağı hedef değişken (örneğin, MW10).

Kombine Örnek: Farklı Senaryolar

Sistem: GATHER komutunun farklı kullanım alanları:

Kullanım AmacıÖrnek Senaryo
Bit BirleştirmeDağınık hata bitlerini birleştirerek bir durum kelimesi oluşturma.
Veri PaketlemeBit bazında değiştirilen verileri birleştirerek kompakt bir yapı oluşturma.
Durum Kelimesi OluşturmaBit seviyesinde durumları birleştirerek bir durum kelimesi (status word) oluşturma.

Açıklama: GATHER, bit seviyesinde veri birleştirme işlemini kolaylaştırır ve kompakt veri yapıları oluşturur.

PLC Programlama Örnekleri

GATHER komutu, bit birleştirme, veri paketleme ve durum kelimesi oluşturma gibi senaryolarda kullanılır. İşte detaylı örnekler:

Örnek 1: ARRAY[0..15] of BOOL → WORD

Network 1: ARRAY[0..15] of BOOL → WORD
EN----[ GATHER ]----ENO
      | IN: "Hatalar".BitArray    |
      | OUT: "Motor1".StatusWord  |
        

Açıklama: EN = 1 olduğunda, "Hatalar".BitArray (ARRAY[0..15] of BOOL, örneğin, [TRUE, TRUE, FALSE, ..., FALSE]) bitleri birleştirilir ve "Motor1".StatusWord’e (WORD) yazılır. Sonuç: StatusWord = 16#0003 (Bit 0 ve Bit 1 = 1).

Örnek 2: PLC Veri Tipi (UDT) Kullanımı

Network 2: PLC Veri Tipi (UDT) Kullanımı
EN----[ GATHER ]----ENO
      | IN: "Hatalar".UDT_Veri    |
      | OUT: "Motor1".StatusWord  |
        

Açıklama: EN = 1 olduğunda, "Hatalar".UDT_Veri (UDT: AsiriAkim = TRUE, AsiriSicaklik = TRUE, diğerleri FALSE) bitleri birleştirilir ve "Motor1".StatusWord’e yazılır. Sonuç: StatusWord = 16#0003.

Örnek 3: Hata Yönetimi (IN Yapısı Yetersiz)

Network 3: Hata Yönetimi (IN Yapısı Yetersiz)
EN----[ GATHER ]----ENO
      | IN: "Hatalar".InvalidBits |
      | OUT: "Motor1".StatusWord  |
|----[ ENO = 0 ]----( Hata_Alarm )----|
        

Açıklama: EN = 1 olduğunda, "Hatalar".InvalidBits (ARRAY[0..10] of BOOL, 11 eleman) bitleri birleştirilmeye çalışılır. Ancak OUT (WORD, 16 bit) için yetersiz olduğundan veri yazılmaz, ENO = 0 olur ve Hata_Alarm aktif olur.

Örnek 4: ARRAY[0..7] of BOOL → BYTE

Network 4: ARRAY[0..7] of BOOL → BYTE
EN----[ GATHER ]----ENO
      | IN: DB1.StatusBits  |
      | OUT: DB1.StatusByte |
        

Açıklama: EN = 1 olduğunda, DB1.StatusBits (ARRAY[0..7] of BOOL, örneğin, [TRUE, TRUE, TRUE, TRUE, FALSE, ..., FALSE]) bitleri birleştirilir ve DB1.StatusByte’e (BYTE) yazılır. Sonuç: StatusByte = 16#0F.

Örnek 5: ARRAY[0..31] of BOOL → DWORD

Network 5: ARRAY[0..31] of BOOL → DWORD
EN----[ GATHER ]----ENO
      | IN: DB2.StatusBits   |
      | OUT: DB2.StatusDWord |
        

Açıklama: EN = 1 olduğunda, DB2.StatusBits (ARRAY[0..31] of BOOL, örneğin, ilk 4 bit TRUE, diğerleri FALSE) bitleri birleştirilir ve DB2.StatusDWord’e (DWORD) yazılır. Sonuç: StatusDWord = 16#0000000F.

Günlük Hayattan Örnekler

GATHER komutunun mantığını anlamak için günlük hayattan benzetmeler:

  • Kutu Toplama: Ayrı kaplardaki şekerleri (IN) tek bir kutuya (OUT) toplama.
  • Para Birleştirme: Bozuk paraları (IN) bir banknota (OUT) dönüştürme.
  • Koli Paketleme: Ayrı raflardaki ürünleri (IN) tek bir koliye (OUT) toplama.
  • Şifre Oluşturma: Harf harf çözülmüş bir mesajı (IN) tek bir şifreli mesaja (OUT) dönüştürme.

Avantajlar

  • Bit Birleştirme: Dağınık bitleri tek bir bit dizisine toplayarak kompakt veri yapıları oluşturur.
  • Esneklik: ARRAY of BOOL, STRUCT ve UDT gibi farklı yapılarla çalışabilir.
  • Veri Paketleme: Bit bazında değiştirilen verileri birleştirerek veri yönetimini kolaylaştırır.
  • Hata Yönetimi: ENO çıkışı ile işlem başarısını kontrol ederek güvenilirlik sunar.

Dikkat Edilmesi Gerekenler

  • IN Yapısı Boyutu: IN yapısı, OUT veri tipinin bit sayısına eşit olmalıdır (örneğin, WORD için 16 eleman); aksi halde ENO = 0 olur.
  • Çok Boyutlu ARRAY: Çok boyutlu ARRAY of BOOL desteklenmez; tek boyutlu ARRAY kullanın.
  • IN Konumu: IN değerleri I/O alanında veya teknoloji objesi DB’sinde olmamalıdır.
  • Firmware Uyumu: S7-1200 için firmware >4.2, S7-1500 için firmware ≥2.1 gereklidir.

İpuçları

  • Anlamlı İsimlendirme: UDT kullanarak bitlere açıklayıcı isimler verin (örneğin, AsiriAkim, AsiriSicaklik).
  • SCATTER ile Tamamlama: Bitleri tekrar ayrıştırmak için SCATTER komutunu kullanın.
  • Bit Sıralaması: Bit 0’ın en sağda (LSB), en yüksek bitin en solda (MSB) olduğunu unutmayın.
  • Firmware Kontrolü: CPU’nuzun firmware sürümünü TIA Portal’da "Hardware Configuration" üzerinden kontrol edin; gerekirse güncelleyin.
  • Hata Yönetimi: S7-1200’de veri yazılmaması durumunda alternatif bir yöntem (örneğin, manuel bit birleştirme) kullanmayı düşünün.

Sonuç

Siemens TIA Portal’daki GATHER komutu, bit bazında veri birleştirme ve veri paketleme için esnek ve güçlü bir araçtır. Doğru yapılandırma ve hata yönetimiyle endüstriyel uygulamalarda verimliliği artırır. Daha fazla bilgi için Siemens Online Destek sayfasını ziyaret edebilirsiniz.

Yorumlar