Forum: Mikrocontroller und Digitale Elektronik RS485 / Modbus Hub ohne Prozessor mit Logikbausteinen


von S. (Gast)


Angehängte Dateien:

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

von S. (Gast)


Angehängte Dateien:

Lesenswert?

Hier nochmal den Plan in Groß. Im ersten Posting ist er leider etwas 
klein geraten.

Mfg

von U. M. (oeletronika)


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

von Mathias O. (m-obi)


Lesenswert?

Nur mal aus reinem Interesse. Wofür braucht man das? Ich dachte man kann 
es an den Sternpunkten verbinden und dann nur die max. Länge des Stichs 
einhalten.

Ich hab nämlich ein Modbus Slave für die UP-Dose entwickelt.

von chris (Gast)


Lesenswert?

Man braucht es un mehr als 31 slaves am Bus zu haben. Nennt sich 
repeater.

von 487 (Gast)


Lesenswert?

MAX487 treibt auch 128 Teilnehmer ohne solche Klimmzüge.

von Mathias O. (m-obi)


Lesenswert?

Meiner schafft 256.

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.