unique ID dağıtma

Başlatan muhittin_kaplan, 07 Aralık 2013, 17:09:04

muhittin_kaplan

Elimizde sayısı 127 adet olan (sayı 2 nin katları olabilir) slave cihaz var. bu cihazlar yazılım ve donanım olarak özdeş ve hiçbirinde adres namına bir numara id felan yok.
Bir adet de master cihaz var. hepsini aynı anda çalıştırıyoruz. master cihaz bunlara nasıl id verebilir ?
ardından  iletişime geçireceğim ve master hangi cihazdan bilginin geldiğini bilebilecek.

skara1214

biraz zihni sinir bir fikir olarak dataların gelme süreleri olabilir.yani siz yolladınız cevap gelene kadar timer kurdunuz(yolladıgınız datada aynı oranda geç gideceği için *2 lik bir gecikme olabilir).yakından cevap en hızlı şekilde gelecektir.
Herkes ölür ama herkes gerçekten yaşamaz

F.T

Hocam hepsine beraber soru sorarsanız hepsi beraber cevap verme moduna girerse kimin ne dediği anlaşılamaz.   ;)
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

muhittin_kaplan

Hocam Orada Başladı Zaten Olayı Sorgulamam,
Cihazlara Master bir şekilde ID dağıtmalı

Klein

Alıntı yapılan: muhittin_kaplan - 07 Aralık 2013, 17:09:04
master hangi cihazdan bilginin geldiğini bilebilecek.
hangi cihazdan bilgi geldiğini bilebilecek ne demek?
Master tarafından veilen ID haricinde, cihazları tanımasını sağlayabilecek başka bir özellik mi var?

muhittin_kaplan


Klein

STM32 kullanacaksan :
aygıtları birbirinden ayırmak için "Unique Device ID"  registerini kullanabilirsin. 

Master  kimler aktif diye mesaj  yayımlar.
Unique ID değerine göre her cihaz için bir gecikme değeri olur. gecikme süreleri arasındaki fark  1 byte gönderme süresinden kısa olmaz.
En küçük ID'ye sahip aygır hatta girip ID verisini yollar.  diğerleri hattan çıkar.
Master ilgili aygıta adres ID'si yollar. Bir dahaki sorguda bu aygıt hatta girmez.
tüm aygıtlar bitene kadar işlem sürer. 


islergucler

1 master 1 slave calıstırıp sırayla tüm cihazlara bir kere id dagıtırsın.

salih18200

Bende bu tarz bir duruma şu şekil çözüm getirmiştim (kablosuz haberleşme). Cihazların hepsinin yazılımı aynı bunlara ID vermem gerekiyordu. Bir adet ID veren birim tasarladım. Cihazlar ilk çalışma anında ID almak için bu birime bağlanmaya çalışıyor. ID atanana kadar asıl görevlerini yerine getirmiyorlar. Elimde 100 adet ID atanacak cihaz olsun. Hepsinin  sıra ile enerjilendirerek ID'lerini ardışıl bir şekillde atıyorum. Aldıkları ID leri dahili roma kayıt ediyorlar ve bir dahaki çalışmada rom da ID leri olduğu için normal işlemlerine devam ediyorlar. Bu işlemi bir defaya mahsus ürünleri sahaya sürmeden önce montaj esnasında yapıyorum.

Burak B

   DHCP mantığı kullan. Tüm cihazlar aynı anda bile çalışsa hepsi ID alacaktır ve sorunsuz bir şekilde çalışırlar. Mantık basittir. Tüm cihazlar aktif olduklarında Masterdan bir ID isterler. Master ID tablosuna bakıp şunu istermisin diye sorar cihazda istemem demez. Kabul edilen ID tabloya yazılır ve tahsis bayrağı işaretlenir. ID sorgusu için başka yöntemlerde önerilebilir.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

muhittin_kaplan

Alıntı yapılan: Klein - 07 Aralık 2013, 18:21:50
STM32 kullanacaksan :
aygıtları birbirinden ayırmak için "Unique Device ID"  registerini kullanabilirsin. 

Master  kimler aktif diye mesaj  yayımlar.
Unique ID değerine göre her cihaz için bir gecikme değeri olur. gecikme süreleri arasındaki fark  1 byte gönderme süresinden kısa olmaz.
En küçük ID'ye sahip aygır hatta girip ID verisini yollar.  diğerleri hattan çıkar.
Master ilgili aygıta adres ID'si yollar. Bir dahaki sorguda bu aygıt hatta girmez.
tüm aygıtlar bitene kadar işlem sürer.
uniq device id reg bilgiyi  id olarak kullansam.
Yazdigim prog. Bunu alir ve master a bilgiyle beraber yollar

Erhan YILMAZ

Anladığım kadarıyla burada asıl problem tüm slaveların aynı anda master ile haberleşmek istemesi durumu. Bu durumu önlemek için her cihaz başlangıçta 0-127 arası rastgele bir sayı üretip bu ürettiği değeri 1 mili saniye 100 mikro saniye 10 mikrso saniye veya herhangi bir zaman birimi ile çarpıp o kadar süre bekledikten sonra master ile iletişime geçebilir. Bekledikten sonra slave mastera "merhaba ben x. Daha iyi iletişim kurabilmemiz için bana ID verebilir misin?" Der Bu şekilde daha az çakışma olur ve kısa bir sürede tüm slavelar ID'sini almış olur diye düşünüyorum.

muhittin_kaplan

Erhan klein in dedigi mantikli. Zaten islemcimde bir uniq var onu kullanabilirim.
Denemesigimden bilmiyorum bu mcu icerisindeki id nin cakisma olasiligi nedir.
Ayrica erhan seninkide guzel fikir

Erhan YILMAZ

Alıntı yapılan: muhittin_kaplan - 07 Aralık 2013, 20:05:56
Erhan klein in dedigi mantikli. Zaten islemcimde bir uniq var onu kullanabilirim.
Denemesigimden bilmiyorum bu mcu icerisindeki id nin cakisma olasiligi nedir.
Ayrica erhan seninkide guzel fikir

ID çakışması için demedim abi zaten stlerde unıque yani benzersiz ID var yazıyor. ID açısından çakışma gibi birşey olmaz heralde. RF kısmında çakışma olması ihtimalini göz önüne alarak yazdım. Hepsi aynı frekansta ise aynı anda haberleşince sıkıntı olmaz mı?

muhittin_kaplan

Ayni freq olacak dogru. Mesaj cakismasini sen nasil engelleyeceksin. Mcu uniq id sadece hangi cihazin oldugunu verie..(benim dusuncem.rtc kullanarak zaman senkronu yapmak. Bu acidan baslangic icin senin dedigin yontem guzel)