MDU

Verze pro tisk

Protokol MDU pro MORSE

verze 9.0.17.0

7. srpna 2007

1. Úvod

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é]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),
CU připojený k PLC Slave je nazýván RADIOMASTER (RM).
Změna se projeví při použití nové verze Setru, verze firmware v CU nemá vliv.

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.

2. Formát dat

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
00 – broadcast (packet bude zahozen)

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

3. Implementace v Morse

Vnější zařízení – komunikační jednotka Morse (CU)

CU kontroluje každý přicházející rámec v těchto krocích:

  1. Délka rámce musí být minimálně 9 byte (minimální velikost paketu, jen hlavička a CRC, žádná data)

  2. STX je E3h

  3. VER je 01h

  4. 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)

  5. Adresa není 00h (broadcast)

  6. Kontrolní součet hlavičky je správný

  7. 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.

  1. 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ě.

  2. 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á.

3.1. Příklad komunikace

 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.

4. Konfigurační parametry

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.

5. Chybová hlášení

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.

6. Historie

9.0.17.0 – 06/2007 – sjednocení názvů RS/RM v Setru