Makro ile ilgili bir sorun

savas59

Üye
Katılım
13 Ara 2018
Mesajlar
106
Puanları
1
Yaş
38
Merhaba arkadaşlar bulamadığım bir hatam mevcut;

Butona bağlı olarak alt makrolar oluşturduk diyelim bunları nasıl çağıracağız buton on olduğunda devreye girmesini istediğim bir alt makrom var

Kod:
IF {Link2}1@C122 == 1
BMOV($110, $100, $6)
ELSEIF {Link2}1@C122 == 2
BMOV($120, $100, $6)
ELSEIF {Link2}1@C122 == 3
BMOV($130, $100, $6)
ELSEIF {Link2}1@C122 == 4
BMOV($140, $100, $6)
ELSEIF {Link2}1@C123 == 1
BMOV($150, $100, $6)
ELSEIF {Link2}1@C123 == 2
BMOV($160, $100, $6)
ELSEIF {Link2}1@C123 == 3
BMOV($170, $100, $6)
ELSEIF {Link2}1@C123 == 4
BMOV($180, $100, $6)
ELSEIF {Link2}1@C124 == 1
BMOV($190, $100, $6)
ELSEIF {Link2}1@C124 == 2
BMOV($200, $100, $6)
ELSEIF {Link2}1@C124 == 3
BMOV($210, $100, $6)
ELSEIF {Link2}1@C124 == 4
BMOV($220, $100, $6)
ELSEIF {Link2}1@C125 == 1
BMOV($230, $100, $6)
ELSEIF {Link2}1@C125 == 2
BMOV($240, $100, $6)
ELSEIF {Link2}1@C125 == 3
BMOV($250, $100, $6)
ELSEIF {Link2}1@C125 == 4
BMOV($260, $100, $6)

ENDIF
END

Bu şekilde toplamda 10 ar atlayarak $860 a kadar yazıyorum ama Karaker gir işlem sonrası makroda kullanıyorum bunu.

m1 aktif olduğunda c122 ( counterlar c140 a kadar gidiyor PLC de) sayıma geçiyor sistemde bunlara göre $100 girilen karakteri C sayısına göre belirttiğim internal dataya atıyor. $180 kadar 10 ar 10 ar sorun yok. Fakat 190 itibari ile hepsi başka başka şeyler yapıyorlar. ne gibi şeyler diyecek olursak örneğin 200 e yazması gereken değeri tutuyor 170 e veya 300 e yazıyor gibi tuhaf şeyler olmakta.

Ne gibi bir hata var makrolarda nasıl çözebilirim alt makrolar ile denedim ( ki her bir butonun ON makrosuna ekleyip butonlara özel yazayım diye ) bir türlü çalıştıramadım çağırmayı becerememiş olabilirim.
 
Alt macroyu çağırmak için butonun ON macrosuna yazdığınız macroyu paylaşırmısınız?
Böylece daha doğru bir çözüm bulabiliriz.
 
Alt macroyu çağırmak için butonun ON macrosuna yazdığınız macroyu paylaşırmısınız?
Böylece daha doğru bir çözüm bulabiliriz.

Hocam yukarıda gördüğünüz counter kontrolü ana makro tümü için ama ben bunu her buton için ayrı yapmayı düşünüyorum o da şöyle ki


Kod:
IF {Link2}1@C122 == 1
BMOV($110, $100, $6)
ENDIF
END

gibi her butonun on olma durumunda bu şekilde kendi makro satırını çalıştırmasını sağlamak istiyorum.
 
Kod:
IF {Link2}1@C122 == 1
BMOV($110, $100, $6)
ENDIF
END

Macro satırınız doğru yazılmış.
Bu macroda ;
1- $6 adresine girilen değer önemli. Kesinlikle 10 üzerinde olmamalı yoksa hata almanız doğal.
2- $100...$109 adreslerine girdiğiniz değerler önemli . Eğer32 bitlik bir değer giriyorsanız değer taşmasından dolayı hata almanız doğal.
3- C122 sayıcısının değer artış hızına bağlı olarak haberleşme gecikmesinden dolayı hata alabilirsiniz.

Bu şekilde toplamda 10 ar atlayarak $860 a kadar yazıyorum ama Karaker gir işlem sonrası makroda kullanıyorum bunu.

4- Karakter gir elementinden girdiğiniz her karakter 2 adet data adresini işgal eder bu durumu göz önünde bulundurmalısınız.
Bu durumda siz "Karakter gir" elementinden en fazla 5 karakter girmelisiniz yoksa hata almanız kaçınılmaz.
 
  • Beğen
Tepkiler: huh
asgf
Merhaba arkadaşlar bulamadığım bir hatam mevcut;

Butona bağlı olarak alt makrolar oluşturduk diyelim bunları nasıl çağıracağız buton on olduğunda devreye girmesini istediğim bir alt makrom var
Alt macro çağırmak için CALL komutu kullanılır.
Ekteki macro dökümanının 5. sayfasında alt macro açıklaması , 23. ve 24. sayfasında çağırma yöntemleri anlatılmıştır.
 

Ekli dosyalar

  • HMI Macro Komutları Dokümanı_rev1.0.pdf
    1.6 MB · Görüntüleme: 16
Macro satırınız doğru yazılmış.
Bu macroda ;
1- $6 adresine girilen değer önemli. Kesinlikle 10 üzerinde olmamalı yoksa hata almanız doğal.
2- $100...$109 adreslerine girdiğiniz değerler önemli . Eğer32 bitlik bir değer giriyorsanız değer taşmasından dolayı hata almanız doğal.
3- C122 sayıcısının değer artış hızına bağlı olarak haberleşme gecikmesinden dolayı hata alabilirsiniz.



