Siemens Simatic S7 SCL Programlama Dili

arkadaşlar bir türlü olmuyor heralde ben bu zamanlayıcıları tam oturtamadım ...
aşağıda yapmaya çalıştığım 4 tane adım arasında 5şer sn sıra ile her birini set etmek bu yazılımda ki sıkıntı ne acaba ben bir türlü bulamadım ???

bir sorum da ha olacak program sıra ile ilk önce satırdakini sonra bir alt satırdakini okuyarak yapıyor değil mi???

Kod:
IF overcurrent AND stop THEN 
    
    IF start THEN
                    
            CASE con OF
                0:  step1:=1; step2:=0; step3:=0; step4:=0;         GOTO tmr; 
                1:  step1:=0; step2:=1; step3:=0; step4:=0;         GOTO tmr;
                2:  step1:=0; step2:=0; step3:=1; step4:=0;         GOTO tmr;
                3:  step1:=0; step2:=0; step3:=0; step4:=1;        
             END_CASE;             
                  
            //pozitif kenar tetiklemenin yapılması
tmr:        IF t_q AND NOT pe THEN pe:=true; 
                con:=con+1;  
            END_IF;
            
            // timer
            t_out:=S_ODT(t_no:=t1,  s:=true,    tv:=t#5s,   r:=pe,   bi:=t_bi,   q:=t_q);  
            
            IF NOT t_q AND pe THEN pe:=false;  
            END_IF;
    END_IF;
END_IF;
 
Kod:
FUNCTION_BLOCK FB100  (*coded by elektronikmuh *)
VAR
    START,STOP         :BOOL;
    EDGE, TIMESTART    :BOOL;
  STEP                 :INT ;
  TIMEEND              :TON ;
END_VAR    

IF START AND NOT EDGE        THEN
      STEP:=1;
      TIMESTART:=TRUE;
   ELSIF STOP                THEN 
      STEP:=0;
      TIMESTART:=FALSE;
END_IF;
   EDGE:=START;
  
    CASE STEP OF
         1:
            IF TIMESTART AND TIMEEND.Q THEN STEP:=2; END_IF;
         2:
            IF TIMESTART AND TIMEEND.Q THEN STEP:=3; END_IF;
         3:       
            IF TIMESTART AND TIMEEND.Q THEN STEP:=4; END_IF;
         4:   
            IF TIMESTART AND TIMEEND.Q THEN STEP:=1; END_IF;           
    END_CASE;
    TIMEEND(IN:=(TIMESTART AND NOT TIMEEND.Q)  , PT:=t#1s  );

END_FUNCTION_BLOCK
 
Son düzenleme:
sayın elektronikmüh arkadaşım yardımların için geççekten ve canı gönülden teşekkür ederim

ben senin verdiğinin aynısı sayılan bişi yaptım ama tek farkla sfb4 kullanmadım işte burda bir soru sormak isterim ?

benim ki gibi yazılım iççinde normal zamanlayıcı mı kullanmak yoksa sizin gibi sfb kullanmak daha faydalı ?? acaba daha az mı yer kaplar yoksa dahada karmaşıklaştırmaz mı ???

tekradan yardımların için teşekkür ederim
:confused
Kod:
FUNCTION talkt_5_sec : VOID

VAR_INPUT 
  start,stop:BOOL;
  overcurrent:BOOL;  
END_VAR

VAR_OUTPUT 
    step1,step2,step3,step4:BOOL;
END_VAR

VAR_TEMP
    t_out:S5TIME;
    t_bi:WORD;
    t_q:BOOL; 
    pe:BOOL;
    con:INT;
    tmr_set:BOOL;   
END_VAR

BEGIN
    IF start AND NOT pe THEN
        con:=1;
        tmr_set:=1;
    ELSIF NOT (stop AND overcurrent) THEN  
        con:=0;
        tmr_set:=0;
    END_IF;
                   
    pe:=start;   
     
    CASE con OF
        1:  IF tmr_set AND t_q THEN con:=2; step1:=1; step2:=0; step3:=0; step4:=0; END_IF;         
        2:  IF tmr_set AND t_q THEN con:=3; step1:=0; step2:=1; step3:=0; step4:=0; END_IF;       
        3:  IF tmr_set AND t_q THEN con:=4; step1:=0; step2:=0; step3:=1; step4:=0; END_IF;        
        4:  IF tmr_set AND t_q THEN con:=1; step1:=0; step2:=0; step3:=0; step4:=1; END_IF;        
    END_CASE;             
    
    t_out:=S_ODT(t_no:=t1,  s:=tmr_set AND NOT t_q,    tv:=t#2s,   r:=false,   bi:=t_bi,   q:=t_q);  
    
END_FUNCTION
 
Arkadaşlar sayın elektronikmuh arkadaşın tek butonla start stop örneğindeki fonksiyonu OB de çağırmaya çalıştım ama olmadı. Tüm blokları ve değişkenleri ana programdaki symbols kısmında tanıttım. Sorun nedir sizce?

Kodlarım şöyle:

Kod:
ORGANIZATION_BLOCK OB1
TITLE = 'BASLA'
BEGIN
 
FB1.DB20(CLK := I0.0 ,rst := I0.1, Q  := Q0.0);
         


END_ORGANIZATION_BLOCK


elektronikmuh arkadaşın örneğindeki kodlar:
Kod:
FUNCTION_BLOCK TOGGLE
TITLE = 'Tek butonla Start-Stop'

VAR_INPUT           //Değişken tanımlama kısmı
 CLK : BOOL;         // Giriş değişkenimiz, Start-Stop butonu olabilir
 rst : BOOL := FALSE;   // Reset girişimiz
END_VAR
VAR_OUTPUT
 Q : BOOL;           // Çıkış değişkenimiz
END_VAR
VAR
 edge : BOOL;         //Buda ara işlemelerde kullanacagımız yardımcı değişken
END_VAR          //Değişken tanımlama sonu

BEGIN             //Prgmımız burdan başlıyor

 IF rst THEN                              //Reset var mı kontrolü?
  q := 0;                                  //Varsa Çıkışı sıfırla
 ELSIF clk AND NOT edge THEN    // Girişin çıkan kenarını kontrol ediyoz
  Q := NOT Q;                 // Kenar çıkarsa; çıkışın son durumu ne ise NOT layıp tersini çıkışa atıyoz.
 END_IF;                                 //IF Şart Sonu
 edge := clk;                           // Kenar algılama değişkenini kilitleme

END_FUNCTION_BLOCK             //Bu kadar... ;)
 
Sayın frıtoz fb1'nin confıguratıon'nu tam yaptığınıza emin misin çalışmaması için bir sebep göremiyorum ....
 
Hocam hatayı Ob1 için derleme yaparken alıyorum. Fb1'de sorun yok.
 
herhalde db20'i oluşturmayı unuttunuz..... biliyorsunuzdur ki fb(fonsiyon blok)'lar db(data blok)'lar ile çalışır.............

bu programı aynen bir fc(fonksiyon) içinde yazıp ob1 de çağırdığınız zaman sorunsuz çalışacaktır ki şu an bile bir sorun yok sadece db20 tanımlamamışsınız......

bir süredir internete giremiyordum geç cevap verdim kusura bakmayın .kolay gelsin...........
 
Önemli değil ilginiz bile yeterli

Soruna gelince hala çözemebilmiş değilim.

sizden en son ricam bu projeyi kendiniz baştan oluşturup bana uygunsa atabilmeniz.
 
sayın fritoz benim fc içinde yapmış olduğum kontrol sistemini koyuyorum .SCL uzantılıdır...

extarnal source edip kullanabilirsiniz bence böyle daha sağlıklı olacaktır....

fb lerde sık yapılan hata configurasyon hatasıdır. tavsiyem ne yapacaksanız (tabiki fc için uygunsa sadece) ilk önce fc de bir çalıştırıp sonra fb ye aktarmanızdır .... ben genelde öyle yapıyorum......

ve site içerisinde aşağıda paylaştığım gibi .SCL uzantılı 15 tane program paylaşmıştım rahat öğrenebilmeniz açısından faydalı olacağını düşünüyorum ....

kolay gelsin.....
 

Ekli dosyalar

  • 1switch_on_off_control.rar
    430 bayt · Görüntüleme: 152
Çok teşekkürler Fc de yazınca oldu

PLC'ye yeni başladım. Neredeyse bütün kurslar hep kumanda elemanları-şematik şeklinde anlatıyor bu konuyu. Benim küçük bir programlama geçmişim olduğundan SCL den başlamak en kolayı ve mantıklısı olarak aklıma geldi ama bu konuya hakim kişi sayısı çok fazla olmayınca ve kaynaklar da sınırlı olunca sık sık problem yaşıyorum. Sizdeki scl ile ilgili kaynağın adı nedir? Yeterince açıklayıcı ve örnekler içeriyor mu?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…