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ştirme | Dağınık bitleri tek bir bit dizisine (örneğin, WORD) toplama. |
Veri Paketleme | Bit bazında değiştirilen verileri birleştirerek kompakt bir yapı oluşturma. |
Durum Kelimesi Oluşturma | Bit seviyesinde durumları birleştirerek bir durum kelimesi (status word) oluşturma. |
Temel Parametreler:
Parametre | Veri Tipi (S7-1200) | Veri Tipi (S7-1500) | Açıklama |
---|---|---|---|
EN | BOOL | BOOL | Komutu aktifleştirmek için "1" olmalı. |
ENO | BOOL | BOOL | İşlem başarılıysa "1", değilse "0" döner. |
IN | ARRAY[*] 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). |
OUT | BYTE, WORD, DWORD | BYTE, WORD, DWORD, LWORD | Birleş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ştirme | Dağınık hata bitlerini birleştirerek bir durum kelimesi oluşturma. |
Veri Paketleme | Bit bazında değiştirilen verileri birleştirerek kompakt bir yapı oluşturma. |
Durum Kelimesi Oluşturma | Bit 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
Yorum Gönder