Protokol byl vytvořen v Nederland Haarlem company. Používá se pro komunikaci mezi inteligentními světelnými signály v dopravě a centrem.
![]() | Důležité |
---|---|
Od verze Setru 9.0.17.0 je názvosloví sjednoceno podle schématu: PLC Master - CU RADIOSLAVE ... CU RADIOMASTER - Slave PLC CU (radiomodem) připojený přes SCC k PLC Master je nazýván
RADIOSLAVE (RS), Starší Setr používá odlišné označení, tedy: ( PLC Master - CU MASTER ... CU SLAVE - Slave PLC ) |
Komunikace v síti s tímto zařízením je vždy typu Master-Slave. Síť může mít více masterů a slave může být podřízen více masterům. Z tohoto důvodu je přístupový modul tohoto protokolu implementován do systému Morse takovým způsobem, že slave odpovídá vždy na adresu toho mastera, který vyslal dotaz.
Broadcast – pakety (s adresou destination 00) nejsou podporovány.
Všechny pakety v protokolu MDU jsou charakterizovány touto strukturou:
| STX/8 | VER/8 | LENGTH/16 | ADDRESS/8 | HCHK/8 | MSGTYPE/8 | E3 01 00 05 33 1C B1 | DATA/8*N | CRC/16 | 00 04 47 BA 98 8F
STX | začátek paketu (synchronizační byte) 0xE3 |
VER | verze protokolu (vždy 0x01) |
LENGTH | délka zprávy (pouze MSGTYPE + DATA), 2 bytový formát Motorola |
ADR | adresa slave, t.j. slave sem vyplní vlastní adresu
|
HCHK | kontrolní součet hlavičky (součet STX+VER+LENGTH+ADDRESS) |
MSGTYPE | typ zprávy |
DATA | datové byty |
CRC | CRC16 pro message type a data |
Vnější zařízení – komunikační jednotka Morse (CU)
CU kontroluje každý přicházející rámec v těchto krocích:
Délka rámce musí být minimálně 9 byte (minimální velikost paketu, jen hlavička a CRC, žádná data)
STX je E3h
VER je 01h
Skutečná délka paketu musí být větší nebo rovna délce vyplněné v hlavičce + 6 (délka hlavičky) + 2 (CRC)
Adresa není 00h (broadcast)
Kontrolní součet hlavičky je správný
CRC je správný
Pokud všechny tyto kontroly souhlasí, je paket odeslán do systému Morse. Vzhledem k tomu, že adresy source a destination jsou obsaženy v hlavičce paketu Morse a uvnitř systému Morse se používá pro kontrolu dat 32-bitové CRC, posílá se do vnitřního paketu Morse jen typ zprávy a data.
Příklad:
PLC Master -> CU RS E3 01 00 05 33 1C B1 00 04 47 BA 98 8F Data paketu Morse: B1 00 04 47 BA
Fragmentační algoritmus:
Přístupový modul protokolu MDU používá tyto algoritmy pro kompletaci a fragmentaci rámců:
Jestliže CU najde v přijatém rámci byte STX, pokusí se nalézt konec rámce podle informace o délce uvedené v hlavičce nebo podle ETX.
Je-li skutečná délka rámce větší než očekávaná délka, je rámec rozdělen na dva rámce a tyto jsou zpracovány samostatně.
Je-li skutečná délka rámce menší než očekávaná délka, pak CU čeká na další část rámce. CU spojuje přicházející rámce, až je délka spojeného rámce rovna nebo větší než očekávaná délka.
Příklady pro parametr (t)>0, např. 1000ms:
1. PLC -> CU FF FF FF E3 01 00 05 0D F6 B1 00 04 47 BA 98 8F FF FF FF Data paketu Morse: B1 00 04 47 BA 2. PLC -> CU FF FF FF E3 01 00 05 0D F6 B1 00 04 47 BA 98 8F FF FF FF EE EE E3 01 00 01 0D F2 31 D4 C1 FF FF FF Data paketu Morse: B1 00 04 47 BA (1.packet) 31 (2.packet) 3. PLC -> CU FF FF FF E3 01 00 05 0D F6 B1 00 04 47 BA 98 8F FF FF FF EE EE E3 01 00 01 0D F2 (1.rámec) 31 D4 C1 FF FF FF (2.rámec) Data paketu Morse: B1 00 04 47 BA (1.paket) 31 (2.paket)
CU – Vnější zařízení
Přístupový modul protokolu MDU jednoduše připojí k přijatým datům paketu MORSE hlavičku MDU a CRC podle uvedených pravidel. Kompletní rámec je pak ihned odeslán na vnější zařízení.
Řízení toku dat – Flow control
V linkové vrstvě protokolu MDU není použit softwarový handshake. Pokud jsou všechny buffery v CU zaplněny, pak není možnost informovat o tom připojené zařízení. Pak každý paket, který za této situace přijde, je zahozen. Aby se tomu předešlo, je možno použít hardwarový handshake (RTS/CTS). Nicméně pravděpodobnost, že master MDU přeplní síť, je za normálních okolností zanedbatelná.
PLC Master ----> CU RS E3 01 00 01 33 18 31 D4 C1 Data paketu MORSE 31 CU RM ----> PLC Slave E3 01 00 01 33 18 31 D4 C1 PLC Slave ----> CU RM E3 01 00 05 33 1C B1 00 04 47 BA 98 8F Data paketu MORSE B1 00 04 47 BA CU RS ----> PLC Master E3 01 00 05 33 1C B1 00 04 47 BA 98 8F
Paket přicházející z PLC Master nebo PLC Slave může být shodný. RS jej odešle na adresu podle byte ADDRESS, RM jej odešle na adresu minulého dotazu z RS.
MDU parameters: PLC Master - CU RADIOSLAVE ... CU RADIOMASTER - Slave PLC (m)ode :RADIOMASTER (wired to slave) (a):0ms (q)uit >>
(m) | (S) RADIOSLAVE (wired to master) – RADIOSLAVE je CU připojená k PLC Master, posílá data na adresu uvedenou v hlavičce paketu. (M) RADIOMASTER (wired to slave) – RADIOMASTER je CU připojená k PLC Slave, posílá data na adresu RS, od kterého přišel požadavek. POZOR – Setr starší než 9.0.17.0 používá opačné označení M/S ! |
(a) | Doba čekání na příští fragment rámce. Nepřijde-li v této době příští fragment rámce, je předchozí část zahozena. Pokud je timeout nastaven na nulu, je fragmentační algoritmus vypnut a každý rámec je považován za kompletní. Je tedy zahozen, pokud přijde ve více částech. |
Pokud nastavíme (D)ebugging level v kanálu SCC na 1, můžeme dostat následující chybová hlášení. Hlášení jsou odesílána na servisní adresu destination (viz menu Unit), defaultně na SCC 2.
"Ch_in problem: PACKET TOO SHORT:%hu - Délka paketu musí být delší nebo rovna 9 byte (min.velikost paketu, jen hlavička a CRC, žádná data) "Ch_in problem: NO SYNC BYTE %02Xh - V paketu chybí STX (E3h) "Ch_in problem: VERSION !01:%Xh - SW verze (2.byte v hlavičce) není 01h "Ch_in problem: PACK LENGTH: %hu(%Xh), INC. PACKET LEN: %hu(%Xh)", - Skutečná délka přicházejícího paketu je kratší než délka vyplněná v hlavičce paketu "Ch_in problem: MDU_BROADCAST_ADR 00h" - adresa destination je 00h, paket je zahozen. Je-li to master, pak je v hlavičce vyplněna adresa 00h. Je-li to slave, pak není známa adresa master, nepředcházel dotaz od mastera "Ch_in problem: INC. HCHK: %02Xh, CALC. HCHK:%02Xh" - vypočítaný kontrolní součet hlavičky se nerovná kontrolnímu součtu uvedenému v hlavičce paketu "Ch_in problem: INC. DCHK: %Xh, CALC. DCHK:%Xh" - vypočtené CRC dat není rovno CRC uvedenému na konci paketu "m_user_in: INC. PACKET TOO SHORT:%hu" - paket přicházející z kanálu Morse je kratší než 1 byte (msgtyp) "Waits %hums for next part of packet" - Informace, že systém Morse čeká ..ms na příští fragment paketu. "No packet joining" - Informace, že systém Morse nečeká na další fragment paketu (timeout = 0) "Join packet problem: Timeout for next fragment expired" - Informace, že uplynul timeout pro příští fragment. Všechny dosud došlé fragmenty jsou zahozeny.