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 Transferi | CPU’nun diğer işlemlerini duraklatmadan veri aktarımı. |
Yüksek Güvenilirlik | Gerç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:
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 Elemanı | ARRAY Elemanı | Kaynak verinin başlangıç adresi (örneğin, DB1.SourceArray[0]). |
COUNT | USINT, UINT, UDINT | USINT, UINT, UDINT, ULINT | Taşınacak eleman sayısı. |
OUT | ARRAY 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 Transferi | Gerçek zamanlı bir sistemde sensör verilerini kopyalama. |
Yüksek Güvenilirlik | Kritik 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
Yorum Gönder