Modbus RTU
Martin Persich
persich na transcon.cz
Středa Červenec 9 16:07:53 CEST 2014
> Snažím se vyřešit komunikaci s PLC pomocí Modbus RTU. Některé věci mi ale
> nejsou moc jasné.
> 1) Dle specifikace začíná rámec klidem o délce 3,5 znaku. Tato doba ale
> přece závisí na přenosové rychlosti. Jak to tedy je?
> 2) Na konci má být opět tento interval. Přitom ale každý rámec má jasně
> určenou délku, takže pokud se počet znaků neshoduje a nesouhlasí kontrolní
> součet, je to jasně chyba. Jaký smysl má prodleva na konci?
Prodleva slouží pro vyhodnocení konce jednoho rámce a začátku následujícího.
Bez této prodlevy by nešlo určit, kdy začíná nový rámec a kdy se má v prvním
byte identifikovat adresa slave.
> 3) Je to tak, že pokud by se uprostřed rámce vyskytla prodleva delší než
> 3,5
> znaku, SLAVE zbytek ignoruje a dojde k chybě?
Ano, "mělo" by dojít k chybě, pokud zařízení naprosto přesně dodržuje výše
uvedené. Problém však je např. při použití UART 16C650 & spol., kdy s
využitím FIFO paměti je veeeelmi problematické tuto prodlevu určit a to
nemluvím o implementaci na PC, kde dosáhnout tohoto časování je zhola
nemožné. Pokud komunikujete jen s jedním druhem zařízení, tak časování není
tak kritické. Důležité je vysílat data bez prodlevy a pokud slave vyhodnotí
konec rámce až po delší době a je dostatečně dlouhý timeout na master
straně, tak se celkem nic nestane. Důležité je v takovém případě "nemíchat"
v jedné síti zařízení, které důsledně dodržují standard a odpověď posílají
rychle s těmi, které jsou poněkud pomalejší.
> 4) Pokud jsou data přenášena přes RS232 - USB, nemůže dojít k vzniku této
> pauzy nebo naopak k potlačení pauzy na začátku a na konci?
Asi by k tomu klidně mohlo dojít, měl jsem kdysi nějaký historický notebook
(cca r. 1995), který se i v MS-DOS občas (jednou za několik minut) na 5-8 ms
ve vysílání na COM portu odmlčel. Nebudu zveřejňovat výrazy, které jsem
použil v okamžiku, kdy jsem na to po několika dnech přišel. Pro MODBUS RTU
nepoužitelné. Naštěstí ne všechna MODBUS slave zařízení to berou tak přesně
a i PC je "obvykle" použitelné pro komunikaci jako master.
> 5) To samé při přenosu přes TCP/IP?
Tady podle mých zkušeností žádný problém nehrozí, časování je dáno TCP
komunikací a až data dorazí, tak dorazí ... Někdy proto může být výhodné při
použití PC jako master místo USB převodníku použít speciální MODBUS TCP /
RTU převodník, který by měl časovat správně ...
V případě MODBUS RTU komunikace je časování důležité při kooperaci více
zařízení (slave) na jedné lince RS-485. V okamžiku komunikace peer-2-peer
je to i tam vlastně jedno.
>
> Jak to prosím je?
>
> Dík
> Martin Záruba
Martin. persich na transcon.cz
Další informace o konferenci Hw-list