Siemens TIA (Totally Integrated Automation) Portal’da MOVE_BLK (Blok Taşıma) komutu, bir bellek alanındaki verileri (kaynak) başka bir bellek alanına (hedef) toplu olarak kopyalamak için kullanılan bir fonksiyondur. Özellikle ARRAY, STRUCT gibi yapısal verilerin taşınmasında etkilidir. Bu rehberde, MOVE_BLK komutunun mantığını, kullanım örneklerini, avantajlarını, dikkat edilmesi gereken noktaları ve pratik ipuçlarını detaylıca ele alacağız.
MOVE_BLK Komutu Nedir?
MOVE_BLK, bir bellek alanındaki verileri (IN) başka bir bellek alanına (OUT) toplu olarak kopyalamak için kullanılan bir komuttur. Bu komut, özellikle yapısal veri tipleri (ARRAY, STRUCT) ile çalışırken veri transferini kolaylaştırır ve programın performansını artırır.
Çalışma Mantığı: MOVE_BLK, EN girişiyle tetiklenir. EN = 1 olduğunda, IN’den başlayarak COUNT kadar eleman OUT’a kopyalanır. İşlem başarılıysa ENO = 1 olur; aksi halde (örneğin, COUNT aşımı veya bellek çakışması durumunda) ENO = 0 döner.
MOVE_BLK Komutunun Mantığı ve Kullanım Alanları
MOVE_BLK komutu, aşağıdaki senaryolarda kullanılır:
Kullanım Amacı | Açıklama |
---|---|
Veri Bloklarını Taşıma | Sensör verilerini toplu şekilde işlemek. |
Yapısal Veri Aktarımı | ARRAY veya STRUCT’ları bir DB’den diğerine kopyalamak. |
Optimize Performans | Tek bir komutla çoklu veri transferi yaparak programı basitleştirme. |
Temel Parametreler:
Parametre | Veri Tipi | Açıklama |
---|---|---|
EN | BOOL | Komutu aktifleştirmek için "1" olmalı. |
ENO | BOOL | İşlem başarılıysa "1", değilse "0" döner. |
IN | ARRAY, STRUCT, vs. | Kaynak verinin başlangıç adresi (örneğin, DB1.SourceArray[0]). |
COUNT | USINT, UINT, UDINT | Taşınacak eleman sayısı (örneğin, 10). |
OUT | ARRAY, STRUCT, vs. | Hedef verinin başlangıç adresi (örneğin, DB2.TargetArray[0]). |
Not: S7-1500’de COUNT için ULINT desteklenirken, S7-1200’de bu destek yoktur; bu nedenle S7-1200’de COUNT için UDINT sınırı (4,294,967,295) aşılmamalıdır.
Kombine Örnek: Farklı Senaryolar
Sistem: MOVE_BLK komutunun farklı kullanım alanları:
Kullanım Amacı | Örnek Senaryo |
---|---|
Veri Bloklarını Taşıma | Sensör verilerini toplu şekilde bir DB’ye kopyalama. |
Yapısal Veri Aktarımı | Reçete verilerini (STRUCT) bir DB’den diğerine kopyalama. |
Optimize Performans | Büyük veri bloklarını hızlıca aktararak işlem süresini kısaltma. |
Açıklama: MOVE_BLK, toplu veri transferi ile programın karmaşıklığını azaltır ve performansı artırır.
PLC Programlama Örnekleri
MOVE_BLK komutu, sensör verisi işleme, reçete yönetimi ve veri loglama gibi senaryolarda kullanılır. İşte detaylı örnekler:
Örnek 1: ARRAY → ARRAY Taşıma
Network 1: ARRAY → ARRAY Taşıma EN----[ MOVE_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, [10, 20, 30, 40, 50]) DB2.TargetArray’e kopyalanır. Sonuç: DB2.TargetArray = [10, 20, 30, 40, 50].
Örnek 2: STRUCT Taşıma
Network 2: STRUCT Taşıma EN----[ MOVE_BLK ]----ENO | IN: DB3.Motor1 | | COUNT: 1 | | OUT: DB4.Motor1_Backup |
Açıklama: EN = 1 olduğunda, DB3.Motor1 STRUCT’ı DB4.Motor1_Backup’a kopyalanır. COUNT = 1, çünkü tek bir STRUCT taşınıyor.
Örnek 3: Hata Yönetimi (COUNT Aşımı)
Network 3: Hata Yönetimi (COUNT Aşımı) EN----[ MOVE_BLK ]----ENO | IN: DB5.Data[0] | | COUNT: 3 | | OUT: DB6.Target[0] | |----[ ENO = 0 ]----( Hata_Alarm )----|
Açıklama: EN = 1 olduğunda, DB5.Data’dan 3 eleman DB6.Target’a kopyalanır. Ancak DB6.Target sadece 2 elemanlık bir ARRAY ise ENO = 0 olur ve Hata_Alarm aktif olur.
Örnek 4: Dinamik COUNT Hesaplama
Network 4: Dinamik COUNT Hesaplama EN----[ MOVE_BLK ]----ENO | IN: DB7.SourceData[0] | | COUNT: #DynamicCount | | OUT: DB8.TargetData[0] |
Açıklama: EN = 1 olduğunda, DB7.SourceData’dan DB8.TargetData’ya #DynamicCount kadar eleman kopyalanır. #DynamicCount, MIN(SIZE(DB7.SourceData), SIZE(DB8.TargetData)) ile hesaplanabilir.
Örnek 5: Büyük Veri Transferi (S7-1500)
Network 5: Büyük Veri Transferi (S7-1500) EN----[ MOVE_BLK ]----ENO | IN: DB9.LargeData[0] | | COUNT: 1000 | | OUT: DB10.LargeCopy[0] |
Açıklama: EN = 1 olduğunda, DB9.LargeData’dan 1000 eleman DB10.LargeCopy’ye kopyalanır. S7-1500’de ULINT desteği sayesinde büyük COUNT değerleri kullanılabilir.
Günlük Hayattan Örnekler
MOVE_BLK komutunun mantığını anlamak için günlük hayattan benzetmeler:
- Kutu Taşıma: Bir kutudaki eşyaları (IN) başka bir kutuya (OUT) toplu şekilde taşıma.
- Fotokopi Yığını: Bir yığın belgeyi (IN) başka bir yığına (OUT) kopyalama.
- Kitap Rafı: Bir raftaki kitapları (IN) başka bir rafa (OUT) toplu şekilde yerleştirme.
- Bagaj Transferi: Bir araçtaki bagajları (IN) başka bir araca (OUT) toplu şekilde aktarma.
Avantajlar
- Toplu Transfer: Çoklu elemanları tek komutla taşıyarak program karmaşıklığını azaltır.
- Performans: Büyük veri bloklarını hızlıca aktararak işlem süresini kısaltır.
- Esneklik: ARRAY, STRUCT gibi yapısal veri tiplerini destekler.
- 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, kaynak veya hedef ARRAY boyutunu aşarsa ENO = 0 olur ve veri kaybı riski oluşur.
- Bellek Çakışması: IN ve OUT aynı bellek alanını paylaşırsa veri bozulabilir.
- S7-1200 ve S7-1500 Farkları: S7-1500’de ULINT desteği sayesinde büyük COUNT değerleri kullanılabilir, ancak S7-1200’de UDINT sınırı (4,294,967,295) aşılmamalıdır.
İpuçları
- ARRAY Boyut Kontrolü: COUNT değerini dinamik olarak hesaplayın: COUNT = MIN(SIZE(IN), SIZE(OUT)).
- STRUCT Kullanımı: STRUCT taşırken COUNT = 1 olmalıdır.
- BOOL ARRAY’leri: ARRAY of BOOL kullanırken byte sınırlarına dikkat edin (8 BOOL = 1 byte).
- Hata Yönetimi: ENO çıkışını bir hata göstergesine bağlayarak (örneğin, Hata_Alarm) hataları izleyin.
- Bellek Çakışmasını Önleme: IN ve OUT’un farklı bellek alanlarında olduğundan emin olun; gerekirse ara bir DB kullanın.
Sonuç
Siemens TIA Portal’daki MOVE_BLK komutu, toplu veri transferi için yüksek verimlilik sağlar. Sensör verilerini işlemek, reçete değerlerini aktarmak veya büyük veri bloklarını kopyalamak gibi senaryolarda sıkça kullanılır. Doğru parametre kullanımı ve hata yönetimiyle güvenilir bir şekilde kullanılabilir. Daha fazla bilgi için Siemens Online Destek sayfasını ziyaret edebilirsiniz.
Yorumlar
Yorum Gönder