Siemens Simatic S7 SCL Programlama Dili

FUNCTION_BLOCK test
VAR_INPUT
str : STRING;
END_VAR
VAR_OUTPUT
END_VAR
VAR_TEMP
tstr : STRING;
pos: INT;
END_VAR
VAR
END_VAR
///////////////////////////////////
REPEAT
pos := FIND(STR1:=str,STR2:='');
IF pos > 0 THEN str := REPLACE(str1:=str,str2:='',L:=1,P:=pos);
END_IF;
UNTIL pos = 0
END_REPEAT;
///////////////////////////////////

string içindeki değeri silmek istiyorum ama nerede hata yapıyorum acaba???
 
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.
step 7 versiyonunda SCL compile control file ile SCL source arasındaki fark nedir?
 
arkadaşlar ekteki dosyada scl içinde data blok kullanılmış. bu datalaraı ayrı ayrı mı oluşturuyoruz yoksa gerçekten de scl içine mi gömüyoruz?
 

Ekli dosyalar

  • copydata.txt
    1.9 KB · Görüntüleme: 41
bu dili öğrenecek arkadaşlara tavsiye pascal dilini iyi öğrensinler.Mühendislik hesaplamalarında hala geçerliliğini korumaktadır çünkü yüksek seviyesi(anlaşılabilirlik) karmaşık gibi görünen problemleri çözmeyi kolaylaştırmaktadır saygılarımla
Pascal mı c,c++, c # tarzı bi dil mi ben mi yanlış biliyorum yoksa. Bu konuda detaylı bilgi verebilirseniz çok sevinirim. Nerden başlamalıyım tam olarak?
 
sonuçta dil dildir farketmez. SCL ' de pascal syntax'ı kullanılmaktadır o kadar. yani yazım kuralı. her satırın sonunda ; işareti gibi, IF, ELSE, END_IF gibi. Dolayısıyla dil öğrenmek istiyorsan sadece siemens PLC için hedefini değiştirme. burda önemli olan şey, nesneye yönelik programlama yapılmadığıdır. dolayısıyla JAVA gibi programlar çok alakasız kalır. sonuçta bu programları yazarken basit bir if, for gibi fonksiyonlar kullanacaksın, her programlama dilinde var olan en basit şeyler.
sonuç olarak pascal eski bir dil.sana çok bişey katmaz. c# veya c++ daha çok işine yarar. onları öğren. SCL de yazarkende satır sonlarına ; koy tamam.al sana pascal.
 
Merhaba arkadaslar,

Ladder diagrama hakimim fakat SCL ile program yazmak istiyorum.

Resimdeki gibi bir programı SCL ile nasıl yazabilirim? Bir kaç deneme yaptım fakat bir türlü başaramadım. Yardımcı olursanız sevinirim.
 

Ekli dosyalar

  • Program.png
    Program.png
    22.8 KB · Görüntüleme: 121
arkadaşlar sıemens plc ögrenmek istiyorum ben yardımcı olurmusunuz öncelikle otomatik kumanda röle falan bilgilerim fazlasıyla var plc programını nereden indirebilirim haricen baka bişeyde kurmam gerekiyormu programlama nasıl yapılıyor ?
 
"arr1 : ARRAY[0..100] OF WORD;"
bu array içindeki veriler her bir gelen sinyal 0dan büyükse string formatında yazdıram gerekiyor.
ornegin arr1[0]>0 then myString:=alarm1 ;
arr1[1]>0 then myString:=alarm2 ;
gibi...

bu array içinde en son hangi alarm geldiyse " arr2 : ARRAY[0..100] OF string;"
arr2[0] içine yazdırmak istiyorum.
yol gösterirseniz çok sevinirim.
 
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

Merhabalar
rSamplingTime : REAL ; // Sampling time ms
rSmoothingTime : REAL ; // Smooth time constant ms

değerlleri dışarıdan timer mı tanımlıcaz.. Bu kısmı açıklama imkanınız var mı? rSmoothingTime / rSamplingTime
burda bölme işlemi yapılmış neyin bölmesidir?
 
Sampling time fonksiyon bloğunu belirli bir T süresinde çağırdığınız zamandır örneğin, fb yi OB35 içinde çağırırsanız OB35 bloğunu kaç ms ye ayarladıysanız(örneğin 100ms) o sürede bloğu tarar. Burada sampling time ı bloğun içerisinde 100.0 real olarak girersiniz. Smooth time analog degerlerin oynama sıklığını ayarlamak içindir, analog değer çok değişkense smooth time ile oynamaları yumuşatabilirsiniz.
 

Yeni mesajlar

Forum istatistikleri

Konular
127,964
Mesajlar
913,939
Kullanıcılar
449,609
Son üye
cherrywine

Yeni konular

Geri
Üst