Scl Programlama Dili Continue Komutu | Tia Portal

SCL Programlama Dilinde FOR Döngüsü | Tia Portal

CONTINUE: Döngü Koşulunu Yeniden Değerlendir (SCL / Siemens TIA Portal)

CONTINUE Komutu Nedir?

CONTINUE, bir döngü (FOR, WHILE, REPEAT) içinde kullanıldığında bulunduğu iterasyonun geri kalanını atlar ve doğrudan koşul kontrolüne geçer. Yani “şu anki turu boşver, bir sonrakine geç” demenin programlamadaki halidir.

Bu komut yalnızca içinde bulunduğu döngü üzerinde etkilidir. İç içe döngülerde, yalnızca en yakınındaki döngüyü etkiler.

Temel Kullanım
FOR i := 1 TO 15 BY 2 DO
    IF (i < 5) THEN
        CONTINUE;
    END_IF;

    "DB10".Test[i] := 1;
END_FOR;
Nasıl Çalışır?
  • Döngü 1'den 15'e kadar 2'şer artarak ilerler (i = 1, 3, 5, 7, …).
  • Eğer i < 5 ise CONTINUE çalışır, "DB10".Test[i] := 1; satırı atlanır.
  • i değeri artırılır ve sonraki döngü adımına geçilir.
Sonuç:
  • i = 1 ve 3 için atlanır (çünkü < 5).
  • i = 5, 7, 9, ... için "DB10".Test[i] := 1; satırı çalışır.
Ne Zaman CONTINUE Kullanılır?
Gerekli durumlar:
  • Filtreleme yaparken (örneğin hatalı verileri atla).
  • Koşullu işlem dışı bırakma durumlarında.
  • Kod okunabilirliğini artırmak için else bloğu kullanmak yerine.
Kullanılmaması gereken durumlar:
  • Döngüden tamamen çıkmak istiyorsanız EXIT kullanmalısınız.
  • Döngü sonunda zaten işlem yapılmayacaksa CONTINUE gereksizdir.
Uygulamalı Örnekler
1. Sıfır Değerleri Atlayan Döngü
FOR j := 1 TO 10 DO
    IF Sensor[j] = 0 THEN
        CONTINUE;
    END_IF;
    Total := Total + Sensor[j];
END_FOR;

Açıklama: Sensor dizisindeki sıfır değerleri işlem dışı bırakılır, sadece sıfır olmayan değerler Total’a eklenir.

2. REPEAT Döngüsünde CONTINUE
VAR
    i : INT := 0;
END_VAR

REPEAT
    i := i + 1;
    
    IF i MOD 2 = 0 THEN
        CONTINUE;
    END_IF;

    "M".BoolArray[i] := TRUE;
UNTIL i >= 10
END_REPEAT;

Açıklama: i çift sayıysa atlanır, yalnızca tek sayılar için "M".BoolArray[i]’ye TRUE atanır.

3. WHILE Döngüsü ile Kullanım
WHILE i <= 10 DO
    i := i + 1;
    
    IF Error_Flag[i] THEN
        CONTINUE;
    END_IF;

    Process_Data(i);
END_WHILE;

Açıklama: Hatalı bayraklı veriler (Error_Flag[i] TRUE ise) işleme alınmaz, sadece hatasız veriler için Process_Data fonksiyonu çalışır.

4. İç İçe Döngülerde CONTINUE
VAR
    outer : INT := 0;
    inner : INT;
END_VAR

WHILE outer < 5 DO
    outer := outer + 1;
    inner := 0;
    WHILE inner < 10 DO
        inner := inner + 1;
        IF inner MOD 2 = 0 THEN
            CONTINUE; // Sadece iç döngü etkilenir
        END_IF;
        "DB20".Values[outer][inner] := 1;
    END_WHILE;
END_WHILE;

Açıklama: İç döngüde inner çift sayı olduğunda CONTINUE çalışır ve sadece tek sayılar için "DB20".Values[outer][inner]’e 1 atanır. Dış döngü etkilenmez.

CONTINUE vs EXIT
Özellik CONTINUE EXIT
Etki alanı Bulunduğu döngünün bu adımı Döngünün tamamı
Kullanım amacı Bu adımı atla, devam et Döngüyü hemen terk et
Kod yapısı Döngü çalışmaya devam eder Döngü sona erer
Sık Yapılan Hatalar
  • Koşulun sürekli TRUE olması: CONTINUE koşulu her zaman sağlanıyorsa, döngüdeki asıl işlevler hiç çalışmaz.
  • EXIT ile karıştırmak: Tüm döngüden çıkmak için CONTINUE yeterli değildir; bunun için EXIT gerekir.
  • İç içe döngülerde yanlış etki beklemek: CONTINUE sadece en içteki döngüyü etkiler, dış döngüler devam eder.
  • Gereksiz kullanım: Döngü sonunda zaten işlem yapılmayacaksa CONTINUE eklemek kod karmaşasına neden olur.
Performans ve Hata Ayıklama İpuçları
  • Performans: CONTINUE sık kullanıldığında, özellikle çok sayıda iterasyon içeren döngülerde, PLC’nin tarama süresini artırabilir. Koşulları mümkünse döngü öncesi filtreleyin.
  • Hata Ayıklama: TIA Portal’da online izleme sırasında CONTINUE kullanılan satırların atlandığını görmek için “Watch Table” oluşturun ve ilgili değişkenleri izleyin. “Breakpoints” kullanarak döngü akışını adım adım takip edebilirsiniz.
  • VS Code ile SCL: TIA Portal dışında SCL kodu yazarken (örneğin Visual Studio Code ile), CONTINUE sözdizimi için linter’lar kullanın. Siemens SCL eklentisi, yanlış kullanımları yakalamanıza yardımcı olur.
Kod Okunabilirliği için En İyi Uygulamalar
  • Siemens, CONTINUE kullanımında kodun anlaşılır kalması için yorum satırları eklemeyi önerir. Örneğin: (* Hatalı veri atlanıyor *) CONTINUE;
  • Gereksiz CONTINUE kullanımından kaçının; mümkünse koşulları sadeleştirin.
  • İç içe döngülerde hangi döngünün etkilendiğini netleştirmek için değişken adlarını anlamlı seçin (örneğin, inner, outer).
Sonuç

CONTINUE, SCL yazılımında döngülerle çalışırken oldukça güçlü ve okunabilirliği artıran bir araçtır. Koşullu atlamalar sayesinde kodu daha temiz tutabilir, gereksiz IF-ELSE yapılarından kurtulabilirsiniz. Ancak doğru yerde kullanılması gerekir; aksi halde kod akışınız beklenmeyen davranışlar gösterebilir. TIA Portal’da hata ayıklama araçlarını kullanarak ve Siemens’in önerdiği en iyi uygulamalara bağlı kalarak, CONTINUE ile etkili ve performans dostu kodlar yazabilirsiniz.

Yorumlar