RS-485 a automaticka "enumerace"?

Slavomir Skopalik skopalik na elektlabs.cz
Úterý Červen 15 02:49:13 CEST 2010


Uplne ciste to nepujde, ale pouzil bych neco takoveho:

Poslat broad cast, pro vsechna zarizeni.
Kazde zarizeni si vygeneruje nahodny (nebo predem definovany)
casovy interval.
Interval je spusten okamzikem uvedeni RS485 do klidu, prijem libovolneho
znaku jej restartuje.

Pokud interval vyprsi, zarizeni odesle svou identifikaci (chraneno silnym
CRC).

Po time outu master obesle nalezene zarizeni s tim, ze je jiz zna a zkusi
dalsi
kolo identifikace.

Toto opakuje do doby, dokud nekdo odpovida (kolize).

Neni to uplne korektni, ale melo by to byt funkcni (po drobnem doladeni).

V praxi se nejcasteji pouziva prohledani adres (1 byte), jelikoz se stejne
pro kazde zarizeni nastavuje adresa.
Duvod je, ze pri udrzbe pak jednoduse prohodite HW a nastavite adresu
pripinacem.

Vyjimkou je treba INELS, kde vymena vypinace znamena zasah do programu.

Slavek

Ing. Slavomir Skopalik
Jednatel spolecnosti
Elekt Labs s.r.o.
Sber a vyhodnoceni dat ze stroju a laboratori 
systemem MASA (http://www.elektlabs.cz/m2demo)
----------------------------------------------
Adresa:
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
----------------------------------------------
Mobil: +420 724 207 851
icq:199 118 333
e-mail:skopalik na elektlabs.cz
http://www.elektlabs.cz



> Premyslel jsem o tom, zda-li by sel po RS-485 naimplementovat 
> obdobny algoritmus pro detekci/"enumeraci" pripojenych 
> zarizeni, jako ma 1-wire. Tam ma kazde zarizeni "MAC-adresu" 
> a pomoci algoritmu se postupne a rekurzivne bit po bitu 
> testuje, jestli existuje zarizeni, ktere ma v danem bitu 1, nebo 0.
> 
> Pochopitelne toto na RS-485 nejde naimplementovat primitivne, 
> protoze pokud by nejake zarizeni zaroven vysilalo 1 a jine 
> zaroven 0, dojde ke "zkratu" a (krome vetsiho odberu) je 
> vysledek nedefinovan.
> 
> Cili me napadla jina vec: pro ucely tohoto algoritmu by slave
> v pripade "0" vubec nevysilal, v pripade "1" by vysilal 
> logickou 1. Je neco takoveho na RS-485 spolehlive proveditelne?
> 
> Anebo jinak:
>  a) muzu se spolehnout, ze pokud nevysila zadny slave,
> bude master cist "0"? (predpokladam linku s pull-upy
> a pull-downy na koncich , krome terminatoru)
>  b) pokud budou dva slavy v jeden okamzik oba vysilat
> "1":
>   1) muzu se spolehnout, ze master precte "1"?
>   2) nedojde k nejakemu "zakazanemu" stavu (napr. s vysokym 
> odberem, nestabilnim, atd.)?



More information about the Hw-list mailing list