ST dili yardım lütfen

DeisS

Üye
Katılım
21 Ara 2012
Mesajlar
14
Puanları
1
Resimdeki gibi bir işlemin ST yazım karşılığı nasıl olmalıdır?

Screenshot_2.jpg
 
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.
yav blokların st karşılığı var onları koyunca yerine oturur
zaten st dili yükselen kenara göre çalışır . bloğu tanımlayınca atama yapıyorsun hepsi o

mesela 1. satırı yapmaya çalışayım anladığımdan değilde hani yardımım dokunur belki .
tmr1: ton; // tmri tanımladık
tmr(in:=adim1, pt:=zaman1); // tmri çağırdık ama zaman 1i bir yerde zaman çevirmemiz lazım ;
zamançıkışı:=tmr.q ; /// zaman çıkışı boş sende zamançıkışı:bool; türkçe kullanma sen

sonra bloğu çağıracan ad koyacan bloğa
abs1:McMoweAbsulute;
abs1(aksis:=1, exetue:=tmr1 , positon:=abspositon2...
...
) böle böe atayacan
 
yav blokların st karşılığı var onları koyunca yerine oturur
zaten st dili yükselen kenara göre çalışır . bloğu tanımlayınca atama yapıyorsun hepsi o

mesela 1. satırı yapmaya çalışayım anladığımdan değilde hani yardımım dokunur belki .
tmr1: ton; // tmri tanımladık
tmr(in:=adim1, pt:=zaman1); // tmri çağırdık ama zaman 1i bir yerde zaman çevirmemiz lazım ;
zamançıkışı:=tmr.q ; /// zaman çıkışı boş sende zamançıkışı:bool; türkçe kullanma sen

sonra bloğu çağıracan ad koyacan bloğa
abs1:McMoweAbsulute;
abs1(aksis:=1, exetue:=tmr1 , positon:=abspositon2...
...
) böle böe atayacan
Yav servet hoca hepsini yapıp dua alsana cuma günü. Zaten çoğunu yapmışsın.
 
yok abi arkadaçş ödev yapıyorsa yapsın yok işse yapayım .
bağlanayım yazayım para kazanacaksa
 
Denemesini yapmadım sanırım aşağıdaki kod parçası sorunuza yanıt verecektır.
Belki ufak tefek hatası olabilir ama genel hatlarıyla bu şekilde yazarsanız daha derli toplu olacaktır.

Kod:
// Adım1'de bitsinmi Adım2'ye geçsinmi?
IF hmi_osA2_AbsPos = 0 THEN                // Adım2 Pozisyon 0(Sıfır) kontrolü
    osA1_Sonu := TRUE ;
    osA2_Devam := FALSE ;
  ELSE
    osA1_Sonu := FALSE ;
    osA2_Devam := TRUE ;
END_IF;  
   
// Adım2'de bitsinmi Adım3'e geçsinmi?
IF hmi_osA3_AbsPos = 0 THEN                // Adım3 Pozisyon 0(Sıfır) kontrolü
    osA2_Sonu := TRUE ;
    osA3_Devam := FALSE ;
  ELSE
    osA2_Sonu := FALSE ;
    osA3_Devam := TRUE ;
END_IF;  

   
   
osGecikme_tmr(EN:= TRUE,                // Adım1 Gecikme
    IN:= os_GecikmeStart,
    PT:= osAdimGecikme,
    );


CASE TimerAdim OF
   
    10:    //Adim1 Gecikme
   
        IF EDGEPOS(osCalisma_Basladi) THEN
            osAdimGecikme := osA1Gecikme ;
            os_AbsPos := hmi_osA1_AbsPos ;
            os_AbsVel := hmi_osA1_AbsVel ;
            os_GecikmeStart := TRUE;
        END_IF;
       
        IF osAdim_Abs.Active THEN
            os_GecikmeStart := FALSE ;
        END_IF;
       
        IF osAdim_Abs.Done AND osA2_Devam THEN
            TimerAdim := 20 ;
        END_IF;
               
        IF osAdim_Abs.Done AND osA1_Sonu THEN
            TimerAdim := 0 ;
            os_BitisteBaslangiaGit := TRUE ;
            os_UrunDon := FALSE ;
        END_IF;
       
    20:    //Adim2 Gecikme
       
            osAdimGecikme := osA2Gecikme ;
            os_AbsPos := hmi_osA2_AbsPos ;
            os_AbsVel := hmi_osA2_AbsVel ;
            os_GecikmeStart := TRUE;
       
        IF osAdim_Abs.Active THEN
            os_GecikmeStart := FALSE ;
        END_IF;
       
        IF osAdim1_Abs.Done AND osA3_Devam THEN
            TimerAdim := 30 ;
        END_IF;
       
        IF osAdim_Abs.Done AND osA2_Sonu THEN
            TimerAdim := 0 ;
            os_BitisteBaslangiaGit := TRUE ;
            os_UrunDon := FALSE ;
        END_IF;
           
