FILL_BLK: Fill Block (Bloğu Doldur)

FILL_BLK: Fill Block (Bloğu Doldur)

Siemens TIA (Totally Integrated Automation) Portal’da FILL_BLK (Blok Doldurma) komutu, bir bellek alanını (ARRAY, STRUCT vb.) tek bir değerle doldurmak için kullanılan bir fonksiyondur. Bu komut, özellikle başlangıç değeri atama veya veri sıfırlama senaryolarında kullanılır. Bu rehberde, FILL_BLK komutunun mantığını, kullanım örneklerini, avantajlarını, dikkat edilmesi gereken noktaları ve pratik ipuçlarını detaylıca ele alacağız.

FILL_BLK Komutu Nedir?

FILL_BLK, bir bellek alanını (hedef aralık) IN girişindeki değerle dolduran bir komuttur. Hedef aralık, OUT çıkışında belirtilen adresten başlayarak doldurulur. COUNT parametresi, IN değerinin kaç kez kopyalanacağını belirler. Komut çalıştırıldığında, IN’deki değer, COUNT kadar kez hedef aralığa yazılır.

Çalışma Mantığı: FILL_BLK, EN girişiyle tetiklenir. EN = 1 olduğunda, IN’deki değer, OUT’ta belirtilen hedef aralığa COUNT kadar kez kopyalanır. İşlem başarılıysa ENO = 1 olur; aksi halde (örneğin, COUNT aşımı veya veri tipi uyumsuzluğu durumunda) ENO = 0 döner.

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

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

Kullanım AmacıAçıklama
Başlangıç Değeri AtamaARRAY veya STRUCT’ları belirli bir değerle (örneğin, 0) başlatma.
Veri SıfırlamaBir veri bloğunu sıfırlamak için toplu doldurma.
Tekrarlayan Değer AtamaBelirli bir alanı aynı değerle hızlıca doldurma.

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.
INBinary numbers, integers, floating-point numbers, timers, DATE, TOD, CHAR, WCHARBinary numbers, integers, floating-point numbers, timers, DATE, CHAR, WCHAR, TOD, LTODHedef alana yazılacak değer (sabit veya değişken).
COUNTUSINT, UINT, UDINTUSINT, UINT, UDINT, ULINTDeğerin kaç kez kopyalanacağı.
OUTBinary numbers, integers, floating-point numbers, timers, DATE, TOD, CHAR, WCHARBinary numbers, integers, floating-point numbers, timers, DATE, CHAR, WCHAR, TOD, LTODHedef bellek alanının başlangıç adresi.

Kombine Örnek: Farklı Senaryolar

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

Kullanım AmacıÖrnek Senaryo
Başlangıç Değeri AtamaSensör verilerini saklayan bir ARRAY’i 0 ile başlatma.
Veri SıfırlamaBir loglama yapısını sıfırlamak için tüm elemanları 0 ile doldurma.
Tekrarlayan Değer AtamaBir yapıdaki hız değerlerini sabit bir değerle (örneğin, 100) doldurma.

Açıklama: FILL_BLK, toplu doldurma işlemleriyle veri yönetimini kolaylaştırır ve programın verimliliğini artırır.

PLC Programlama Örnekleri

FILL_BLK komutu, başlangıç değeri atama, veri sıfırlama ve tekrarlayan değer atama gibi senaryolarda kullanılır. İşte detaylı örnekler:

Örnek 1: ARRAY’i Sabit Değerle Doldurma

Network 1: ARRAY’i Sabit Değerle Doldurma
EN----[ FILL_BLK ]----ENO
      | IN: 0                   |
      | COUNT: 5                |
      | OUT: DB1.TargetArray[0] |
        

Açıklama: EN = 1 olduğunda, DB1.TargetArray’deki 5 eleman 0 değeriyle doldurulur. DB1.TargetArray: [?, ?, ?, ?, ?] → [0, 0, 0, 0, 0].

Örnek 2: STRUCT İçindeki Elemanları Doldurma

Network 2: STRUCT İçindeki Elemanları Doldurma
EN----[ FILL_BLK ]----ENO
      | IN: 100                     |
      | COUNT: 2                    |
      | OUT: DB2.MyStruct1.Member_2 |
        

Açıklama: EN = 1 olduğunda, DB2.MyStruct1’deki Member_2’den başlayarak 2 eleman (Member_2 ve Member_3) 100 değeriyle doldurulur. Örneğin, MyStruct1: [Member_1: 0, Member_2: 0, Member_3: 0, Member_4: 0] → [Member_1: 0, Member_2: 100, Member_3: 100, Member_4: 0].

Örnek 3: Hata Yönetimi (COUNT Aşımı)

Network 3: Hata Yönetimi (COUNT Aşımı)
EN----[ FILL_BLK ]----ENO
      | IN: 255            |
      | COUNT: 15          |
      | OUT: DB3.Data[0]   |
