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 < 5iseCONTINUEçalışır,"DB10".Test[i] := 1;satırı atlanır. ideğeri artırılır ve sonraki döngü adımına geçilir.
Sonuç:
i = 1 ve 3iç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
EXITkullanmalısınız. - Döngü sonunda zaten işlem yapılmayacaksa
CONTINUEgereksizdir.
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ı:
CONTINUEkoş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
CONTINUEyeterli değildir; bunun içinEXITgerekir. - İç içe döngülerde yanlış etki beklemek:
CONTINUEsadece en içteki döngüyü etkiler, dış döngüler devam eder. - Gereksiz kullanım: Döngü sonunda zaten işlem yapılmayacaksa
CONTINUEeklemek kod karmaşasına neden olur.
Performans ve Hata Ayıklama İpuçları
- Performans:
CONTINUEsı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
CONTINUEkullanı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),
CONTINUEsö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,
CONTINUEkullanımında kodun anlaşılır kalması için yorum satırları eklemeyi önerir. Örneğin:(* Hatalı veri atlanıyor *) CONTINUE; - Gereksiz
CONTINUEkullanı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
Yorum Gönder