www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Busprotokoll RS485, wozu Startbyte?


Autor: Enno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin dabei mir ein Protokoll für ein RS485 Netzwerk mit 4 Teilnehmern 
zu überlegen. Im Grunde finde ich den Aufbau der CAN-Botschaft ganz gut, 
nur etwas kürzer kann es sein. Aber wozu brauche ich eigentlich das 
Startbyte? Ich wollte zwischen jeder Nachricht eine Pause von 4 Byte 
machen, somit ist klar, dass das erste Byte, dass nach dieser Pause 
kommt, der Identifier ist (keine extra Adressierung notwendig durch 
Identifierlisten in jedem Controller).

Was für Vorteile bringt da noch ein Startbyte? Denn dass damit eine neue 
Nachricht anfängt, weiss jeder Teilnehmer auch nur wenn er die 4 Byte 
Pause mitbekommen hat. Sonst könnte das Startbyte genausogut Teil der 
Daten sein.

Autor: Hans Josef (hjm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Enno,

ein Startbyte brauchst Du nicht. Dies vereinfacht lediglich die 
Auswertung.

Wenn Du ein Startbyte und anschließend ein Längenbyte sendest, sowie am 
Ende eine CRC, so ist auf jeden Fall gewährleistet das die Telegramme 
richtig ausgewertet werden.

Wenn Du wie beschrieben feste Pausen zwischen den Telegrammen einfügst, 
so kannst Du diese als Timeout werten und dann sollte es auch gehen.

Prinzipiel kannst Du auf Deinem Bus machen was Du willst, denn Du mußt 
dafür sorge tragen das alle die richtigen Botschaften empfangen.

Grüße

Autor: Enno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Längenbyte sowie CRC wollte ich ohnehin dabei haben. Aber durch die 
Längenangabe müsste es doch selbst ohne 4 Byte Pause genauso gut 
funktionieren wie mit Startbyte.

Ich denk mir halt wenn ein Controller aus irgendeinem Grund (durch 
Watchdog Reset, enorme EMV Störungen oder was auch immer) komplett den 
Faden verliert und nicht mehr weiss an welcher Stelle die 
Buskommunikation ist, dann hilft ein Startbyte ja auch nicht, da es wie 
gesagt genau so gut ein Datenbyte sein könnte. Das einzige an was ich 
denken kann ist eine Pause die so vorkommend, in den Daten verboten 
wird.

Deswegen frage ich mich, an welcher Stelle ich überhaupt irgend einen 
Nutzen von einem Startbyte habe.

Autor: Thomas P. (topla)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schicke halt das erste Byte als Adressbyte (Zieladresse) mit gesetztem 
9.Bit. Da kann jeder Slave synchronisieren, der mit Adress-Match 
schaltet um und empfängt weiter, die anderen legen sich halt wieder hin, 
bis das nächste Byte mit gesetztem 9. Bit auftaucht.

Gruß
Thomas

Autor: Enno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein 9Bit Protokoll...sehr interessant. Die Lösung gefällt mir.
Allerdings würde ich nach wie vor über die Nachricht-Id Adressieren. 
Muss halt jeder Teilnehmer kurz nachschauen ob er für die Id eine 
Fallbehandlung hat oder nicht.

Autor: Thomas P. (topla)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie Du das nennst, ist doch egal. Das gesetzte 9. Bit kennzeichnet ja 
nur, dass da eben etwas besonderes kommt. Ich nutze das z.B. als eine 
Art Token, der Slave der ein gesetztes 9. Bit mit seiner Adresse 
empfängt, darf eine Antwort an den Master senden; im einfachsten Fall 
ein ACK, also "ich bin noch da", die anderen haben Sendepause. Als 
Kennzeichen für eine Nachricht kann man das erste Byte mit gesetztem 9. 
Bit nur verwenden, wenn man keine Antworten der Slaves erwartet, da ja 
mehrere die Nachricht auswerten (können). Gibt es pro Nachrichtenart nur 
einen Empfänger, ist es wieder eine Adresse...

Gruß
Thomas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.