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

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

Siemens TIA Portal’da kullanılan SCL (Structured Control Language) programlama dilinde FOR döngüsü, otomasyon sistemlerinde tekrarlayan görevleri otomatikleştirmek için temel bir kontrol yapısıdır. Bu makale, FOR döngüsünün nasıl çalıştığını, sözdizimini, örneklerini ve yaygın hatalardan kaçınma yollarını açıklayacaktır. Hem yeni başlayanlar hem de deneyimli programcılar için rehber bir içerik sunmayı hedefliyoruz.

Ana Noktalar

  • FOR döngüsü, Siemens SCL’de tekrarlayan görevleri otomatikleştirmek için temel bir kontrol yapısıdır.
  • Sözdizimi ve parametreler, döngü değişkeni, başlangıç ve bitiş değerleri ile artış içerir; veri türü sınırlarına dikkat edilmelidir.
  • İç içe döngüler ve akış kontrol komutları (CONTINUE, EXIT) karmaşık işlemler için kullanılabilir.
  • Yaygın hatalar, döngü değişkenini değiştirmek veya yanlış artış yönü kullanmaktır; en iyi uygulamalar performans ve doğruluğu artırır.
  • Örnekler, temel yinelemelerden veri filtrelemeye kadar geniş bir yelpazede açıklanmıştır.

Giriş

Siemens SCL programlama dilinde FOR döngüsü, endüstriyel otomasyon projelerinde tekrarlayan görevleri kolayca yönetmek için kullanılır. Bu yapı, belirli bir kod bloğunu belirli bir sayıda tekrar çalıştırmak için idealdir. Bu makale, resmi Siemens belgelerine dayanarak (Siemens Industry Online Support) FOR döngüsünün teknik detaylarını ve pratik uygulamalarını sunar.

Sözdizimi ve Örnekler

FOR döngüsünün temel yapısı şu şekildedir:

