Modbus Zeiten und Zeichen

Gast #1702674
Lesenswert?

Hallo Ihr,

Ich hoffe ihr könnt mir weiterhelfen,

Im Modbus Protokoll RTU muss 3,5 Zeichen gewartet werden bis ein Paket 
gesendet werden darf. Doch wie lange ist diese Zeit wirklich? Was ist 
mit Zeichen gemeint? Ist hier ein Zeichen ein Byte, also eine Pausenzeit 
die bei einer bestimmten Baudrate für ein Byte benötigt wird,
Oder kommt dies von der Baudrate Zeichen pro Sekunde, also bei 9600Baud
wären das 9,6 zeichen pro 1ms macht dann bei 3,5 Zeichen 0,364ms????

Fall der zweite Fall gemeint ist also 0,364ms wird das schwierig 
festzustellen, da ich den UART eines atmegas verwende und da kann man 
nur abrufen per interrupt dass ein Byte fertig gesendet wurde. oder wie 
macht ihr das?

Viele Grüße und Danke
Matthias
Gast #1702738
Lesenswert?

Hallo Mathias,

mit "Zeichen" ist ein UART frame (= 1byte = Startbit, 8bit Daten, 1/2 
Stopbit) gemeint.
Bei 9,6kBaud sind das ca. 1,115 msek, d.h. das Modbus Telegramm wird bei 
einer minimalen Pause von 3,5 * 1,115 msek = 4,01 msek als vollständig 
empfangen gewertet.

Viele Grüße
Gatsby
Gast #1702787
Lesenswert?

Vielen Dank für deine Antwort,

das beruhigt mich ein wenig :)
Es gibt unterschiedliche Beschreibungen und zwar:
Vor einem ModbusPaket müssen 3,5 Zeichen "ruhe" sein und danach 1,5 
Zeichen.
Manche schreiben auch danach 3,5 zeichen, was ist nun richtig?

D.h. nach dem eigenen Senden kann schon nach 1,5 Zeichen wieder auf 
Empfang gegangen werden??

Grüße Matthias
Gast #1702826
Lesenswert?

Hallo Matthias,

du bringst da etwas durcheinander.
Die Daten eines Modbus Telegramms müssen aufeinander folgend gesendet 
werden. Die maximale Pause zwischen den einzelnen Daten (UART frames) 
darf nicht länger als 1,5 Zeichen sein.
D.h. bei 9,6 kBaud muss die Zeit zwischen den einzelnen Daten des 
Telegramms kleiner als 1,5 * 1,115 msek = 1,67 msek sein. Sollte diese 
Pausenzeit überschritten werden, dann wird dieses Telegramm als ungültig 
gewertet.
In einigen Modbus Dokumentationen findet man tatsächlich am Anfang des 
Telegramms eine Pausenzeit von 3,5 Zeichen und am Ende eine Pausenzeit 
von 3,5 Zeichen. Es ist aber gar nicht so kompliziert.
Sende das Modbus Telegramm einfach hintereinander weg. Achte darauf, 
dass die Pause zwischen den einzelnen Zeichen < 1,5 Zeichen ist und 
warte dann >= 4 Zeichen bis du das nächste Telegramm abschickst. Fertig.

Gruss
Gatsby
Gast #1702883
Lesenswert?

Für das Senden des Datenstrom sind die 3,5 Zeichen pausen ebenso 
wichtig, wie für die Prüfung des Empfangstroms!

Sendestrom -> min Wartezeit > 3,5 Zeichen
Empfang    -> 3,5 Zeichen min Pausenzeit zwischen Telegrammen, sonst 
muss
              das Telegramm verworfen werden

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren