Siemens Simatic S7 SCL Programlama Dili

arkadaşlar scl ile bir vana blogu yazdım. acık bilgisi kapalı bilgisi, acılmadı, kapanmadı gibi bilgiler geliyor. blok dan bir tane kullandığımda herhangi bir problem yok. ama iki veya daha fazla kullandığımda blok düzgün çalışmıyor. nedenini bir türlü anlayamadım. not denemeleri simülatörde yapıyorum.yardımcı olursanız sevınırım. fc de bu problem oluyor. yazmış olduğum blok fb dönderdiğimde herhangi bir problem olmuyor.
 
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.
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
sayın uğur.demir1983 yazdıklarınızdan anladığım kadarı ile ;

bloklar hafızada aynı alanı kullanırlar bunun için local değişkenler kullanırlar (her halde siz bloklarda global değişken kullandınız ) aynı alanı bir kaç blok aynı anda kullanmaya çalışınca bu sıkıntı çıkabilir ....

hafıza alanlarınızı bir daha kontrol edin ....

fb içeerisinde sorun çıkmama sebebi herhalde yine değişkenleri bu sefer data blklara aktarıyor olmanız bu sayede bloklar aynı alanları kullanmazlar ve sorun kendiliğinden kalkar.....

siz yinede kaliteli bir yardımlaşma için brogram bloğunu bir paylaşın ki arkadaşlar görsün yorumlarını beirtsin;)
 
arkadaşlar size bir soru soracağım scl dilinde yazdığımız timer ları s5time cinsinden tanımladığım değişkenlere atarak çalıştrabiliyoruz fakat ben şunu istiyorum bir timera 6 saniye boyunca 1 ol diyeceğim ve bunun 4. saniyesi ile 6. saniyesi aasında başka bir değişkeni set etmek istiyorum bunu yapmak mümkün mü ?

IF (t#6s>=t_bi1>=t#4s) THEN yellow_car:=1;

ELSE yellow_car:=0; END_IF;
END_IF;

yukarıdaki program satırında kalın harflerle verdiğim timer ın yüklü olduğu s5time cinsinden değişken ...



bu satırları yazdığım zamn if döngüsü içerisinde bool değişken tanımlamam gerektiği yazıyor .bunuda yazmak istedim :)
 
arkadaşlar size bir soru soracağım scl dilinde yazdığımız timer ları s5time cinsinden tanımladığım değişkenlere atarak çalıştrabiliyoruz fakat ben şunu istiyorum bir timera 6 saniye boyunca 1 ol diyeceğim ve bunun 4. saniyesi ile 6. saniyesi aasında başka bir değişkeni set etmek istiyorum bunu yapmak mümkün mü ?

IF (t#6s>=t_bi1>=t#4s) THEN yellow_car:=1;

ELSE yellow_car:=0; END_IF;
END_IF;

yukarıdaki program satırında kalın harflerle verdiğim timer ın yüklü olduğu s5time cinsinden değişken ...



bu satırları yazdığım zamn if döngüsü içerisinde bool değişken tanımlamam gerektiği yazıyor .bunuda yazmak istedim :)

Kolay gelsin

Kod:
FUNCTION FC10 : VOID

VAR_TEMP
   Zmn:TIME;
   Bit1:BOOL;
   baska_degisken:BOOL;

END_VAR

IF (Zmn<T#6s)THEN 
    Bit1:=True;
ELSE
    Bit1:=False;
    END_IF;


IF (Zmn<T#6s)AND (Zmn>T#4s) THEN 
   baska_degisken:=TRUE;
ELSE
 baska_degisken:=False;
 END_IF;
 
   
END_FUNCTION
 
PLC tarafından okunan analog değer bilgileri çoğu zaman etraftaki gürültülerden dolayı ne kadar topraklama yapsakta stabil olmayabilir, işte bu değerleri stabil hale getirmek için yazılımla yapılan alçak geçiren filtre örneği:
Tarafımca denenmiştir, örnekleme zamanı (OB35 gibi) ve smooth time ile oynayarak, baya güzel sabitliyor oynayan analog değerleri,

Kod:
 FUNCTION_BLOCK FB_LowPassFilter    
VAR_INPUT    
   rActualValue   : REAL ; // measured value    
   rSamplingTime  : REAL ; // Sampling time ms    
   rSmoothingTime : REAL ; // Smooth time constant ms    
END_VAR    
VAR_OUTPUT    
   rFilteredActualValue : REAL ;     
END_VAR    
VAR    
   rActualValue_Old   : REAL ;    
   rFilteredValue_Old : REAL ;    
   rt_alpha           : REAL ;    
END_VAR    
    
rt_alpha := 2.0 * rSmoothingTime / rSamplingTime ;    
rFilteredActualValue := ( rFilteredValue_Old * (rt_alpha-1.0)    
                          + rActualValue    
                          + rActualValue_Old     
                         ) / ( 1.0 + rt_alpha ) ;     
rActualValue_Old := rActualValue ;     
rFilteredValue_Old := rFilteredActualValue ;    
END_FUNCTION_BLOCK

Daha fazla bilgi: http://en.wikipedia.org/wiki/Low-pass_filter
 
Son düzenleme:
arkadaşlar Yavuz EMİNOĞLU'nun PLC Programlama ve s7-300 kitabı 2. baskısı daki en arka sayfadaki soruların ilk 15 nin scl ile çözümlerimi paylaşıyorum ... umarım faydalı olur bana baya faydalı oldu:):):);)

arkadaşlar her hangi bir sorun çıkmasın diye ( service pack sorunu ) hepsini .scl uzantılı olacak şekilde verdim ... artık sizde external source edip kullanın:)....
 

Ekli dosyalar

  • Sina-n'dan inciler.rar
    3.3 KB · Görüntüleme: 401
arkadaşlar acaba çok gereklimi bu SCL anlatırsanız memnun olurum
 
plc programlamanın ( ladder(LAD)-fonsiyon block(FBD)-statement list(STL)-structure control language(SCL) ) 4 yolundan biridir....

scl PACSAL diline çokk benzeyen bil plc programlama dilidir ...

siemens program yazmayı kolaylaştırmak için bir yol bulmuş diyelim ve dimiş ki sadece elektrikçiler değilde bilgisayarcılarda bu işi yapsın die düşünmüş heralde:)

işin özü sana hangisi en kolay geliyorsa onun la yaz :)

ama bir uyarı !! her dilin birbirlerine göre üstünlükleri var:)
 
bu başlıkta emeği geçenlere çok teşekkürler özellikle elektronikmuh.epey faydalı olucak benim için.sömürdüm bütün örnekleri.
basit fabrika otomasyonları için bu dili kullanmak istiyorum.alıştırma açısından.20 küsür motorlu otomasyonlarla uğraşıyorum.her motorun start/stop butonu,termik hata ikazı,kontaktor çıkışı,lambası gibi ikazları var.yani 2in 2out.pek tabii her ikaz diğer motorların çalışmasını etkileyebiliyor.dolayısıyla her motor için ayrı bir struct mı tanımlanmalı yoksa her ikaz için ayrı bir array bi oluşturulmalı henüz kafamda canlandıramadım.böyle sistemlerle uğraşan arkadaşlar varsa kafamda birşeyler oluşması için bir kaç fikir önerebilir mi.
yardımlarınız için teşekkür ederim.
 

Forum istatistikleri

Konular
128,237
Mesajlar
916,080
Kullanıcılar
450,046
Son üye
premier92

Yeni konular

Geri
Üst