UMOVE_BLK: Move Block Uninterruptible (Kesintisiz Bloğu Aktar)

UMOVE_BLK: Move Block Uninterruptible (Kesintisiz Bloğu Aktar)

Siemens TIA (Totally Integrated Automation) Portal’da UMOVE_BLK (Kesintisiz Blok Taşıma) komutu, bir bellek alanından diğerine kesintiye uğramadan veri aktarımı yapmak için kullanılan bir fonksiyondur. Bu komut, özellikle zaman kritik uygulamalarda veri bütünlüğünü korurken büyük veri bloklarının güvenli taşınmasını sağlar. Bu rehberde, UMOVE_BLK komutunun mantığını, kullanım örneklerini, avantajlarını, dikkat edilmesi gereken noktaları ve pratik ipuçlarını detaylıca ele alacağız.

UMOVE_BLK Komutu Nedir?

UMOVE_BLK, bir bellek alanındaki verileri (IN) başka bir bellek alanına (OUT) kesintiye uğramadan kopyalamak için kullanılan bir komuttur. MOVE_BLK’ten farklı olarak, UMOVE_BLK CPU’nun diğer işlemlerini duraklatmadan veri transferini gerçekleştirir, bu da özellikle gerçek zamanlı sistemlerde veri kaybını önler.

Çalışma Mantığı: UMOVE_BLK, EN girişiyle tetiklenir. EN = 1 olduğunda, IN’den başlayarak COUNT kadar eleman OUT’a kesintisiz bir şekilde 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.

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

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

Kullanım AmacıAçıklama
Kesintisiz Veri TransferiCPU’nun diğer işlemlerini duraklatmadan veri aktarımı.
Yüksek GüvenilirlikGerçek zamanlı sistemlerde veri kaybını önleme.
Büyük Veri BloklarıEn fazla 16 KB boyutunda veri taşınabilir (CPU’ya göre değişir).

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 ElemanıARRAY ElemanıKaynak verinin başlangıç adresi (örneğin, DB1.SourceArray[0]).
COUNTUSINT, UINT, UDINTUSINT, UINT, UDINT, ULINTTaşınacak eleman sayısı.
OUTARRAY ElemanıARRAY ElemanıHedef verinin başlangıç adresi (örneğin, DB2.TargetArray[0]).

Kombine Örnek: Farklı Senaryolar

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

Kullanım AmacıÖrnek Senaryo
Kesintisiz Veri TransferiGerçek zamanlı bir sistemde sensör verilerini kopyalama.
Yüksek GüvenilirlikKritik bir uygulamada veri kaybını önlemek için veri aktarımı.
Büyük Veri Blokları16 KB’a kadar veri bloklarını kesintisiz bir şekilde kopyalama.

Açıklama: UMOVE_BLK, zaman kritik uygulamalarda veri bütünlüğünü garanti eder ve büyük veri transferlerini hızlıca gerçekleştirir.

PLC Programlama Örnekleri

UMOVE_BLK komutu, gerçek zamanlı veri aktarımı, büyük veri transferi ve yapısal veri işleme gibi senaryolarda kullanılır. İşte detaylı örnekler:

Örnek 1: ARRAY → ARRAY Taşıma

Network 1: ARRAY → ARRAY Taşıma
EN----[ UMOVE_BLK ]----ENO
      | IN: DB1.SourceArray[0] |
      | COUNT: 5               |
      | OUT: DB2.TargetArray[0]|
        

Açıklama: EN = 1 olduğunda, DB1.SourceArray’deki 5 eleman (örneğin, [100, 200, 300, 400, 500]) DB2.TargetArray’e kesintisiz bir şekilde kopyalanır. Sonuç: DB2.TargetArray = [100, 200, 300, 400, 500].

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

Network 2: Hata Yönetimi (COUNT Aşımı)
EN----[ UMOVE_BLK ]----ENO
      | IN: DB3.Data[0]    |
      | COUNT: 10          |
      | OUT: DB4.Target[0] |
|----[ ENO = 0 ]----( Hata_Alarm )----|
        

Açıklama: EN = 1 olduğunda, DB3.Data’dan 10 eleman DB4.Target’a kopyalanır. Ancak DB4.Target sadece 8 elemanlık bir ARRAY ise ENO = 0 olur ve Hata_Alarm aktif olur.

Örnek 3: STRUCT Taşıma

Network 3: STRUCT Taşıma
EN----[ UMOVE_BLK ]----ENO
      | IN: DB5.Motor1         |
      | COUNT: 1               |
      | OUT: DB6.Motor1_Backup |
        

