Bu durum için bir örnek makro verebilme şansınız varmı? Nasıl yapabilirim bunu?Uğur yazdı: 17 Ara 2020, 12:28 Siz sadece $100 e bakıyorsunuz ama savas yazısı
$100 = sa
$101 = va
$102 = s
şeklindedir. Tüm hepsi eşit ise sonuç almalısınız.
Önemli Bilgilendirme!
Forum sayfamızdan sınırsız faydalanmak için kullanıcı kaydı oluşturup giriş yapmalısınız. Özellikle mesaj eklentileri, linkler kullanıcı girişi yapmazsanız görüntülenmeyecektir. Aşağıdaki linke tıklayarak üye değilseniz kullanıcı oluşturabilirsiniz.
https://destek.delta-turkey.com/ucp.php?mode=register
Forum sayfamızdan sınırsız faydalanmak için kullanıcı kaydı oluşturup giriş yapmalısınız. Özellikle mesaj eklentileri, linkler kullanıcı girişi yapmazsanız görüntülenmeyecektir. Aşağıdaki linke tıklayarak üye değilseniz kullanıcı oluşturabilirsiniz.
https://destek.delta-turkey.com/ucp.php?mode=register
Makrolar
- savas55
- Mesajlar: 250
- Kayıt: 15 Oca 2019, 23:59
- İletişim:
- Durum: Çevrimdışı
Re: Makrolar
- Uğur
- Mesaj Panosu Yöneticisi
- Mesajlar: 9533
- Kayıt: 06 Mar 2018, 10:37
- Konum: İstanbul
- İletişim:
- Durum: Çevrimdışı
Re: Makrolar
Kod: Tümünü seç
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
ENDUğur Birdal - Technical Support Team Manager - DELTA Electronics Turkiye
Bildirimler İçin Whatsapp Kanalımıza Katılın
Whatsapp Kanal
https://www.linkedin.com/in/ugurbirdal
Bildirimler İçin Whatsapp Kanalımıza Katılın
Whatsapp Kanal
https://www.linkedin.com/in/ugurbirdal
- savas55
- Mesajlar: 250
- Kayıt: 15 Oca 2019, 23:59
- İletişim:
- Durum: Çevrimdışı
Re: Makrolar
Hocam bunda bir defa bit aktif olduğunda seğerler eşit olsa da olmasa da bit sürekli aktif kalıyor.Uğur yazdı: 17 Ara 2020, 13:41Kod: Tümünü seç
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
Kod: Tümünü seç
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- Uğur
- Mesaj Panosu Yöneticisi
- Mesajlar: 9533
- Kayıt: 06 Mar 2018, 10:37
- Konum: İstanbul
- İletişim:
- Durum: Çevrimdışı
Re: Makrolar
Kod: Tümünü seç
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)
GOTO LABEL 2
LABEL 1
BITOFF ({Link2}1@M250)
LABEL 2
ENDUğur Birdal - Technical Support Team Manager - DELTA Electronics Turkiye
Bildirimler İçin Whatsapp Kanalımıza Katılın
Whatsapp Kanal
https://www.linkedin.com/in/ugurbirdal
Bildirimler İçin Whatsapp Kanalımıza Katılın
Whatsapp Kanal
https://www.linkedin.com/in/ugurbirdal
- savas55
- Mesajlar: 250
- Kayıt: 15 Oca 2019, 23:59
- İletişim:
- Durum: Çevrimdışı
Re: Makrolar
Teşekkürler Ancak Benim bu şekilde işlemem gereken yaklaşık 150 bölge var.Uğur yazdı: 17 Ara 2020, 20:52Kod: Tümünü seç
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) GOTO LABEL 2 LABEL 1 BITOFF ({Link2}1@M250) LABEL 2 END
Evet tek başına işe yaradı ancak bunda ENDIF kullanıp devam edemiyorum derleyici hata veriyor nereye ENDIF koyarsam bu neden ile çoğaltamıyorum kullanacağım bit sayısını. Bunu örnek alarak bir çok şey denedim bir türlü ilerlemiyor.
- savas55
- Mesajlar: 250
- Kayıt: 15 Oca 2019, 23:59
- İletişim:
- Durum: Çevrimdışı
Re: Makrolar
Ben sanırsam bu makro işini halledemeyeceğim gibi görünüyor 24 saattir denemedik şey kalmadı çokta iyi bilmediğimden muhtemelen. Yapmak istediğim şu.
$100 adından 1 adet değer gir alanım var.
Buna karşılık olarak 5 adette sabit değer girilen $4000-40010-40020-40030-40040-40050 datalarım var.
ilk aşamada $100 girilen değer ile $4000-40010 arasındaki girilmiş değer eşit ise m250 on yapacak değil ise off. sonrasında ise var sayalım eşit ve m250 ON oldu.
Bu sefer $100 girilen değer ile $40010-4020 Arasında bulunan değerleri aynı şekilde karşılaştırıp m251 ON yapacak. Gibi sırayla bu şekilde gidecek.
NOT: 14 karakter kullanılıyor yani $107 ile $4007 arası gibi bu yüzden onar atladım dataları.
Bu sıralamayı nasıl yapabilirim.
Ek olarak bunu bir alt makro olarak düşünürsek örneğin alt makro 1 aynısının farklı datalarla yapılmış ( $100 sabit )19 adeti olacak. plc de bu alt makroları çağıracak olan m bitleri var yani bu yukarıda verdiğim kısım M36 biti aktif olduğunda işlemde aktif değilse işlem dışında olmalı. yerine M37 aktif olduğunda alt makto 2 gelecek gibi. Bunuda en sağlıklı görebildiğim değer gir elementine girişlerden sonra yapacak.
Teşekkürler.
$100 adından 1 adet değer gir alanım var.
Buna karşılık olarak 5 adette sabit değer girilen $4000-40010-40020-40030-40040-40050 datalarım var.
ilk aşamada $100 girilen değer ile $4000-40010 arasındaki girilmiş değer eşit ise m250 on yapacak değil ise off. sonrasında ise var sayalım eşit ve m250 ON oldu.
Bu sefer $100 girilen değer ile $40010-4020 Arasında bulunan değerleri aynı şekilde karşılaştırıp m251 ON yapacak. Gibi sırayla bu şekilde gidecek.
NOT: 14 karakter kullanılıyor yani $107 ile $4007 arası gibi bu yüzden onar atladım dataları.
Bu sıralamayı nasıl yapabilirim.
Ek olarak bunu bir alt makro olarak düşünürsek örneğin alt makro 1 aynısının farklı datalarla yapılmış ( $100 sabit )19 adeti olacak. plc de bu alt makroları çağıracak olan m bitleri var yani bu yukarıda verdiğim kısım M36 biti aktif olduğunda işlemde aktif değilse işlem dışında olmalı. yerine M37 aktif olduğunda alt makto 2 gelecek gibi. Bunuda en sağlıklı görebildiğim değer gir elementine girişlerden sonra yapacak.
Teşekkürler.
- Coşkun
- Mesajlar: 211
- Kayıt: 07 Mar 2018, 14:26
- İletişim:
- Durum: Çevrimdışı
Re: Makrolar
Merhaba,
Aşağıdaki örneği inceleyebilirsiniz. (Örnekte Lua Script kullanılmıştır. Mümkün olduğunca açıklamalar yazılmıştır.)
Örnek ile ilgili açıklama;
* $100 den itibaren 14 karakter girilebilir.
* $4010 dan itibaren $4100 e kadar 10 adet buffer alan bulunmaktadır.
* Girilen her yeni data buffer listedeki datalardan farklı ise kayıt sırasına göre listeye kaydedilir.
İyi çalışmalar dilerim.
Aşağıdaki örneği inceleyebilirsiniz. (Örnekte Lua Script kullanılmıştır. Mümkün olduğunca açıklamalar yazılmıştır.)
Örnek ile ilgili açıklama;
* $100 den itibaren 14 karakter girilebilir.
* $4010 dan itibaren $4100 e kadar 10 adet buffer alan bulunmaktadır.
* Girilen her yeni data buffer listedeki datalardan farklı ise kayıt sırasına göre listeye kaydedilir.
Kod: Tümünü seç
-- Add initial code here (run once)
while true do
--$200.0 ON olduğunda data karşılaştırma işlemine başlanır.
if (mem.inter.ReadBit(200, 0) == 1) then
--Data girişini okuma
giris = mem.inter.ReadAscii(100, 14)
--Buffer adreslerdeki dataları okuma
a = 0;
b = 0;
data = {}
for a = 0,10 do
b = (a * 10) + 4010
data[a] = mem.inter.ReadAscii(b, 14)
end
--Giriş datasını buffer dataları ile karşılaştırma
a = 0;
b = 0;
for a = 0,10 do
if (giris ~= data[a]) then
b = b + 1
end
end
--Buffer listesine sıralı şekilde farklı datayı yazma
c = 0;
d = 0;
if (b == 11) then
c = mem.static.Read(0)
d = (c * 10) + 4010
mem.inter.WriteAscii(d, giris, 14)
c = c + 1
mem.static.Write(0, c)
end
--İşlemi resetleme
mem.inter.WriteBit(200, 0, 0)
end
--Buffer limitleme
if mem.static.Read(0)== 10 then
mem.static.Write(0,0)
end
end
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
- savas55
- Mesajlar: 250
- Kayıt: 15 Oca 2019, 23:59
- İletişim:
- Durum: Çevrimdışı
Re: Makrolar
Hocam sizin anlattığınız baya güzel ancak çok ileri seviye ve karışık istediğim şey bu mudur bilemiyorum. Bu neden ile size ben direkt olarak DPA yı yollayayım Ö.M ile o DPA içerisinde bulunan "SATIN ALMA SAYFASI" İLE "HOME" DE BULUNAN KARAKTER GİR ELEMENTİNDE sorun yaşıyorum aslında büyük oranda sorunu aştım ancak karakter girl elementi işlem sonrası makrosu ile alt makroları çağırıyorum. Ancak ilk 4 makrodan sonrasını çağıramıyorum işlemiyor inceleyince tam olarak ne demek istediğimi anlayacağınızı sanıyorum.Coşkun yazdı: 20 Ara 2020, 02:40 Merhaba,
Aşağıdaki örneği inceleyebilirsiniz. (Örnekte Lua Script kullanılmıştır. Mümkün olduğunca açıklamalar yazılmıştır.)
Örnek ile ilgili açıklama;
* $100 den itibaren 14 karakter girilebilir.
* $4010 dan itibaren $4100 e kadar 10 adet buffer alan bulunmaktadır.
* Girilen her yeni data buffer listedeki datalardan farklı ise kayıt sırasına göre listeye kaydedilir.
Kod: Tümünü seç
-- Add initial code here (run once) while true do --$200.0 ON olduğunda data karşılaştırma işlemine başlanır. if (mem.inter.ReadBit(200, 0) == 1) then --Data girişini okuma giris = mem.inter.ReadAscii(100, 14) --Buffer adreslerdeki dataları okuma a = 0; b = 0; data = {} for a = 0,10 do b = (a * 10) + 4010 data[a] = mem.inter.ReadAscii(b, 14) end --Giriş datasını buffer dataları ile karşılaştırma a = 0; b = 0; for a = 0,10 do if (giris ~= data[a]) then b = b + 1 end end --Buffer listesine sıralı şekilde farklı datayı yazma c = 0; d = 0; if (b == 11) then c = mem.static.Read(0) d = (c * 10) + 4010 mem.inter.WriteAscii(d, giris, 14) c = c + 1 mem.static.Write(0, c) end --İşlemi resetleme mem.inter.WriteBit(200, 0, 0) end --Buffer limitleme if mem.static.Read(0)== 10 then mem.static.Write(0,0) end end
Char_Buffer_v4_HMI.png
İyi çalışmalar dilerim.
Teşekkürler.