DOP-107EV
- okannet
- Mesajlar: 12
- Kayıt: 09 Ara 2019, 16:43
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
Virgülden önceki hane arttıkça boşluk sayısı azalıyor. Aşağıda iki farklı veri için sizin anlattığınız formatta örnekledim. Veri sayısı değişmiyor ama boşluk sayısı değişiyor.
"SUI 87.981 g " verisi için
SUI (3) + Boşluk (6) + 87.981 (6) + Boşluk (1) + g (1) + Boşluk (2) + Enter (1) = 20 karakter dizisi
"SUI 123.309 g " verisi için
SUI (3) + Boşluk (5) + 123.309 (7) + Boşluk (1) + g (1) + Boşluk (2) + Enter (1) = 20 karakter dizisi
"SUI 87.981 g " verisi için
SUI (3) + Boşluk (6) + 87.981 (6) + Boşluk (1) + g (1) + Boşluk (2) + Enter (1) = 20 karakter dizisi
"SUI 123.309 g " verisi için
SUI (3) + Boşluk (5) + 123.309 (7) + Boşluk (1) + g (1) + Boşluk (2) + Enter (1) = 20 karakter dizisi
- Turhan
- Mesajlar: 7736
- Kayıt: 07 Mar 2018, 16:06
- Konum: İstanbul
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
HMI üzerinde TOBYTE ve TOWORD makro komutları ile okunan 4 ile 11. karakter aralıklarında boşluk karakteri var ise bu boşlukları önce 0 sayısı ile doldurup 4. karakterden 15. karaktere kadar olan tüm diziyi PLC içerisine göndermelisiniz AS PLC içerisinde $FVAL komutu 00000123.309 karakter dizisini doğrudan 123.309 floating point tabanına konvert edecektir. daha kısa bir çözüme ulaşırsam bu başlık altında paylaşıyor olacağım.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
DELTA Electronics Turkey
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
- Turhan
- Mesajlar: 7736
- Kayıt: 07 Mar 2018, 16:06
- Konum: İstanbul
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
Merhaba,
Okunan 20 karakterin tamamını AS200 PLC'ye göndererek sayıyı flotaing point tabanda okuyabilirsiniz. DTM ve $FVAL komutları kullanılarak yapılan konvert işlemi ektedir.
Karakter dizisinde 0~9 arasındaki tüm karakter değerlerini sıfır'a eşitliyerek diziyi doğrudan 32Bit Floating Point tabana çevirebilirsiniz.
Okunan 20 karakterin tamamını AS200 PLC'ye göndererek sayıyı flotaing point tabanda okuyabilirsiniz. DTM ve $FVAL komutları kullanılarak yapılan konvert işlemi ektedir.
Karakter dizisinde 0~9 arasındaki tüm karakter değerlerini sıfır'a eşitliyerek diziyi doğrudan 32Bit Floating Point tabana çevirebilirsiniz.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
DELTA Electronics Turkey
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
- okannet
- Mesajlar: 12
- Kayıt: 09 Ara 2019, 16:43
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
Soylediginizi yapmaya çalışıyorum ancak ekrandaki ve adreslerdeki veriler sağa sola kaydığı için uygun yerleri 0 'la dolduramıyorum.
Veriyi direk as228t plc ile okuyabilirmiyim. Çıkış uçlarında rs485 için uygun olan d+ d- uçları var. Oradan rs232 ile haberleşip tartıyı okuyabilirmiyim. Ekran uzerinden haberleşmede bilgiyi kaçırma durumu oluyor diye tahmin ediyorum.
Veriyi direk as228t plc ile okuyabilirmiyim. Çıkış uçlarında rs485 için uygun olan d+ d- uçları var. Oradan rs232 ile haberleşip tartıyı okuyabilirmiyim. Ekran uzerinden haberleşmede bilgiyi kaçırma durumu oluyor diye tahmin ediyorum.
- Turhan
- Mesajlar: 7736
- Kayıt: 07 Mar 2018, 16:06
- Konum: İstanbul
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
AS200 CPU üzerinde yalnzıca seri port modbus haberleşme üzerinden RS-485 arabirimini desteklemektedir. RS-232 portu, AS00SCM-A ilave modülü üzerinden AS-F232 fonksiyon kartı ile desteklenmektedir.
Gönderdiğim örnek komut satırlarında HMI üzerinde 20 uzunlukta karakter okuma başarılı ise veriler BMOV komutu ile D100 datasına taşıdığınızda DTM ve $FVAL komutları yardımı ile okunan veri D400 (sonuc tag adresi) datasına floating point tabanda yazılıyor olmalı.
Eğer bu örnek komut satırları ile veri düzgün okunamıyor ise Aygıt görüntüleme penceresinden D100 datasından itibaren ardışık 10 Word datayı ASCII formatta görüntüleyip bu ekran görüntüsünü mesaja ekleyebilirimisiniz?
Gönderdiğim örnek komut satırlarında HMI üzerinde 20 uzunlukta karakter okuma başarılı ise veriler BMOV komutu ile D100 datasına taşıdığınızda DTM ve $FVAL komutları yardımı ile okunan veri D400 (sonuc tag adresi) datasına floating point tabanda yazılıyor olmalı.
Eğer bu örnek komut satırları ile veri düzgün okunamıyor ise Aygıt görüntüleme penceresinden D100 datasından itibaren ardışık 10 Word datayı ASCII formatta görüntüleyip bu ekran görüntüsünü mesaja ekleyebilirimisiniz?
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
DELTA Electronics Turkey
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
- okannet
- Mesajlar: 12
- Kayıt: 09 Ara 2019, 16:43
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
Merhaba;
Söylediğinizi yapmak için kodu ile verileri gönderdim.
PLC online modda izler iken alınan dizi sürekli oynuyor. dizinin içerisi veri paketini bazen tam düzgün alıyor bazen de veri sağa sola kaymış olarak geliyor. Sonuç değişkeninde de 0 görünüyor. Makro kodlarının tamamı da aşağıdaki gibidir.
Verileri kontrol edip boşluk olanları 0 atacağım ancak 2 adet if koşulunu AND ile bağlayamadım. IF ($10==1 && $100=='0') gibi bir karşılaştırmayı nasıl yaparım.
Söylediğinizi yapmak için
Kod: Tümünü seç
BMOV(({EtherLink1}1@D100), $200, $20)
PLC online modda izler iken alınan dizi sürekli oynuyor. dizinin içerisi veri paketini bazen tam düzgün alıyor bazen de veri sağa sola kaymış olarak geliyor. Sonuç değişkeninde de 0 görünüyor. Makro kodlarının tamamı da aşağıdaki gibidir.
Verileri kontrol edip boşluk olanları 0 atacağım ancak 2 adet if koşulunu AND ile bağlayamadım. IF ($10==1 && $100=='0') gibi bir karşılaştırmayı nasıl yaparım.
Kod: Tümünü seç
$0 = INITCOM(0, 0, 1, 0, 0, 6, 0)
SELECTCOM(0)
$10 = GETCHARS($100, 20, 400)
IF $10==1
BMOV($200, $100, 20)
BMOV(({EtherLink1}1@D100), $200, $20)
CLEARCOMBUFFER(0, 0)
$10 = 0
$20 = $20 + 1
ENDIF
END
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.
- Turhan
- Mesajlar: 7736
- Kayıt: 07 Mar 2018, 16:06
- Konum: İstanbul
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
Merhaba,
Verinin eksik yada fazla okunmasının önüne geçmek için GETCHARS makro komutu ile okunan verinin boyutu yalnızca 20 uzunluğunda ise okunan karakter dizisini PLC'ye göndermiştik. Bu durumda verinin sağa yada sola kesinlikle kaymaması gerekirdi.
Eğer birden fazla karşılaştırma şartına göre HMI içerisinde bir işlemi gerçekleştirmek isterseniz aşağıdaki gibi örnek komutu kullanabilirsiniz. Açıklamalar komut satırlarında yer almaktadır.
===============================
# $0 datasının değeri 1'e eşit ise $100.0 SET, 0'a eşit ise $100.0 RESET
IF $0 == 1
BITON $100.0
ELSE
BITOFF $100.0
ENDIF
# $1 datasının değeri 1'e eşit ise $100.0 SET, 0'a eşit ise $100.0 RESET
IF $1 == 1
BITON $100.1
ELSE
BITOFF $100.1
ENDIF
#$100 3'e eşit ise (Aslında $0 ve $1 datalarının her ikiside 1 ise)
#$50 datasını Block Move komutu ile D100 datasına taşır. n:10 word
IF $100 == 3
BMOV(({Link2}1@D100), $50, 10)
ENDIF
END
===============================
Verinin eksik yada fazla okunmasının önüne geçmek için GETCHARS makro komutu ile okunan verinin boyutu yalnızca 20 uzunluğunda ise okunan karakter dizisini PLC'ye göndermiştik. Bu durumda verinin sağa yada sola kesinlikle kaymaması gerekirdi.
Eğer birden fazla karşılaştırma şartına göre HMI içerisinde bir işlemi gerçekleştirmek isterseniz aşağıdaki gibi örnek komutu kullanabilirsiniz. Açıklamalar komut satırlarında yer almaktadır.
===============================
# $0 datasının değeri 1'e eşit ise $100.0 SET, 0'a eşit ise $100.0 RESET
IF $0 == 1
BITON $100.0
ELSE
BITOFF $100.0
ENDIF
# $1 datasının değeri 1'e eşit ise $100.0 SET, 0'a eşit ise $100.0 RESET
IF $1 == 1
BITON $100.1
ELSE
BITOFF $100.1
ENDIF
#$100 3'e eşit ise (Aslında $0 ve $1 datalarının her ikiside 1 ise)
#$50 datasını Block Move komutu ile D100 datasına taşır. n:10 word
IF $100 == 3
BMOV(({Link2}1@D100), $50, 10)
ENDIF
END
===============================
DELTA Electronics Turkey
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
- okannet
- Mesajlar: 12
- Kayıt: 09 Ara 2019, 16:43
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
Merhaba;
Veride kayma olmadığı anlarda da sonuç değişkeni hep 0 kalıyor.
Verideki kaymayı önlemek için seri porttan gelen verinin ilkinin S harfi olduğunu ve $10 adresine gelen "Bilgi başarılı olarak alındı" şartlarına göre verileri bir diziye almak istiyorum. Örneğin aşağıdaki gibi bir kod yazıyorum ama IF bloğunun olduğu satırda syntax hatası veriyor. IF (($10==1) && ($100=='S')) yazdığımda da aynı hatayı alıyorum. C dilindeki gibi şartları & ile bağlama yapılamıyor mu acaba.
Veride kayma olmadığı anlarda da sonuç değişkeni hep 0 kalıyor.
Verideki kaymayı önlemek için seri porttan gelen verinin ilkinin S harfi olduğunu ve $10 adresine gelen "Bilgi başarılı olarak alındı" şartlarına göre verileri bir diziye almak istiyorum. Örneğin aşağıdaki gibi bir kod yazıyorum ama IF bloğunun olduğu satırda syntax hatası veriyor. IF (($10==1) && ($100=='S')) yazdığımda da aynı hatayı alıyorum. C dilindeki gibi şartları & ile bağlama yapılamıyor mu acaba.
Kod: Tümünü seç
IF ($10==1 && $100=='S')
BMOV($200, $100, 20)
BMOV(({EtherLink1}1@D100), $200, $20)
ENDIF
- okannet
- Mesajlar: 12
- Kayıt: 09 Ara 2019, 16:43
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
Merhaba;
Verinin sağa sola kayma problemi baud hızını artırdıktan sonra çok nadir olmaya başladı ve bu şekilde idare edebiliriz ancak gönderdiğiniz plc programında sayıya dönüştürme işlemi bir kez çalışıp bir daha çalışmıyor, bazen de hiç çevirmiyor.
PLCdeki çevirme işlemini yapmanın başka bir yolu var mıdır.
Gönderdiğim ekran görüntüsünde de gördüğünüz gibi D100 nolu adrese SU karakterleri yanyana görünüyor. Sanki bir veri tipi uyuşmazlığı var gibi ama çözemedim.
Verinin sağa sola kayma problemi baud hızını artırdıktan sonra çok nadir olmaya başladı ve bu şekilde idare edebiliriz ancak gönderdiğiniz plc programında sayıya dönüştürme işlemi bir kez çalışıp bir daha çalışmıyor, bazen de hiç çevirmiyor.
PLCdeki çevirme işlemini yapmanın başka bir yolu var mıdır.
Gönderdiğim ekran görüntüsünde de gördüğünüz gibi D100 nolu adrese SU karakterleri yanyana görünüyor. Sanki bir veri tipi uyuşmazlığı var gibi ama çözemedim.
- Turhan
- Mesajlar: 7736
- Kayıt: 07 Mar 2018, 16:06
- Konum: İstanbul
- İletişim:
- Durum: Çevrimdışı
Re: DOP-107EV
DTM ve $FVAL komutları ile konvert işlemi sorunsuz gerçekleştirilebiliyor. Desteklenen diğer komutlar için AS Series Programming Manual başlığını ziyaret edebilirsiniz.
Seri portdan gelen ilk iki karakterin SU olduğunu teyid etmek istiyorsanız bunu S ve U harflerine karşılık gelen ASCII HEX değerini referans almalısınız.
$100 => SU => H5553 => 21843
=======================
IF $100 == 21843
BITON $500.0
ELSE
BITOFF $500.0
ENDIF
END
=======================
Seri portdan gelen ilk iki karakterin SU olduğunu teyid etmek istiyorsanız bunu S ve U harflerine karşılık gelen ASCII HEX değerini referans almalısınız.
$100 => SU => H5553 => 21843
=======================
IF $100 == 21843
BITON $500.0
ELSE
BITOFF $500.0
ENDIF
END
=======================
DELTA Electronics Turkey
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.
Forum mesajlarınız, kullandığınız ürünlere ait tam model kodları ve detaylı teknik açıklamalar içermelidir.