EXIT: Döngüyü Anında Sonlandırma
Tanım
EXIT komutu, bir FOR, WHILE veya REPEAT döngüsünü, belirtilen koşul gerçekleştiğinde veya programın akışına göre herhangi bir noktada hemen sonlandırmak için kullanılır. Bu komut çalıştırıldığında, döngüden çıkılır ve program akışı döngü sonrasındaki ilk satırdan devam eder.
Not: EXIT komutu, yalnızca içinde bulunduğu döngüyü etkiler. İç içe döngülerde, sadece en içteki döngüden çıkış sağlar.
Kullanım Örneği
FOR i := 15 TO 1 BY -2 DO
IF (i < 5) THEN
EXIT;
END_IF;
"DB10".Test[i] := 1;
END_FOR;
Açıklama
- Döngü,
i
değerini 15’ten başlayarak 2’şer azaltır: 15, 13, 11, 9, 7, 5, 3, 1. i < 5
koşulu sağlandığında, yanii = 3
olduğunda,EXIT
komutu çalışır ve döngü sonlandırılır."DB10".Test[i] := 1;
satırı,i
değeri 5’ten büyük veya eşit olduğu sürece çalıştırılır (15, 13, 11, 9, 7, 5).
Ne Zaman EXIT Kullanılmalı?
Uygun Durumlar
- Belirli bir koşul gerçekleştiğinde döngüden çıkmak istiyorsanız.
- Hata kontrolü yaparken, hatalı bir durum tespit edildiğinde işlemi sonlandırmak için.
- Arama işlemleri sırasında, aranan değer bulunduğunda döngüyü sonlandırmak için.
Kaçınılması Gereken Durumlar
- Döngü yapısını karmaşıklaştıracak şekilde aşırı kullanımdan kaçının.
- Okunabilirliği azaltacak şekilde, birden fazla
EXIT
komutunun kullanımı önerilmez. - Alternatif yapıların (örneğin, koşullu ifadeler) daha uygun olduğu durumlarda
EXIT
kullanmaktan kaçının.
Dikkat Edilmesi Gereken Noktalar
EXIT
komutu, sadece içinde bulunduğu döngüyü etkiler. İç içe döngülerde, sadece en içteki döngüden çıkış sağlar.- Koşulsuz
EXIT
kullanımı, döngünün her zaman sadece bir kez çalışmasına neden olabilir. Bu nedenle, genellikle bir koşul ifadesiyle birlikte kullanılması önerilir. - Kodun okunabilirliği açısından,
EXIT
komutunun kullanıldığı durumlar açıkça belirtilmeli ve gerekirse yorum satırları eklenmelidir.
EXIT ve CONTINUE Karşılaştırması
Özellik | EXIT | CONTINUE |
---|---|---|
Etki Alanı | İçinde bulunduğu döngü | İçinde bulunduğu döngü |
İşlevi | Döngüyü tamamen sonlandırır | Mevcut döngü adımını atlar |
Kullanım Amacı | Döngüden çıkmak | Belirli adımları atlamak |
Koşul Gerekliliği | Genellikle koşulla kullanılır | Genellikle koşulla kullanılır |
Uygulamalı Örnekler
1. Hatalı Veri Tespiti
FOR i := 1 TO 100 DO
IF Sensor[i] < 0 THEN
EXIT; // Negatif değer tespit edildi, döngü sonlandırılır
END_IF;
Toplam := Toplam + Sensor[i];
END_FOR;
Açıklama: Sensor[i]
değeri negatif olduğunda, EXIT
komutu çalışır ve döngü sonlandırılır. Bu sayede, hatalı veri tespit edildiğinde işlemler durdurulur ve olası hataların önüne geçilir.
2. REPEAT Döngüsünde EXIT
VAR
i : INT := 0;
END_VAR
REPEAT
i := i + 1;
IF "Tag_Error" THEN
EXIT; // Hata tespit edildi, döngü sonlandırılır
END_IF;
"DB20".Values[i] := i * 2;
UNTIL i >= 50
END_REPEAT;
Açıklama: Tag_Error
TRUE olduğunda, EXIT
komutu çalışır ve döngü hemen sonlandırılır. Aksi halde, i
50’ye ulaşana kadar değerler DB20.Values
’a yazılır.
3. WHILE Döngüsünde EXIT
VAR
i : INT := 0;
found : BOOL := FALSE;
END_VAR
WHILE i < 20 AND NOT found DO
i := i + 1;
IF Sensors[i] = 100 THEN
found := TRUE;
EXIT; // Değer bulundu, döngü sonlandırılır
END_IF;
END_WHILE;
Açıklama: Sensors[i]
dizisinde 100 değeri bulunduğunda, EXIT
komutu çalışır ve döngü sonlandırılır. Bu, arama işlemlerinde sık kullanılan bir yaklaşımdır.
4. İç İçe Döngülerde EXIT
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 "DB30".Error[outer][inner] THEN
EXIT; // Sadece iç döngü sonlandırılır
END_IF;
"DB30".Data[outer][inner] := 1;
END_WHILE;
END_WHILE;
Açıklama: İç döngüde DB30.Error[outer][inner]
TRUE olduğunda, EXIT
çalışır ve sadece iç döngü sonlandırılır. Dış döngü devam eder ve bir sonraki outer
değeri için iç döngü yeniden başlar.
Performans ve Hata Ayıklama İpuçları
- Performans:
EXIT
sık veya gereksiz kullanıldığında, döngülerin erken sonlanması PLC’nin tarama süresini öngörülemez hale getirebilir. Koşulları mümkünse döngü öncesi kontrol edin. - Hata Ayıklama: TIA Portal’da
EXIT
kullanılan döngülerin çıkış noktasını izlemek için “Watch Table” oluşturun ve ilgili değişkenleri takip edin. “Breakpoints” ile döngü akışını adım adım kontrol edebilirsiniz. - VS Code ile SCL: TIA Portal dışında SCL kodu yazarken,
EXIT
sözdizimi için Siemens SCL eklentisiyle linter’lar kullanın. Bu, yanlış koşulları yakalamanıza yardımcı olur.
Kod Okunabilirliği için En İyi Uygulamalar
- Siemens,
EXIT
kullanımında kodun anlaşılır kalması için yorum satırları eklemeyi önerir. Örneğin:(* Hatalı veri tespit edildi, döngüden çık *) EXIT;
- Birden fazla
EXIT
noktası kullanmaktan kaçının; tek bir çıkış koşulu tanımlamak kodu daha sade tutar. - İç içe döngülerde, hangi döngünün sonlandığını netleştirmek için anlamlı değişken adları kullanın (örneğin,
inner
,outer
).
Sonuç
EXIT komutu, SCL dilinde döngülerle çalışırken belirli koşullar altında döngüyü sonlandırmak için güçlü bir araçtır. Ancak, kodun okunabilirliği ve bakım kolaylığı açısından dikkatli kullanılmalıdır. Gereksiz veya aşırı kullanımı, kodun karmaşıklaşmasına ve anlaşılmasının zorlaşmasına neden olabilir. TIA Portal’da hata ayıklama araçlarını kullanarak ve Siemens’in önerdiği en iyi uygulamalara bağlı kalarak, EXIT
ile etkili ve performans dostu kodlar yazabilirsiniz.
Yorumlar
Yorum Gönder