Scl Programlama Dili Exit Komutu | Tia Portal

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

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, yani i = 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