Ö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

Makrolar

Kullanıcı avatarı
savas55
Mesajlar: 250
Kayıt: 15 Oca 2019, 23:59
İletişim:
Durum: Çevrimdışı

Re: Makrolar

Mesaj gönderen savas55 »

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.
Bu durum için bir örnek makro verebilme şansınız varmı? Nasıl yapabilirim bunu?
Kullanıcı avatarı
Uğur
Mesaj Panosu Yöneticisi
Mesajlar: 9533
Kayıt: 06 Mar 2018, 10:37
Konum: İstanbul
İletişim:
Durum: Çevrimdışı

Re: Makrolar

Mesaj gönderen Uğur »

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
END
Uğ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
Kullanıcı avatarı
savas55
Mesajlar: 250
Kayıt: 15 Oca 2019, 23:59
İletişim:
Durum: Çevrimdışı

Re: Makrolar

Mesaj gönderen savas55 »

Uğur yazdı: 17 Ara 2020, 13:41

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
END
Hocam bunda bir defa bit aktif olduğunda seğerler eşit olsa da olmasa da bit sürekli aktif kalıyor.

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
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ı.
Kullanıcı avatarı
Uğur
Mesaj Panosu Yöneticisi
Mesajlar: 9533
Kayıt: 06 Mar 2018, 10:37
Konum: İstanbul
İletişim:
Durum: Çevrimdışı

Re: Makrolar

Mesaj gönderen Uğur »

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
END
Uğ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
Kullanıcı avatarı
savas55
Mesajlar: 250
Kayıt: 15 Oca 2019, 23:59
İletişim:
Durum: Çevrimdışı

Re: Makrolar

Mesaj gönderen savas55 »

Uğur yazdı: 17 Ara 2020, 20:52

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
END
Teşekkürler Ancak Benim bu şekilde işlemem gereken yaklaşık 150 bölge var.

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.
Kullanıcı avatarı
savas55
Mesajlar: 250
Kayıt: 15 Oca 2019, 23:59
İletişim:
Durum: Çevrimdışı

Re: Makrolar

Mesaj gönderen savas55 »

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.
Kullanıcı avatarı
Coşkun
Mesajlar: 211
Kayıt: 07 Mar 2018, 14:26
İletişim:
Durum: Çevrimdışı

Re: Makrolar

Mesaj gönderen Coşkun »

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.
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
Kullanıcı avatarı
savas55
Mesajlar: 250
Kayıt: 15 Oca 2019, 23:59
İletişim:
Durum: Çevrimdışı

Re: Makrolar

Mesaj gönderen savas55 »

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.
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.

Teşekkürler.
Cevapla

“HMI Forum” sayfasına dön