Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

DS18B/S20 częstotliwość wystepowania błędów CRC.

Janekxx 10 Kwi 2011 20:41
  • #1 10 Kwi 2011 20:41
    Janekxx
    Poziom 9  

    Zastanawiam się nad implementacją obsługi CRC w odczycie temperatury, ale najpierw chciałbym zapytać osoby, które same zaimplementowały takie rozwiązanie.

    Jak często okazuje się, że otrzymane dane były błędne? Czyli jak często sprawdzanie CRC okazało się przydatne, a może błędy CRC są niezwykle rzadkie, wręcz do pominięcia?

    Interesuje mnie ew. wyniki przy odczycie czujnika na odległości do 10-15m.


    Pozdrawiam.

  • #2 10 Kwi 2011 23:37
    mirekk36
    Poziom 42  

    Ja ZAWSZE stosuję sprawdzanie CRC. W przypadku 1wire to szczególnie istotne. Tak więc to nawet nie jest kwestia tego że może to być tam jakoś przydatne albo nie. Nie jest to także kwestia odległości. Chcesz mieć 100% poprawne odczyty - stosuj sprawdzanie CRC.

  • #3 11 Kwi 2011 00:11
    asembler
    Poziom 32  

    Jak masz czujnik tuż przy procesorze to trudno sie doczekać na błąd odczytu, ale przy większych odległościach i w zależności zastosowanego kabla CRC to już konieczność W granicznym wypadku przy sieci 12 czujników i ok. 100m przewodów CRC bardzo przydatne. Program wykazuje w zaleznosci od temperatury (parametry 1-wire sie zmieniają od strony czujnika) ilość błędnych pomiarów na poziomie od 3%do 10%.
    A z innej strony sprawdziłem zakres czujnik i spokojnie mozna mierzyc temp poniżej -55 mnie sie udało prawie -80 zmierzyc.
    Nie bój sięCRC to podprogramik kilka bajtów. nie potrzebuje nawet RAM.

  • #4 11 Kwi 2011 21:01
    Janekxx
    Poziom 9  

    Dzięki za konkretne odpowiedzi.

    W takim razie implementuję obsługę CRC dla odczytanej temperatury.

  • #5 12 Kwi 2011 00:56
    nsvinc
    Poziom 34  

    Obowiązkowo implementuj sprawdzanie CRC z czegokolwiek chodzącego po 1wire, gdy tylko jest taka możliwość. Z doświadczenia wiem, że przekłamania istniały, istnieją, i będą istnieć nawet w warunkach gdzie nikt by się tego nie spodziewał. Wiesz jak głupio wygląda jak w losowym momencie na wyświetlacz wskoczy ci np. 70stC zamiast (np.) 23?
    1wire jest bez wyjątku i bardzo efektownie zakłucany przez:
    - komórki; antena bliżej niż 2cm od kabla zasyfi transmisję
    - elektromagnesy (przekaźniki, styczniki), 10cm
    - silniki AC, kilkanaście cm, im większa moc tym bardziej sieje
    - fazowe regulatory mocy AC

    -

  • #6 12 Kwi 2011 08:26
    tmf
    Moderator Mikrokontrolery Projektowanie

    Tak jak piszą poprzednicy. Implementacja CRC nic praktycznie nie kosztuje, a jest to łatwiejsze niż potem kombinowanie jak napisać program tak, żeby zachowywał się poprawnie jeśli czasami czujniki "wariują". Bo skąd będziesz wiedział, który odczyt jest prawidłowy? Jakieś majority voting? Można, ale po co komplikować.

  • #7 27 Kwi 2011 16:44
    Janekxx
    Poziom 9  

    CRC zaimplementowałem. Teraz, z własnej ciekawości, będę zliczał ilość błędów CRC dla czujnika na 10metrowym kablu i takiego na 20cm przewodzie, na przestrzeni kilku dni, pomiar co 10sekund.

    O wynikach pomiaru poinformuję na forum.

  • #8 27 Kwi 2011 16:47
    asembler
    Poziom 32  

    Niekiedy wystarczy dla danej instalacji dopasować program i i ilość błedów nacznie spadnie.

  • #9 27 Kwi 2011 18:07
    tmf
    Moderator Mikrokontrolery Projektowanie

    asembler napisał:
    Niekiedy wystarczy dla danej instalacji dopasować program i i ilość błedów nacznie spadnie.


    Co masz na myśli?

  • #10 27 Kwi 2011 19:34
    asembler
    Poziom 32  

    ...przesuniecie momentu odczytu bitu o kilka taktów.

  • #11 27 Kwi 2011 19:42
    nsvinc
    Poziom 34  

    Nie jest chyba magiczna kwestia instalacji, tylko długości kabla (czyli jego pojemności, rezystancji, drut/linka itp), i rezystora podciągającego...

    I faktycznie, przesuwanie sample pointa daje sporo, ale wyzwaniem jest napisać algorytm adaptywnie manipulujący sample pointem :]

  • #12 27 Kwi 2011 19:56
    tmf
    Moderator Mikrokontrolery Projektowanie

    Ale po co? Jeśli da się opóźnić moment samplowania to od samego początku można to zrobić, niezależnie od długości kabla. Maksymalne opóźnienie przecież jest definiowane w standardzie 1W. Więc nie za bardzo widzę tu sens kombinowania.

  • #13 27 Kwi 2011 21:14
    asembler
    Poziom 32  

    Instalacja = czytaj rozmieszczenie kabli dłgosci weżły itp.
    No nie wiem czy po co?
    Standard standardem ale fizycznie kazdy czujnik ma swoją toleracje a dochodzi jeszcze temperatura pracy i inne są przbiegi przy -75 a inne przy 125 stopni.

  • #14 27 Kwi 2011 21:40
    tmf
    Moderator Mikrokontrolery Projektowanie

    No ma swoją tolerancję, ale co ci z tego? Jeśli masz kilka czujników to i tak nie wydłużysz poza czas samplowania najszybszego z nich. Zmieniają się z temperaturą, ale znowu - i tak musisz przyjmować najgorszy wariant, bo przecież czujnik nie będzie pracował stale w tej samej temperaturze. Z drugiej strony dopóki się nie przekroczy maksymalnej pojemności magistrali to z dobrze napisanym softem nie ma problemów. Swego czasu testowałem ilość błędów na 305m odcinku skrętki UTP (w oryginalnym pudle) i po kilku dniach przesyłania non-stop odczytów były pojedyncze błędy CRC. A jak ktoś ma problem z ultradługą magistralą to są expandery. Generalnie projektując 1W zgodnie z zaleceniami Dallasa nie ma najmniejszego problemu z tą magistralą i naprawdę nie trzeba kombinować.

  • #15 12 Cze 2011 17:02
    Janekxx
    Poziom 9  

    Tak jak obiecałem informuję.
    Po wielu dniach (nie pamiętam dokładnie) prób na przewodzie 10m jak i 0,5m udało mi się zebrać tylko kilka błędów CRC (odpowiednio 1 i 2), przy czym więcej na krótszym kablu, który był nieustannie szturchany. W praktyce więc, są to marginalne przypadki i mogły wynikać głównie z jakości połączenia (czujniki mam wciśnięte w gniazda na goldpin).

    Pozdrawiam.