Siemens Simatic S7 SCL Programlama Dili

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.
Vay be zamanında ne kadar basit ufak tefek şeylere takılmışız :D şimdi bunlara bakıp gülüyorum :)
 
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
Hocam bu filtreyi laddder da yapacak şekilde açmanız mümkün mü...?
 
Analog kartın özelliklerinden 4 plc cycle için filtre koyabiliyorsun
1698741102419.png
 
sizin yolladığınız bir analog filitreleme yazıp compile yaptığım zaman bu hatayı veriyor, sebebi ne olabilir acaba ...
 

Ekli dosyalar

  • 8e3e8128-0ca8-40d5-bbfe-1d044488c1e9.webp
    8e3e8128-0ca8-40d5-bbfe-1d044488c1e9.webp
    105.8 KB · Görüntüleme: 18
FB ismi çok uzun olduğundan olabilir mi "FB_LPF" deneyin.
1748842476093.webp
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     
    
END_IMPLEMENTATION
 
Son düzenleme:
SCL ile kucuk bir katkida bizden olsun, SFC1 i kullanarak gercek zaman saatini okuyup integer olarak sonuclari alma..

kod asagidaki gibi..
---------------------------------------------------------------------
Kod:
FUNCTION_BLOCK FB9
Title = 'RTC'

VAR_TEMP   
    TarihBCD:DATE_AND_TIME;
    Tarih AT TarihBCD:STRUCT
        Yil:BYTE;                                      
        Ay:BYTE;                                       
        Gun:BYTE;
        Saat:BYTE;
        Dakika:BYTE;
        Saniye:BYTE;
        Milisaniye:BYTE;
    END_STRUCT;
   
    SFC1Donus:INT;
END_VAR

VAR_OUTPUT
    A_Yil:INT;
    A_Ay:INT;
    A_Gun:INT;
    A_Saat:INT;
    A_Dakika:INT;
    A_saniye:INT;
    A_m_saniye:INT;
END_VAR

SFC1Donus:=SFC1(CDT:=TarihBCD);
A_Yil:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Yil));
A_Ay:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Ay));
A_Gun:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Gun));
A_Saat:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Saat));
A_Dakika:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Dakika));
A_saniye:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Saniye));
A_m_saniye:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Milisaniye));
END_FUNCTION_BLOCK
----------------------------------
daha sonra bu blok ob icerisinden cagrilarak kullanilabilir.

Kod:
 CALL  "RTC" , "RTC_DB"
       A_Yil     :=MW100
       A_Ay      :=MW102
       A_Gun     :=MW104
       A_Saat    :=MW106
       A_Dakika  :=MW108
       A_saniye  :=MW110
       A_m_saniye:=MW112


--------------------
kolay gelsin..
Merhaba, bloku denerken resimdeki hatayı veriyor sizce sebebi nedir
 

Ekli dosyalar

  • resim_2025-07-04_191319583.webp
    resim_2025-07-04_191319583.webp
    53.1 KB · Görüntüleme: 11
Yapay zekaya SCL kodlarını yazdırıp, TIA portala Import etme olayı. Güzel anlatmış:
 

Forum istatistikleri

Konular
133,383
Mesajlar
971,009
Kullanıcılar
459,233
Son üye
JacobRice

Yeni konular

Geri
Üst