Protokol S-Bus (dále jen S-Bus-MORSE) je implementován do systému MORSE jako přístupový modul pro komunikaci se zařízením PCD SAIA. Protokol je typu MASTER/SLAVE, přičemž MASTER stanice nemá vlastní adresu. SLAVE stanic může být maximálně 254, adresa 255 je vyhrazena pro broadcastové vysílání které nebývá potvrzováno. Fyzická vrstva protokolu S-Bus-MORSE používá rozhraní RS232 nebo RS485 (SC kanál). Broadcastové vysílaní je implementováno do systému MORSE a přijatá data s adresou 255 jsou označena jako broadcastová.
Tab. 1: Základní povely protokolu (S-Bus Code)
Read | Write | |
Input | 0x03 | x |
Output | 0x05 | 0x0D |
Flags | 0x02 | 0x0B |
Register | 0x06 | 0x0E |
Counter | 0x00 | 0x0A |
Timer | 0x07 | 0x0F |
Data Block | 0x96 | 0x97 |
RTC | 0x04 | 0x0C |
a) Breakový mód (SM0)
Synchronizace rámců je provedena pomocí break znaků definované délky, které jsou vysílané pouze před adresovaným povelem.
b) Paritní mód (SM1)
Zastaralý, v systému MORSE není podporován
Paritní bit rámce určuje typ rámce:
1 – adresní
0 – datový
c) Datový mód (SM2)
Bitová synchronizace rámce (FS) je zajišťována vložením znaku 0xB5 na začátek rámce. Pokud by se v rámci měl vyskytnout tento znak, je nahrazen následující DLE sekvencí:
znak | DLE sekvence |
---|---|
0xB5 | 0xC500 |
0xC5 | 0xC501 |
Obecný tvar telegramu S-Bus v datovém režimu:
| FS/8 | AT/8 | Addr/8 | SC/8 | Data | CRC/16 |
FS
– bitová synchronizace rámce (Frame synchronization)0xB50xB5
AT
– určuje druh telegramu:0x00: rámec je telegram, zápis dat, čtení .. atd.
0x01: rámec je odpověď a obsahuje data
0x02: ACK/NAK
Addr
– adresa v síti S-BusSC
– S-Bus Command, viz tabulka Základní povely protokoluData
– obsah pole podle příslušného povelu S-BusCRC
– kontrolní součet
Linková, resp. síťová vrstva protokolu S-Bus-MORSE rozeznává čtyři druhy rámců.
Při příjmu z SC kanálu jsou všechny rámce považovány za adresné. Pouze v případě, že protokol očekává odpověď na adresný rámec, je první přijatý rámec s korektním BCW (popř. ACK nebo NAK) považován za neadresný.
Po vyslání adresného povelu na SC kanál je následně přijatý rámec na SC kanálu považován za neadresnou odpověď. Pokud není přijata odpověď na vysílaný rámec na SC kanálu, je tento rámec opakován po nastavitelné době (t) s nastavitelným počtem opakování (r). Při neobdržení odpovědi na adresný rámec protokol S-Bus-MORSE vygeneruje chybový paket WIRE_LINK_FAIL. Neadresný rámec není opakován.
Rámce S-Bus vyslané na adresu 255 (0xFF) jsou protokolem S-Bus-MORSE vyslány do sítě MORSE jako broadcast. V síti MORSE je nutno pro tento případ konfigurovat příslušná menu (B)roadcast.
Podle obsahu znaku AT se na SCC vyskytují 4 typy rámců:
A – DATOVÝ REŽIM
Rámec adresného povelu
Rámec adresného povelu je přenesen pouze, souhlasí-li pole BCW. Pole ADDR je použito k získání síťové adresy cílové stanice. Obě pole ADDR i BCW jsou odstraněna na straně vysílací stanice (Communication Unit – CU) resp. obnovena na straně přijímací radiostanice. Typ paketu je USER DATA (0x09). Formát a příklad dat:
| FS/8 | AT/8 | Addr/8 | SC/8 | Data | BCW/16 | B5 00 01 06 030000 5F4B
Rámec neadresné odpovědi s daty
Rámec neadresná odpověď je přenesen pouze, souhlasí-li pole BCW. Pole BCW je odstraněno, resp. obnoveno. Adresa protistanice je určena jako odesílatel předchozího přijatého paketu. Typ paketu je USER DATA .
| FS/8 | AT/8 | Data | BCW/16 | B5 01 0000 0A9D 0000 0A9D 83F3 0BED 1E06 3DCE 78F0
Potvrzovací rámce – ACK
Rámec ACK přijatý z SC kanálu je přenášen pouze v případě, že protokol S-Bus-MORSE očekává neadresnou odpověď. Adresa protistanice je určena jako odesílatel předchozího přijatého paketu. Typ paketu je USER DATA.
| FS/8 | AT/8 | ACK | BCW/16 | B5 02 0000 23F4
Rámec negativní odpovědi – NAK
Rámec NAK přijatý z SC kanálu je přenášen pouze v případě, že protokol S-Bus-MORSE očekává neadresnou odpověď. Adresa protistanice je určena jako odesílatel předchozího přijatého paketu. Typ paketu je USER DATA.
| FS/8 | AT/8 | NAK | BCW/16 | B5 02 0001 33D5
ACK = 0x0000
NAK = 0x0001
B – BREAKOVÝ REŽIM
Breakový režim nepoužívá položky FS, AT. Místo toho je začátek rámce označen znaky break v nastavitelné délce.
Rámec adresného povelu
| Addr/8 | SC/8 | Data/8 *N | BCW/16 | 0x02 0x06 0x00000A 0xC250
Rámec neadresné odpovědi s daty
| Data/8 *N | BCW/16 | 0x0000 020E 0x87AC
Potvrzovací rámce – ACK
| ACK kód /8 | 0x06
Rámec negativní odpovědi – NAK
| ACK kód/8 | 0x15
Ostatní rámce jsou ignorovány.
Addr je adresa protistanice
BCW je Block Control Word, 16ti bitové CRC
ACK = 0x06
NAK = 0x15
Tyto čtyři druhy rámců
jsou protokolem S-Bus-MORSE přenášeny jako data síťové vrstvy MORSE, typ user data, formát:
Rámec adresného povelu
| 0x01/8 | data |
Rámec neadresné odpovědi s daty
| 0x04/8 | data |
Potvrzovací rámce – ACK
rámec s nulovou délkou
Rámec negativní odpovědi – NAK
| 0x15/8 |
A – DATOVÝ REŽIM
Příklad 1
Zápis digitální hodnoty (SC=0D) na Slave 02, rámec potvrzen ACK.
Monitoring požadavku a odpovědi na lince SCCPCD
Master-CU a CU-PCD Slave
a na vnitřním CNI rozhraní
(MORSE paket):
Příkaz, Master>CU
15:32:24.888 rx;i 11 | S01 B500 020D 0300 1003 0F1B D1 CNI mon |toa frm |dst src | size|TT N 15:32:24.889| |00000002 00000001|S01I OUT 7||89 6usr 0 010D 0300 1003 0F B5 - FS/8 - počátek rámce 00 - AT/8 - adresný povel 02 - Addr/8 - adresa Slave v síti S-Bus 0D 0300 1003 0F - data S-Bus 1BD1 - CRC/16 - kontrolní součet z položky Addr/8 je vytvořena dst adresa 00000002 pro paket MORSE 01 - adresný povel S-Bus MORSE 0D 0300 1003 0F - data S-Bus
Příkaz, CU>Slave
15:32:24.959| |00000002 00000001|S01I IN 7|*89 0usr 0 010D 0300 1003 0F 15:32:24.959 tx 11 | S01 B500 020D 0300 1003 0F1B D1 B500 020D 0300 1003 0F1B D1 - rámec doručený do PCD Slave je shodný s rámcem odeslaným z PCD Master
Odpověď, Slave>CU
15:32:24.974 rx;i 6 | S01 B502 0000 23F4 15:32:24.974| |00000001 00000002|S01I OUT 0||89 0usr 0 B5 - FS/8 - počátek rámce 02 - AT/8 - potvrzení ACK/NAK 0000 - ACK 23F4 - CRC/16 - kontrolní součet Potvrzení ACK je sítí MORSE přeneseno jako paket s nulovou délkou.
Odpověď, CU>Master
15:32:25.035| |00000001 00000002|S01I IN 0|*89 0usr 0 15:32:25.035 tx 6 | S01 B502 0000 23F4 B502 0000 23F4 - rámec pro PCD Master je shodný s odeslaným z PCD Slave
Tuto komunikaci lze shrnout monitoringem na SCC Master-RS:
15:32:24.888 rx;i 11 | S01 B500 020D 0300 1003 0F1B D1 15:32:25.035 tx 6 | S01 B502 0000 23F4
Příklad 2
Čtení analogového registru (SC=06) ze Slave 02:
Příkaz, Master>CU
15:32:37.516 rx;i 9 | S01 B500 0206 0100 64F3 DB 15:32:37.516| |00000002 00000001|S01I OUT 5||89 7usr 0 0106 0100 64 B5 - FS/8 - počátek rámce 00 - AT/8 - adresný povel 02 - Addr/8 - adresa Slave v síti S-Bus 06 0100 64 - data S-Bus F3DB - CRC/16 - kontrolní součet 01 - adresný povel S-Bus MORSE 06 0100 64 - data S-Bus
Odpověď, CU>Master
15:32:37.645| |00000001 00000002|S01I IN 9|*89 7usr 0 0400 0001 6300 0000 BB 15:32:37.645 tx 12 | S01 B501 0000 0163 0000 00BB C4E2 04 - neadresná odpověď S-Bus MORSE 0000 0163 0000 00BB - data S-Bus B5 - FS/8 - počátek rámce 01 - AT-8 - odpověď s daty 0000 0163 0000 00BB - data S-Bus C4E2 - CRC/16 - kontrolní součet
Tuto komunikaci lze shrnout monitoringem na SCC Master-RS:
15:32:37.516 rx;i 9 | S01 B500 0206 0100 64F3 DB 15:32:37.645 tx 12 | S01 B501 0000 0163 0000 00BB C4E2
B – BREAKOVÝ REŽIM
Žádost o nastavení výstupu (SC=0D) na Slave 02, rámec je potvrzen protistanicí ACK:
15:01:01.933 tx 9 | S01 020D 0300 0A00 0117 92 15:01:02.055 rx;i 1 | S01 06 02 - adresa 0D - žádost o nastavení výstupu 03 - počet datových bytů v rámci(4) 000A0001 - data 1792 - CRC
Žádost o čtení registru č.10 s neadresnou odpovědí:
14:56:33.967 tx 7 | S01 0206 0000 0AC2 50 14:56:34.092 rx;i 6 | S01 0006 020E 87AC
žádost:
02 - adresa 06 - žádost o čtení registru 00 - počet datových bytů v rámci(1) 000A - data C2 50 - CRC
odpověď:
00 - neadresná odpověď 06 - žádost o čtení registru 020E - data 87AC - CRC
S-BUS parameters: (m):MASTER/SLAVE (N):OFF (t):300ms (T):11500ms (r):0 (b):5 (a):0000 (d)ata mode:OFF (q)uit
(m) | (m):MASTER / SLAVE — parametrem „mode“ se nastavuje standardní režim MASTER/SLAVE nebo režim SLAVE+ (viz. Kap.5) |
(N) | (N): ON/OFF — ON = režim číslování paketů při vysílání, kontroluje číslo paketu v odpovědi (check packet Numbers) pokud se neshodují, paket je zahozen, má význam pouze na straně radiomodemu u PCD MASTER |
(t) | (t): 300 ms — parametr „timeout“ slouží k nastavení doby čekání na odpověď při opakování do SC kanálu. Musí mít hodnotu času potřebného k vysílání nejdelšího paketu v aplikaci. |
(T) | (T):11500ms — mechanismus redukce přísunu paketů z SC kanálu (offered load, transmission control timeout) při nevhodně nastaveném timeoutu aplikační vrstvy v centru. doporučený čas: T = Rsaia * TOsaia – 500 [ms] Rsaia, TOsaia – počet opakování a timeout připojeného zařízení Saia PCD CU po nastavený čas (T) zahazuje všechny (opakované) povely, které dostává na SC kanálu od centra(FEPu). Účelem je nezablokovat rádiový kanál opakovanými dotazy po dobu, než přijde po rádiové síti odpověď od RTU. |
(r) | (r): 3 — parametr „repeats“ slouží k nastavení počtu opakování do SC kanálu při neobdržení odpovědi |
(b) | (b): 5 znaků — parametr „break characters“ slouží k nastavení délky symbolu break, uplatňuje se pouze breakovém režimu |
(a) | (a):0000 — alarmová hlášení – ve vývoji |
(d) | (d)ata mode: OFF — volba módu OFF – Breakový režim ON – Datový režim |
Doporučené časování PCD SAIA – dle výrobce:
Podřízené stanice SAIA PCD v režimu MASTER/SLAVE mohou předávat informaci do protokolu S-Bus do jiných podřízených stanic (v danou chvíli se přepnou do režimu master). V tomto případě může dojít ke kolizi, centrum posílá dotaz na stanici, která je v danou chvíli v režimu master, případně jedna podřízená stanice odpovídá dvěma masterům najednou. Tyto kolize se díky dlouhým timeoutům, které je pro radiový přenos nutné nastavit, řeší velmi dlouho.
V případě použití jiného protokolu v centru, např. MARS-A lze přepnout protokoly S-Bus-MORSE na všech ostatních radiových stanicích do režimu SLAVE+. Potom budou všechny adresné žádosti o zápis (přijaté z SC kanálu) odeslány, protokol na ně vygeneruje ACK, a všechny adresné žádosti o čtení (přijaté z SC kanálu) budou zahozeny a protokol na ně vygeneruje NAK, rozdělení kódu pro režim SLAVE+ je v tab 1. Odeslané pakety budou mít první byte nastaven na hodnotu 0x02 a budou mít typ paketu USER DATA. V případě, že podřízená stanice chce číst data z centra (FEPu), musí pro tuto komunikaci použít žádost o zápis a přenos odpovědi opačným směrem musí obstarat vyšší komunikační vrstva. Komunikaci s aktivitou „ze zdola“ lze navrhnout i jiným způsobem. Firma RACOM dodává podporu komunikačního software do zařízení MORSE zdarma.