|----[ ENO = 0 ]----( Hata_Alarm )----|
        

Açıklama: EN = 1 olduğunda, DB3.Data’ya 15 eleman 255 değeriyle doldurulmaya çalışılır. Ancak DB3.Data sadece 10 elemanlık bir ARRAY ise ENO = 0 olur ve Hata_Alarm aktif olur.

Örnek 4: Dinamik COUNT Hesaplama

Network 4: Dinamik COUNT Hesaplama
EN----[ FILL_BLK ]----ENO
      | IN: 0                   |
      | COUNT: #DynamicCount    |
      | OUT: DB4.TargetArray[0] |
        

Açıklama: EN = 1 olduğunda, DB4.TargetArray’e 0 değeri #DynamicCount kadar kez yazılır. #DynamicCount, SIZE(DB4.TargetArray) ile hesaplanabilir.

Örnek 5: Farklı Veri Tipleriyle Doldurma (REAL)

Network 5: Farklı Veri Tipleriyle Doldurma (REAL)
EN----[ FILL_BLK ]----ENO
      | IN: 3.14             |
      | COUNT: 3             |
      | OUT: DB5.PiValues[0] |
        

Açıklama: EN = 1 olduğunda, DB5.PiValues (ARRAY[0..4] of REAL) içindeki ilk 3 eleman 3.14 değeriyle doldurulur. DB5.PiValues: [?, ?, ?, ?, ?] → [3.14, 3.14, 3.14, ?, ?].

Örnek 6: BOOL ARRAY Doldurma

Network 6: BOOL ARRAY Doldurma
EN----[ FILL_BLK ]----ENO
      | IN: TRUE              |
      | COUNT: 8              |
      | OUT: DB6.BoolArray[0] |
        

Açıklama: EN = 1 olduğunda, DB6.BoolArray (ARRAY[0..15] of BOOL) içindeki ilk 8 eleman TRUE değeriyle doldurulur. COUNT 8’in katı olarak ayarlanmıştır (1 byte = 8 bit).

Günlük Hayattan Örnekler

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

  • Defter Doldurma: Bir defterin sayfalarını (OUT) aynı notla (IN) doldurma.
  • Kutu Doldurma: Bir kutuyu (OUT) aynı tür eşyayla (IN) doldurma.
  • Tablo Doldurma: Bir tablonun hücrelerini (OUT) aynı değerle (IN) doldurma.
  • Duvar Boyama: Bir duvarın belirli bir bölümünü (OUT) aynı renkle (IN) boyama.

Avantajlar

  • Hızlı Doldurma: Büyük veri bloklarını tek bir değerle hızlıca doldurarak zaman kazandırır.
  • Esneklik: ARRAY ve STRUCT gibi yapısal veri tiplerini destekler.
  • Veri Yönetimi: Başlangıç değeri atama ve sıfırlama işlemlerini kolaylaştırır.
  • Hata Yönetimi: ENO çıkışı ile işlem başarısını kontrol ederek güvenilirlik sağlar.

Dikkat Edilmesi Gerekenler

  • Veri Tipi Uyumu: IN ve OUT aynı veri tipinde olmalıdır; aksi halde ENO = 0 olur.
  • COUNT Sınırı: COUNT, hedef alanın boyutunu aşarsa ENO = 0 olur ve istenmeyen sonuçlar oluşabilir.
  • BOOL ARRAY’leri: ARRAY of BOOL kullanırken COUNT’un byte sınırlarını aşmamasına dikkat edin (1 byte = 8 bit).
  • STRUCT Kullanımı: STRUCT içindeki elemanlar aynı veri tipinde olmalıdır.

İpuçları

  • Dinamik COUNT Hesaplama: COUNT değerini dinamik olarak hesaplayın: COUNT = SIZE(OUT).
  • STRUCT Kullanımı: STRUCT içindeki aynı türden elemanları tek seferde doldurabilirsiniz.
  • BOOL ARRAY’leri: ARRAY of BOOL kullanırken COUNT’u 8’in katları şeklinde ayarlayın (örneğin, 8, 16).
  • Hata Yönetimi: ENO çıkışını bir hata göstergesine bağlayarak (örneğin, Hata_Alarm) hataları izleyin.
  • Veri Tipleriyle Çalışma: Farklı veri tipleri (örneğin, REAL, CHAR) için IN ve OUT’un uyumlu olduğundan emin olun.

Sonuç

Siemens TIA Portal’daki FILL_BLK komutu, hızlı ve tekrarlayan veri doldurma işlemleri için ideal bir araçtır. Başlangıç değeri atama, veri sıfırlama ve toplu doldurma gibi senaryolarda sıkça kullanılır. Doğru parametre kullanımı ve hata yönetimiyle verimli bir şekilde kullanılabilir. Daha fazla bilgi için Siemens Online Destek sayfasını ziyaret edebilirsiniz.

Yorumlar