ST dilde Convert işlemi
- DeisS
- Mesajlar: 77
- Kayıt: 08 Mar 2021, 15:07
- İletişim:
- Durum: Çevrimdışı
ST dilde Convert işlemi
Merhabalar.
15MC ile program hazırlıyorum.
ST dilinde DINT_TO_UDINT convert işlemi icin ;
Sayi1 := DINT_TO_UDINT(In:= Sayi2 ) ;
yazımı doğrumudur?
teşekkürler.
15MC ile program hazırlıyorum.
ST dilinde DINT_TO_UDINT convert işlemi icin ;
Sayi1 := DINT_TO_UDINT(In:= Sayi2 ) ;
yazımı doğrumudur?
teşekkürler.
- Coşkun
- Mesajlar: 210
- Kayıt: 07 Mar 2018, 14:26
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Merhaba,
Kullanım şekliniz doğrudur.
Saygılarımla, iyi çalışmalar dilerim.
Kullanım şekliniz doğrudur.
Saygılarımla, iyi çalışmalar dilerim.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Coşkun Özdemir - Senior Field Application Engineer - DELTA Electronics Turkey
- DeisS
- Mesajlar: 77
- Kayıt: 08 Mar 2021, 15:07
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Teşekkürler.
- DeisS
- Mesajlar: 77
- Kayıt: 08 Mar 2021, 15:07
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Coşkun Bey merhabalar.
CANopenBuilder ile 15MC çalışması yapıyorum.
Aşağıda kodunu verdiğim kod paracığında CASE işleminde bir türlü sıralı çalışmayı yakalayamadım.
CASE döngüsü 10'dan 30'a atlıyor ve bu şekilde birer atlamalı gidiyor.
MC_MoveAbsolute bloğunun EN girişine bir bit ekledim RESET ve SET işlemlerini yaptım ama yine sonuç alamadım.
Birde MC_MoveAbsolute bloğunun giriş ve cıkışlarında TRUE şeklinde kalanlar oluyor.
Hata nerede acaba ?
Yardımcı olurmusunuz?
Teşekkürler.
CANopenBuilder ile 15MC çalışması yapıyorum.
Aşağıda kodunu verdiğim kod paracığında CASE işleminde bir türlü sıralı çalışmayı yakalayamadım.
CASE döngüsü 10'dan 30'a atlıyor ve bu şekilde birer atlamalı gidiyor.
MC_MoveAbsolute bloğunun EN girişine bir bit ekledim RESET ve SET işlemlerini yaptım ama yine sonuç alamadım.
Birde MC_MoveAbsolute bloğunun giriş ve cıkışlarında TRUE şeklinde kalanlar oluyor.
Hata nerede acaba ?
Yardımcı olurmusunuz?
Teşekkürler.
Kod: Tümünü seç
IF Otomatik AND SenkronCalisma THEN
IF EDGEPOS(xStart) AND NOT(osCalisma_Basladi) THEN // Otomatik çalışma başlasın
osCalisma_Basladi := True ;
osAdimPos := 10 ;
END_IF ;
os_AdimAbs(EN:= True, // MC_MoveAbsolute fonksiyon bloğu
Axis:= 1,
Execute:= osAdimBasla,
Position:= os_igPos,
Velocity:= os_igVel,
Acceleration:= osAbs_Acc,
Deceleration:= osAbs_Dec,
Jerk:= osAbs_Jerk,
Direction:= 1,
BufferMode:= 0,
);
IF EDGEPOS(os_AdimAbs.Done) THEN // Aktif adım pozisyonuna ulaşıldı
osAdimBasla := FALSE ;
END_IF ;
END_IF;
CASE osAdimPos OF
10: // Adım1
osA1Gecikme_tmr (EN:= osAdimPos = 10 , // Adım1 gecikme timer
IN:= osAdimPos = 10 ,
PT:= osA1Gecikme,
);
IF osA1Gecikme_tmr.Q THEN // Adım1 gecikme bittiyse pozisyona git
osAdimBasla := TRUE ;
END_IF ;
os_igPos := hmi_osA1_AbsPos ; // Adım1 pozisyon ataması
os_igVel := hmi_osA1_AbsVel ; // Adım1 Hız ataması
IF EDGEPOS(os_AdimAbs.Done) THEN // Adım1 bittiyse Adım2'ye geç
osAdimPos := 20 ;
END_IF ;
20: // Adım2
osA2Gecikme_tmr (EN:= osAdimPos = 20 , // Adım2 gecikme timer
IN:= osAdimPos = 20 ,
PT:= osA2Gecikme,
);
IF osA2Gecikme_tmr.Q THEN // Adım2 gecikme bittiyse pozisyona git
osAdimBasla := TRUE ;
END_IF ;
os_igPos := hmi_osA2_AbsPos ; // Adım2 pozisyon ataması
os_igVel := hmi_osA2_AbsVel ; // Adım2 Hız ataması
IF EDGEPOS(os_AdimAbs.Done) THEN // Adım2 bittiyse Adım3'e geç
osAdimPos := 30 ;
END_IF ;
30: // Adım3
osA3Gecikme_tmr (EN:= osAdimPos = 30 , // Adım3 gecikme timer
IN:= osAdimPos = 30 ,
PT:= osA3Gecikme,
);
IF osA3Gecikme_tmr.Q THEN // Adım3 gecikme bittiyse pozisyona git
osAdimBasla := TRUE ;
END_IF ;
os_igPos := hmi_osA3_AbsPos ; // Adım3 pozisyon ataması
os_igVel := hmi_osA3_AbsVel ; // Adım3 Hız ataması
IF EDGEPOS(os_AdimAbs.Done) THEN // Adım3 bittiyse Adım4'e geç
osAdimPos := 40 ;
END_IF ;
40: // Adım4
osA4Gecikme_tmr (EN:= osAdimPos = 40 , // Adım4 gecikme timer
IN:= osAdimPos = 40 ,
PT:= osA4Gecikme,
);
IF osA4Gecikme_tmr.Q THEN // Adım4 gecikme bittiyse pozisyona git
osAdimBasla := TRUE ;
END_IF ;
os_igPos := hmi_osA4_AbsPos ; // Adım4 pozisyon ataması
os_igVel := hmi_osA4_AbsVel ; // Adım4 Hız ataması
IF EDGEPOS(os_AdimAbs.Done) THEN // Adım4 bittiyse Adım5'e geç
osAdimPos := 50 ;
END_IF ;
50: // Adım5
osA5Gecikme_tmr (EN:= osAdimPos = 50 , // Adım5 gecikme timer
IN:= osAdimPos = 50 ,
PT:= osA5Gecikme,
);
IF osA5Gecikme_tmr.Q THEN // Adım5 gecikme bittiyse pozisyona git
osAdimBasla := TRUE ;
END_IF ;
os_igPos := hmi_osA5_AbsPos ; // Adım5 pozisyon ataması
os_igVel := hmi_osA5_AbsVel ; // Adım5 Hız ataması
IF EDGEPOS(os_AdimAbs.Done) THEN // Adım5 bittiyse Adım6'ya geç
osAdimPos := 0 ;
END_IF ;
ELSE
osAdimPos := 0 ;
END_CASE ;
- Coşkun
- Mesajlar: 210
- Kayıt: 07 Mar 2018, 14:26
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Merhaba,
Komutların EN girişini keserseniz komut pasif olur ve aktif olana kadar bir işlem yapmaz. Burada izlediğiniz yöntem yanlıştır.
Daha doğru çalışma yöntemi için "EN" koşulu önüne "Power.Status, MotionState.Jog değil" gibi koşullar ekleyip komutu sürekli çevrimde bırakmalısınız. Daha sonra komutu çalıştırmak için komutun "Execute" girişini kullanabilirsiniz. "Execute" setli kaldığı sürece komut tamamlandı "Done" çıkışı da aktif olacaktır. Taki "Execute" girişi resetleninceye kadar.
Ayrıca burada her "case" altında komut çağırmak yerine Örn. Axis formu oluşturup orada eksenler için birer adet komut tanımlayıp daha sonra o komutları programın farklı yerlerinden çağırabilirsiniz (Tek komut ile sadece pozisyon ve hız değiştirip aynı eksen kontrol edilebilir). Bu yöntem daha pratik olacaktır.
Bir başka yöntem olarak da makro hareket komut kümesi oluşturup daha sonra o komutları program içerisinden farklı noktalardan çağırabilirsiniz. Daha sonra komutların durumuna göre "case" adımları dallandırabilirsiniz.
Saygılarımla, iyi çalışmalar dilerim.
Komutların EN girişini keserseniz komut pasif olur ve aktif olana kadar bir işlem yapmaz. Burada izlediğiniz yöntem yanlıştır.
Daha doğru çalışma yöntemi için "EN" koşulu önüne "Power.Status, MotionState.Jog değil" gibi koşullar ekleyip komutu sürekli çevrimde bırakmalısınız. Daha sonra komutu çalıştırmak için komutun "Execute" girişini kullanabilirsiniz. "Execute" setli kaldığı sürece komut tamamlandı "Done" çıkışı da aktif olacaktır. Taki "Execute" girişi resetleninceye kadar.
Ayrıca burada her "case" altında komut çağırmak yerine Örn. Axis formu oluşturup orada eksenler için birer adet komut tanımlayıp daha sonra o komutları programın farklı yerlerinden çağırabilirsiniz (Tek komut ile sadece pozisyon ve hız değiştirip aynı eksen kontrol edilebilir). Bu yöntem daha pratik olacaktır.
Bir başka yöntem olarak da makro hareket komut kümesi oluşturup daha sonra o komutları program içerisinden farklı noktalardan çağırabilirsiniz. Daha sonra komutların durumuna göre "case" adımları dallandırabilirsiniz.
Saygılarımla, iyi çalışmalar dilerim.
Coşkun Özdemir - Senior Field Application Engineer - DELTA Electronics Turkey
- DeisS
- Mesajlar: 77
- Kayıt: 08 Mar 2021, 15:07
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Bilgi için teşekkür ederim.
ST dilinde yeniyim ve öğrenmeye çalışıyorum.
Elimdeki projeyide ST olarak yaparak tecrübe kazanmak istiyorum.
Rica etsem 1-2 satırlık bir örnek paylaşırmısınız.
Birkaç konumluk absolute hareket döngüsüyle örneklendirmeniz mümkün mü?
Teşekkürler.
ST dilinde yeniyim ve öğrenmeye çalışıyorum.
Elimdeki projeyide ST olarak yaparak tecrübe kazanmak istiyorum.
Rica etsem 1-2 satırlık bir örnek paylaşırmısınız.
Burada demek istediklerinizi anlamadım maalesefCoşkun yazdı: ↑22 Haz 2022, 17:58
Ayrıca burada her "case" altında komut çağırmak yerine Örn. Axis formu oluşturup orada eksenler için birer adet komut tanımlayıp daha sonra o komutları programın farklı yerlerinden çağırabilirsiniz (Tek komut ile sadece pozisyon ve hız değiştirip aynı eksen kontrol edilebilir). Bu yöntem daha pratik olacaktır.
Bir başka yöntem olarak da makro hareket komut kümesi oluşturup daha sonra o komutları program içerisinden farklı noktalardan çağırabilirsiniz. Daha sonra komutların durumuna göre "case" adımları dallandırabilirsiniz.
Birkaç konumluk absolute hareket döngüsüyle örneklendirmeniz mümkün mü?
Teşekkürler.
- Coşkun
- Mesajlar: 210
- Kayıt: 07 Mar 2018, 14:26
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Merhaba,
ST ile hazırlamış olduğum ekteki örnekten faydalanabilirsiniz.
Saygılarımla, iyi çalışmalar dilerim.
ST ile hazırlamış olduğum ekteki örnekten faydalanabilirsiniz.
Saygılarımla, iyi çalışmalar dilerim.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Coşkun Özdemir - Senior Field Application Engineer - DELTA Electronics Turkey
- DeisS
- Mesajlar: 77
- Kayıt: 08 Mar 2021, 15:07
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Teşekkürler
- DeisS
- Mesajlar: 77
- Kayıt: 08 Mar 2021, 15:07
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Merhabalar.
Geçen gün forumu gezerken çok adetli bir alarm bitlerini bir data adresine taşıyıp alarm olup olmadığını kontrolünü sağlayan bir yapı gördüm.
Bu yapıyı yaklaşık 80 adet alarm durumu olan programımda kulanmayı istiyorum.
Sormak istediğim bu yapıyı ST ile yazmaya çalıştım ama olmadı çünkü taşıma D adresi bitlerine (D0.0 v.s.) yapılmış ama karşılaştırma data olarak yapılmıştı.
Bu yapının ST karşılığı nasıl olmalıdır?
PLC modelim = AS228T
Teşekkür ederim.
Geçen gün forumu gezerken çok adetli bir alarm bitlerini bir data adresine taşıyıp alarm olup olmadığını kontrolünü sağlayan bir yapı gördüm.
Bu yapıyı yaklaşık 80 adet alarm durumu olan programımda kulanmayı istiyorum.
Sormak istediğim bu yapıyı ST ile yazmaya çalıştım ama olmadı çünkü taşıma D adresi bitlerine (D0.0 v.s.) yapılmış ama karşılaştırma data olarak yapılmıştı.
Bu yapının ST karşılığı nasıl olmalıdır?
PLC modelim = AS228T
Teşekkür ederim.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
- Coşkun
- Mesajlar: 210
- Kayıt: 07 Mar 2018, 14:26
- İletişim:
- Durum: Çevrimdışı
Re: ST dilde Convert işlemi
Merhaba,
Aşağıdaki görselde olduğu gibi iki farklı şekilde okuyabilirsiniz. Ayrıca array olarak tanımladığınız word dataları da bir for döngüsü içinde döndürebilirsiniz. Aslında birden fazla yöntem mevcuttur. Sizin için en efektif olanına karar verip kullanabilirsiniz.
Saygılarımla, iyi çalışmalar dilerim.
Aşağıdaki görselde olduğu gibi iki farklı şekilde okuyabilirsiniz. Ayrıca array olarak tanımladığınız word dataları da bir for döngüsü içinde döndürebilirsiniz. Aslında birden fazla yöntem mevcuttur. Sizin için en efektif olanına karar verip kullanabilirsiniz.
Saygılarımla, iyi çalışmalar dilerim.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
Coşkun Özdemir - Senior Field Application Engineer - DELTA Electronics Turkey