1. sayfa (Toplam 2 sayfa)
RS232
Gönderilme zamanı: 10 Eyl 2020, 12:37
gönderen nebusta
İyi günlere
Ekranım Dop107EV Plc ise SV2,
Keyence Sensör ile RS232 üzerinden haberleşmem gerekiyor. COM1 poru üzerinden yapacağımız haberleşmede veri almak ve göndermek için bir örnek verebilir misiniz sensörün manualini ekte paylaştım?
Daha önce TM-3000 ile yapılmaya çalışılmış ama buradaki komutların ne olduğunu hakim olmadığımdan hangisini değiştirmem gerekiyor bilemiyorum.
$0 = INITCOM(0, 0, 1, 0, 0, 6, 0)
SELECTCOM(0)
FILLASC($200, "MA")
$201 = 0D0DH
$10 = PUTCHARS($200, 4, 300)
$30 = GETCHARS($100, 50, 500)
Şimdiden teşekkür eder iyi çalışmamalar dilerim.
Re: RS232
Gönderilme zamanı: 10 Eyl 2020, 14:17
gönderen Uğur
Aşağıdaki açıklamaya çalıştığım şekilde sensörün gereksinimi olan değişiklikleri yaparak adaptasyonunu yapabilirsiniz.
$0 = INITCOM(0, 0, 1, 0, 0, 6, 0) ---> COM1 portu 9600-8-None-1 olarak ayarlanır (makro sihirbazında açtığınızda karşılığı ayarlanacaktır)
SELECTCOM(0) ---> Haberleşme için COM1 portu seçilir
FILLASC($200, "MA") ---> $200 den itibaren ASCII olarak MA karakteri yazılır (Bu sensörün veri göndermesi için beklediği karakter olması sebebiyle)
$201 = 0D0DH ---> $200 e MA yazıldıktan sonra verinin sonuna enter satırbaşınının karşılığı olan 0D0A eklenir
$10 = PUTCHARS($200, 4, 300) ---> Tüm hazırlık yapıldıktan sonra bu 4 byte 2 word veri COM1 portundan gönderilir
$30 = GETCHARS($100, 50, 500) ---> Gönderdiğimiz yukarıdaki sorguya sensörden gelen cevap $100 den itibaren datalara yazılır.
Re: RS232
Gönderilme zamanı: 10 Eyl 2020, 17:31
gönderen nebusta
Teşekkürler Uğur bey,
$0, $10, $30 atamalarının bir anlamı nedir yani onlardan herhangi bir veriyi kontrol edebilir miyim ? Birde kırmızı ile işaretlediğim 300 ve 500 anlamı nedir?
$0= INITCOM(0, 0, 1, 0, 0, 6, 0)
FILLASC($200, "MA")
$10 = PUTCHARS($200, 4, 300)
$30 = GETCHARS($100, 50, 500)
Re: RS232
Gönderilme zamanı: 10 Eyl 2020, 17:41
gönderen Uğur
Evet komutun sonucuna dair 0 yada 1 şeklinde değer üretirler genelde.
Re: RS232
Gönderilme zamanı: 11 Eyl 2020, 08:21
gönderen nebusta
iyi günler
örnekteki komut kümesini yazdığım zaman anlamsız cevaplar geliyor nedeni ne olabilir ?
Re: RS232
Gönderilme zamanı: 11 Eyl 2020, 09:36
gönderen Uğur
Burada çalışma şekli uyumsuzluğuda olabilir. Yani cihaz sizden komut beklemeden sürekli ver basma modunda olabilir ve sizde o an komut gönderdiğinizde veriyi bozuyor olabilirsiniz. Protokol ve haberleşme hızı ile alakalı uyumsuzluk olabilir buda anlamsız karakterleri ortaya çıkarır.
Re: RS232
Gönderilme zamanı: 18 Eyl 2020, 14:19
gönderen nebusta
İyi günler
farklı tetiklemer ile farklı komutlar göndermek istiyorum.
Her tetikleme durumunda $0 = INITCOM(0, 0, 1, 0, 0, 6, 0), SELECTCOM(0) yazmalımıyım. Birde her farklı komutta farklı adresler mi kullanmalımıyım ? örneğin buradaki kırmızı adresler. FILLASC($200, "S0") $201 = 0D0DH $10 = PUTCHARS($200, 4, 300) $30 = GETCHARS($100, 50, 500)
Örnek olarak $5 tetiklenince "DC,C" biginisini
$6 tetiklenince "S2" bilgisini
$7 tetiklenince "M11110000"
bilgisini gönderen programı paylaşabilir misiniz?
Şimdiden teşekkürler...
Re: RS232
Gönderilme zamanı: 18 Eyl 2020, 15:01
gönderen Uğur
Hangi komutun önce verileceği bilinmiyorsa INITCOM her zaman olmalıdır. Bu makroları ayrı ayrı butonlara ON makroda yazarak sadece içerisindeki değişkenleri değiştirip gerçekleştirebilirsiniz.
Re: RS232
Gönderilme zamanı: 18 Eyl 2020, 15:26
gönderen nebusta
Dediğiniz gibi adresleri değiştirerek bu şekilde denedim komutun uzunluğuyla alakalı hata geliyor. burada $300 den başlayarak kaçıncı registera kadar dolduruyor. Yani $301 de mi olmalı sonlandırma komutu ?
$0 = INITCOM(0, 0, 1, 0, 0, 6, 0)
SELECTCOM(0)
FILLASC($300, "M11110000")
$301 = 0D0DH
$15 = PUTCHARS($300, 4, 300)
$35 = GETCHARS($150, 50, 500)
Re: RS232
Gönderilme zamanı: 18 Eyl 2020, 15:49
gönderen Uğur
M11110000
Her 2 karekter bir word işgal eder.
$300 = M1
$301 = 11
$302 = 10
$303 = 00
$304 = 0