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?

 
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:
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
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…