FOR #Sayac := 1 TO 5 DO
  "SonucDizisi"[#Sayac] := #Sayac * 2;
END_FOR;
    

Bu örnek, SonucDizisi’ni [2, 4, 6, 8, 10] ile doldurur ve basit bir yineleme gösterir.

Veri Türü ve Sınırlar

Veri türü sınırları kritik öneme sahiptir; örneğin, SINT tipi için maksimum pozitif değer 127’dir. Bu sınırları aşmak taşmaya neden olabilir, bu yüzden dikkatli olunmalıdır.

Detaylı Sözdizimi ve Parametreler

FOR döngüsünün tam yapısı şöyledir:

FOR  :=  TO  BY  DO
    ;
END_FOR;
    
  • Döngü_değişkeni: Döngü sayacı, blok arayüzünde "Temp" bölümünde geçici değişken olarak tanımlanmalıdır. Desteklenen veri türleri: S7-1200 için SINT, INT, DINT, USINT, UINT, UDINT; S7-1500 için ayrıca LINT ve ULINT.
  • Başlangıç_değeri: Döngü değişkenine başlangıçta atanan değer, veri türüyle uyumlu olmalıdır.
  • Bitiş_değeri: Döngünün sonlandığı nokta; değişken bu değeri aştığında döngü durur.
  • Artış: Her yinelemede değişkene eklenecek veya çıkarılacak miktar (varsayılan +1). Negatif olabilir, ancak işaretsiz türler için negatif artış kullanılamaz.

Örnek:

FOR #Sayac := 1 TO 5 DO
    "SonucDizisi"[#Sayac] := #Sayac * 2;
END_FOR;
    

Bu kod, SonucDizisi’ni [2, 4, 6, 8, 10] ile doldurur.

Döngü Yürütme Akışı

FOR döngüsünün yürütme akışı şu şekildedir:

  1. Başlatma: Döngü değişkenine başlangıç değeri atanır.
  2. Koşul Kontrolü: Artış pozitifse, Döngü_değişkeni ≤ Bitiş_değeri; negatifse, Döngü_değişkeni ≥ Bitiş_değeri.
  3. Gövde Yürütme: Komutlar çalıştırılır.
  4. Artırma/Azaltma: Değişken, artış kadar ayarlanır.
  5. Tekrar: Koşul yeniden değerlendirilir.

Ters yineleme örneği:

FOR #Indeks := 10 TO 1 BY -1 DO
    "Tampon"[#Indeks] := 0; // Tampon elemanlarını 10'dan 1'e kadar temizle
END_FOR;
    

Veri Türü Hususları ve Sınırları

Veri türü tutarlılığı önemlidir. İşaretsiz türler negatif artış desteklemez. Desteklenen veri türleri ve sınırları:

Veri TürüPMAX (Maksimum Pozitif)NMAX (Maksimum Negatif)
SINT127-128
INT32767-32768
DINT2147483647-2147483648
LINT9223372036854775807-9223372036854775808
USINT255
UINT65535
UDINT4294967295
ULINT18446744073709551615

Taşmayı önleme örneği:

// SINT için geçerli
FOR #i := 120 TO 125 DO
  // 6 kez çalışır
END_FOR;
// Geçersiz (SINT sınırı aşar)
FOR #i := 120 TO 130 DO // Taşma!
END_FOR;
    

İç İçe Döngüler ve Gelişmiş Kontrol

İç içe döngüler, çok boyutlu veri işleme için kullanılır:

FOR #Satir := 0 TO 9 DO
    FOR #Sutun := 0 TO 9 DO
        "Matris"[#Satir, #Sutun] := #Satir + #Sutun;
    END_FOR;
END_FOR;
    

Akış kontrolü için CONTINUE ve EXIT kullanılır:

FOR #i := 1 TO 10 BY 2 DO
    IF "SensorDegerleri"[#i] = 0 THEN
        CONTINUE; // Sensör 0 okursa atla
    END_IF;
    "Cikis"[#i] := "SensorDegerleri"[#i] * 10;
END_FOR;
    
FOR #i := 1 TO 100 DO
    IF "Basinc"[#i] > 100.0 THEN
        EXIT; // Basınç limiti aşarsa dur
    END_IF;
    "Basinc"[#i] := "Basinc"[#i] * 1.5;
END_FOR;
    

Yaygın Hatalar ve En İyi Uygulamalar

Yaygın hatalar:

  1. Döngü değişkenini değiştirmek:
    FOR #i := 1 TO 10 DO
        #i := #i + 1; // Hata!
    END_FOR;
                
  2. Yanlış artış yönü: FOR #i := 5 TO 1 DO (BY -1 eksik).

En iyi uygulamalar:

  • Döngü değişkenlerini Temp bölümünde tanımlayın.
  • Artışları açıkça belirtin (örneğin, BY 2).
  • Veri türü sınırlarını doğrulayın.

Gelişmiş Örnek: Veri Filtreleme

Bir veri filtreleme örneği:

FOR #Indeks := 0 TO 99 DO
    IF "HamVeri"[#Indeks] < 20 THEN
        CONTINUE; // 20'den küçük değerleri atla
    ELSIF "HamVeri"[#Indeks] > 80 THEN
        EXIT; // 80'i aşarsa dur
    ELSE
        "FiltrelenmisVeri"[#Indeks] := "HamVeri"[#Indeks] * 0.8;
    END_IF;
END_FOR;
    

Sonuç

TIA Portal’da FOR döngüsü, SCL’de tekrarlayan görevler için güçlü bir araçtır. Veri türü sınırlarına dikkat ederek, değişken değiştirme hatalarını önleyerek ve CONTINUE, EXIT gibi akış kontrol komutlarını kullanarak verimli kod yazılabilir. İç içe döngüler karmaşık işlemler için esneklik sağlar. Tüm bilgiler Siemens Industry Online Support’tan doğrulanmıştır. Görüşlerinizi yorumlarda paylaşabilirsiniz!

Kaynaklar

Yorumlar