Forum: Mikrocontroller und Digitale Elektronik Modbus Zeiten und Zeichen


von Matthias (Gast)


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

von Gatsby (Gast)


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

von Matthias (Gast)


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

von Gatsby (Gast)


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

von Matthias (Gast)


Lesenswert?

ja danke so mach ichs

von MrModbus (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.