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
iseCONTINUE
ç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çinEXIT
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
Yorum Gönder