END_CASE;



osAdim_Abs(EN:= TRUE,                // Adım1 pozisyona git MC_MoveAbsolute
    Axis:= 1,
    Execute:= EDGEPOS(osGecikme_tmr.Q),
    Position:= os_AbsPos,
    Velocity:= os_AbsVel,
    Acceleration:= osAbs_Acc,
    Deceleration:= osAbs_Dec,
    Jerk:= osAbs_Jerk,
    Direction:= 1,
    BufferMode:= 0,
    );
 
Son düzenleme:
Denemesini yapmadım sanırım aşağıdaki kod parası sorunuza yanıt verecektır.
Belki ufak tefek hatası olabilir ama genel hatlarıyla bu şekilde yazarsanız daha derli toplu olacaktır.

Kod:
// Adım1'de bitsinmi Adım2'ye geçsinmi?
IF hmi_osA2_AbsPos = 0 THEN                // Adım2 Pozisyon 0(Sıfır) kontrolü
    osA1_Sonu := TRUE ;
    osA2_Devam := FALSE ;
  ELSE
    osA1_Sonu := FALSE ;
    osA2_Devam := TRUE ;
END_IF;  
   
// Adım2'de bitsinmi Adım3'e geçsinmi?
IF hmi_osA3_AbsPos = 0 THEN                // Adım3 Pozisyon 0(Sıfır) kontrolü
    osA2_Sonu := TRUE ;
    osA3_Devam := FALSE ;
  ELSE
    osA2_Sonu := FALSE ;
    osA3_Devam := TRUE ;
END_IF;  

   
   
osGecikme_tmr(EN:= TRUE,                // Adım1 Gecikme
    IN:= os_GecikmeStart,
    PT:= osAdimGecikme,
    );


CASE TimerAdim OF
   
    10:    //Adim1 Gecikme
   
        IF EDGEPOS(osCalisma_Basladi) THEN
            osAdimGecikme := osA1Gecikme ;
            os_AbsPos := hmi_osA1_AbsPos ;
            os_AbsVel := hmi_osA1_AbsVel ;
            os_GecikmeStart := TRUE;
        END_IF;
       
        IF osAdim_Abs.Active THEN
            os_GecikmeStart := FALSE ;
        END_IF;
       
        IF osAdim_Abs.Done AND osA2_Devam THEN
            TimerAdim := 20 ;
        END_IF;
               
        IF osAdim_Abs.Done AND osA1_Sonu THEN
            TimerAdim := 0 ;
            os_BitisteBaslangiaGit := TRUE ;
            os_UrunDon := FALSE ;
        END_IF;
       
    20:    //Adim2 Gecikme
       
            osAdimGecikme := osA2Gecikme ;
            os_AbsPos := hmi_osA2_AbsPos ;
            os_AbsVel := hmi_osA2_AbsVel ;
            os_GecikmeStart := TRUE;
       
        IF osAdim_Abs.Active THEN
            os_GecikmeStart := FALSE ;
        END_IF;
       
        IF osAdim1_Abs.Done AND osA3_Devam THEN
            TimerAdim := 30 ;
        END_IF;
       
        IF osAdim_Abs.Done AND osA2_Sonu THEN
            TimerAdim := 0 ;
            os_BitisteBaslangiaGit := TRUE ;
            os_UrunDon := FALSE ;
        END_IF;
           
END_CASE;



osAdim_Abs(EN:= TRUE,                // Adım1 pozisyona git MC_MoveAbsolute
    Axis:= 1,
    Execute:= EDGEPOS(osGecikme_tmr.Q),
    Position:= os_AbsPos,
    Velocity:= os_AbsVel,
    Acceleration:= osAbs_Acc,
    Deceleration:= osAbs_Dec,
    Jerk:= osAbs_Jerk,
    Direction:= 1,
    BufferMode:= 0,
    );
arkadaş yanlış anlaşıldı sanırım parayla yazak demedik . para kazanacaksa yazak dedik .dersse az çalışsın :)
 
arkadaş yanlış anlaşıldı sanırım parayla yazak demedik . para kazanacaksa yazak dedik .dersse az çalışsın :)
Boyacıya evi bedava boyatabiliyor musunuz :) Niye parayla yazmayacaksınız ben de onu anlamadım.

Bu arada arkadaş kod parçası yazarken kod parası yazmış yanlışlıkla.
 
Parça yerine para yazmışım evet :):)
Düzettim yanlış anlaşılma olmasın diye :)
 

Yeni mesajlar

Forum istatistikleri

Konular
128,179
Mesajlar
915,658
Kullanıcılar
449,940
Son üye
yavuzturan

Yeni konular

Geri
Üst