Master/Slave komunikace RS485

Možnosti paketování např.:

  • Zajištění, aby data paketu neobsahovala řídicí znaky. Ohraničení paketu může být pomocí ASCII řídicích kódů (SOH, SYN atd), data jsou zakódovaná do menšího počtu bitů - v nejjednodušším případě jeden bajt jako 2 HEX znaky (zpráva bude 2x delší). V lepším případě se data přenáší např. po 7 bitech, 8 datových bajtů se tak přenese jako 9 paketových bajtů. Nebo se přepíná sada - pro bajty 0…1f se vyšle prefix SI/SO a přenášejí se pak jako 20…3f. Vhodné u rušených linek, lze kontrolovat i neplatné bajty. Varianta s HEX znaky je dobrá u malých zařízení, protože je spolehlivá a jednoduchá. Jsou-li potřeba přenášet jen ASCII znaky, lze data zakódovat po 6 bitech do písmen (0…9, @, A…Z, ', a…z), některé znaky mohou být řídicí (< a > ohraničuje začátek a konec paketu).

  • Escape sekvence - data mohou obsahovat i řídicí znaky, ale před každým bajtem s touto hodnotou se vyšle escape kód informující, že to jsou data. Např. začátek a konec paketu se označí bajty SOH EOT. Objeví-li se v datech hodnota SOH, EOT nebo ESC, vyšle se před ní bajt ESC. Případné rozsynchronizování (chytnutí falešného řídicího kódu) se ošetří kontrolou CRC paketu. Vhodné u středně rušených linek.

  • Binární přenos se startovací sekvencí. Přenáší se všechna data binárně tak jak jsou, ale před paketem je speciální posloupnost několika bajtů (magic bajty, jejichž výskyt v datech je málo pravděpodobný) a paket je zajištěný dobrým CRC. Pokud je příjemce v synchronizaci, je přenos rychlý a stabilní. Pokud se rozjede, čeká na magic posloupnost a ověří CRC paketu, při chybě pokračuje v čekání. U spolehlivých linek je tohle asi tak nejlepší způsob.

U RS485 se neustále poslouchá linka (pomocí přerušení), master se dotazuje jednotlivých zařízení a pokud zařízení má odpovědět, přepne na dobu vysílání vysílací linku a pak ji musí zas uvolnit (sledovat zda se dokončilo odeslání posledního bajtu).