RS485 / Modbus Hub ohne Prozessor mit Logikbausteinen

Gast #4179674
Lesenswert?
• ▲
▼
Hi.

Ich habe eine Schaltung für einen Modbus / RS485 Hub erstellt.
Es ist die erste Vorab-Version.

Ich habe es bewusst ohne Controller realisiert, da die Schaltung einfach 
die Daten, welche auf einem Port rein kommen, an den anderen Ports 
wieder ausgeben soll, aber nicht an dem Port wo es empfangen wurde.

Die Schaltung soll in Abzweigdosen installiert werden und daher viele 
Jahre problemlos und Protokoll-Unabhägig arbeiten und einfach nur 1:1 
durch reichen. Sie soll noch nicht mal eine Kollisionserkennung machen 
und auch keine Fehlererkennung.
Die Baudrate soll auch nicht fix festgelegt sein, sondern die Schaltung 
soll einfach im Rahmen seiner elektrischen Werte alles durch lassen was 
geht.

Funktion der Schaltung:
Wenn an einem Port ein 0 Signal auf dem Bus empfangen wird, wird über 
die Diode der Kondensator schnell entladen, und der invertierende 
Schmitt-Trigger gibt ein 1 Signal aus. Bei einem 1 Signal auf dem Bus 
läd sich der Kondensator langsam auf und schließt irgendwann den Port 
wieder. (Bei einem X Signal auf dem RS485 Port gibt der MAX489 auch ein 
1 Signal aus).
Geplant ist, nach Empfang einer 0 den Port ca 10 ms für Datenfluss offen 
zu halten.

Über den Schmitt-Trigger wird dann der Buffer 74HC126 freigegeben, und 
das Datensignal liegt auf der Hubinternen Datenleitung.
Gleichzeitig wird das Signal auf ein XOR geführt.
Der XOR 74HC86 überprüft, ob die ACT Leitung auf High ist
Außerdem wird über eine Diode die Portübergreifende ACT Leitung auf High 
Pegel gebracht. Hierdurch wird der Sender des Ports, wo empfangen wird, 
nicht freigeschaltet, aber bei den anderen Ports wird der Sender aktiv 
und die empfangenen Daten werden 1:1 durch gereicht.


Habe ich irgendwo einen Denkfehler drin, oder würde die Schaltung so 
funktionieren?

Es geht um die Logik, Kondensator- und Widerstandswerte oder sonstige 
Konkrete Bauteilbezeichungen spielen erst mal keine Rolle.
Anbei ist der Schaltplan angehängt. Vielleicht habt ihr auch noch 
Verbesserungsvorschlöge für mich.

Viele Grüße
Angehängte Dateien:
#4180446
Lesenswert?
• ▲
▼
Hallo,
ich habe nmir das mal angeshen und versucht zu analysieren.

Im Prinzip sollte es funktionieren, aber ob es wirklich stabil für 
unterschiedliche Baudraten läuft, da bin ich nicht ganz sicher.

Die Richtungsumschaltung würde ich besser mit einem Monoflop machen.

Die Freigabezeit zum Senden sollte dann so eingestellt werden, dass bei 
niedrigster Baudrate eine Bytelänge erreicht wird.
Wenn man nicht unter 1200 Baud geht, wären damit ca. 8...9ms ganz ok.
Das genannte Timeout von 10ms wäre somit ganz ok.

In deiner Schaltung fehlt IMHO noch zumindest ein Pulldown-R an der 
ACT-Leitung für einen def. Low-Pegel.
Gruß Öletronika

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.