Zasady działania X10

Praca dyplomowa w Zespole Szkół Technicznych w Ostrowie Wielkopolskim. Autorami są: Marcin Krawiec, Marcin Dzierzgowski i Anatol Lizik

Metoda stosowana przez X10 jest oparta na prostej ramce danych z ośmioma bitami danych, czyli jednym bajtem, poprzedzonej przez wstępnie określony kod startu. Skomplikowana część tej techniki nie polega na systemie danych binarnych, lecz na metodzie, w której transmituje się od jednego urządzenia (nadajnik), do drugiego urządzenia (odbiornik) dane analogowe. Podstawą jest to, że każde urządzenie ma czujnik przekroczenia zera tak, aby wszystkie z nich były razem zsynchronizowane. Rys.1 – odbiornik otwiera swoje okienko odbiorcze dwa razy podczas każdej fali sinusoidalnej, tzn. 100 razy w ciągu sekundy.

zasady01.gif (13878 bytes)

zasady02.gif (7927 bytes)

Ponieważ te urządzenia nie będą miały żadnego bezpośredniego połączenia między sobą, zaistniała potrzeba opracowania sposobu przesyłania danych na istniejącej sieci energetycznej. Rzeczywiste dane binarne są transmitowane przez przesyłanie 1 ms. impulsów tzw. udarów o częstotliwości 120 kHz, zaraz po punkcie przecięcia z zerem linii energetycznej. Oczywiste było także, że pary bitów komplementarnych były konieczne. Dlatego binarna „1” została określona jako obecność impulsu, po nim następowała przerwa w impulsie. Binarne zero zostało określone jako brak impulsu, a po nim następowała obecność impulsu (rys. 3)., Odbiorniki zostały zaprojektowane aby otworzyć okienko odbiorcze na 6 ms., pomimo że transmitowane impulsy wynoszą pełną 1ms. Pozwoliło to na luźne tolerancje komponentów z lat 1979.

zasady03.gif (20716 bytes)

W celu zapewnienia przewidywalnego punktu startu (rys. 4), każda ramka danych zaczynałaby się zawsze przynajmniej sześcioma wyraźnymi wiodącymi przekroczeniami zera, następnie kodem startu – impuls, impuls, impuls, brak impulsu (1110).

zasady04.gif (21808 bytes)

Z chwilą gdy kod startu został nadany, wysyłany jest pierwszy element kodu tzw. nibble – pęcherzyk (tzn. 4bity lub pół bajtu (tetrada)). Celem ułatwienia konsumentom operowania tymi urządzeniami, pierwsze 4 bity zostały przekazane jako oznaczenia kodu literowego (rys.5). Postanowiono także aby wyrywkowo przestawiać te wzorce, tak aby kody A, B, C, nie wpadały w przewidywalny wzór binarny. Łatwo też spostrzec, że w rzeczywistości kod M jest pierwszy w postępie binarnym.

zasady05.gif (19724 bytes)

Przy strumieniu bitów ciągłych, druga połówka bajtu zapewnia drugą połowę adresu (rys6). Ostatni bit okazuje się być częścią kodu numerowego, lecz w rzeczywistości jest to bit funkcyjny. Kiedykolwiek ten bit funkcyjny wynosi 0, to wskazuje on na poprzedzającą połówkę bajtu, iż jest ona kodem numeru i dlatego stanowi część adresu.

zasady06.gif (21904 bytes)

Dla celów redundancji, niezawodności oraz akomodacji modułów, protokół X10 wywołuje dwukrotnie każdą ramkę danych, które mają być transmitowane (rys7).

zasady07.gif (24967 bytes)

Kiedy dane zmieniają się z jednego adresu na drugi, z adresu na rozkaz, czy z rozkazu na inny rozkaz (rys. 8), ramki danych muszą być oddzielane przynajmniej przez 6 wyraźnych przekroczeń zera („000000”).

zasady08.gif (22937 bytes)

Z chwilą gdy odbiornik przetworzył swoje dane adresowe jest gotowy do odbioru rozkazu. Tak jak przedtem wszystkie ramki danych muszą zaczynać się od kodu startu. Wtedy następujący pęcherzyk przekazuje kod literowy (rys.9). następny pęcherzyk jest już rozkazem.

zasady09.gif (21257 bytes)

Ponieważ ostatni bit jest bitem funkcyjnym BF=0=numer adresu, BF=1=rozkaz, wszystkie rozkazy kończą się na binarnej jedynce. Schemat ten (rys.10) pokazuje tylko 6 najczęściej używanych rozkazów.

zasady10.gif (19473 bytes)

Rysunek 10 pokazuje tylko sześć najczęściej używanych rozkazów. Grafika zamieszczona na końcu opisu przedstawia wszystkie możliwe rozkazy. Podobnie jak dotychczas, wszystkie nadajniki protokołu X10 wysyłają swoje ramki danych dwukrotnie (rys.11).

zasady11.gif (25933 bytes)

Rys.12 przedstawia układ, w którym przykładowa transmisja dwóch ramek danych, np. A1A1AOnAOn zajęłaby 47 cykli fali sinus 50Hz, co równałoby się czasowi 0,94 sekundy lub praktycznie po prostu poniżej 1 sek.

zasady12.gif (27864 bytes)

Oczywiście niektóre rozkazy zajmują mniej czasu. Kiedy wysyłamy rozkaz włącz wszystkie światła nie musimy wysyłać żadnego adresu. Dlatego też cała sekwencja dwu-ramkowa zajmuje tylko 0,44 sek. Jeżeli odbiorniki reagują na pierwszą ramkę, to zajęłoby to po prostu 0,22 sek.

Aż do tego czasu, w naszym opisie wszystkie schematy przedstawiały tylko jeden impuls, lecz nie jest to całkowicie prawidłowe. W rzeczywistości jest zupełnie inaczej. Instalacje elektryczne w naszych domostwach są zbudowane na bazie trzech faz (rys.13).

zasady13.gif (32001 bytes)

A więc wszystkie nadajniki kompatybilne z X10 powinny wysyłać trzy impulsy jak na rys.14.

zasady14.gif (10161 bytes)

Rysunek 15 w prosty i przejrzysty sposób prezentuje listę kodów systemu X10. W przypadku podstawowych kodów rozkazów i adresów ich działanie zostało opisane powyżej.

W powyższej grafice można zauważyć kilka nie opisanych dotąd komend. Są to:

  • Ext code 1 – służy do regulacji lub sterowania
  • Ext code 2 – służy do odczytu miernika i DSM
  • Ext code 3 – służy do zabezpieczenia wiadomości

O ile wiemy w czasie pisania pracy tylko rozszerzony kod 1 miał określoną długość ramki, która wynosi 31 cykli i jest opisana jako:

  • Start Code = 4 bits,
  • Housecode = 4 bits,
  • Extended code 1 = 5 bits (01111),
  • Unit code (device code) = 4 bits,
  • Data = 8 bits
  • Command = 8 bits..

Ext code 2 ma zmienną długość ramki zależnie od rodzaju wiadomości. Ma on swój własny, oddzielny znacznik, aby oddzielić go od wszystkich innych formatów. Rozszerzony kod 3 został przyporządkowany dla ochrony danych i rzeczywiście jeszcze nie istnieje. Tak więc jego format nie został jeszcze zdefiniowany.