4- Karakter gir elementinden girdiğiniz her karakter 2 adet data adresini işgal eder bu durumu göz önünde bulundurmalısınız.
Bu durumda siz "Karakter gir" elementinden en fazla 5 karakter girmelisiniz yoksa hata almanız kaçınılmaz.

Bu makro ile yapmaya çalışınca sorun oldu bende farklı bir yöntem uygulamaya karar verdim.

Yine aynı counterları kullanarak bu defa sayısal değil ama o sayılara göre M bitleri atadım ve onların ON/Off olma durumlarına makroyu ve PLC yi güncelledim sorunum çözüldü. Bu gibi ihtiyaç duyan olursa böyle halledebilir.
 
asgf

Alt macro çağırmak için CALL komutu kullanılır.
Ekteki macro dökümanının 5. sayfasında alt macro açıklaması , 23. ve 24. sayfasında çağırma yöntemleri anlatılmıştır.
Merhabalar;

$100 üzerinden girdiğim datayı ( karakter rakam karışık ) $4000 üzerinde ki data ile karşılaştırıp durumuna göre bir bit aktif etmeye çalışıyorum ancak neden ise bir sorun var ve anlamadım gitti. Bir çok farklı yöntem denedim direkt olarak biti aktif ediyor.

Kod:
IF $100 != $4000 THEN GOTO LABEL 1
IF $101 != $4001 THEN GOTO LABEL 1
IF $102 != $4002 THEN GOTO LABEL 1
BITON ({Link2}1@M250)
LABEL 1
END

Bunda bir defa bit aktif olduğunda değerler eşit olsa da olmasa da bit sürekli aktif kalıyor.

Kod:
IF $100 != $4000 THEN GOTO LABEL 1
IF $101 != $4001 THEN GOTO LABEL 1
IF $102 != $4002 THEN GOTO LABEL 1
LABEL 1
BITON ({Link2}1@M250)
IF $100 == $4000 THEN GOTO LABEL 2
IF $101 == $4001 THEN GOTO LABEL 2
IF $102 == $4002 THEN GOTO LABEL 2
LABEL 2
BITOFF ({Link2}1@M250)
END

Yukarıda ki şekilde ise sürek on - off oluyor bit. Bir türlü eşitse ON değilse OFF olmadı. Clock makro - alt makro hepsini denedim sonuçlar aynı yardım edebilirmisiniz?
 
Merhabalar;

$100 üzerinden girdiğim datayı ( karakter rakam karışık ) $4000 üzerinde ki data ile karşılaştırıp durumuna göre bir bit aktif etmeye çalışıyorum ancak neden ise bir sorun var ve anlamadım gitti. Bir çok farklı yöntem denedim direkt olarak biti aktif ediyor.

Kod:
IF $100 != $4000 THEN GOTO LABEL 1
IF $101 != $4001 THEN GOTO LABEL 1
IF $102 != $4002 THEN GOTO LABEL 1
BITON ({Link2}1@M250)
LABEL 1
END

Bunda bir defa bit aktif olduğunda değerler eşit olsa da olmasa da bit sürekli aktif kalıyor.

Kod:
IF $100 != $4000 THEN GOTO LABEL 1
IF $101 != $4001 THEN GOTO LABEL 1
IF $102 != $4002 THEN GOTO LABEL 1
LABEL 1
BITON ({Link2}1@M250)
IF $100 == $4000 THEN GOTO LABEL 2
IF $101 == $4001 THEN GOTO LABEL 2
IF $102 == $4002 THEN GOTO LABEL 2
LABEL 2
BITOFF ({Link2}1@M250)
END

Yukarıda ki şekilde ise sürek on - off oluyor bit. Bir türlü eşitse ON değilse OFF olmadı. Clock makro - alt makro hepsini denedim sonuçlar aynı yardım edebilirmisiniz?
Merhaba savaş 59 bey, geçenlerde delta türkiyede sizin durumunuza benzer bir konu okumuştum, yanılmıyorsam yada oraya da konu açan aynı kişi siz olabilir misiniz?
 
Merhaba savaş 59 bey, geçenlerde delta türkiyede sizin durumunuza benzer bir konu okumuştum, yanılmıyorsam yada oraya da konu açan aynı kişi siz olabilir misiniz?

Evet beni olabilirim.
Orda alamadığım yanıtı burada almıştım daha önce o yüzden burada da sordum. Ek olarak burada görevliler değil normal insanlar giriş yaptıkları için yanıt alma süreniz de genelde daha kısa oluyor.
 
Evet beni olabilirim.
Orda alamadığım yanıtı burada almıştım daha önce o yüzden burada da sordum. Ek olarak burada görevliler değil normal insanlar giriş yaptıkları için yanıt alma süreniz de genelde daha kısa oluyor.
Burda deltada uzman sayın @shox ve sayın @huh uzman arkadaşlar var zamanında benimde yardımıma hızır gibi yetiştiler sağolsunlar, delta türkiyede moderatör 2 kişi var, onun haricinde normal üyelerin soru cevapladığını nadir görüyorum ama burdaki forum daha canlı
En azından delta ile uğraşanlar kendi fikirlerini ve tecrübelerini yazıyor o yüzden bu forumu seviyorum 🤟
 

Forum istatistikleri

Konular
129,808
Mesajlar
930,303
Kullanıcılar
452,610
Son üye
rockman41

Yeni konular

Geri
Üst