-
Data: 2022-08-22 20:21:52
Temat: Re: Standardy w automatyce domowej
Od: Piotr Gałka <p...@c...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2022-08-22 o 14:32, J.F pisze:
> Co zaraz powoduje problemy pod tytulem kolizje.
> Wykrywacie?
Przyjmujemy, że nie ma pewności wykrycia kolizji. Jak oba nadajniki są
kawałek od siebie to może być tak, że każdy widzi to co sam nadaje.
Dlatego nie usiłujemy wykrywać kolizji - minimalizujemy szansę na
kolizje i przy braku potwierdzenia powtarzamy.
Nie ja pisałem oprogramowanie - mogę mylić drobiazgi.
Wszystkie drivery fail-save.
Każdy wypracowuje flagę - linia wolna/linia zajęta. Z tym, że jak uzna,
że linia jest wolna to odmierza jeszcze losowe opóźnienie zanim ustawi
sobie flagę linia wolna. Każde 0 na linii powoduje natychmiastowe
ustawienie flagi na linia zajęta.
Jeden postanawia nadawać - szykuje ramkę, szyfruje ją podpisuje i jak ma
flagę linia wolna to wchodzi na linię (czyli jak już dawno była wolna to
wchodzi bez żadnego opóźnienia).
Wchodzi na linię - po rzędu 0us od decyzji.
Odczekuje chwilkę (aby zbocze było relatywnie tak samo opóźnione jak
potem kolejne) - np 0,7us.
Czas propagacji scalaka (HVD72) - typ. 0,7us.
Czas propagacji w linii (do 300m, 2E8) - 1,5us.
Czas propagacji odbiornika 0,1us.
Czas reakcji na przerwanie w tej skali - 0us.
Razem 3us. Czyli mogą się zderzyć tylko gdy różnica momentów decyzji o
wejściu na linię jest mniejsza niż 3us. Często mniejsza różnica momentu
decyzji też nie spowoduje zderzenia, bo przecież nie zawsze linia ma
300m i nie każda para urządzeń jest na przeciwległych końcach.
Na początku nie mieliśmy tych opóźnień i trafiliśmy raz (może 1996) na
parę urządzeń, które wiecznie się zderzały - mijało kilka sekund (wiele
ramek) zanim któremuś udało się być pierwszym.
Wprowadziliśmy opóźnienia i problem już nigdy się nie pojawił.
Jak dokładnie to jest zrealizowane to tego nie wiem. Ale np. każdy
losuje liczbę z zakresu 0..15 i odmierza tyle razy 5us jako opóźnienie.
Wiadomo - generator pseudolosowy więc ryzyko synchronizacji. Generator
więc uwzględnia typ i numer urządzenia (czyli niepowtarzalny komplet) i
miesza to (stosujemy procki z hardwareowym AES) aby nie było ryzyka
wiecznie takich samych liczb pseudo-losowych.
Zaokrąglając. Prędkość 100k, bit = 10us, bajt =100us, mała ramka = 1ms.
Czyli na tej losowości możemy maksymalnie marnować 15x5us=75us - mniej
niż bajt przerwy. Ale to dotyczy tylko sytuacji maksymalnego obciążenia
linii, które nigdy nie występuje.
Załóżmy mały system - 5 urządzeń podległych na szynie. Norma wymaga, aby
najdalej po 5s wykryć brak urządzenia. Czyli np raz na 4s kontroler
wysyła 5 ramek (nie broadcast, bo każdy ma inny klucz sesji) i potem
niezależny proces zbiera odpowiedzi. Możliwe, że jak chce wysłać 3-ą
ramkę to odpowiedź pierwszego urządzenia wetnie się przed nią - zależy
co kto wylosuje. Czyli w stanie normalnym raz na 4s leci 10 ramek.
Typowa zajętość linii 10ms/4000ms = 0,25%.
> Przy niewielkiej ilosci szybkich urzadzen - moze to nie problem.
> Bedą odpytywane co poł sekundy ...
A pro po szybkich. Ten ich system powoduje, że tylko kontroler może
optymalizować czas szyfrowania robiąc to w czasie gdy inna ramka leci.
Urządzenie po odebraniu musi sprawdzić podpis, rozszyfrować, wypracować
odpowiedź, zaszyfrować, podpisać i w tym czasie na szynie cisza - się czeka.
Pół sekundy to sporo czasu. Norma przewiduje, że atakujący system grade
3 i grade 4 ma praktycznie dowolne wyposażenie jakie mu tylko potrzebne.
Norma nie specyfikuje, że taki tamper ma trafić momentalnie. My po
prostu uważaliśmy, że jak coś da się zrobić lepiej to nie ma sensu robić
gorzej.
Są dwa tematy:
1.
Niektóre instalacje muszą mieć dużo urządzeń. Wyobraź sobie pokój
centralny i od niego promieniście śluzy. Każda ma 4 drzwi: do tego
pokoju, na zewnątrz, do śluzy po prawej i do śluzy po lewej (jeszcze 2
lata temu nie wiedziałem, że takie rzeczy istnieją). Nie da się
wydzielić żadnego podzbioru drzwi niezależnych od innych. Z tego powodu
wprowadziliśmy kontroler obsługujący 16 drzwi. Czytnik po każdej stronie
- już 32 urządzenia. Dodatkowo ileś modułów rozszerzeń aby dodać wyjść i
wejść i mamy rzędu 40.
2.
Jak urządzenie typowo nadaje 1ms na 4s to przyjąłem, że z dopuszczalnego
zasilania do 24V robię 3V3 liniowo. A jak się puści odpytywanie
najszybciej jak się da to ilość wydzielanego ciepła wzrośnie radykalnie.
Nie przewidywałem po prostu tak idiotycznego sposobu pracy. A poza tym w
czytniku RFID wolę nie mieć DCDC bo może będzie zakłócało odczyt.
> Rozumiem, ze to twoje zyczenie, ale jak czytnik ma sprawdzic gdzies
> "na serwerze", serwer sprawdzic "w bazie danych", to czas rosnie :-(
Chyba nawet norma wymaga, że w przypadku odcięcia komunikacji z serwerem
wszystko ma nadal działać. W każdym razie u nas wszystkie informacje są
w kontrolerze (mała skrzyneczka na szynę DIN) zasilanym zasilaczem
buforowym.
> Np wspolny protokół, zeby można było urządzenia mieszać, brak kolizji,
> brak programowania w sensie - brak adresu "serwera". Choc mozna by
> dac jakis staly adres np 1 czy jakis brodcastowy "do wszystkich
> serwerow/kontrolerow".
W normie jest opisany rozkaz broadcastowy, ale piszą, że jest założenie,
że jest używany tylko, gdy jest połączenie jeden do jeden. Ja jej
dokładnie nie znam. To ma chyba służyć do tego aby można było wywołać
urządzenie, które nie ma przydzielonego numeru i mu ten numer
przydzielić. Łącząc tak po jednym potem można połączyć wszystkie.
U nas wszystko łączy się jak ma być i potem wszyscy się dogadują (też
nie wiem dokładnie jak, bo to brat pisał).
> Byc moze tez przy okazji znika problem zajetosci kontrolera, choc
> odbior portu szeregowego i tak na przerwaniach przeciez ...
>
> A warstwa fizyczna jest tam podana?
> Bo moze i tak na ethernet przeszli :-)
W tej chwili nie umiałbym tego udowodnić, ale to dotyczy RS485.
Standardu Wiegand też nikt nie przenosi na ethernet :)
P.G.
Następne wpisy z tego wątku
- 22.08.22 22:24 Mirek
- 23.08.22 10:53 Piotr Gałka
- 23.08.22 13:35 J.F
- 23.08.22 17:21 Piotr Gałka
- 23.08.22 17:56 J.F
- 23.08.22 20:31 Mateusz Viste
- 23.08.22 20:42 Mateusz Bogusz
- 23.08.22 20:42 Piotr Gałka
- 23.08.22 20:57 Mateusz Viste
- 23.08.22 21:05 heby
- 24.08.22 07:11 Mateusz Bogusz
- 24.08.22 10:45 heby
- 24.08.22 18:56 Piotr Gałka
- 24.08.22 20:33 Mateusz Bogusz
- 24.08.22 20:39 LordBluzg(R)??
Najnowsze wątki z tej grupy
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- Szukam: czujnik ruchu z możliwością zaączenia na stałe
- kabelek - kynar ?
- Podnieść masę o 0.6V
- Moduł BT BLE 5.0
- Pomiar amplitudy w zegarku mechanicznym
- ale zawziętość i cierpliwość
- Chiński elektrolizer tester wody
Najnowsze wątki
- 2025-01-08 Gliwice => Business Development Manager - Network and Network Security
- 2025-01-08 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-07 Aero2
- 2025-01-06 odbiornik GPS z kablem USB
- 2025-01-07 Oszczędzanie nie jest łatwe
- 2025-01-07 Warszawa => Java Developer <=
- 2025-01-07 Warszawa => IT Recruiter <=
- 2025-01-07 Katowice => Administrator IT - Wirtualizacja i Konteneryzacja <=
- 2025-01-07 Żerniki => Specjalista ds. Employer Brandingu <=
- 2025-01-06 Jeździ, skręca, hamuje
- 2025-01-06 Białystok => System Architect (Java background) <=
- 2025-01-06 Gliwice => Specjalista ds. public relations <=
- 2025-01-06 Białystok => Solution Architect (Java background) <=
- 2025-01-06 Zielona GĂłra => Konsultant WdroĹźeniowy Comarch XL/Optima (KsiÄgowoĹ
- 2025-01-06 Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)