Hallo, ich habe ein Gerät, das lediglich eine RS-422-Schnittstelle bietet, aber mit drei anderen Geräten kommunizieren muss. Dafür versuche ich derzeit eine gangbare Lösung zu finden, stoße dabei jedoch an die Grenze meines Wissens. Ich hoffe daher, dass mir jemand hierzu Hilfestellung geben kann. Die Ausgangssituation ist in dem beigefügten Bild grafisch dargestellt: Komponente C ist dabei das Gerät, das lediglich eine RS-422-Schnittstelle besitzt. Die Geräte A und B müssen Kommandos an Gerät C senden und Ausgaben des Gerätes C empfangen können. Gerät D soll lediglich alle Ausgaben des Gerätes C mitlesen können. Soweit ich mich belesen habe, sollte die Ausgabe der Daten (gesehen aus der Perspektive von Geräte C) kein Problem darstellen, da RS-422 Multidrop-fähig ist, mit anderen Worten sollte der orange markierte Verbindungspunkt kein Problem darstellen. Der rot markierte Verbindungspunkt hingegen stellt meiner Meinung nach ein Problem dar. Sieht jemand hierzu eine Lösung (vielleicht ist es auch ein triviales Problem, welches ich hier schildere)? Für jedwede Hilfe wäre ich sehr dankbar.
Nun. Ein Leiterpaar bei RS422 ist das TX, zum Senden, und das Andere ist das RX, zum Empfangen. Damit laesst sich am Besten ein Master-Slave system bauen. Das bedeutet Einer sendet auf dem TX, die Anderen enpfangen auf TX, Der Master Empfaengt auf RX, die anderen senden auf RX. Alternativ macht man einen Ring, Die Daten gehen zB linksrum, jeweils vom TX Port zum RX Port des Naechsten. Falls man kreuz und quer kommunizieren moechte, dann nimmt man am Besten RS485, da wird die Richtung nach Bedarf umgeschalten.
jetzt schrieb: > Nun. Ein Leiterpaar bei RS422 ist das TX, zum Senden, und das > Andere ist > das RX, zum Empfangen. Damit laesst sich am Besten ein Master-Slave > system bauen. Das bedeutet Einer sendet auf dem TX, die Anderen > enpfangen auf TX, Der Master Empfaengt auf RX, die anderen senden auf > RX. > Alternativ macht man einen Ring, Die Daten gehen zB linksrum, jeweils > vom TX Port zum RX Port des Naechsten. > Falls man kreuz und quer kommunizieren moechte, dann nimmt man am Besten > RS485, da wird die Richtung nach Bedarf umgeschalten. Hallo, zunächst vielen Dank für deine Antwort. Leider helfen mir die darin enthaltenen Informationen nicht weiter. RS-485 wäre ideal für den geschilderten Anwendungsfall, jedoch kann ich Komponente C nicht verändern. Wenn einfach nur alle Geräte miteinander verbunden werden, wie du es vorschlägst, was passiert dann beispielsweise wenn A und B gleichzeitig senden?
wenn beide gleichzeitig… dann hast Du eh ein Problem Du behoeftigst einen externen Schiedsrichter...
Erst muss man die Leitungen richtig zuweisen. Dass jeweils Sende Port auf Empfangsport geht. Der Rest ist protokoll. Wenn zwei wahlweise auf dieselbe Leitung senden sollen, muessen sie natuerlich definiert wissen wann sie senden duerfen. In diesem Fall wuerde man eine TX Leitung von A(Tx) nach C(Rx) und eine B(Tx) nach C(Rx), sowie C(Tx) nach A(Rx) + B(Rx) + D(Rx). Das geht soweit. Jetzt muessen nur noch A und B definieren wie sie sich mit C verstaendigen. Moeglicherweise kann ja B auch die antworten an A auswerten, und gegenseitig.
Arsenico schrieb: > wenn beide gleichzeitig… > dann hast Du eh ein Problem > Du behoeftigst einen externen Schiedsrichter... Nicht zwangsläufig, z.B. existiert mit CSMA/CD ein Verfahren, das bei Ethernet zum Einsatz kommt und gänzlich ohne externen Voter auskommt. Nachteil an dieser Variante ist, dass die Kommunikation nicht mehr deterministisch und somit nicht für Kommunikation unter Echtzeitbedingungen geeignet ist. Diese Variante ist für mich ungeeignet, ich bin mir aber sicher, dass es hier noch andere Verfahren gibt.
jetzt schrieb: > Erst muss man die Leitungen richtig zuweisen. Dass jeweils Sende Port > auf Empfangsport geht. Der Rest ist protokoll. Wenn zwei wahlweise auf > dieselbe Leitung senden sollen, muessen sie natuerlich definiert wissen > wann sie senden duerfen. > In diesem Fall wuerde man eine TX Leitung von A(Tx) nach C(Rx) und eine > B(Tx) nach C(Rx), sowie C(Tx) nach A(Rx) + B(Rx) + D(Rx). Das geht > soweit. Genau, das ist soweit trivial. > Jetzt muessen nur noch A und B definieren wie sie sich mit C > verstaendigen. Moeglicherweise kann ja B auch die antworten an A > auswerten, und gegenseitig. An dieser Stelle kommt mein Problem zum Tragen: Was passiert, wenn A oder B gestört ist? Wie kann man zuverlässig ausschließen, dass ein nicht korrekt funktionierender Kommunikationspartner die gesamte Kommunikation zwischen den Komponenten zerstört?
René S. schrieb: > An dieser Stelle kommt mein Problem zum Tragen: Was passiert, wenn A > oder B gestört ist? Wie kann man zuverlässig ausschließen, dass ein > nicht korrekt funktionierender Kommunikationspartner die gesamte > Kommunikation zwischen den Komponenten zerstört? Wie verhindert man, daß ein ausgerasteter Betrunkener mit seinem Krakeelen die Kommunikation zwischen den anderen Partygästen stört? Indem man ihn rausschmeißt. Genauso in der technischen Kommunikation: man muß den Störer vom Netz trennen. Wenn das nicht praktikabel ist (z.B. beim alten Koaxkabel-Ethernet oder eben hier mit RS-422), hilft nur, die Geräte so zu bauen, daß sie in allen möglichen Ausnahmesituationen nicht zum Störer werden. Ethernet-Chips hatten z.B. einen "Jabber-Timer", der den eigenen Sender beobachtet und lahmgelegt hat, wenn zu lange am Stück gesendet wurde. Sollte zwar nie passieren, aber falls die MAC-Zustandsmaschine mal ausrastet... Hier sollte das einfacher sein: geeignete Pullups oder so, damit der RS-422-Treiber nur sendet, wenn die Firmware das auch will (und nicht z.B. während des Bootens, solange noch nichts initialisiert ist), fertig. Aber das erste Problem ist doch: wie verhindert man, daß sich A und B im Normalbetrieb gegenseitig stören? Wenn ich das richtig verstanden habe, sind beide Clients bzw. Master, d.h. beide haben das Recht, zu einem beliebigen Zeitpunkt Anfragen an C zu schicken und Antwort zu erwarten. Da hilft nur, Timing und Prüsummen so festzulegen, daß C eine Kollision sicher als solche erkennt und signalisieren kann, damit A und B ihre Anfragen dann (nach unterschiedlicher Wartezeit) wiederholen. Und ich hoffe, die Hardwarefrage, wie man zwei RS-422-Ausgänge an einen Eingang hängt, ist bereits geklärt...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.