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
 
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 :)
 

Forum istatistikleri

Konular
130,111
Mesajlar
933,227
Kullanıcılar
453,175
Son üye
dogukankaragoz

Yeni konular

Geri
Üst