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