Açıklama: EN = 1 olduğunda, DB5.Motor1 STRUCT’ı DB6.Motor1_Backup’a kesintisiz bir şekilde kopyalanır. COUNT = 1, çünkü tek bir STRUCT taşınıyor.

Örnek 4: Büyük Veri Transferi (16 KB)

Network 4: Büyük Veri Transferi (16 KB)
EN----[ UMOVE_BLK ]----ENO
      | IN: DB7.LargeData[0]   |
      | COUNT: 4000            |
      | OUT: DB8.LargeCopy[0]  |
        

Açıklama: EN = 1 olduğunda, DB7.LargeData’dan 4000 eleman (örneğin, ARRAY of INT, toplam 8000 byte) DB8.LargeCopy’ye kesintisiz bir şekilde kopyalanır. 16 KB sınırı (16384 byte) aşılmamalıdır.

Örnek 5: Dinamik COUNT Hesaplama

Network 5: Dinamik COUNT Hesaplama
EN----[ UMOVE_BLK ]----ENO
      | IN: DB9.SourceData[0]  |
      | COUNT: #DynamicCount   |
      | OUT: DB10.TargetData[0]|
        

Açıklama: EN = 1 olduğunda, DB9.SourceData’dan DB10.TargetData’ya #DynamicCount kadar eleman kopyalanır. #DynamicCount, MIN(SIZE(DB9.SourceData), SIZE(DB10.TargetData)) ile hesaplanabilir.

Günlük Hayattan Örnekler

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

  • Kamyon Taşıma: Bir depodaki eşyaları (IN) başka bir depoya (OUT) kesintisiz bir şekilde taşıyan bir kamyon.
  • Su Borusu: Bir tanktaki suyu (IN) başka bir tanka (OUT) kesintisiz bir şekilde aktaran bir boru.
  • Konveyör Bant: Ürünleri (IN) bir üretim hattından diğerine (OUT) durmaksızın taşıyan bir bant.
  • USB Transferi: Bir dosyayı (IN) USB’den bilgisayara (OUT) kesintisiz bir şekilde kopyalama.

Avantajlar

  • Kesintisiz Transfer: CPU’nun diğer işlemlerini duraklatmadan veri aktarımı yaparak gerçek zamanlı sistemlerde güvenilirlik sağlar.
  • Veri Bütünlüğü: Veri kaybı riskini en aza indirir, özellikle zaman kritik uygulamalarda idealdir.
  • Büyük Veri Desteği: 16 KB’a kadar veri bloklarını hızlıca taşıyabilir.
  • Hata Yönetimi: ENO çıkışı ile işlem başarısını kontrol ederek güvenilirlik sunar.

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, kaynak veya hedef ARRAY boyutunu aşarsa ENO = 0 olur ve veri kaybı riski oluşur.
  • 16 KB Sınırı: UMOVE_BLK ile maksimum 16 KB (16384 byte) veri taşınabilir; bu sınır aşılırsa hata oluşur.
  • CPU Performansı: Kesintisiz çalışma, CPU’nun interrupt tepki sürelerini uzatabilir; bu, diğer işlemlerin performansını etkileyebilir.

İpuçları

  • 16 KB Sınırı Kontrolü: Veri boyutunu hesaplayın (örneğin, ARRAY of INT için her eleman 2 byte; 4000 eleman = 8000 byte). 16 KB (16384 byte) sınırını aşmamak için büyük verileri parçalara bölün.
  • ARRAY İndeksleme: ARRAY’lerin alt sınırı 0 olmasa bile, taşıma işlemi her zaman 0’dan başlar; indeksleri buna göre ayarlayın.
  • COUNT Kontrolü: COUNT değerini dinamik olarak hesaplayın: COUNT = MIN(SIZE(IN), SIZE(OUT)).
  • Hata Yönetimi: ENO çıkışını bir hata göstergesine bağlayarak (örneğin, Hata_Alarm) hataları izleyin.
  • CPU Performansını Optimize Etme: Kritik olmayan durumlarda MOVE_BLK kullanmayı tercih edin; UMOVE_BLK’yi yalnızca zaman kritik uygulamalarda kullanın.

Sonuç

Siemens TIA Portal’daki UMOVE_BLK komutu, zaman kritik uygulamalarda veri bütünlüğünü garanti eden güçlü bir araçtır. Kesintisiz veri transferi ve yüksek güvenilirlik sunarak gerçek zamanlı sistemlerde veri kaybını önler. Ancak, CPU performansını etkileyebileceğinden dikkatli kullanılmalıdır. Daha fazla bilgi için Siemens Online Destek sayfasını ziyaret edebilirsiniz.

Yorumlar