Siemens TIA (Totally Integrated Automation) Portal’da SCATTER (Bit Dizisini Ayrıştırma) komutu, BYTE, WORD, DWORD veya LWORD tipindeki bir veriyi bit seviyesinde ayrıştırarak ARRAY of BOOL, STRUCT veya PLC veri tipine (UDT) aktaran bir fonksiyondur. Bu komut, özellikle durum kelimelerini analiz etmek veya bit bazında kontrol gerektiren senaryolarda kullanılır. Bu rehberde, SCATTER komutunun mantığını, kullanım örneklerini, avantajlarını, dikkat edilmesi gereken noktaları ve pratik ipuçlarını detaylıca ele alacağız.
SCATTER Komutu Nedir?
SCATTER, BYTE, WORD, DWORD veya LWORD tipindeki bir veriyi bit seviyesinde ayrıştırarak her bir biti ARRAY of BOOL, STRUCT veya UDT yapısına yazan bir komuttur. Bu, özellikle durum kelimelerini (status word) analiz etmek ve bit bazında değişiklik yapmak için kullanışlıdır. Ayrıştırılan bitler, daha sonra GATHER komutuyla tekrar birleştirilebilir.
Çalışma Mantığı: SCATTER, EN girişiyle tetiklenir. EN = 1 olduğunda, IN’deki bit dizisi (örneğin, WORD için 16 bit) ayrıştırılır ve OUT’taki yapıya (örneğin, ARRAY[0..15] of BOOL) bit bit yazılır. İşlem başarılıysa ENO = 1 olur; aksi halde (örneğin, OUT yapısı yetersizse) ENO = 0 döner.
SCATTER Komutunun Mantığı ve Kullanım Alanları
SCATTER komutu, aşağıdaki senaryolarda kullanılır:
Kullanım Amacı | Açıklama |
---|---|
Durum Analizi | Durum kelimelerini (status word) bit seviyesinde analiz etme. |
Bit Bazında Kontrol | Bitleri ayrı ayrı okuyarak veya değiştirerek kontrol sağlama. |
Veri Ayrıştırma | Bit dizilerini anlamlı yapılara (örneğin, UDT) dönüştürme. |
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 | BYTE, WORD, DWORD | BYTE, WORD, DWORD, LWORD | Ayrıştırılacak bit dizisi (örneğin, MW10). |
OUT | ARRAY[*] of BOOL, STRUCT, UDT (*: 8, 16, 32, 64 eleman) | ARRAY[*] of BOOL, STRUCT, UDT (*: 8, 16, 32, 64 eleman) | Bitlerin yazılacağı hedef yapı (örneğin, ARRAY[0..15] of BOOL). |
Kombine Örnek: Farklı Senaryolar
Sistem: SCATTER komutunun farklı kullanım alanları:
Kullanım Amacı | Örnek Senaryo |
---|---|
Durum Analizi | Bir motorun durum kelimesini bitlerine ayırarak hata analizi yapma. |
Bit Bazında Kontrol | Bitleri ayrı ayrı okuyarak veya değiştirerek kontrol sağlama. |
Veri Ayrıştırma | Bit dizilerini anlamlı yapılara (örneğin, UDT) dönüştürme. |
Açıklama: SCATTER, bit seviyesinde veri analizi ve kontrolü kolaylaştırır, özellikle durum kelimeleriyle çalışırken faydalıdır.
PLC Programlama Örnekleri
SCATTER komutu, durum analizi, bit bazında kontrol ve veri ayrıştırma gibi senaryolarda kullanılır. İşte detaylı örnekler:
Örnek 1: WORD Tipindeki Veriyi ARRAY of BOOL’a Ayrıştırma
Network 1: WORD Tipindeki Veriyi ARRAY of BOOL’a Ayrıştırma EN----[ SCATTER ]----ENO | IN: "Motor1".StatusWord | | OUT: "Hatalar".BitArray |
Açıklama: EN = 1 olduğunda, "Motor1".StatusWord (WORD, örneğin, 16#0003 = 0000 0000 0000 0011) bitlerine ayrıştırılır ve "Hatalar".BitArray’e (ARRAY[0..15] of BOOL) yazılır. Sonuç: BitArray[0] = TRUE, BitArray[1] = TRUE, BitArray[2..15] = FALSE.
Örnek 2: PLC Veri Tipi (UDT) Kullanımı
Network 2: PLC Veri Tipi (UDT) Kullanımı EN----[ SCATTER ]----ENO | IN: "Motor1".StatusWord | | OUT: "Hatalar".UDT_Veri |
Açıklama: EN = 1 olduğunda, "Motor1".StatusWord (WORD, örneğin, 16#0003) bitlerine ayrıştırılır ve "Hatalar".UDT_Veri’ye (UDT: AsiriAkim, AsiriSicaklik, vb.) yazılır. Sonuç: AsiriAkim = TRUE, AsiriSicaklik = TRUE, diğerleri FALSE.
Örnek 3: BYTE Tipindeki Veriyi Ayrıştırma
Network 3: BYTE Tipindeki Veriyi Ayrıştırma EN----[ SCATTER ]----ENO | IN: DB1.StatusByte | | OUT: DB1.StatusBits |
Açıklama: EN = 1 olduğunda, DB1.StatusByte (BYTE, örneğin, 16#0F = 0000 1111) bitlerine ayrıştırılır ve DB1.StatusBits’e (ARRAY[0..7] of BOOL) yazılır. Sonuç: StatusBits[0..3] = TRUE, StatusBits[4..7] = FALSE.
Örnek 4: Hata Yönetimi (OUT Yapısı Yetersiz)
Network 4: Hata Yönetimi (OUT Yapısı Yetersiz) EN----[ SCATTER ]----ENO | IN: DB2.StatusWord | | OUT: DB2.InvalidBits | |----[ ENO = 0 ]----( Hata_Alarm )----|
Açıklama: EN = 1 olduğunda, DB2.StatusWord (WORD, 16 bit) bitlerine ayrıştırılmaya çalışılır. Ancak DB2.InvalidBits sadece ARRAY[0..10] of BOOL (11 eleman) ise ENO = 0 olur ve Hata_Alarm aktif olur.
Örnek 5: DWORD Tipindeki Veriyi Ayrıştırma
Network 5: DWORD Tipindeki Veriyi Ayrıştırma EN----[ SCATTER ]----ENO | IN: DB3.StatusDWord | | OUT: DB3.StatusBits |
Açıklama: EN = 1 olduğunda, DB3.StatusDWord (DWORD, örneğin, 16#0000000F) bitlerine ayrıştırılır ve DB3.StatusBits’e (ARRAY[0..31] of BOOL) yazılır. Sonuç: StatusBits[0..3] = TRUE, StatusBits[4..31] = FALSE.
Günlük Hayattan Örnekler
SCATTER komutunun mantığını anlamak için günlük hayattan benzetmeler:
- Kutu Ayrıştırma: Bir kutudaki şekerleri (IN) tek tek çıkararak ayrı kaplara (OUT) yerleştirme.
- Para Bozdurma: Bir banknotu (IN) bozuk paralara (OUT) ayırma.
- Koli Parçalama: Bir kolideki ürünleri (IN) ayrı ayrı raflara (OUT) dağıtma.
- Şifre Çözme: Bir şifreli mesajı (IN) harf harf (OUT) çözme.
Avantajlar
- Bit Seviyesinde Analiz: Durum kelimelerini bit bazında analiz ederek detaylı kontrol sağlar.
- Esneklik: ARRAY of BOOL, STRUCT ve UDT gibi farklı yapılarla çalışabilir.
- Kolay Veri Yönetimi: Bitleri anlamlı isimlerle (örneğin, UDT ile) eşleştirerek okunabilirliği artırır.
- Hata Yönetimi: ENO çıkışı ile işlem başarısını kontrol ederek güvenilirlik sunar.
Dikkat Edilmesi Gerekenler
- OUT Yapısı Boyutu: OUT yapısı, IN 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).
- GATHER ile Tamamlama: Değiştirilen bitleri tekrar birleştirmek için GATHER komutunu kullanın.
- Firmware Kontrolü: CPU’nuzun firmware sürümünü TIA Portal’da "Hardware Configuration" üzerinden kontrol edin; gerekirse güncelleyin.
- Bit Sıralaması: Bit 0’ın en sağda (LSB), en yüksek bitin en solda (MSB) olduğunu unutmayın.
- Hata Yönetimi: ENO çıkışını bir hata göstergesine bağlayarak (örneğin, Hata_Alarm) hataları izleyin.
Sonuç
Siemens TIA Portal’daki SCATTER komutu, bit bazında veri analizi ve kontrol için güçlü bir araçtır. Durum kelimelerini analiz etmek, bit seviyesinde değişiklik yapmak ve verileri anlamlı yapılara dönüştürmek için idealdir. Uygun yapılar 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