Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

485 indentifikacija slejvova

[es] :: Elektronika :: Mikrokontroleri :: 485 indentifikacija slejvova

Strane: 1 2

[ Pregleda: 1571 | Odgovora: 29 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ZAS011
Uzgajivač šargarepe izakuće
Beograd, Vračar

Član broj: 288510
Poruke: 4258
178-223-49-74.dynamic.isp.telekom.rs.

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+486 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 01:48 - pre 14 meseci
Miki, iz prvog linkovanog dokumenta:
Citat:
A master-slave type system has one node (the master node) that issues explicit commands to one of the "slave" nodes and processes responses. Slave nodes will not typically transmit data without a request from the master node, and do not communicate with other slaves.


--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

sdurut
Mašinbravar

Član broj: 76787
Poruke: 520



+33 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 06:51 - pre 14 meseci
Pogledaj u ovom dokumentu na strani 55 kako je rešena prozivka nepoznatog broja slejvova na strujnog petlji. Veoma jednostavno rešenja sa vremenskim slotovima. Ove module sam koristio i takođe ovaj protokol. Inače ovo je standardni X.28 komunikacioni protokol. Ne treba izmišljati toplu vodu. Ovo provereno radi.

ACG Reader module manual PDF
 
Odgovor na temu

scoolptor

Član broj: 305514
Poruke: 1184



+456 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 11:03 - pre 14 meseci
Veselinovicu, ukratko.

Sta treba da se uradi?

1. Master treba da na pocetku komunikacije izvrsi enumeraciju svih slave-ova
2. Dalje u toku komunikacije, master treba povremeno da izvrsi enumeraciju novih slave-ova, koji su naknadno dodati u sistem.

Kako se razlikuju slave-ovi?
1. Imaju ASCII ime, za koje nije garantovano da je jedinstveno
2. Imaju 48 bitni broj S_ID koji je jedinstven

Sta ce mater raditi kada identifikuje slave?
1. dodelice mu jedinstveni broj M_ID (recimo jedinstveni broj u opsegu 1..255), koji ce u masterovoj listi slave-ova biti povezan sa jedinstvenim identifkacionim brojem slave-a S_ID.

M_ID S_ID
1 0x442738
2 0x44274c
3 0x4429a7
...

Kako slave zna kada mu se master obraca?
1. dok nije identikovan, prati broadcast poruke, i poruke sa svojim jedinstvenim identifikacionim brojem S_ID (za dodeljivanje M_ID).
2. kada je identifkovan pa na dalje, prati poruke sa M_ID-om dodeljenim od strane mastera

Ako zelimo da koristimo vremenske slotove, treba da razmislimo koliko cemo vremenskih slotova da upotrebimo. Veliki broj slotova ce osakatiti komunikaciju.
Posto je jednoznacni identifikator S_ID duzine 48 bita, trebali bi da upotrebimo ogroman broj slotova (2^48), da bi se izbegle kolizije.

Ako vec ne mozemo da izbegnemo kolizije, treba da razmislimo kako se moze implementirati detekcija istih.

1. Detekcija kolizije od strane slave-a za vreme slanja, i prekid istog verovatno ne dolazi u obzir, posto mikrokontroleri i RS485 drajveri, nisu dizajnirani za ovu funkciju. Eventualno se moze pratiti stanje busa, pre pocetka slanja odgovora.

2. Preostaje detekcija od strane master-a, npr. primenom EDC-a, kao sto je CRC32, na osnovu koga moze sa odredjenom pouzdanoscu da odlici da li je odgovor koji je primljen od slave-a ispravan ili ne.

Zasto onda ne upotrebimo i vremenske slotove i detekciju kolizija?

Na pocetku komunikacije master salje komandu za enumeraciju, koja sadrzi n i s, koja znaci znaci da:

1. svaki slave koji do sada nije identifikovan od strane mastera (koji nema M_ID) treba da na osnovu s i S_ID pripremi hash vrednost duzine n bita
2. s je seed za izracunavanje hash-a
3. na raspolaganju ce biti 2^n slotova za odgovor
4. svaki slave koji do sada nije identifikovan od strane mastera (koji nema M_ID) treba da unutar vremenskog slota ciji je redni broj jednak izracunatoj hash vrednosti, posalje S_ID i EDC kod.

Ako master na pocetku konekcije posalje komandu za enumeraciju sa recimo n = 8, bice na raspolaganju 256 vremenskih slotova.
Nakon slanja komande za enumeraciju, master slusa odgovore, i pamti sve odgovore sa ispravnom kombinacijom S_ID i EDC.

Kada prodje vreme za sve vremenske slotove, master individualno kontaktira svaki od ovih slave-a putem zapamcenih S_ID-ova , i dodeljuje im jedinstveni M_ID. Ovde moze da se implementira dodatna kontrola.

Zatim master moze da ponovi proceduru par puta, pri tome menjajuci s, kako bi bilo moguce da se slave-ovi koji su prvi put imali istu hash vrednost raspare, i sledeci put okupiraju druge vremenske slotove.

Kada nakon slanja komande za enumeraciju, izostane odgovor za vreme trajanja svih vremenskih slotova, svi slave-ovi su identifikoavni.

Treba biti pametan i smisliti kako ce raditi hash funkcija koja za ulaz ima vrednost s, i S_ID, a za izlaz hash vrednost duzine n bita.

Dalje u komunikaciji, kada je ocekivani broj novih slave-ova u jedinici vremena mnogo manji nego na pocetku iste, master moze povremeno da zapocne proceduru enumeracije novih slave-ova sa n=2, n=4 itd, da bi se manje gusila komunikacija sa manjim brojem vremenskih slotova.

Ukoliko se neki slave resetuje, on ce se prilikom sledece enumeracije slave-ova ponovo javiti masteru, a master ce mu dodeliti isti M_ID (3), na osnovu S_ID-a (0x4429a7), koji ima u listi slave-ova.


[Ovu poruku je menjao scoolptor dana 19.08.2019. u 13:56 GMT+1]
Forget your lust for the rich man's gold
All that you need is in your soul
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3473
31.223.133.204



+259 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 20:10 - pre 14 meseci
Hvala svima na odgovorima.
Skulptore,
pazi sad ovamo:

Kako slave zna kada mu se master obraca?
1. dok nije identikovan, prati broadcast poruke, i poruke sa svojim jedinstvenim identifikacionim brojem S_ID (za dodeljivanje M_ID).


Problem je sto master inicijalno nema pojma o S_ID nijednog slejva. Kao ni podatak ima li i koliko slejvova.



Treba biti pametan i smisliti kako ce raditi hash funkcija koja za ulaz ima vrednost s, i S_ID, a za izlaz hash vrednost duzine n bita.

E ovo je kljucni problem koji postoji od ispocetka.
Nesto cu vec skontati.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15267
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2323 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 20:28 - pre 14 meseci
a vidi ti pokusavas da nabudzis kompleksan sistem a da ga koriste
pajseri :( ... i naravno da je nemoguce .. zato se ti ogradis procedurom
koja mora se ispostuje i bas te briga .. u tom slucaju ti imas mogucnost
da napravis "kako oces" jer mora se postuje ta procedura ...

npr, slave NEMA ID, ima eprom/flash gde moze da ga sacuva i originalno
ga nema

u slucaju da se slave podize "sa nekom forom" (kao sto mu setujes to ime
negde nekako) on ako ima slucajno ID on ga sam sebi obrise, ili svaki
put kad mu menjas to "ime" obrises mu ID ako ga slucajno ima..

"novi" slave se dodaje u chain SAMO PO JEDAN

i dalje ti je jasno .. master na svakih X ili na svaki restart, ili ...
posalje broadcast, i slave ako nema ID javlja se na broadcast i kaze
"eve me kume daj mi ID" i ovaj mu posalje novi id i eto registrovo se ...

ili umesto "nema id" slave po defaultu ima id "-1" (sve ostalo isto, sam
sebi postavi -1 kad mu menjas ime etc etc), master povremeno, posle
reseta, kad zelis, na dugme, posalje poruku na -1 i kaze, aj kume ako si
tu javi se, i onda ako se jave, super kume ti si sad ID xyz ..

u svakom slucaju onda master postavlja ID koji on oce za novog slave-a i
registracija radi lako, master zna koga ima, kad ga je dodao, slave zna
ko je i koji mu je id ..

ako neces tako onda opet kao standardan 10base2, znaci posaljes "ko je
sve novi" broadcast, i oni se svi jave, javljaju se tako sto "slusa dal
ima nesto na mrezi, ako nema javi se, ako kad krene da se javlja dobije
koliziju saceka random * 100ms pa opet slusa dal ima koga na mrezi, pa
ako nema krene da se javlja..."
 
Odgovor na temu

scoolptor

Član broj: 305514
Poruke: 1184



+456 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 21:10 - pre 14 meseci
Citat:

Problem je sto master inicijalno nema pojma o S_ID nijednog slejva. Kao ni podatak ima li i koliko slejvova.

S_ID ove nauci iz odovora u time slotovima gde nije doslo do kolizije.
Potom piziva svaki slave i dodeljuje mu M_ID.

Citat:

Treba biti pametan i smisliti kako ce raditi hash funkcija koja za ulaz ima vrednost s, i S_ID, a za izlaz hash vrednost duzine n bita.

E ovo je kljucni problem koji postoji od ispocetka.
Nesto cu vec skontati.


Nista lakse. Uzmes 6 bajtova S_IDa dodas sedmi s, izracunas CRC8 za ovu sekvencu bajtova, i uzmes n bitova, pocev od pozicije 0.

Sa jednim s npr. slaveovi 2 i 7 ce zauzimati isti time slot, pa ce doci do kolizije, a sa drugim nece, pa ce moci da se identifikuju.


Forget your lust for the rich man's gold
All that you need is in your soul
 
Odgovor na temu

scoolptor

Član broj: 305514
Poruke: 1184



+456 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 21:27 - pre 14 meseci
Broadcast. Enumeracija: s=0, n=8
Svi slaveovi izracunaju hash u opsegu 0 .. 2^8-1=255 na gore opisan nacin.
6 slaveova imaju jedinstven hash, dok dve grupe po dva slavea imaju isti hash.
Svi slaveovi posalju svoj S_ID+CRC16 unutar svog slota ciji redni broj odgovara izracunatom hashu.
Slaveovi sa jedinstvenim hashom bivaju prepoxnati od strane mastera, koji salje lo jednu komandu dodele M_ID svakom slaveu sa identifikovanim S_IDom
Potom master ponavlja enumeraciju sa s=1, n=4
Preostali slaveovi pripremaju hashove u opsegu 0..15, i odgovaraju unutar svojih vremenskih slotova.
Sada prvi i cetvrti preostali slave ima jedinstven hash dok drugi i treci imaju isti hash.
Itd.
Nakon 2 nove iteracije enumeracije nema vise odgovora, i svi slaveovi zu identifikovani.

Periodicno se enumerisu novi slaveovi sa n=2 odnosno 4 vremenska slota.
Itd.

Forget your lust for the rich man's gold
All that you need is in your soul
 
Odgovor na temu

scoolptor

Član broj: 305514
Poruke: 1184



+456 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 21:34 - pre 14 meseci
Ako dodje do reseta slavea on se javlja kao novi slave za vreme sledece enumeracije, a master ce mu dodeliti isti M_ID koji je imao ranije, jer pri dodeli M_IDa prvo proverava da li je S_ID u trenutnoj listi slaveova cije je S_IDove naucio za vreme prethodnih enumeracija.

Ako se resetuje master, ide sve od nule.
Forget your lust for the rich man's gold
All that you need is in your soul
 
Odgovor na temu

scoolptor

Član broj: 305514
Poruke: 1184



+456 Profil

icon Re: 485 indentifikacija slejvova19.08.2019. u 22:26 - pre 14 meseci
Poboljsanje, ako se uspe u inplementaciji detekcije kolizije slave-ovim MCUom, da slaveovi postanu tihi, tj. da ne pokusavaju ponovo da se oglase, do kraja vremena za time slotove, i nove broadcast komande za enumeraciju.
Forget your lust for the rich man's gold
All that you need is in your soul
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3473
31.223.133.227



+259 Profil

icon Re: 485 indentifikacija slejvova04.09.2019. u 06:20 - pre 13 meseci
Na zalost nisam jos probao ideju,
iskrslo je nesto trece da se mora zavrsiti.
Mislim da imam kompletno sve u glavi, ostaje da se proba.
Javicu se ja sa rezultatima.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: 485 indentifikacija slejvova

Strane: 1 2

[ Pregleda: 1571 | Odgovora: 29 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.