<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=46&amp;t=7696&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-07-07T18:35:12+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=7696&amp;mode</id>
<entry>
<author><name><![CDATA[Jado]]></name></author>
<updated>2014-07-07T18:35:12+01:00</updated>
<published>2014-07-07T18:35:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86922#p86922</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86922#p86922"/>
<title type="html"><![CDATA[Re: Protokoły transmisji bezprzewodowych...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86922#p86922"><![CDATA[
Heh...dokładnej koncepcji jeszcze nie ma, bo dopiero teraz przyszedł czas na jej tworzenie.  <br />Najpierw musiałem sprawdzić jak działa sama transmisja (i nie obyło się bez pewnych problemów, na szczęście udało się je w miarę łatwo znaleźć).<br /><br />Właściwie, to nawet teraz dałem sobie przerwę z protokołem i robię co innego, żeby umysł trochę sobie odpoczął od tej tematyki, ale &quot;tematy się przewijają&quot; i same się &quot;wywołują do odpowiedzi&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Jak człowiek nie korzysta z jakiegoś gotowca, to otwiera się przed nim wiele możliwości i trzeba wybrać to, co nam najlepiej pasuje, ale zanim to się stanie, trzeba przećwiczyć to i tamto. <br />Chociaż muszę przyznać, że trochę pomysłów zaczerpnąłem ze specyfikacji protokołu LonTalk - jest to tam tak zgrabnie opisane <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Niestety CSMA/CD (w/g mojej wiedzy) nie da się zrobić z modułami radiowymi pracującymi w półdupleksie - moduł musiałby podczas nadawania jednocześnie nasłuchiwać linii, żeby stwierdzić że coś zakłóca transmisję.  A on niestety wyłącza nasłuch podczas nadawania <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /><br /><br />Jeśli chodzi o połączenia między nodami, to myślę o tym z tego względu, że mamy ciągłe zmiany w rodzajach transceiverów radiowych - te które są obecne teraz, za kilka lat mogą zostać wycofane z produkcji i trzeba będzie stosować nowe moduły.<br />Może zresztą będą one &quot;nowsze, lepsze i piękniejsze&quot; pod każdym względem i aż będzie się chciało je stosować. <br />Często jest tak, że nie są one kompatybilne wstecznie - zresztą, zmiana może być też z producenta X, na producenta Y, który zaproponuje lepsze układy.<br />W związku z tym trzeba będzie dołączać nowe gałęzie obok starych.<br />A muszą się one jakoś ze sobą komunikować. <br />Ale to oczywiście będzie sukcesywnie w razie potrzeby implementowane.  <br /><br /><br />Szczerze mówiąc, to raczej staram się stosować wszędzie &quot;minimalizm&quot;. To co powstaje wynika z tego, że jest to potrzebne.<br />Chociaż z drugiej strony czasami dobrze jest zrobić coś więcej - teraz wszyscy mamy kłopot z IPv4 i trzeba wprowadzać IPv6 <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br />To nie jest mój pierwszy protokół i pierwszy system automatyki domowej, ale &quot;to było już tak dawno temu&quot; (2002r), że wszystko się prawie teraz zmieniło, są nowe możliwości, nowe pomysły i znowu trzeba wszystko wymyślać od nowa. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />A głowa ma właśnie &quot;pęknąć&quot; - takie jest założenie, żeby trochę rozruszać szare komórki  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=852">Jado</a> — 7 lip 2014, o 18:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jado]]></name></author>
<updated>2014-07-07T15:08:50+01:00</updated>
<published>2014-07-07T15:08:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86893#p86893</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86893#p86893"/>
<title type="html"><![CDATA[Re: Protokoły transmisji bezprzewodowych...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86893#p86893"><![CDATA[
Na razie napisałem z grubsza warstwę niskopoziomową tj. automatyczne przechodzenie w stan RX po wysłaniu pakietu lub potwierdzenia, odczyt danych z FIFO RFM'a po nadejściu rozkazu, obsługę CSMA ze slotami czasowymi i losowym wyborem slotu oraz timingi na oczekiwanie na odpowiedź - i jeśli nie przyjdzie w ustalonym czasie, zgłoszenie błędu do warstwy wyższej. <br />Przy czym są dwa rodzaje response - krótki 1 bajtowy, potwierdzający tylko poprawne odebranie pakietu, oraz drugi 'długi', który jednocześnie zwraca dane (jeśli życzy ich sobie nadawca).<br />Tak, żeby nie marnować czasu na dodatkowy rozkaz typu &quot;przyślij dane&quot;.  <br />I to jak wydaje się działa OK.  <br /><br />Żeby uniknąć sytuacji, że któryś z nadajników asynchronicznych może się władować ze swoim pakietem w moment między wysłaniem pakietu, a response, ustaliłem minimalny czas oczekiwania po wykryciu wolnej linii zanim rozpocznie się nadawanie, na dłuższy niż czas rozpoczęcia wysyłania response (plus oczywiście losowe sloty czasowe, ale z tą losowością to bym nie przesadzał dla liczby 4 bitowej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" />). <br />Przy kolejnych powtórkach wymyśliłem sobie, że nadawca będzie stopniowo zwiększał moc nadawania po każdej powtórce.<br /><br />Pakiet jest o zmiennej długości - o jego wielkości powiadamia odbiorcę bajt 'length' - wykorzystałem tutaj sprzętową właściwość RFM'ów. <br />Wielkość pakietu max 64bajty danych (tyle ile się mieści jednorazowo w buforze FIFO.<br /><br />Tak to mniej więcej wygląda. <br />Warstwa wyższa jeszcze nie jest napisana - trzeba ją dopiero wymyślić <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Z tymi sesjami to możesz mieć rację <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" />- czytałem o zastosowaniu RTC/CTS w protokole CSMA/CA, aczkolwiek jak piszą &quot;nie wszyscy to implementują&quot;. <br /><br />Jak rozumiem, po wysłaniu żądania dostępu RTS do odbiorcy, odbiorca wysyła potwierdzenie CTS do nadawcy, ale jednocześnie jest to broadcast do wszystkich w sieci, żeby wstrzymali się ze swoimi próbami nadawania (czyli otwarcie kanału dostępu 1-na-1)?<br />Mówisz, że to musi być z time-out'em, żeby nie zablokować sieci?<br /><br />Zastanawiam się jeszcze nad sposobem zaimplementowania automatycznego logowania urządzeń/nowych urządzeń w sieci po włączeniu ich zasilania.<br /><br />Generalnie - mimo protokołu wielodostępowego chciałem, aby był jakiś sterownik nadrzędny (Master Controller), który mógłby być jednocześnie bramką do innych sieci (np. różne sieci bezprzewodowe, ethernet) oraz mógł on sterować pracą urządzeń na podstawie jakiś zdarzeń, itp...<br />Z drugiej strony intersująca byłaby inteligencja rozproszona, gdzie każde urządzenie mogłoby gadać z każdym niezależnie od MC. <br />Jeszcze nie mam ostatecznej koncepcji <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> Może da się zmieszać jedno z drugim.<br /><br />W tym kontekście &quot;logowanie do sieci&quot; musi wyglądać trochę inaczej dla każdego z rodzajów.  <br />Na szczęście moduły oferują możliwość rozkazów typu broadcast, więc można porobić kategorie urządzeń - i w przypadku logowania do sieci z rozproszoną inteligencją można by informować o swojej obecności tylko pewną grupę urządzeń (takim grupowym rozkazem) - tą którą taka obecność &quot;może zainteresować&quot;.<br /><br />Z drugiej strony - co rozumieć przez &quot;zalogowanie do sieci&quot; - bo jeżeli nowe urządzenie ma być &quot;wpięte w ciąg zdarzeń&quot; jaki się w sieci rozgrywa, to nie unikniemy chyba ręcznej konfiguracji &quot;jak na jakie zdarzenie ma dane urządzenie reagować&quot;?<br /><br />Chyba, że przez zalogowanie rozumieć tylko &quot;hej, nie bylem dostępny, ale już jestem, jak mieliście do mnie jakieś sprawy, to czekam na rozkazy&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Generalnie ma to służyć do automatyki domowej - na razie nic do końca nie jest jeszcze ustalone <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=852">Jado</a> — 7 lip 2014, o 15:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jado]]></name></author>
<updated>2014-07-07T13:23:41+01:00</updated>
<published>2014-07-07T13:23:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86874#p86874</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86874#p86874"/>
<title type="html"><![CDATA[Re: Protokoły transmisji bezprzewodowych...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86874#p86874"><![CDATA[
Qrcze - pisałem odpowiedź i jakaś dziwna przypadkowa kombinacja klawiszy zamknęła mi aplikację..... <img src="https://forum.atnel.pl/images/smilies/icon_evil.gif" alt=":evil:" title="Zły" /> <br /><br />Może jeszcze raz:<br /><br />Własnie u mnie jest tak, że gada każdy-z-każdym, więc musiałbym przechowywać numery rozkazów dla każdego z &quot;rozmówców&quot;, a dodatkowo ta liczba może być zmienna (jeśli wprowadzę &quot;logowanie urządzeń do systemu&quot;).<br /><br />W tej chwili jedyne sensowne rozwiązanie jakie mi przychodzi do głowy to takie:<br />Każdy pakiet ma bajt 'serializacji' zawierający liczbę odp. liczbie powtórek wysyłania pakietu.<br />Jeśli liczba ta wynosi zero=pierwszy pakiet, to warstwa wyższa protokołu obsługuje go normalnie (wykonuje rozkaz).<br />Natomiast jeśli serializacja&gt;0, to wówczas przed wykonaniem rozkazu następuje porównanie bieżącego pakietu z kopią poprzedniego pakietu i jeżeli to ten sam pakiet, to rozkaz zawarty w nim nie będzie wykonywany.<br /><br />To da tą oszczędność, że porównywanie nie będzie wykonywane za każdym razem, a tylko wówczas kiedy mamy do czynienia z powtórką. A bufory na dane z pakietów da się dwa, które będzie się tylko przełączać (unikamy dodatkowego kopiowania), a porównywać je będzie można 1-do-1'nego.<br /><br />Oczywiście w niższej warstwie komunikacji odbiorca będzie przesyłał za każdym razem stosowne potwierdzenie odebrania pakietu.<br /><br />To chyba ma sens <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Qrcze, dobrze jest napisać posta na Forum, bo wtedy jakoś lepiej się myśli <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=852">Jado</a> — 7 lip 2014, o 13:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jado]]></name></author>
<updated>2014-07-07T12:15:27+01:00</updated>
<published>2014-07-07T12:15:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86856#p86856</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86856#p86856"/>
<title type="html"><![CDATA[Protokoły transmisji bezprzewodowych...]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7696&amp;p=86856#p86856"><![CDATA[
Witam,<br /><br />W sąsiednim wątku (<!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7694.html" >topic7694.html</a><!-- l -->) na temat transmisji bezprzewodowej pojawił się interesujący mnie wpis, ale że nie chcę zaśmiecać autorowi jego tematu pozwoliłem sobie otworzyć mój własny &quot;podtemat&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br />Oto cytat stamtąd:<br /><div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />W trakcie transmisji może dojść do przekłamań i czasem trzeba będzie pakiet powtórzyć. Wtedy znacznik czasu może się przydać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /></div><br /><br />Możesz to rozwinąć? <br /><br />Bo może dojść do takiej sytuacji: Odbiorca poprawnie odebrał pakiet i wysłał potwierdzenie, a następnie wykonał rozkaz zawarty w pakiecie. Ale... Potwierdzenie nie doszło do nadawcy, więc ponawia on wysyłanie rozkazu. W rezultacie odbiorca ponownie dostaje rozkaz i ponownie go wykonuje, co może być błędem (np. rozkaz zwiększ wartość X o 1 - co przy podwójnym wykonaniu rozkazu da w rezultacie zwiększenie o 2).<br /><br />Myślałem o wprowadzeniu tzw. bajtu serializacji, który zawierałby numer odp. temu która to liczba prób wysłania pakietu. I jeżeli odbiorca wykonałby wcześniej rozkaz z tego pakietu, a potem stwierdził, że przyszedł ten sam rozkaz, ale jest to kolejna &quot;wysyłka&quot; (spr. w/g bajtu serializacji), to nie wykonywałby już go ponownie, tylko pominął.<br /><br />Problem w tym, że żeby stwierdzić, który to pakiet należałoby sprawdzić również wszystkie pozostałe bajty pakietu (bo rozkaz może być ten sam, ale różnić się zawartością pola danych), aby przekonać się czy to na pewno ten sam pakiet co poprzednio.<br />Dodatkowo jeszcze trzeba trzymać w buforze poprzednio odebrany pakiet. To wszystko wydłuża i komplikuje proces odbioru pakietu.<br /><br />Czy może jest na to jakiś inny, prostszy sposób?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=852">Jado</a> — 7 lip 2014, o 12:15</p><hr />
]]></content>
</entry>
</feed>