Siemens Simatic S7 SCL Programlama Dili

herkese hayırlı işler,
boolen bir giriş aktif olduğunda Arr1:"array [1..3] of bool" tipindeki değişkenin 1. ve 3. dizilerini dğeiştirmek istiyorum.

giriş yokken:
Arr1[1]:=10;
Arr2[2]:20;
Arr3[3]:30;

giriş aktif olduğunda :
Arr1[1]:=30;
Arr2[2]:20;
Arr3[3]:10;

boolen değişken tekrar sıfıra düştüğünde eski haline almak istiyorum.for döngüsüyle nasıl yapabilirim.
yardımcı olacak arkadaşlara şimdiden teşekkürler
Uzun zaman olmuş bilmem işine yarar mı, For döngüsüne gerek yok if then koşullu ifadesi ile rahatlıkla yapılır.
 
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Merhaba Değerli PLC yazılımcısı arkadaşlar.
Ben Ladder ve FBD kullanarak plc programlıyordum şimdiye kadar. SCL ile merak sonucu yeni yeni tanıştım ve üniversitede öğrendiğim C diline çok benzettiğim için ilgimi çekti öğrenmek istedim. Kafama takılan bir kaç sorum var cevabını öğrenirsem çok mutlu olurum. Ben Tia portalla program yazarken bir çok FB yi OB de çağırarak; programın yukarıdan aşağıya sırayla tarama yoluyla OB yi düngüsel olarak çalıştırdığını düşünüyorum. Yanılıyorda olabilirim. Şimdi:

1- Elimde siemens S7-300 plc var ve 1000 instruction / 0.6ms cycle süresi. for döngüsü kullanarak SCL ile FB yazıyoruz varsayalım, i=0 dan 1000 e kadar tarasın bu döngü. Şimdi bu durumda bu for döngüsü tamamlanana kadar PLC başka hiçbir işlem yapmayacak mı yani 0.6ms cycle süresi sadece bu döngü için mi harcanacak?

2- 1 er dakika ara ile gelen verileri bir döngü ile kaydedip 1 saat süre zarfında en büyüğünü ya da en küçüğünü seçmek istiyorum. Ama aynı zamanda bir PLC ile farkli bir sürü giriş çıkış kontrolü yapıyorum. Bu işlem ben diğer işlerimi yaptırırken nasıl çalışmasını sürdürecek.
 
Son düzenleme:
Bahsettiğin 0,6ms tarama süresi programa eklenen her kod ile bir miktar daha artan bir süredir. i=0 dan i=1000 e kadar yapacak olduğun for döngüsü ile programı for döngüsü bitene kadar bekletmiş olacaksın. örn for döngün 0,1 ms de bitiyorsa standart tarama süren 0,6 ms ise artık plc 0,7 ms de tarama yapacak. basitçe bu şekilde çalışıyor.

scl ile yazdığın kodun çalışması ile ob nin çalışması birbiri ile aynı. yukardan aşağıya doğru kodları tarayarak iner son koddan sonra tekrar taramaya başlar ve bu sırada geçen süreye tarama süresi diyoruz. bahsettiğin gibi bir kayıt işlemi yapacaksan döngü değil bir timer kullanara 1 dk aralıkla bir kodu çalıştırıp sonucunu bir db içerisine yazabilirsin. daha sonra da bu db içerisindeki verilerde tarama yaparak istediğin bilgiilere ulaşabilirsin.
 
Teşekkür ederim cevap için anladım Böyle bir işlem için for döngüsü kullanacak olursam plc i 1 saat kitlemiş olurum. Öyleyse SCL de ki bu döngü yapısını süreli durumlarda kullanamayız.
 
merhaba arkadalar . ben scl dilini öğrenmeye çalışıyorum. ben genelde ladder dilinde yazarım. bu ladder dillerini scl de nasıl yazarım . yardımcı olursanız sevnirim. lütfen örnekleri scl ye çevirip yazarak gönderin. teşekkürler


ben şu anda yaptığımı yazayım : timer dan önceki koşullar ile bir röle çektiriyorum. bu rölenin kontağını timer girişine bağlıyorum.bu yöntem belki uzun veya böyle yapılmalı gerekir .. bilmiyorum
 

Ekli dosyalar

  • Screenshot_1.png
    Screenshot_1.png
    13.2 KB · Görüntüleme: 88
  • Screenshot_2.png
    Screenshot_2.png
    10.9 KB · Görüntüleme: 72
Son düzenleme:
1 için:

Kod:
IF "Data_Otomatik" AND "Step" = 0 THEN
    IF "Start_1" OR "Start_2" OR "Start_3" OR "Start_4" THEN
        IF "Konveyor_No" <> 1 AND "Düz_Foto" OR "Çapraz_Foto" THEN
            "TON_IN" := TRUE;
            ;
        ELSE
            "TON_IN" := FALSE;
        END_IF;

        IF "Konveyor_No" = 1 THEN
            "TON_IN" := TRUE;
            ;
        ELSE
            "TON_IN" := FALSE;
        END_IF;

        IF "TON_IN" THEN
            "Timer_5".TON(IN:="TON_IN",
                          PT:=T#100MS,
                          Q=>#Timer5_Q,
                          ET=>#ET5);
            ;
        END_IF;
        IF "Timer_5".Q THEN
            #Step := 1;
            ;
        END_IF;
        ;
    END_IF;
    ;

END_IF;
 
Moderatör tarafında düzenlendi:
1 için:

IF "Data_Otomatik" AND "Step" = 0 THEN
IF "Start_1" OR "Start_2" OR "Start_3" OR "Start_4" THEN
IF "Konveyor_No" <> 1 AND "Düz_Foto" OR "Çapraz_Foto" THEN
"TON_IN" := TRUE;
;
ELSE
"TON_IN" := FALSE;
END_IF;
IF "Konveyor_No" = 1 THEN
"TON_IN" := TRUE;
;
ELSE
"TON_IN" := FALSE;
END_IF;
IF "TON_IN" THEN
"Timer_5".TON(IN:="TON_IN",
PT:=T#100MS,
Q=>#Timer5_Q,
ET=>#ET5);
;
END_IF;
IF "Timer_5".Q THEN
#Step := 1;
;
END_IF;
;
END_IF;
;
END_IF;
çok teşekkür ederim.
 
merhaba arkadalar . ben scl dilini öğrenmeye çalışıyorum. ben genelde ladder dilinde yazarım. bu ladder dillerini scl de nasıl yazarım . yardımcı olursanız sevnirim. lütfen örnekleri scl ye çevirip yazarak gönderin. teşekkürler

ikinci resmi de bu mantıkla yaparsın ustad

1540464172266.png
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,864
Kullanıcılar
449,598
Son üye
kadir12366

Yeni konular

Geri
Üst