Dokumentacja techniczna PMM-2 VER. 1.1 Dokument obowiązuje dla modemów z wersją firmware od wersji 3.0
Spis treści: 1 Wprowadzenie... 4 2 Dane techniczne... 5 3 Wymiary, opis wyprowadzeń elektrycznych... 6 3.1 Wymiary... 6 3.2 Opis wyprowadzeń elektrycznych... 7 4 Wybór interfejsu... 8 4.1 Konfiguracja wejść wyboru interfejsu... 8 4.2 Schematy aplikacyjne... 8 5 Tryby pracy modemu... 10 5.1 Tryb pracy BOOTLOADER - uaktualnienie wersji firmware... 10 5.2 Tryb pracy SETUP - konfiguracja modemu... 11 5.2.1 Konfiguracja standartowa... 11 5.2.2 Zmiana/Odczyt parametrów... 11 5.3 Tryb pracy MODEM... 12 6 Protokoły transmisji... 15 6.1 Format ramek transmisji szeregowej... 15 6.2 Wysyłanie rozkazu i otrzymywanie odpowiedzi... 16 6.3 Obliczanie CRC... 16 6.4 Protokół dla transmisji RS232... 16 6.5 Protokół dla transmisji I 2 C... 17 6.5.1 Algorytm wymiany danych dla transmisji I 2 C... 17 6.5.2 Zależności czasowe dla transmisji I 2 C... 19 6.6 Protokół dla transmisji SPI... 20 6.6.1 Algorytm wymiany danych dla transmisji SPI... 20 6.6.2 Zależności czasowe dla transmisji SPI... 20 7 Dostępne komendy / rozkazy... 22 7.1 Odczyt wersji oprogramowania... 22 7.2 Ustawienie klucza szyfrującego transmisje... 22 7.3 Ustawienie prędkości pracy interfejsu szeregowego... 22 7.4 Ustawienie adresu logicznego... 23 7.5 Ustawienie protokołu komunikacji... 23 7.6 Ustawienie adresu logicznego urządzenia w sieci niskiego napięcia... 24 7.7 Odczytanie adresu logicznego urządzenia w sieci niskiego napięcia... 24 7.8 Wybór typu modulacji dla przesyłanych danych... 25 7.9 Zapis konfiguracji modułu PLC... 25 7.10 Odczyt konfiguracji modułu PLC... 26 7.11 Przesyłanie danych przez sieć niskiego napięcia... 26 7.12 Reset modemu... 26 8 Transmisja danych z wykorzystaniem modemu... 27 8.1 Transmisja danych... 27 8.2 Typy pakietów... 27 8.2.1 Pakiet typu BRODCAST... 27 8.2.2 Pakiet typu UNICAST... 27 8.2.3 Pakiet typu UNICAST_ACK... 28 8.2.4 Pakiet typu UNICASTR... 28 2
8.2.5 Pakiet typu UNICASTR_ACK... 29 8.3 Transmisja danych z wykorzystaniem protokołu Netronix... 29 8.3.1 Wysyłanie danych... 29 8.3.2 Odbieranie danych... 30 8.4 Transmisja danych z wykorzystaniem trybu przezroczystego... 31 8.5 Przebieg oraz prędkość transmisji... 31 Dodatek A. Kody rozkazów oraz kody operacji... 34 3
1 Wprowadzenie Power line modem (PLM) służy do transmisji danych, poprzez linie zasilające niskiego napięcia wykorzystywane jako kanał komunikacyjny. Modem może pracować w sposób transparentny lub z wykorzystaniem protokołu komunikacji Netronix. Gdy modem pracuje w sposób transparentny, dane odebrane poprzez interfejs szeregowy są buforowane, a następnie przekształcane i transmitowane poprzez sieć niskiego napięcia. Wszystkie modemy, które znajdują się w zasięgu odbierają dane i wysyłają je poprzez interfejs szeregowy. Urządzenie nadrzędne, które jest podłączone do modemu, decyduje czy odebrane dane są adresowane do niego, czy nie. Gdy modem pracuje w trybie z wykorzystaniem protokołu Netronix, możliwe jest kontrolowanie typu pakietów jakie są wysyłanie przez sieć niskiego napięcia. Transmisja danych może się odbywać przy pomocy pakietów typu: BRODCAT, UNICAST, UNICAST_ACK, UNICASTR oraz UNICASTR_ACK. Opis i zastosowanie poszczególnych typów pakietów zostało opisane w dalszej części dokumentu. Dzięki zróżnicowaniu typów transmitowanych pakietów, możliwe jest uproszczenie logiki zarządzającą transmisja w urządzeniu nadrzędnym. Technologia PLC pozwala na dużą redukcję kosztów w projektach sieci wymagających komunikacji pomiędzy poszczególnymi elementami z uwagi na wyeliminowanie konieczności wykonania odpowiedniej infrastruktury kablowej. 4
2 Dane techniczne Parametry transmisji po linii sieci niskiego napięcia Zgodność z normą EN-50065 Wykorzystywane pasmo częstotliwości CENELEC B (95kHz 125kHz) Częstotliwość fali nośnej 108.7kHz Poziom transmisji < 122dBuV Typ modulacji 2PSK lub 4PSK Maksymalny stosunek sygnału do szumu -20dB Wzmocnienie >100dB Czułość <75uV Algorytm szyfrowania danych TEA (Tiny Encryption Algorithm) z 128 bitowym kluczem Interfejs RS232 3,3V Typ interfejsu Szeregowy: RS232 (poziomy napięć 0..3,3V) Prędkość transmisji W zależności od ustawień: 1200bps, 2400bps, 4800bps 9600bps, 19200bps, 57600bps, 115200bps. (Ustawienie fabryczne: 9600bps) Bit parzystości Brak Ilość bitów danych 8 Ilość bitów stopu 1 Wielkość bufora nadawczego 300B Wielkość bufora odbiorczego 300B I2C Adres 0x50 lub 0x52 Fclk 400kHz Wielkość bufora nadawczego 300B Wielkość bufora odbiorczego 300B SPI Fclk 400kHz Wielkość bufora nadawczego 300B Wielkość bufora odbiorczego 300B Zasilanie Zasilanie Pobór energii W trybie nasłuchiwania 0.25W W trybie nadawania 3W 5 Dwa napięcia zasilające: +5V +12V
3 Wymiary, opis wyprowadzeń elektrycznych 3.1 Wymiary Wymiary zewnętrzne modemu zostały przedstawione na rysunkurysunek 3.1. Rysunek 3.1 Wymiary modemu w milimetrach. 6
3.2 Opis wyprowadzeń elektrycznych Rozmieszczenie złącz na płycie PCB modemu zostało przedstawione na rysunkurysunek 3.2, natomiast opis złącz został przedstawiony w tabelitabela 3.1. Tabela 3.1 Opis złącz Rysunek 3.2. Rozmieszczenie złącz na płycie PCB modemu Nr Nazwa Opis pinu 1 +12V Zasilanie modułu +12V 2 +5V Zasilanie modułu +5V 3 RS_TX / SPI_SDO / I2C_R1 Funkcja pinu zależna od typu wybranego interfejsu 4 RS_RX / SPI_SDI / I2C_A0 Funkcja pinu zależna od typu wybranego interfejsu 5 GND Masa 6 RS_R / SPI_R / I2C_SDA Funkcja pinu zależna od typu wybranego interfejsu 7 RS_N485 / SPI_SCK / I2C_SCL Funkcja pinu zależna od typu wybranego interfejsu 8 Reset Reset 9 GND Masa 10 IntCon2 / SPI_SS Funkcja pinu zależna od typu wybranego interfejsu 11 IntCon1 Wejście wyboru interfejsu 12 Reset Reset L, N - Wyprowadzenia służące do podłączenia do sieci energetycznej 230V 7
4 Wybór interfejsu 4.1 Konfiguracja wejść wyboru interfejsu Interfejs Konfiguracja interfejsu IntConf1 IntCon2 / SPI_SS RS_TX / SPI_SDO / I2C_R1 RS_RX / SPI_SDI / I2C_A0 Pin: funkcja RS_R / SPI_R / I2C_SDA RS_N485 / SPI_SCK / I2C_SCL RS 0 0 RS-TX RS232-RX RS_R RS_N485 I2C 0 1 I2C-R1 I2C_A0 I2C_SDA I2C_SCL SPI 1 SPI_SS SPI_SDO SPI_SDI SPI_R SPI_SCK 0 pin podłączony do GND 1 pin podłączony do +3,3V lub do +5V poprzez rezystor 100kΩ 4.2 Schematy aplikacyjne 230V PMM-2 +12V +5V +12V +5V RS_TX/SPI_SDO/I2C_R1 RS_RX/SPI_SDI/I2C_A0 GND RX TX CPU Rysunek 4.1 Minimalna konfiguracja dla interfejsu RS232 8
230V N L PMM-2 +12V +5V RS_R/SPI_R/I2C_SDA RS_N485/SPI_SCK/I2C_SCL +12V +5V RS_TX/SPI_SDO/I2C_R1 RS_RX/SPI_SDI/I2C_A0 Reset GND IntCon2/SPI_SS IntCon1 GND 100k I2C Adr 0x52 0x50 CPU SCL SDA 100k 2k2 2k2 Uwaga: Wejścia IntCon2 i RS_RX/SPI_SDI/ I2C_A0 mogą być podłączone bezpośrednio do napięcia 3,3V Rysunek 4.2 Minimalna konfiguracja dla interfejsu I2C 230V N L PMM-2 +12V +5V +12V +5V RS_TX/SPI_SDO/I2C_R1 RS_RX/SPI_SDI/I2C_A0 RS_R/SPI_R/I2C_SDA RS_N485/SPI_SCK/I2C_SCL Reset GND IntCon2/SPI_SS IntCon1 GND CPU CLK CS MOSI MISO 9 100k Uwaga: Wejście IntCon1 może być podłączone bezpośrednio do napięcia 3,3V Rysunek 4.3 Minimalna konfiguracja dla interfejsu SPI
5 Tryby pracy modemu Modem PMM-2 może znajdować się w jednym z trzech trybów pracy: BOOTLOADER SETUP MODEM Tryb pracy BOOTLOADER służy do uaktualnienia oprogramowania znajdującego się w urządzeniu przy pomocy specjalnego oprogramowania. Urządzenie znajduje się w trybie pracy BOOTLOADER przez 10 sekund od chwili włączenia zasilania lub resetu. Resetu urządzenia można dokonać poprzez wysłanie komendy do urządzenia C_Reset lub poprzez podanie stany niskiego na wyprowadzenie Reset. Tryb pracy SETUP służy do konfiguracji urządzenia. Opis pracy z modemem pracującym w tym trybie został zawarty w podrozdziale Tryb pracy SETUP - konfiguracja modemu. Tryb pracy MODEM umożliwia przesyłanie danych po miedzy kompatybilnymi modemami poprzez sieć niskiego napięcia. Opis pracy z modemem pracującym w tym trybie został zawarty w podrozdziale Tryb pracy MODEM. 5.1 Tryb pracy BOOTLOADER - uaktualnienie wersji firmware W celu uaktualnienia wersji oprogramowania modemu należy: 1. Podłączyć urządzenie, w którym ma być uaktualnione oprogramowanie do komputera poprzez interfejs szeregowy RS232. 2. Wprowadzić urządzenie w tryb pracy BOOTLOADER poprzez zresetowanie urządzenia. 3. Uruchomić w konsoli program PM4Loader.exe podając jako parametry port COM oraz nazwę pliku zawierającą firmware. C:\PM4Loader.exe -i com1 PMM2_v1.hex Reading Target Device ID... Found: Netronix Power Line Modem PM-4 (ID: 0x0f0f) Reading HexFile. Reading Target Programming Device... Done. Rysunek 4.1. Widok okna konsoli podczas przeładowywania firmware 10
5.2 Tryb pracy SETUP - konfiguracja modemu Modem PMM-2, po upływie 10 sekund od załączenia zasilania lub resetu, znajduje się w trybie pracy SETUP umożliwiającym komunikacje z urządzeniem przez interfejs szeregowy z wykorzystaniem protokołu transmisji. Jeśli ustawiony został interfejs RS232, to prędkości transmisji wynosi 9600bps. Modem PMM-2 znajduje się w trybie SETUP przez 5 sekund. Jeżeli w tym czasie modem: nie odbierze prawidłowego rozkazu to modem ten przejdzie do trybu pracy MODEM. odbierze prawidłowy rozkaz to modem ten wykonuje zadany rozkaz i wysyła odpowiedz oraz przedłuża czas pozostawania w trybie SETUP o następne 10 sekund. 5.2.1 Konfiguracja standartowa Standardowe wartości parametrów konfiguracyjnych zostały zestawione w tabeli poniżej: Parametry interfejsu szeregowy UART Prędkość transmisji (RS232) 9600bps (wartość 0x03) Adres logiczny urządzenia (przy komunikacji z użyciem protokołu Netronix) Tryb transmisji w trybie MODEM 0x01 Tryb pracy z wykorzystaniem protokołu Netronix (wartość 0x0101) Parametry transmisji po sieci niskiego napięcia Klucz szyfrujący (TEA) 0x1234fedc5678ba0990ab8765cdef4321 Typ modulacji 2PSK (wartość 0x00) Adres logiczny urządzenia w sieci NN 0x00 Konfiguracja 0x00 5.2.2 Zmiana/Odczyt parametrów Aby zmienić lub odczytać parametry modemu, należy wysłać do modemu przez interfejs szeregowy ramkę zgodną z protokołem Netronix zawierającą odpowiednie dane. Opis ramek znajduje się rozdziale Dostępne komendy / rozkazy. 11
5.3 Tryb pracy MODEM W trybie pracy MODEM w zależności od konfiguracji urządzenie może komunikować się z urządzeniem nadrzędnym w następujący sposób: Konfiguracja trybu transmisji danych w Opis trybie pracy MODEM 0x0000 Tryb pracy przeźroczystego 0x0101 Tryb pracy z wykorzystaniem protokołu Netronix 0x0100 Tryb mieszany A. Dane wysyłane do modemu przez urządzenie nadrzędne powinny być wysyłane w formacie zgodnym z protokołem Netronix. Na komendy przesłane przez urządzenie nadrzędne modem odpowiada zgodnie z protokołem Netronix, natomiast dane odebrane przez sieć niskiego napięcia są przesyłane do urządzenia nadrzędnego tak jak w trybie przeźroczystym 0x0001 Tryb mieszany B. Dane wysyłane do modemu przez urządzenie nadrzędne są traktowane tak jak w trybie pracy przezroczystym. Dane odebrane przez sieć niskiego napięcia są przesyłane do urządzenia nadrzędnego zgodnie z protokołem Netronix Schemat przepływu danych w trybie pracy z wykorzystaniem protokołu Netronix: INTERFEJS SZERWGOWY SIEC NISKEIGO NAPIĘCIA Wysłanie do modemu komendy niezwiązanej z przesyłaniem danych po sieci NN. NetronixFrame Komenda NetronixFrame Odpowiedz Wysłanie do modemu komendy C_SendData. Typ pakietu przesyłanego po sieci NN: BRODCAST, UNICAST, UNICASTR. NetronixFrame Komenda C_SendData NetronixFrame Odpowiedz Pakiet NetronixFrame Komenda C_SendData Wysłanie do modemu komendy C_SendData. Typ pakietu przesyłanego po sieci NN: UNICAST_ACK, UNICASTR_ACK. NetronixFrame Odpowiedz Pakiet ACK Przekazanie do urządzenia nadrzędnego danych odebranych przez sieć NN. NetronixFrame Odpowiedz 12 Pakiet
Schemat przepływu danych w trybie pracy przeźroczystym: Schemat przepływu danych w trybie pracy trybie pracy mieszanym A. INTERFEJS SZERWGOWY SIEC NISKEIGO NAPIĘCIA Wysłanie do modemu komendy niezwiązanej z przesyłaniem danych po sieci NN. NetronixFrame Komenda NetronixFrame Odpowiedz Wysłanie do modemu komendy C_SendData. Typ pakietu przesyłanego po sieci NN: BRODCAST, UNICAST, UNICASTR. NetronixFrame Komenda C_SendData NetronixFrame Odpowiedz Pakiet NetronixFrame Komenda C_SendData Wysłanie do modemu komendy C_SendData. Typ pakietu przesyłanego po sieci NN: UNICAST_ACK, UNICASTR_ACK. NetronixFrame Odpowiedz Pakiet ACK Odbieranie danych Dane Pakiet Schemat przepływu danych w trybie pracy trybie pracy mieszanym B. 13
Opis ramek wykorzystywanych przy komunikacji z modemem pracującym z wykorzystaniem protokołu Netronix znajduje się rozdziale Protokoły transmisji oraz Dostępne komendy / rozkazy. Opis sposobu komunikacji z modemem pracującym w trybie pracy przeźroczystego znajduje się w rozdziale Transmisja danych z wykorzystaniem trybu przezroczystego. Tryby mieszane są odpowiednim zestawieniem sposobów komunikacji z wykorzystywaniem protokołu Netronix oraz trybu przeźroczystego. 14
6 Protokoły transmisji Modemy posiadają zaimplementowany protokół szeregowej transmisji danych. Wymiana danych odbywa się na zasadzie wysłania ramki rozkazu do urządzenia a po wykonaniu danego rozkazu przez modem, odebrania od niego ramki odpowiedzi. W obydwu ramkach znajduje się pole parametrów, za którego pomocą przekazywane są dane pomiędzy urządzeniami. W ramce odpowiedzi dodatkowo i zawsze jest bajt kod_operacji (OP_CODE) za pomocą, którego przekazywany jest komunikat do urządzenia wysyłającego rozkaz o poprawności wykonania danego rozkazu. 6.1 Format ramek transmisji szeregowej Ogólny format ramek, w zależności od typu interfejsu: UART ADDRESS adres modemu (dla interfejsu UART) w systemie (0x01 do 0xfe) Jeżeli: Adres Modułu = 0 to nie odpowie żaden moduł Adres Modułu = 0xFF to odpowiedzą wszystkie moduły w sieci I2C ADDRESS adres modemu na magistrali I 2 C. COMMAND wartość parzysta LENGTH długość pola DATA[ ] w bajtach. DATA[ ] parametry/dane. Pole to występuje opcjonalnie i uzależnione jest od rozkazu CRC16 - odpowiednio starszy i młodszy bajt CRC16 15
6.2 Wysyłanie rozkazu i otrzymywanie odpowiedzi 6.3 Obliczanie CRC CRC obliczane jest jako x 16 +x 12 +x 5 +1 z wartością początkową 0x0000. CRC obliczane jest na podstawie wszystkich bajtów z wyjątkiem CRCH i CRCL Przykładowa procedura obliczania CRC napisana w języku C: void LiczCRC(unsigned char *ZAdr, unsigned short *DoAdr, unsigned char Ile){ int i, NrBajtu; unsigned short C; *DoAdr=0; } for (NrBajtu=1; NrBajtu<=Ile; NrBajtu++, ZAdr++){ C=((*DoAdr>>8)^*ZAdr)<<8; for (i=0; i<8; i++) if (C&0x8000) C=(C<<1)^0x1021; else C=C<<1; *DoAdr=C^(*DoAdr<<8); } gdzie: *Zadr -jest wskaźnikiem do pierwszego bajtu danych Ile -mówi ile jest bajtów danych z których liczone będzie *DoAdr -jest wskaźnikiem do obliczonego CRC 6.4 Protokół dla transmisji RS232 Skonfigurowany zgodnie ze schematem (rys. 4.1) moduł działa w trybie interfejsu RS-232. W niniejszej dokumentacji opis protokołu RS-232 ograniczony został do opisu rozkazów i odpowiedzi oraz ich parametrów. Nagłówek oraz suma kontrolna CRC występuje zawsze i jest zgodna z pełną dokumentacją Protokół Netronix dostępną na stronie. Ramka rozkazu: Ramka odpowiedzi: 16
Pracę z protokołem RS przetestować można za pomocą narzędziowego, darmowego oprogramowania FRAMER. 6.5 Protokół dla transmisji I 2 C 6.5.1 Algorytm wymiany danych dla transmisji I 2 C Skonfigurowany zgodnie ze schematem (rys. 4.2) moduł działa w trybie interfejsu I 2 C w następujących sekwencjach: 1. Master (urządzenie zewnętrzne) zapisuje rozkaz wraz z ewentualnymi parametrami w slave ie (moduł PMM-2) 2. Wykonywany jest rozkaz. (natychmiast po odebraniu zadeklarowanej w ramce ilości bajtów wysyłanych) 3. Master dokonuje odczytu odpowiedzi i jej parametrów oraz kodu operacji. Odczyt powinien być dokonany po wystawieniu przez modem PMM-2 stanu wysokiego na linii I2C_R1. Stan wysoki na linii I2C_R1 sygnalizuje, że w buforze znajduje się ramka odpowiedzi. Master może również próbować odczytać ramkę odpowiedzi bez sprawdzania stanu na linii I2C_R1. Wówczas w przypadku otrzymania bajta zajętości (NUMBER OF BYTES) 0x00, należy ponawiać próbę odczytu odpowiedzi po około 1ms ( komendy związane z transmisją danych po sieci niskiego napięcia mogą trwać do kilku sekund) Do modułu PMM-2 zapisujemy pytanie-rozkaz: Pole NUMBER OF BYTES musi zawierać informację o ilości bajtów z których składa się cała ramka. Następnie otrzymujemy: 17
Rysunek 6.1 Algorytm zapisu rozkazu do urządzenia i odczytu odpowiedzi A) Bez wykorzystania linii I2C_R1 B) Z wykorzystaniem linii I2C_R1 18
6.5.2 Zależności czasowe dla transmisji I 2 C Moduł wysyła i odbiera dane z częstotliwością zegara do 400KHz z uwzględnieniem zależności czasowych przedstawionych poniżej. Rysunek 6.2 Charakterystyki czasowe magistrali I 2 C dla bitu START oraz STOP Rysunek 6.3 Charakterystyki czasowe magistrali I 2 C dla bitów danych Magistrala I 2 C. Wymogania czasowe. Param. Symbol Characteristic Min Max Units Conditions IS10 TLO:SCL Clock Low Time 1.3 - µs IS11 THI:SCL Clock High Time 0.6 µs SDAx and SCLx CB is specified to be IS20 TF:SCL 20+0.1CB 300 ns Fall Time from 10 to 400pF SDAx and SCLx CB is specified to be IS21 TR:SCL 20+0.1CB 300 ns Rise Time from 10 to 400pF IS25 TSU:DAT Data Input Setup Time 100 µs IS26 THD:DAT Data Input Hold Time 0 0.3 µs IS30 TSU:STA Start Condition Setup Time 0.6 - µs IS31 THD:STA Start Condition Hold Time 0.6 - µs IS33 TSU:STO Stop Condition Setup Time 0.6 - µs IS34 IS40 THD:ST O TAA:SCL Stop Condition Hold Time Output Valid From Clock 19 600 - ns 0 1000 ns IS45 TBF:SDA Bus Free Time 1.3 - µs IS50 CB Bus Capacitive Loading - 400 pf Time the bus must be free before a new transmission can start
6.6 Protokół dla transmisji SPI 6.6.1 Algorytm wymiany danych dla transmisji SPI Skonfigurowany zgodnie ze schematem (rys. 4.3 moduł działa w trybie interfejsu SPI w następujących sekwencjach: 1. Opuszczana jest linia SS. 2. Master (urządzenie zewnętrzne) zapisuje rozkaz wraz z ewentualnymi parametrami w slave ie (moduł PMM-2) 3. Wykonywany jest rozkaz. 4. Moduł PMM-2 jest gotowy z odpowiedzią w momencie opuszczenia linii MISO do poziomu zera logicznego. Testowanie tej linii powinno być przeprowadzane nie wcześniej niż 200us po wysłaniu rozkazu) 5. Master dokonuje odczytu odpowiedzi i jej parametrów oraz kodu operacji. 6. Podnoszona jest linia SS. Pole NUMBER OF BYTES musi zawierać informację o ilości bajtów z których składa się cała ramka. Następnie otrzymujemy: 6.6.2 Zależności czasowe dla transmisji SPI Moduł wysyła i odbiera dane z częstotliwością zegara do 400KHz z uwzględnieniem zależności czasowych przedstawionych poniżej. Rysunek 6.4 Charakterystyki czasowe magistrali SPI 20
Magistrala SPI. Wymogania czasowe. Param. Symbol Characteristic Min Max Typ Units Conditions SP70 TscL SCKx Input Low Time 30 - - ns - SP71 TscH SCKx Input High Time 30 - - ns - SP72 TscF SCKx Input Fall Time - 10 25 ns See Note 1 SP73 TscR SCKx Input Rise Time - 10 25 ns See Note 1 SP30 TdoF SDOx Data Output Fall Time - - - ns See Note 1 SP31 TdoR SDOx Data Output Rise Time - - - ns See Note 1 SP35 TscH2doV, SDOx Data Output Valid after TscL2doV SCKx Edge - - 30 ns - SP40 TdiV2scH, Setup Time of SDIx Data TdiV2scL Input to SCKx Edge 20 - - ns - SP41 TscH2diL, Hold Time of SDIx Data Input TscL2diL to SCKx Edge 20 - - ns - SP50 TssL2scH, SSx to SCKx or SCKx TssL2scL Input 120 - - ns - SP51 SP52 TssH2doZ TscH2ssH TscL2ssH SSx to SDOX Output High-Impedance SSx after SCKx Edge 10-50 ns See Note 2 1.5 TCY + 40 - - ns - SDOx Data Output Valid after SP60 TssL2doV - - 50 ns - SSx Edge Note 1: The minimum clock period for SCK is 100 ns. The clock generated in Master mode must not violate this specification. Note 2: Assumes 50 pf load on all SPI pins. 21
7 Dostępne komendy / rozkazy 7.1 Odczyt wersji oprogramowania W celu odczytu wersji oprogramowania należy wysłać do urządzenia ramkę danych w postaci: Command kod rozkazu C_FirmwareVersion. Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 kod wykonanego rozkazu zwiększony o 1. Data[ ] ciąg znaków kodów ASCII opisujący wersje oprogramowania 7.2 Ustawienie klucza szyfrującego transmisje W celu ustawienia klucza szyfrującego dane dla algorytmu TEA należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_SetTEAKey. Data[] 16 bajtów danych, które będą stanowić nowy klucz, za pomocą którego będą szyfrowane dane przesyłane przez sieć niskiego napięcia. Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 Kod wykonanego rozkazu zwiększony o 1. OpCode kod operacji. 7.3 Ustawienie prędkości pracy interfejsu szeregowego W celu ustawienia prędkości pracy interfejsu RS urządzenia pracującego w trybie MODEM należy wysłać do urządzenia ramkę danych w postaci: Command+1 Kod rozkazu C_SetUartSpeed. Data[] Bajt określający prędkość pracy urządzenia. Wartości odpowiadające poszczególnym prędkością pracy zostały zebrane poniżej: 0 1200 bps 1 2400 bps 22
2 4800 bps 3 9600 bps 4 19200 bps 5 57600 bps 6-115200 bps Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 Kod wykonanego rozkazu zwiększony o 1. OpCode kod operacji Urządzenia standartowo mają ustawioną prędkość transmisji na 9600 bps. 7.4 Ustawienie adresu logicznego W celu ustawienia adresu urządzenia, wykorzystywanego do komunikacji z urządzeniem przy pomocy protokołu Netronix należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_SetUartAddr. Data[] nowy adres urządzenia z przedziału od 1 do 254. Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 Kod wykonanego rozkazu zwiększony o 1. OpCode kod operacji 7.5 Ustawienie protokołu komunikacji W celu określenia protokołu w jakim ma być prowadzona komunikacja z modemem należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_SetUartProtocol. Data[0] protokołu transmisji dla danych odbieranych przez modem: o 0 tryb przezroczysty o 1-255 protokół Data[1] protokołu transmisji dla danych wysyłanych przez modem: o 0 tryb przezroczysty o 1-255 protokół Urządzenie powinno odpowiedzieć ramką danych postaci: 23
Command+1 Kod wykonanego rozkazu zwiększony o 1. OpCode kod operacji 7.6 Ustawienie adresu logicznego urządzenia w sieci niskiego napięcia W celu ustawienia adresu logicznego urządzenia, wykorzystywanego do komunikacji z urządzeniem w sieci niskiego napięcia należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_SetPLCAddr. Data[ ] adres logiczny (0-255). Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 Kod wykonanego rozkazu zwiększony o 1. OpCode kod operacji 7.7 Odczytanie adresu logicznego urządzenia w sieci niskiego napięcia W celu odczytania adresu logicznego urządzenia, wykorzystywanego do komunikacji z urządzeniem w sieci niskiego napięcia należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_GetPLCAddr. Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 Kod wykonanego rozkazu zwiększony o 1. OpCode kod operacji 24
7.8 Wybór typu modulacji dla przesyłanych danych W celu ustawienia typu modulacji przesyłanych danych przez sieć niskiego napięcia należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_SetPLCModulation. Data[ ] typ modulacji: 0 modulacja 2PSK, 1 modulacja 4PSK Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 Kod wykonanego rozkazu zwiększony o 1. OpCode kod operacji 7.9 Zapis konfiguracji modułu PLC W celu ustawienia typu modulacji przesyłanych danych przez sieć niskiego napięcia należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_SetPLCConfig. Data[ ] BAJT BIT OPIS Data[1] BIT1 BIT1=0 modem pracujący w trybie transparentnym wszystkie dane po sieci NN wysyła przy pomocy ramek BRODCAST BIT1=1 modem pracujący w trybie transparentnym wysyła dane po sieci NN do modemu, od którego ostatnio otrzymał dane. BIT2 Nie używany BIT3 Nie używany BIT4 Nie używany BIT5 Nie używany BIT6 Nie używany BIT7 Nie używany BIT8 Nie używany CRC16 2 bajtowa suma kontrolna. Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 Kod wykonanego rozkazu zwiększony o 1. OpCode kod operacji. 25
7.10 Odczyt konfiguracji modułu PLC W celu odczytania adresu logicznego urządzenia, wykorzystywanego do komunikacji z urządzeniem w sieci niskiego napięcia należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_GetPLCConfig. Urządzenie powinno odpowiedzieć ramką danych postaci: Command+1 Kod wykonanego rozkazu zwiększony o 1. DATA[ ] adres urządzenia w sieci niskiego napięcia. OpCode kod operacji. 7.11 Przesyłanie danych przez sieć niskiego napięcia W celu przesłania danych po sieci niskiego napięcia należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_SendData. Data[ ] Parametry oraz dane do przesłania Dokładny opis komendy C_SendData znajduje się w podrozdziale: Transmisja danych z wykorzystaniem protokołu Netronix 7.12 Reset modemu W celu dokonania resetu urządzenia należy wysłać do urządzenia ramkę danych w postaci: Command Kod rozkazu C_Reset. 26
8 Transmisja danych z wykorzystaniem modemu 8.1 Transmisja danych Schemat sieci PLC został przedstawiony na rysunku 8.1. Rysunek 8.1. Schemat sieci PLC 8.2 Typy pakietów Protokół transmisji danych poprzez sieć niskiego napięcia zaimplementowany w modemach PMM-2 obejmuje następujące typy pakietów: BRODCAST UNICAST UNICAST_ACK UNICASTR UNICASTR_ACK 8.2.1 Pakiet typu BRODCAST Pakiet typu BRODCAST jest odbierane przez wszystkie modemy będące w zasięgu, a dane w nim zawarte są przekazywane przez interfejs szeregowy do urządzenia nadrzędnego. 8.2.2 Pakiet typu UNICAST Pakiet typu UNICAST jest odbierane tylko przez modem, do którego pakiet jest adresowany. 27
8.2.3 Pakiet typu UNICAST_ACK Pakiet typu UNICAST_ACK tak samo jak w przypadku pakietu UNICAST jest odbierany tylko przez modem, do którego pakiet jest adresowany. Ponadto, modem odsyła potwierdzenie odbioru pakietu. 8.2.4 Pakiet typu UNICASTR Pakiet typu UNICASTR służy do przesyłania danych po między dwoma modemami z wykorzystaniem modemów pośredniczących. Przykładowa transmisja z wykorzystaniem tego typu pakietów wygląda następująco: Załóżmy ze chcemy przesłać dane z PC1 do PC2 za pośrednictwem modemów A B C D, przy czym modemy B oraz C będą pełnić rolę modemów pośredniczących tak jak zostało to pokazane na rysunku poniżej. Przebieg transmisji: PC1 wysłała do modemu A ramkę danych zawierającą: o informacje o ilości skoków (3) o listę modemów biorących udział w transmisji (B, C, D) o dane Modem A po otrzymaniu takiej ramki wysyła pakiet przez siec niskiego napięcia. Wszystkie modemy (z wyjątkiem modemu B), które odbiorą pakiet ignorują go. Modem B natomiast modyfikuje nagłówek pakietu i rozpoczyna retransmisje. Wszystkie modemy (z wyjątkiem modemu C), które odbiorą pakiet ignorują go. Modem C natomiast modyfikuje nagłówek pakietu i rozpoczyna retransmisje. Wszystkie modemy (z wyjątkiem modemu D), które odbiorą pakiet ignorują go. Modem D natomiast odebrane dane przesyła do PC2. 28
8.2.5 Pakiet typu UNICASTR_ACK Pakiet typu UNICASTR służy do przesyłania danych po między dwoma modemami z wykorzystaniem modemów pośredniczących. Sposób transmisji wygląda w sposób analogiczny jak w przypadku pakietów typu UNICASTR. Różnica polega jedynie na tym, że modem będący adresatem odsyła tą samą drogą, którą otrzymał pakiet potwierdzenie odbioru. 8.3 Transmisja danych z wykorzystaniem protokołu Netronix 8.3.1 Wysyłanie danych Do przesyłania danych poprzez sieć niskiego napięcia służą ramki danych w postaci: Length długość ramki danych w bajtach Command kod rozkazu C_SendData. PacketData[ ] parametry transmisji oraz dane do przesłania. W zależności od żądanego trybu transmisji pole PacketData[] ma postać: Dla ramek typu BRODCAST PacketType typ pakietu (0x00 - brodcast) Data[] dane, które mają być przesłane Dla ramek typu UNICAST oraz UNICAST_ACK PacketType typ pakietu (0x0F unicast, 0x0E unicast_ack) DestAddr adres logiczny odbiorcy w sieci NN. Data[] dane, które mają być przesłane Dla ramek typu UNICASTR oraz UNICASTR_ACK PacketType typ pakietu (0x0D UNICASTR, 0x0C UNICAST_ACK) 29
Hops ilość przeskoków. AddrList[] adresy logiczne modemów w sieci NN, przez które ma przejść przesyłany pakiet. Ilość adresów powinna, być równa parametrowi Hops. Data[] dane, które mają być przesłane Przykład: Jeśli chcemy przesłać pakiet typu UNICASTR poprzez modemy o adresach logicznych w sieci niskiego napięcia 0x0D, 0x11 do modemu o adresie logicznym 0x15 zawierającym dane PrzesylaneDane pole PacketData[] powinno mieć postać: 8.3.2 Odbieranie danych Modem, który pracuje w trybie komunikacji wykorzystującym protokół Netronix, po odebraniu pakietu adresowanego do niego przesyła go do urządzenia nadrzędnego z wykorzystaniem ramki danych postaci: Length długość ramki danych w bajtach Command Kod odpowiedzi (0x63). PacketData[ ] Odebrane dane OpCode kod operacji Pole PacketData[ ] w zależności od rodzaju odebranego pakietu przyjmuje postać: Typ odebranego pakietu Format pola PacketData[ ] BRODCAST UNICAST UNICAST_ACK UNICASTR PacketType 0x00 PacketType 0x0F PacketType 0x0E PacketType 0x0D Data[ ] SourceAddr Data[ ] SourceAddr Data[ ] Hops AddrList[HOPS ] Data[ ] UNICASTR_ACK PacketType 0x0C Hops AddrList[HOPS ] Data[ ] PacketType typ pakietu Data[ ] odebrane dane SourceAddr pole to występuje dla pakietów typu UNICAST oraz UNICAST_ACK i zawiera adres modemu, który wysłał pakiet. 30
Hops pole to występuje dla pakietów typu UNICASTR oraz UNICASTR_ACK i zawiera informacje o długości pola AddrList[ ] AddrList[ ] pole to występuje dla pakietów typu UNICASTR oraz UNICASTR_ACK i zawiera adresy logiczne modemów biorących udział w transmisji pakietu. Pierwszy z adresów to adres nadawcy, ostatni to adres odbiorcy. 8.4 Transmisja danych z wykorzystaniem trybu przezroczystego Jeżeli modem odbierze pakiet danych przesyłany przez sieć niskiego napięcia adresowany do niego lub pakiet typu BRODCAST, to dane w nim zawarte prześle poprzez interfejs szeregowy do urządzenia nadrzędnego. Jeżeli do modemu zostaną przesłane dane przez interfejs szeregowy, to zostaną one zbuforowane w modemie, przekształcone, a następnie transmitowane poprzez sieć niskiego napięcia. W zależności od konfiguracji modemu może nastąpić jedne z dwóch przypadków: 1. Dane zostaną wysłane z wykorzystaniem pakietu typu BRODCAST. 2. Dane zostaną wysłane do modemu, od którego ostatnio odebrano pakiet przesyłany przez siec niskiego napięcia. Parametry pakietu (typ pakietu, adres odbiorcy itd.) zostaną ustalone automatycznie. 8.5 Przebieg oraz prędkość transmisji Przebieg transmisji danych z wykorzystaniem modemów PLC został przedstawiony na rysunku 8.2. A t RS_TIMEOUT t D1 B t C t t S - dane transmitowane poprzez interfejs szeregowy - pakiety danych transmitowanych poprzez sieć niskiego napięcia Rysunek 8.2. Przebieg transmisji z wykorzystaniem modemów PLC. A dane przesyłane przez interfejs szeregowy do modemu B pakiety danych transmitowane przez sieć niskiego napięcia C dane przesyłane przez interfejs szeregowy z modemu, który odebrał dane do urządzenia nadrzędnego. 31 t D2 t
Parametry dotyczące wielkości buforów oraz czasy poszczególnych etapów transmisji zostały przedstawione w tabeli 6.1. Tabela 8.1 Parametr Wartość Opis t RS_TIMEOUT 10ms Czas mierzony od chwili otrzymania ostatniego znaku przez interfejs szeregowy, po którym modem uznaje, że otrzymał całą ramkę danych. t D1 t D2 t S 33ms 0,1ms patrz wzór 5.1 Czas mierzony od chwili otrzymania ostatniego znaku przez interfejs szeregowy, po którym modem rozpoczyna transmisje danych przez sieć niskiego napięcia Czas mierzony od chwili otrzymania pakietu danych odebranego przez sieć niskiego napięcia, do chwili rozpoczęcia transmisji danych przez interfejs szeregowy Czas trwania transmisji danych przez sieć niskiego napięcia. Maksymalna długość pojedynczej ramki wynosi 300 bajtów. Krótsze ramki wysyłane w odstępach czasu krótszych niż t RS_TIMEOUT są ze sobą sklejane i transmitowane jako jeden ciąg danych. Suma długości sklejanych ramek nie może wynosić więcej niż 300 bajtów. W przypadku, gdy do modemu zostanie wysłana ramka danych dłuższa niż 300 bajtów, przez sieć niskiego napięcia zostanie wysłane tylko pierwsze 300 bajtów z otrzymanych danych, a pozostałe zostaną zignorowane. Dane przesyłane do modemu, w przypadku gdy modem nie ukończył przesyłania poprzedniej ramki danych, są ignorowane. Stan gotowości do wysłania kolejnej ramki danych jest sygnalizowany stanem wysokim (3,3V) na wyprowadzeniu IO. Czas, po którym modem jest gotowy do wysłania kolejnej ramki danych, zależy od długości ramki danych wysłanej poprzednio i określony jest zależnością: t t S S = 320ms n 5 = d + 320 ms 8 dla dla n 5 n > 5 (6.1) gdzie: n ilość transmitowanych bajtów danych d stała zależna od typu modulacji. o d=125 dla modulacji 2PSK o d=64 dla modulacji 4PSK symbol oznacza zaokrąglenie w górę do liczby całkowitej. 32
Realne prędkości transmisji danych przez sieć niskiego napięcia dla prędkości pracy interfejsu szeregowego modemu wynoszącej 9600bps zostały przedstawione na wykresie poniżej. PRĘDKOŚĆ TRANSMISJI 1200 1000 Prędkość transmisji [bps] 800 600 400 200 2PSK 4PSK 0 5 21 37 53 69 85 101 117 133 149 165 181 197 213 229 245 261 277 293 Długość transmitow anej ramki [B] Prędkość transmisji wyznaczana była na podstawie zależności: n 8 Baud = [ bps] t t 2 1 n ilość przesyłanych bajtów danych t1 czas rozpoczęcia transmisji 1 znaku do modemu. Który będzie przesyłał dane przez sieć niskiego napięcia. t2 - czas otrzymania ostatniego znaku z modemu, który odebrał dane przesyłane przez sieć niskiego napięcia. 33
Dodatek A. Kody rozkazów oraz kody operacji Kody operacji zostały zebrane w tabeli poniżej. Operacja Kod operacji Opis C_FirmwareVersion 0xFE Odczyt wersji oprogramowania C_SetTEAKey 0xFC Zmiana klucza szyfrującego C_SetUartSpeed 0xFA Zmiana prędkości pracy interfejsu szeregowego C_SetUartAddr 0xF8 Zmiana adresu urządzenia C_SetUartProtocol 0xF6 Wybór protokołu komunikacji C_SetMACAddress 0xB0 Ustawienie adresu fizycznego urządzenia C_GetMACAddress 0xB2 Odczytanie adresu fizycznego urządzenia C_SetPLCAddr C_GetPLCAddr 0xA0 0xA2 Ustawienie adresu logicznego urządzenia w sieci NN Odczytanie adresu logicznego urządzenia w sieci NN C_SetPLCModulation 0xA4 Ustawienie typu modulacji C_SetPLCConfig 0xA6 Zapis konfiguracji modułu PLC C_GetPLCConfig Odczyt konfiguracji modułu PLC C_SendData 0x60 Wysyłanie pakietu danych po sieci niskiego napięcia Kody odpowiedzi zostały zebrane w tabeli poniżej. Odpowiedz Kod odpowiedzi Opis OC_Successful 0xFF Rozkaz wykonany prawidłowo OC_RangeError 0xF2 Niepoprawna wartość parametrów OC_LengthError 0xF1 Niepoprawna długość ramki OC_UnknowCommand 0xF0 Nieznany rozkaz OC_Error 0xE0 Błąd OC_NoACK 0xA0 Brak potwierdzenia odbioru ramki 34