https//www.racom.eu/cz/support/protocols_docum/bc280_inca.html
1. Úvod
Protokol INCA byl vytvořen společností Nederland Haarlem company.
Protokol se používá pro komunikaci mezi signalizačním zařízením parkovišť a
ústředím.
Protokol může pracovat ve třech režimech (1.point to point, 2.broadcast,
3.multicast) avšak v MORSE systému je podporován jen režim point to point.
2. Formát dat
Všechny rámce protokolu INCA v režimu point to point jsou charakterizovány
touto strukturou:
| sync/8 | hdrlen/8 | msglen/16 | datachk/16 | msgid/8 | srcaddr/16 |
E3 0D 00 15 85 F8 00 81 05
| msgtyp/8 | destaddr/16 | hdrchk/8 | data/size | tail/8 |
01 81 06 84 02 00 00 6A 00 82 02 2D 0D
Význam položek:
sync začátek rámce (STX), vždy je E3h
hdrlen délka hlavičky (při režimu point to point je vždy 0Dh)
msglen celková délka zprávy (mimo zakončení tail)
datachk kontrolní součet (CRC-16 přes data zprávy)
msgid identifikace zprávy
srcaddr adresa odesílatele (source)
msgtyp typ cílové adresy:
point to point mode vždy 01 or 02
broadcast mode 03 (není podporováno v MORSE)
multicast mode 04 (není podporováno v MORSE)
destaddr cílová adresa (destination)
hdrchk kontrolní součet hlavičky (exlusive-or přes sync, hdrlen, msglen,
datachk, msgid,srcaddr, msgtyp a destaddr)
data vysílaná data, velikost v bytech = msglen – 0Dh
tail konec rámce (ETX), vždy 0Dh
3.Implementace protokolu v systému MORSE
- přístupový modul protokolu INCA
3.1.Vnější zařízení –> Morse Communication Unit (MCU)
MCU kontroluje každý příchozí rámec v těchto krocích:
1. Délka rámce musí být větší nebo rovna 14 byte (minimální velikost
paketu, obsahuje jen header a tail, nikoliv data)
2. STX (sync) je E3h
3. Délka hlavičky (hdrlen) je 0Dh (13 byte)
4. Skutečná délka paketu musí být rovna nebo větší než délka zprávy
(msglen) uvedená v hlavičce + 1 (tail)
5. Kontrolní součet hlavičky (hdrchk) je O.K.
6. CRC (datachk) je O.K.
7. Tail je na správné pozici a je 0Dh.
Jestliže souhlasí všechny uvedené kontroly, je rámec dopraven do
systému MORSE. 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, proto se v paketu MORSE přenáší pouze msgid (identifikace
hlášeni), msgtyp (typ hlášení) a data.
Příklad:
Vnější zařízení -> MCU(MR25)
E3 0D 00 15 85 F8 00 81 05 01 81 06 84 02 00 00 6A 00 82 02 2D 0D
Data paketu MORSE:
00 01 02 00 00 6A 00 82 02 2D
Fragmentační algoritmus:
Přístupový modul protokolu INCA používá následující algoritmus pro
kompletaci/fragmentaci rámců:
Jestliže MCU najde byte STX v přijatém rámci, pokusí se najít 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 a tyto jsou zpracovány odděleně.
2. Jestliže je skutečná délka rámce menší než očekávaná, pak MCU očekává
další část rámce. MCU spojuje přicházející rámce, až délka výsledného rámce
dosáhne nebo překročí očekávanou délku.
Příklady fragmentace:
1. Vnější zařízení -> MCU
FF FF FF E3 0D 00 15 85 F8 00 81 05 01 81 06 84 02 00 00 6A 00 82 02 2D 0D
FF FF
Data paketu Morse:
00 01 02 00 00 6A 00 82 02 2D
2. Vnější zařízení -> MCU
FF FF FF FF E3 0D 00 15 85 F8 00 81 05 01 81 06 84 02 00 00 6A 00 82 02 2D
0D FF FF EE EE E3 0D 00 15 6D F9 01 81 05 02 81 06 6F 02 00 00 6A 00 02
02 2D 0D FF FF FF
Data paketu Morse:
00 01 02 00 00 6A 00 82 02 2D (1st packet)
01 02 02 00 00 6A 00 02 02 2D (2nd packet)
3. Vnější zařízení -> MCU
FF FF FF FF E3 0D 00 15 85 F8 00 81 05 01 81 06 84 02 00 00 6A 00 82 02 2D
0D FF FF FF FF EE EE E3 0D 00 15 6D F9 01 81 05 02 81 06 6F 02 00
00 6A (1st frame)
00 02 02 2D 0D FF FF FF (2nd frame)
Data paketu Morse:
00 01 02 00 00 6A 00 82 02 2D (1st packet)
01 02 02 00 00 6A 00 02 02 2D (2nd packet)
3.2. MCU -> Vnější zařízení
Přístupový modul protokolu INCA doplní přijatá data paketu Morse o části
header a tail podle výše uvedených pravidel. Kompletní rámec je pak odeslán
do vnějšího zařízení.
3.3. Řízení toku dat
V linkové vrstvě protokolu INCA není použit softwarový handshake. Pokud
jsou všechny buffery MCU zaplněny, pak není možno dát zprávu do připojeného
zařízeni. Proto je ztracen každý paket, který za této situace přijde. Aby
se tomu předešlo, je možno použít hardwarový handshake (RTS/CTS).
Pravděpodobnost, že vnější zařízení přeplní síť, je však za normálních
okolností zanedbatelná.
3.4. Příklad komunikace
INCA centála----> MCU 05
E3 0D 00 15 85 F8 00 81 05 01 81 06 84 02 00 00 6A 00 82 02 2D 0D
Data paketu Morse MCU 05 ----> MCU 06
00 01 02 00 00 6A 00 82 02 2D
MCU 06 ---->INCA vnější zařízení
E3 0D 00 15 85 F8 00 81 05 01 81 06 84 02 00 00 6A 00 82 02 2D 0D
INCA vnější zařízení ----> MCU 06
E3 0D 00 17 8E C2 00 81 06 02 81 05 B4 02 00 00 6A 00 C2 03 2D FD E8 0D
Data paketu Morse MCU 06 ----> MCU 05
00 02 02 00 00 6A 00 C2 03 2D FD E8
MCU 05 ----> INCA centrála
E3 0D 00 17 8E C2 00 81 06 02 81 05 B4 02 00 00 6A 00 C2 03 2D FD E8 0D
4. Nastavení parametrů protokolu v MCU
(t) timeout
Doba čekání na další fragment rámce. Nepřijde-li další fragment během
této doby, je předchozí část zahozena.
Je-li timeout nastaven na 0, je vypnut fragmentační algoritmus a každý
rámec je považován za kompletní. Pokud je nekompletní, je zahozen.
5. Chybová hlášení
Je-li v SCC nastaveno debu(G)ging level = 1, pak se mohou objevit tato
chybová hlášení:
Hlášení jsou odesílána na adresu service destination (viz menu Unit),
defaultně 2nd SCC.
"Ch_in problem: PACKET TOO SHORT:%hu
– Délka rámce musí být větší nebo rovna 14 byte (minimální velikost rámce,
pouze header a tail, žádná data).
"Ch_in problem: NO SYNC BYTE %02Xh
– V rámci chybí STX (E3h).
"Ch_in problem: HDRLEN !%hu(%02Xh):%hu(%02Xh)"
– Header lenght vyplněná v hlavičce je odlišná od 0Dh.
"Ch_in problem: MSGLEN: %hu(%Xh), INC. PACKET LEN: %hu(%Xh)",
- Skutečná délka rámce je menší, než délka vyplněná v hlavičce rámce.
"Ch_in problem: INC. HCHK: %02Xh, CALC. HCHK:%02Xh"
– Vypočítaný kontrolní součet (header checksum) nesouhlasí s header
checksum v hlavičce rámce
"Ch_in problem: INC. DCHK: %Xh, CALC. DCHK:%Xh"
– Vypočítaný kontrolní součet dat (datachk) nesouhlasí s datachk v hlavičce
rámce.
"Ch_in problem: TAIL !%02Xh:%02Xh"
– Tail je odlišný od 0Dh.
"m_user_in: INC. PACKET TOO SHORT:%hu"
– Paket přicházející z kanálu Morse je kratší, než 2 byte (msgid, msgtyp).
"Waits %hums for next part of packet"
– Informace, že systém Morse čeká ..ms na další fragment rámce.
"No packet joining"
– Informace, že systém Morse nečeká na další fragmenty rámce (timeout=0).
"Join packet problem: Timeout for next fragment expired"
– Informace, že timeout pro další fragment byl vyčerpán. Všechny dosud
došlé fragmenty jsou zahozeny.
6. Historie
Tento popis je platný od verze 4.40 z data 03/2000.