Siemens Simatic S7 SCL Programlama Dili

irdal

Üye
Katılım
15 Şub 2007
Mesajlar
11
Puanları
3
Yaş
34
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.
 

ibrahim454

Üye
Katılım
18 Eki 2014
Mesajlar
7
Puanları
3
Yaş
28
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:

elektronikmuh

Yönetici
Yönetici
Yönetici
Katılım
13 Ocak 2007
Mesajlar
1,862
Puanları
1,768
Yaş
42
 

tigruden

Üye
Katılım
3 Ağu 2010
Mesajlar
79
Puanları
8
Yaş
32
Konum
Kocaeli
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.
 

ibrahim454

Üye
Katılım
18 Eki 2014
Mesajlar
7
Puanları
3
Yaş
28
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.
 
Katılım
17 Eyl 2009
Mesajlar
580
Puanları
3
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

Son düzenleme:

tigruden

Üye
Katılım
3 Ağu 2010
Mesajlar
79
Puanları
8
Yaş
32
Konum
Kocaeli
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:
Katılım
17 Eyl 2009
Mesajlar
580
Puanları
3
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.
 

rotsis

Üye
Katılım
7 Ağu 2011
Mesajlar
731
Puanları
8
Yaş
34
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
 

Ekli dosyalar

Sponsor Bağlantı

Forum istatistikleri

Konular
105,051
Mesajlar
739,737
Kullanıcılar
390,537
Son üye
Jais11

Yeni konular

Üst