Volba sběrnice pro modulární systém

RS422 (to je duplex z RS485) sa dá použiť len pre dve zariadenia. Tak ako RS232.

Ak cheš použiť na zbernici zariadení viac, treba k tomu vybrať príslušné rozhranie.

Ak má zariadenie posielať do mastra údaje, tak môže:

A) posielať vždy všetky - to ale môže trvať veľmi dlho
B) posielať len to o čo je požiadané.

B) je správne :slight_smile:

Už len preto, že cez sériovú linku môžem chcieť zariadenie preprogramovať a tak podobne a v kontexte práce s ním potrebujem zvyčajne inú odozvu.

Ak potrebujem inú odozvu, potom musím do Slave poslať info, čo od neho chcem. Táto správa musí byť najprv celá prijatá, aby som overil jej správnosť kontrolou CRC. To sa bez načítania celej správy nedá.

Je teda dosť času aby Master prepol RS485 na príjem a vypočul si odpoveď.

Až keď si je Slave istý, čo sa od neho žiada, až potom môže buď zapnút/vypnúť relátko, alebo odoslať odpoveď s požadovanými dátami. Inak odpoveď treba do Mastra poslať vždy. Inak sa Master nemá ako dozvedieť, že správa prišla do Slave v poriadku a netreba ju zopakovať. lebo jedna vec je mať správu chránenú CRC alebo paritou. No táto ochrana slúži iba k tomu, aby sa vedelo, či správa prišla poškodená, alebo je s najväčšou pravdepodobnosťou v poriadku. Ochranné polynomy CRC sú vyberané tak, aby odhaľovali typické chyby pre to ktoré prostredie. Preto sú polynomy používané v priemysle a iné polynomy pre použitie v telekomunikáciách.

Viac o tom je napríklad v:

en.wikipedia.org/wiki/Cyclic_redundancy_check

Lebo logicky, keď prenášam 64B a “chránim” ich 2B, tak musí existovať obrovské množstvo kombinácií, ktoré budú mať rovnaké CRC. Ak sa moja správa vplyvom rušenia “premení” na inú správu, ktorej však prislúcha rovnaké CRC, nemám ako zistiť chybu prenosu.

Ale nemaj z toho obavu. Takéto prípady sa vyskytujú prakticky zanedbateľne a tieto veci fungujú veľmi spoľahlivo. Ak sa bojíš omylom zapnutého relátka, vždy môžeš jeho stav preniesť ako 0x00 alebo 0xff. Ak by nastala nevhodná zmena bitov počas prenostu tak, že by sedelo výsledné CRC, ľahko to vieš zistiť. No nezabudni si ešte potom nejako aj ošetriť adresu zariadenia, aby správu náhodou nedostala iná stanica. Aj preto slušné protokoly majú v odpovedi aj adresu Slave. Aby mal Master istotu, že správa doputovala tam kde mala. A aj preto treba vždy zasielať od Slave odpoveď.

Problém rýchlosti komunikácie sa rieši nasledovne. Nemá zmysle prenášať veľmi rýchlo kvantum dát dokonca s presným časovaním, ako napríklad údaje z prejazdovej váhy, kde je potrebný prístup k AD na úrovni 1ms.

Alebo prenášať stavy binárnych vstupov pre počítanie počtu impulzov z vodomera či elektromera. Rýchle deje je potrbné vždy spracovať na mieste a cez komunikačnú linku treba prenášať len spracované dáta. V prípade snímania vodomera je to aktuálny počet impulzov. Lokálny čísleník úplne stačí 8bitový. Z neho sa iba zistí prírastok impulzov za rozumný čas. Tento prírastok sa potom pripočíta k “veľkému” číselníku v Mastri.

Čo sa rýchlostí týka, celkom bezpečná rýchlosť je 9600Bd. S ňou beží RS485 na sieti v celkovej dĺžke 7km v jednom nemenovanom priemyselnom podniku so spoľahlivosťou komunikácie nad 99.8% v hodine. Počet staníc 48 a topológia pripomína rozvetvený strom. Dávať repeatre do odbočiek sa neosvedčilo. Tvar signálu bol po inštalácii v každom bode meraný osciloskopom a bol všade prakticky učebnicový.
Používali sme tam náš ASCII protokol.

Prechod na MODBUS a rýchlosť 19200Bd by viedlo cca k štvornásobeniu prenosovej kapacity.

Pre Tvoju predstavu o dátovej priepustnosti komunikačnej linky RS485:

19200Bd, 2ms pre pripravenie odpovede na strane Slave a odvysielania odpovede pri balíčkoch (výzva + odpoveď) vo veľkosti:

32B je priepustnosť čistých dát 1,36kB/s (8E2) a 1,58kB/s (8N1)
Pre predstavu, touto priepustnosťou sa dá zrealizovať 42 transakcií a
v každej z nich nastaviť stavy až 138 relé za sekundu.
To znamená, že môžeš meniť stav 138 relé každých 24ms,
alebo za sekundu nastaviť 5796 relé v 42 rôznych zariadeniach za sekundu.

64B je priepustnosť čistých dát 1,47kB/s (8E2) a 1,73kB/s (8N1)

Pri rýchlosti 115200Bd, 2ms

32B 4,62kB/s (8E2) a 5,02kB/s (8N1)
64B 6,23kB/s (8E2) a 6,99kB/s (8N1)

Aj keď je pomer komunikačných rýchlostí 6x, dátová priepustnosť sa zvýši iba 3,4x pre 32B transakcie (jedna správa tam a druhá naspäť, spolu 32B) až po 4,6x pre 64B balíčky a 8E2

pri 8N1 je síce o niečo vyššia priepustnosť, avšak za cenu vzdania sa akeho takeho kontrolného mechanizmu paritného bitu

AK je staníc príliš veľa, tak je dobré použiť nejaký koncentrátor. Napríklad pri 80ks staníc s oneskorením 2ms - ak vôbec stihnú do takéhoto času pripraviť odpoveď - je hluchý čas 80*(2+2) = 320ms, čo je skoro 1/3 sekundy. No tak je lepšie nechať zlučovať dáta koncentrátory.