SCL ile Timer Olayı.

Sun011980

Üye
Katılım
29 Tem 2007
Mesajlar
24
Puanları
1
Yaş
39
Merhaba arkadaşlar Sabit konu içerisine bu konuyu açtım ancak orada yeteri kadar ilgi görmediği için yeni konu açma ihtiyacı gördüm.

Bu siemens'in SCL dilini kullanarak bir kaç timer ve bol miktarda math fonksiyonları olan bir FC yazmam gerekiyor. Ancak TIMER olayına takıldım kaldım. Adam gibi bir örnek bulamadım. Sizlerde varsa veya linkini biliyorsanız, hatta kendiniz bir anlatabilirseniz gerçekten çok makbule geçer.
Şimdiden teşekkür ederim.
 
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
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.
scl le yazılmiş flasor zaman rolesi. umarırım olayı cozersin.....





Kod:
FUNCTION_BLOCK Flasor_ZamanRolesi


VAR_INPUT
    SAMPLE_T    {S7_sampletime  :=      'true';    
    S7_visible                  :=      'false';              
    S7_link                     :=      'false'                
    }                            :REAL   := 0.1;  
 Enable        {S7_dynamic:='true'}:BOOL;
   
END_VAR


VAR_IN_OUT
  StartZamani     {S7_dynamic:='true'}:REAL;
  StopZamani      {S7_dynamic:='true'}:REAL;
  END_VAR


VAR_OUTPUT
 OUT         {S7_dynamic:='true'}:BOOL;
   
END_VAR
VAR
    StartTmr         :TIMER_P;
    StopTmr          :TIMER_P;
    StartTmrQ        :BOOL;
    StopTmrQ         :BOOL;
    M1Stat           :BOOL;
    M2Stat           :BOOL;


END_VAR
 StartTmr(SAMPLE_T := SAMPLE_T 
             ,TIME0  := StartZamani  // IN: REAL
             ,MODE   := 2           // IN: INT
             ,RESET  := NOT Enable   // IN: BOOL
             ,I0     := Enable AND NOT  StopTmrQ // IN: BOOL
              ); 
 
  StartTmrQ := StartTmr.Q0; // OUT: BOOL
   
 
  StopTmr (SAMPLE_T := SAMPLE_T 
              ,TIME0 := StopZamani  // IN: REAL
              ,MODE := 2          // IN: INT
              ,RESET := NOT Enable   // IN: BOOL
              ,I0 :=  Enable AND  StartTmrQ // IN: BOOL
              ); 
 
    StopTmrQ  := StopTmr.Q0; // OUT: BOOL
    
    
      OUT  :=Enable AND  NOT StartTmrQ  ;


END_FUNCTION_BLOCK
 
Moderatör tarafında düzenlendi:
Kusura bakmayın açıkcası pek bir işe yaramadı. Burada kendi içerisinde Sample Time tarzı birşey yapılmış ancak benim ihtiyacım daha çok TON TOF yada benzeri tip timerlar.
Genede Teşekkür ederim.
 
üstadım oradaki tüm yazanları okudum. Siemens in kendi sitesindeki forumda yazanları da okudum. Ancak bunların hiç biri FB yada FC altında çalışan versiyonlar değil gördüğüm kadarıyla. Çok farklı uygulamalar yapmışlar işte Çevrim süresiyle timer falan oluşturmuşlar ancak burada da başka sıkıntılar var. Neyse konumuza geri dönersek eğer,
bir FB yada FC içerisi de çalışacak şekilde TON, TOF tarzı timer nasıl oluşturabiliriz. Açık anlatım olursa inanın çok ama çok makbule geçer.
 
üstadım oradaki tüm yazanları okudum. Siemens in kendi sitesindeki forumda yazanları da okudum. Ancak bunların hiç biri FB yada FC altında çalışan versiyonlar değil gördüğüm kadarıyla. Çok farklı uygulamalar yapmışlar işte Çevrim süresiyle timer falan oluşturmuşlar ancak burada da başka sıkıntılar var. Neyse konumuza geri dönersek eğer,
bir FB yada FC içerisi de çalışacak şekilde TON, TOF tarzı timer nasıl oluşturabiliriz. Açık anlatım olursa inanın çok ama çok makbule geçer.

Yukarıda verdiğim linkteki örneği tekrar incele, aşağıda sadeleştirdim, bakmakla görmek farklıdır.

Kod:
FUNCTION_BLOCK FB1
TITLE = 'SCL ve çeşitli zaman elemanlarıyla çalışma örnekleri '

VAR
On    : TON;     
Off    : TOF;     
Start2  : BOOL := FALSE;
Start3  : BOOL := FALSE;
Tvalue1  : TIME := T#0s;
Tvalue2  : TIME := T#0s;
Duration2 : TIME := T#1s;
Duration3 : TIME := T#1s;
Status2  : BOOL := FALSE;
Status3  : BOOL := FALSE;
END_VAR

BEGIN
//*****************************************************************************
On    (      //Start on delay
  IN := Start2,
  PT := Duration2);
  
Status2 := On.Q;
Tvalue2 := On.ET;

Off    (      //Start off delay
  IN := Start3,
  PT := Duration3);
  
Status3 := Off.Q;
Tvalue3 := Off.ET;

//*****************************************************************************
END_FUNCTION_BLOCK
 
Çok haklısın bakmak görmek değildir. Bende sorunu görmeye çalışıyorum. Teşekkür ederim cevap için, hemen uyarlama yaparak deneme yapıyorum. Cevap olarak sonuç bildiricem inşallah.
 
Ustatım bunu biraz anlatırmısın nasıl çalıştığını anlayamadım inan. Yani program içerisine yolladım, sorun çıkmadı ancak kullanamadım.Daha doğrusu nasıl kullanacağımı anlamadım. :rolleyes:
 
Örneği data blok la beraber incelemeniz gerekiyor. Ve uygulamak için ise;
VAT tablosu oluşturarak
DB2.DBX 66.0 // ton başlat sinyali
DB2.DBX 44.0 // ton çıkış sinyali
DB2.DBX 66.1 //tof başlat sinyali
DB2.DBX 44.1 //tof çıkış sinyali
DB2.DBD 50 // ton zamanı değeri
DB2.DBD 54 //tof zaman değeri
M 0.0 // bunu denemek için ben ekledim scl komut satırına M0.0 :=OFF.Q; eklenmiştir

DB2.DBX 66.1 //tof başlat sinyali =1 olduğunda DB2.DBX 44.0 // tof çıkış sinyalini gözleyin ve sonra değeri false yapın

DB2.DBX 66.0 // ton başlat sinyali =1 olduğunda DB2.DBX 44.1 // ton çıkış sinyalini gözleyin ve sonra değeri false yapın zaten olay görülecektir.
 
Ya korfez_ Ne diyeyim sana bilemiyorum harbiden allah razı olsun. Nasıl çalıştığını gördüm sonunda :D
Başka ne tür timerları bu şekilde kullanabiliyoruz. Varsa farklı örneklerle anlatır mısınız?
 

Forum istatistikleri

Konular
128,126
Mesajlar
915,250
Kullanıcılar
449,840
Son üye
111340

Yeni konular

Geri
Üst