- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: RS485 Protokoll

  1. #1

    RS485 Protokoll

    Anzeige

    Praxistest und DIY Projekte
    Hat Jemand ein Beispielprotokoll für ein RS485-Bus? Ich sollte ein Übertragungsprotokoll entwerfen, zwar ein Master und acht Slaves. Habe leider keine Ahnung, wie ein solches Protokoll aussieht. Es sollte eine vollduplex Übertragung sein. Kann mir hier jemand helfen? Ich bin für jede Hilfe sehr dankbar!

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Ne direkte Vorlage hab ich nicht, aber wenns ein Master und mehrere Slaves sein soll, wäre eine Idee, es ähnlich wie beim I2C-Bus zu machen.
    Kommt jetzt drauf an, was an Daten gesendet werden soll.
    Als "Startbedingung" könnte z.B. das ASCII-Zeichen "STX" gesendet werden, danach ein Byte mit der Adresse des Slaves. D.h. jeder Slave hört mit und lauscht, ob er sich angesprochen fühlt.
    Danach die Nutzdaten senden und die Übertragung mit "ETX" abschliessen.

    Wenn ein Slave Daten von sich aus Senden soll, wirds etwas komplizierter, da dann gesichert werden muss, dass nie mehrere Slaves gleichzeitig senden. Lässt sich verhindern, in dem der Master z.B. abfragt, ob der Slave Daten hat.

    Da kann man dann natürlich noch Feinheiten wie Prüfsummen, Fehlerkorrektur etc. einbauen. Aber sowas verwend ich bei mir nicht, da ich bisher so auch nie Probleme hatte.
    #ifndef MfG
    #define MfG

  3. #3
    vielen dank für deinen Tipp. Wie wäre es, wenn ich zwischen den Master und Slaves ein Slave Manager anschließen? Kann das gleiche Protokoll verwendet werden oder?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Was genau soll der Slave Manager machen?
    Wenns nur darum geht, die Kommunikation zwischen den Slaves zu Regeln, dann verwendet man eigentlich nen Master, bzw. es ist dessen Aufgabe.
    #ifndef MfG
    #define MfG

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    ein Busprotokoll ist im Prinzip Freistil,
    das kannste Dir entweder selber stricken
    oder hal n fertiges wie SNAP oder Profibus
    implementieren

    Duplex macht die Geschichte einfach.
    Bei halbduplex ists kniffliger wegen
    dem Timing, aber Duplex ist easy.

    Gehste einfach hin und machst Dir
    mal ne Liste welche Daten übertragen werden
    sollen und welches Format die haben sollen.
    Dann brauchste nen Befehlssatz für
    die vom Slave auszuführenden Aktionen
    und dann solltest Du Dir überlegen wie
    groß das ganze Projekt werden soll und
    ob das ggf. erweitern können soll und schon haste
    Deine Adressierung.
    Dann noch nen Fehlercheck, Zeichenzähler,
    CRC,MD5 oder irgend ne andere Prüfsumme und
    fertig ist Dein Protokoll.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  6. #6
    Zitat Zitat von Jaecko
    Was genau soll der Slave Manager machen?
    Wenns nur darum geht, die Kommunikation zwischen den Slaves zu Regeln, dann verwendet man eigentlich nen Master, bzw. es ist dessen Aufgabe.
    Die Daten sollen parallel an den Slaves übertragen werden,deshalb wird ein Slave Manager geraucht, wenn ich es richtig verstanden habe. Sorry, mir ist selbst noch nicht so klar, wie das ganze system funktionieren sollte. Habe gerade angefangen.

  7. #7
    Zitat Zitat von Vitis
    ein Busprotokoll ist im Prinzip Freistil,
    das kannste Dir entweder selber stricken
    oder hal n fertiges wie SNAP oder Profibus
    implementieren

    Duplex macht die Geschichte einfach.
    Bei halbduplex ists kniffliger wegen
    dem Timing, aber Duplex ist easy.

    Gehste einfach hin und machst Dir
    mal ne Liste welche Daten übertragen werden
    sollen und welches Format die haben sollen.
    Dann brauchste nen Befehlssatz für
    die vom Slave auszuführenden Aktionen
    und dann solltest Du Dir überlegen wie
    groß das ganze Projekt werden soll und
    ob das ggf. erweitern können soll und schon haste
    Deine Adressierung.
    Dann noch nen Fehlercheck, Zeichenzähler,
    CRC,MD5 oder irgend ne andere Prüfsumme und
    fertig ist Dein Protokoll.
    Danke sehr! Aber wie sollte ein Befehlssatz definert werden? Eine Prüfsumme und ein Fehlerkorrektur sollen im Protokoll enthalten. Was für eine Prüfsumme ist günstig für so ein Protokoll, also ein Master, ein Slave Manager und acht Slaves? CRC 16? Mit der Adressierung ist mir auch nicht so klar,was du meinst. Ich glaube, bei einem RS 485 Bus können max. 32 Slaves angeschlossen werden. Das heißt, für Adresse reicht 5 Bit aus oder? Ich hoffe,dass du meine Fragen verstehst. Ansonst kannst du mich gern nochmal fragen. Beste Danke

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    die 32 Slaves sind keine feste Größe,
    der Max487 kann z.B. mehr treiben.

    Dann kommt halt noch drauf an, wie
    schnell dass die ganze Geschichte gehen soll,
    einmal die Baudrate und dann wie oft je Sekunde
    Deine Message rüber soll.

    Bei einem meiner Projekte hab ich schnelle
    Übertragung gebrauch und das Protokoll dann
    quasi bitweise gestrickt, da war dann z.B.
    das erste übertragene Byte so verknaspelt, dass
    15 verschiedene Befehle + Flag ob Master oder
    Slave Datenpaket + Prüfsumme 2 Bit und
    Paketlänge mit drin war.
    Dann hab ich auch mal das Profibus, das auch auf
    Bitebene läuft verwendet, das war auch schnell.

    Bei nem anderen Projekt hab ich einfach die Befehle
    als Klartext geschickt, weil das noch ewig schnell
    genug war ... war dann in etwa so:
    set-sla-001-ti1-2500
    set ist klar,
    sla = slave
    001 = Slave ID
    ti1 = timer1
    2500 war dann der output compare, abgeschlossen
    wurde der String dann mit CR ...
    wenn der Slave das geschluckt hat hat innerhalb
    ner bestimmten Zeit n ACK zurückgeschickt,
    kam das nicht wurds noch 2-mal probiert
    und dann einfach übergangen mit Fehlermeldung.

    Da Du ja über Deine Anwendung keine Angaben
    gemacht hast kann man Dir auch nur schwerlich
    einen gezielten Vorschlag machen.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen