Hallöchen :-) ist es möglich die RS232-Schnittstelle über nur eine Leitung zu realisieren? Hat jemand sowas vielleicht schon programmiert? Was muss man beachten? (sowohl Hardware als auch Software) Ein Sensor soll über RS232 mit dem PC verbunden werden. Damit der Sensor nicht zu viele Verdrahtungen besitzt, soll die RS232-Interface über eine Leitung erfolgen. Vielen Dank schon mal für die Hilfe
@ RS (Gast)
>für Halbduplex sorgt doch die Software oder nicht?
Teils. Die RS232 Treiber müssen das aber auch mitmachen (abschaltbarer
Treiber).
MFG
Falk
Aber nicht vergessen, die beiden Tx zu entkoppeln, sonst raucht es! Ralf
@ RS (Gast) >kann ich die Rx- und Tx-Leitungen einfach mitanander verbinden? Nicht ohne weiteres. http://para.maxim-ic.com/results.mvp?q=rs232&r=0&an_1=Family&av_1=RS-232%20Line%20Driver%2FReceivers&mh_1=1&wt_1=0&an_13=Features%3C!--XB--%3E&av_13=Three%20State%20Tx&op_13=eq&an_2=Supply%20Voltage%20(V)&av_2=5&an_4=Number%20of%20Tx&av_4=1&an_5=Number%20of%20Rx&av_5=1&tree=master&p=1 MFg Falk
o man ich hasse das Leben, warum muss alles immer so kompliziert sein :'(
kann mir jeman vielleicht Paar Tipps geben, wie die Softwareroutine aussehen könnte?
Master und Slave sind auf Empfangen geschalten Der Master schaltet auf senden Der Master sendet seine Daten Am Ende schaltet der Master wieder auf empfangen, z.B. durch den TXC Interrupt Der Salve empängt die Daten und berechnet die Antwort Der Slave schaltet auf senden Der Slave sendet seine Daten Am Ende schaltet der Slave wieder auf empfangen, z.B. durch den TXC Interrupt Beginne am Anfang MFg Falk P.S. Was ist daran so kompliziert?
das komplizierte an der Sache ist, dass ich mir nicht vorstellen kann, wie ich mit NUR EINER LEITUNG einen Mikrokontroller mit dem PC verbinden kann. Wenn ich da eine Idee hätte, würde ich die Software ohne große Probleme meistern, denke ich.
Wenn die Frage gestattet ist: Worin besteht eigentlich der Gewinn? Ob nun eine oder zwei Leitungen, das ist doch kein nennswerter Unterschied, vor allem wenn Du ein Kabel verwendest...
naja der Gewinn liegt zum Beispiel darin, dass es 4 adrige Kabel existieren und man nicht auf 5 adrige umsteigen möchte
Muss denn der Sensor ueberhaupt in beide Richtungen kommunizieren? Sprich, empfaengt er ueber den RS232-Link auch Steuersignale oder sendet er nur?
hallo eine D und ein R gegen + auf beiden seiten zur entkopplung. wurde vor 20 Jahren gemacht auch ohne Int. MfG
>Muss denn der Sensor ueberhaupt in beide Richtungen kommunizieren? der Sensor antwortet auf die Steuersignale >wie wär's denn einfach mit einem LIN-Treiber? es ist ja auch so was wie LIN. Gibt es LIN auf RS232?
@Thomas (Gast) http://miredaktion.sv-www.de/imperia/md/upload/article/234pdf.pdf fast das gleiche Prinzip! MfG
hi, ich bin's noch mal :-).. Die Hardware funktioniert so weit ganz gut, aber ich habe ein kleines Problem mit der Software. Und zwar ist es so, dass ich mehrere Bytes empfange und sie in eine Array speichere. Das Ende erkenne ich durch CR (carriage return ~ 0x0D). Klappt alles ganz gut. Aber bei der Auswertung habe ich keine gute Lösung. Ich will, je nachdem welche Bytes ich erhalten habe, die entsprechende Antwort zurücksenden. D.h. wenn ich so was erhalte: 0x21 0x20 0x23 0x0d (für das Ende) will ich antworten mit: 0x45 ... Die Anzahl der Bytes die ich erhalte, sind unterschiedlich (von 0 bis 10). Am liebsten hätte ich das ganze mit der SWICTH-Anweisung programmiert, aber bei switch-Anweisung kann ich nur auf einen Character- oder Integer-Wert abfragen. Mir fällt an dieser stelle nur die if-Anweisung mit strcmp() ein:
1 | //empf: Array für die empfangene Characters
|
2 | //sx eine Liste von soll-Werten
|
3 | |
4 | x=strcmp(empf,s1); |
5 | if( !x ) |
6 | {
|
7 | //beide gelich, tu was
|
8 | }
|
9 | |
10 | x=strcmp(empf,s2); |
11 | if( !x ) |
12 | {
|
13 | //beide gelich, tu was
|
14 | }
|
15 | |
16 | x=strcmp(empf,s3); |
17 | if( !x ) |
18 | {
|
19 | //beide gelich, tu was
|
20 | }
|
21 | |
22 | x=strcmp(empf,s4); |
23 | if( !x ) |
24 | {
|
25 | //beide gelich, tu was
|
26 | }
|
27 | .......
|
Gibt es eine bessere Methode?? Es muss doch bestimmt was einfacheres geben.. Danke RS
RS wrote: > Hallöchen :-) > > ist es möglich die RS232-Schnittstelle über nur eine Leitung zu > realisieren? Ja, überhaupt kein Problem. Wenn man sich mal die Eingangsdaten eines RS232 Chips ansieht (z.B. MAX232), fällt auf, daß die vollkommen TTL-kompatibel sind. Ich benutze daher ne wired OR Schaltung in meinem Bootloader: http://www.mikrocontroller.net/attachment/29691/fboot18.zip Beitrag "UART Bootloader ATtiny13 - ATmega644" Der PC sendet über den Widerstand 4,7k und der AVR sendet mit open drain Ausgang, d.h. strong High für Low und tristate für High (RS232 Pegel ist ja invertiert). Damit der PC weiß, was ist sein Echo und was wurde wirklich vom AVR gesendet, zählt er die Bytes einfach mit. Peter
juppi schrieb: > hallo > > eine D und ein R gegen + auf beiden seiten zur entkopplung. > wurde vor 20 Jahren gemacht auch ohne Int. > > MfG Hallo zusammen, auf der Suche nach einer RS232 Anbindung im Halbduplex bin ich auf den Artikel gestoßen. Ich habe einen Laptimer mit einem BNC Anschluss, welcher auf RS232 angeschlossen wird. Leider fehlt mir das Schnittstellenkabel. Eine Belegung dafür bekomme ich nicht. Ich könnte mir vorstellen, dass in dem Adapterkabel zwischen BNC und RS232 Stecker eine einfache Schaltung verbaut ist. Leider habe ich keine Vorstellung, wie über ein Widerstand und Diode die Beschaltung realisiert werden kann. Vermutlich ist das für ein Profi kein Problem. Könnte mir jemand freundlicherweise eine Skizze dieser Beschaltung zukommen lassen oder mir das erklären und welche Bauteilwerte verwendet werden sollen? Vielen Dank im Voraus. Dietmar
RS schrieb: > mit NUR EINER LEITUNG einen Mikrokontroller mit dem PC verbinden Aber eine GND-Leitung hast du schon? Denn ein Stromkreis hat immer 2 Leitungen! Oder ganz ohne Leitung: per Funk ;-)
gehe davon aus, dass GND über den Schirm vom BNC geholt wird RX und TX über eine Leitung im Halbduplex. Wie oben Beschrieben, soll das mit Diode und Widerstand realisierbar sein.
Dietmar B. schrieb: > gehe davon aus, dass GND über den Schirm vom BNC geholt wird > RX und TX über eine Leitung im Halbduplex. > Wie oben Beschrieben, soll das mit Diode und Widerstand realisierbar > sein. Solche Lösungen werden seit Jahrzehnten im Automobilbereich verwendet. Google mal nach "K-Line" oder "LIN-Bus". Im wesentlichen hast Du einen Ruhepegel, der den High-Zustand darstellt (über Pullup eingestellt), und wenn ein Teilnehmer sendet wird der Low-Pegel aktiv über open-collector-Treiber angelegt.
Dietmar B. schrieb: > juppi schrieb: >> hallo >> >> eine D und ein R gegen + auf beiden seiten zur entkopplung. >> wurde vor 20 Jahren gemacht auch ohne Int. >> >> MfG > > Hallo zusammen, > > auf der Suche nach einer RS232 Anbindung im Halbduplex bin ich auf den > Artikel gestoßen. Entspricht wohl funktionell dem Vorschlag "Das mc-Netzwerk" Thema in der MC 4/1983 und 5/1983. Hubert Eing hatte dazu schon was in der ELEKTRONIK 8/1982, S. 87 unter dem Titel "SP-Netz" publiziert.
Falk B. schrieb: >>für Halbduplex sorgt doch die Software oder nicht? > > Teils. Die RS232 Treiber müssen das aber auch mitmachen (abschaltbarer > Treiber). Schön und gut, aber kann der Sensor das auch? Abgesehen davon, abschaltbare Sender gibt es bei RS485, bei RS232 ist das eher unüblich. Georg
Soul E. schrieb: > Solche Lösungen werden seit Jahrzehnten im Automobilbereich verwendet. > Google mal nach "K-Line" oder "LIN-Bus". Was hat LIN mit RS232 zu tun? RS232 ist eine voll duplexfähige Spezifikation der physikalischen Schnittstelle und kein Bus, LIN ist ein Eindraht-Bus.
Ralf schrieb: > Aber nicht vergessen, die beiden Tx zu entkoppeln, sonst raucht es! RS232C ist per Definition Dauerkurzschlussfest. Also kein Rauch.
Vielen Dank für die bisherigen Infos. Bisher zeichnet sich für mich keine Lösung ab. Für mich hat sich das so gelesen, dass es sich mit einer einfachen, passiven Schaltung mittels Dioden und Widerständen realisieren lässt, da das ganze ja in einem RS 232 Stecker verbaut sein muss. Vielleicht ist in dem Stecker ja auch ein Wandler o.ä. verbaut.
RS schrieb: > ist es möglich die RS232-Schnittstelle über nur eine Leitung zu > realisieren? Naja, eine Signal-Leitung und GND, also insgesamt zwei. > Hat jemand sowas vielleicht schon programmiert? Ja, ich z.B. Vermutlich aber auch noch Zehntausende andere. > Was muss man beachten? (sowohl Hardware als auch Software) Hardware: TXe müssen entkoppelt werden (1 Diode pro Sender+gemeinsamer Lastwiderstand). Bei hinreichend konfigurierbarer UART-Hardware kann man auf die Diode verzichten, indem man OpenDrain-Ausgänge benutzt. Software: Der Receiver muss wissen, dass er auch immer den vom eigenen Sender produzierten Kram mithört. Und: Multi-Master ist relativ schwierig umzusetzen, kann sich aber den Sachverhalt aus dem vorigen Satz zunutze machen, um Kollisionen relativ zuverlässig zu erkennen. Zusätzlich braucht man aber ein Protokoll, was dies unterstützt. Sprich: erstes Byte einer jeden Nachricht muss so eine Art Adressbyte sein, was den Absender eindeutig identifiziert.
Bei einer normalen RS-232-Leitung sind -5..15V auf der Leitung (bei Ruhepegel 1 und den vorgesehenen Invertern). Die Dioden müssen also im Ruhepegel sperren. Also Dioden in Durchlassrichtung von TX nach RX an jedem Device. Und dann beide RX verbinden. Das Problem: Der eigene RX zieht das Signal gegen GND, so dass die mögliche Übertragungslänge mehr als halbiert wird.
Habe nun ein Adapterkabel beschafft Wird mit Transistoren etc. realisiert
Dietmar B. schrieb: > gehe davon aus, dass GND über den Schirm vom BNC geholt wird BNC hat keinen Schirm. Den gibt es nur bei Triaxialkabel. Der Außenleiter bei BNC wird mit für die Signalübertragung benötigt.
Hey wenn ihr schon mal dabei seid, könnt ihr mir sagen wie man Drehstrom über eine einzelne Leitung überträgt? 5 Adern für die Phasen, Null und dann auch noch die Erdung ist doch wirklich lästig!
Ben B. schrieb: > Hey wenn ihr schon mal dabei seid, könnt ihr mir sagen wie man Drehstrom > über eine einzelne Leitung überträgt? https://memory-alpha.fandom.com/de/wiki/Plasmaleitung
Mit der SDI-12 Spezifikation wird ein 1200Bd Eindraht Half-Duplex Serial Bus für Sensor Communication beschrieben: http://www.sdi-12.org/current_specification/SDI-12_version-1_4-Jan-30-2021.pdf Verwendet zwar keine RS232 Pegel, ist aber möglicherweise als Ansatzpunkt für Ähnliches von Interesse. In der Spezifikation wird auch die dazu notwendige (einfache) Hardware behandelt. Auch Protokollfragen werden in B-1 behandelt. Auf Seite A-1 finden sich ausführliche Schaltungsverwirklichungs Informationen.
:
Bearbeitet durch User
Ben B. schrieb: > Hey wenn ihr schon mal dabei seid, könnt ihr mir sagen wie man Drehstrom > über eine einzelne Leitung überträgt? 5 Adern für die Phasen, Null und > dann auch noch die Erdung ist doch wirklich lästig! Dafür gibts doch Adapter Drehstrom auf Gardena. https://etel-tuning.eu/produkt/adapter-drehstrom-auf-gardena/ zum Thema oben: man könnte das ganze auch als LIN-Bus realisieren dafür gibt es fertige Treiber-Bausteine. Gruß Anja
A. S. schrieb: > Das Problem: Der eigene RX zieht das Signal gegen GND, so dass die > mögliche Übertragungslänge mehr als halbiert wird. MAX3222 und ähnliche RS-232-Transceiver haben einen POWERDOWN aka SHDN Eingang. Damit werden die TX-Ausgänge abgeschaltet und ziehen dann noch max. 25uA. Das Ganze funktioniert dann praktisch wie RS-485, nur mit echten RS-232-Pegeln und ohne Dioden und Widerstände. Mit Transceivern, die zwischen RS-232 und RS-485 umschaltbar sind, funktioniert das genauso (z.B.XR3160E).
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.