“Secure S-Bus Data Mode” to tryb protokołu S-Bus wprowadzony w celu dokładniejszej identyfikacji telegramu odpowiedzi na zapytanie S-Bus poprzez wprowadzenie numeru sekwencji. Poniższy wpis opisuje różnicę pomiędzy standardowym trybem S-Bus Data, a tym specjalnym trybem.
Dlaczego wprowadzono tryb “Secure”?
Tryb ten zapobiega sytuacji w której odpowiedź na zapytanie którego czas oczekiwania już upłynął jest interpretowana jako odpowiedź na kolejne zapytanie wysłane później. Taka sytuacja może wystąpić np. przy komunikacji radiomodemowej, gdy czas oczekiwania nie został odpowiednio dopasowany (mimo, że transmisja trwa dłużej nie zwiększono czasu oczekiwania).
Jak działa tryb “Secure”?
Tryb ten wprowadza nowy (dodatkowy) nagłówek do istniejącego telegramu S-Bus. Telegram w trybie “Secure” wygląda następująco:
– Jeden bajt używany do synchronizacji ramki (B5)
– Jeden bajt – “znak AT” – oznaczający, że jest to nagłówek trybu “Secure” (0x10 = zapytanie, 0x11 = odpowiedź)
– Jeden bajt określający długość następującego telegramu (trybu standardowego)
– Jeden bajt będący numerem sekwencji telegramu
– “Zwykły” telegram S-Bus (ponownie zaczynający się od znaku B5 i zawierający CRC)
Jeśli urządzenie pracujące jako master wspiera komunikację w trybie “Secure”, będzie używać tego trybu do komunikacji po wszystkich portach szeregowych. Urządzenie pracujące jako slave odpowiada w tym samym trybie w jakim otrzymało zapytanie jeśli tylko jest to możliwe. Jeśli slave nie obsługuje trybu “Secure”, odpowie na wszystkie zapytania ramką standardową.
Przykład
Poniżej znajdują się dwa przykłady zapytań i odpowiedzi pomiędzy stacjami wspierającymi tryb “Secure”. Czarna część jest standardową ramką S-Bus, natomiast niebieska to dodany nagłówek trybu “Secure”. Drugi przykład pokazuje co się dzieje, gdy wartość specjalna B5 byłaby użyta w telegramie – następuje próba odczytu wartości rejestru 181 (=0xB5). W takim przypadku wstawiany jest znak DLE (Data Link Escape) zamiast “B5”. Znak DLE (0xC500, na czerwono) ma długość dwóch bajtów, jednak w nagłówku “Secure” jest liczony jako jeden bajt.
Zapytanie | B5 10 09 02 B5 00 05 06 00 00 00 F8 1D |
Odpowiedź | B5 11 08 03 B5 01 00 00 00 00 12 FC |
Zapytanie | B5 10 09 03 B5 00 05 06 00 00 C5 00 94 C6 |
Odpowiedź | B5 11 08 03 B5 01 00 00 00 00 12 FC |
Czy master nadający w trybie “Secure” porozumie się z urządzeniem slave nie znającym tego trybu?
Tak. Gdy slave odnajdzie znak początku ramki B5 próbuje interpretować kolejne bajty. W trybie “Secure” następny będzie “komenda AT”, która nie posiada wartości rozpoznawanej przez to urządzenie. Z tego powodu urządzenie slave przestaje interpretować ramkę i oczekuje na kolejny znak synchronizacji ramki, który będzie znakiem standardowego zapytania S-Bus. Slave odpowie również standardową ramką.
Zapytanie | B5 10 09 02 B5 00 05 06 00 00 00 F8 1D |
Odpowiedź | B5 01 12 34 56 78 A6 D0 |
(niebieska część jest ignorowana przez urządzenie slave)
Wersje firmware wspierające tryb “Secure”
System | pierwsza oficjalna wersja FW | pierwsza testowa wersja FW | opcja wyłączenia |
PCD1.M1x0 | – | – | – |
PCD1.M1x5 | 0E3 | $A5 | – |
PCD1.M2xx0 | 1.14.23 | pierwsza | 1.14.23 |
PCD2.M110/120 | – | – | – |
PCD2.M150 | 0E3 | $D1 | – |
PCD2/4.M170 | 0E3 | $21 | – |
PCS1.C4/C6/C8 | 0C0 | – | – |
PCD6.Mxxx | – | – | – |
PCD3.Mxxxx | master: 03C slave: 1.08.23 |
master: $31 slave: 1.08.00 |
1.10.16 |
PCD2.M480 | 03C | – | – |
PCD2.M5xx0 | 1.08.19 | – |
1.10.16 |