Forum: Mikrocontroller und Digitale Elektronik RS485 Multimaster


von Olli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir eine kleines Netzwerk von µC (AtMega) und einem PC 
aufgebaut (s.Anhang). Nun sende ich beispielsweise folgende Befehl:
&0199;
dabei dient das " & "- und das " ; "-Zeichen las Steuerzeichen.
"01" soll die den ersten µC ansprechen und "99" ist die Botschaft.
Wenn ich diesen Befehl vom PC aus über die RS232 Schnittstelle schicke, 
dann wird dieses Signal im Umsetzer in das RS485 Signal gewandelt und an 
die µCs geschickt. Das funktioniert soweit auch ganz gut.
Der Umsetzter ist mit einem Max488 aufgebaut, muss also beim Senden und 
Empfangen nicht enabled werden.
Die µC sind mit einem MAX489 aufgebaut und der Eingang ist dauerhaft 
enabeld, wohingegen der Ausgang erst beim Senden enabled wird.
Also ich kann vom PC aus Befehle an die einzelnen µC schicken und diese 
führen die Befehle aus und können mir auch antworten (RS485 -> RS232).
Jetzt kommt mein Problem: Lasse ich ein µC einen Befehl senden, welcher 
von einem anderm µC ausgeführt werden soll, kommt dieser Befehl 
irgendwie nicht an. Ich "lausche" mit meinem PC auf dem BUS und sehe, 
dass der 1. µC zwar die korrekten Befehle senden, der 2. µC aber diese 
nicht empfängt.
Dabei habe ich die UART-Schnittstelle auf den µC so konfiguriert, dass 
diese interruptgesteuert sind. Beim Senden von µC zu µC, empfängt der 
"empfänger µC" noch nicht mal ein einziges Zeichen, welches ich teste 
indem ich in der Empfgangs-Interuptroutine versuche, eine LED ein oder 
auszuschalten, wenn ein Zeichen empfangen wird. Beim Senden vom PC aus 
klappt das ohne Probleme.
Vielleicht habt ihr ja ne Idee, was da falsch läuft.

Gruß
Olli

von Marco S. (masterof)


Lesenswert?

ist das als 4-Draht-Bus oder als 2-Draht-Bus aufgebaut?

Gruß Marco

von Dieter W. (dds5)


Lesenswert?

Marco Schwan schrieb:
> ist das als 4-Draht-Bus oder als 2-Draht-Bus aufgebaut?
>
> Gruß Marco

Yup, das klappt nur mit Zweidraht (Halbduplex) Bus, da sich sonst die 
slaves nicht gegenseitig hören können.

von Olli (Gast)


Lesenswert?

Hi,
es handelt sich um eine vier draht leitung.
Aber wieso ist es nur mit zwei draht möglich? verstehe ich nicht?

Olli

von Olli (Gast)


Lesenswert?

Aus WIKI

Halbduplex (HX), auch Semiduplex genannt bedeutet wechselseitiger 
Betrieb. Hierbei können Informationen in beide Richtungen fließen, 
allerdings nicht gleichzeitig, z. B. Amateurfunk.
Vollduplex (DX, manchmal auch FDX) ist der gleichzeitige Betrieb. Es 
lässt die Übertragung der Informationen in beide Richtungen zu gleicher 
Zeit zu, z. B. Telefonie.

und vier draht ist doch Full duplex oder?

von (prx) A. K. (prx)


Lesenswert?

Mal mal ein Bild von den Leitungen mitsamt deren Bezeichnung. Kein 
Schemabild wie oben. Dann sollte klar werden, warum die µCs nicht 
miteinander können.

4-Draht RS485 ist für Multimaster nicht einsetzbar, da schon von der 
Verdrahtung her genau ein Master entsteht. Bei dir der PC. Du schreibst 
ja selbst, dass die µCs anders angebunden sind als der PC, anderer 
Transceiver, mit/ohne Enable.

Vergiss den Multimaster-Zirkus und bleib bei Single-Master. Wenn 
Multimaster absolut nötig ist, dann 2-Draht.

von Weingut P. (weinbauer)


Lesenswert?

überleg doch mal, bei Vollduplex, also 4-draht hast Du
quasi einen Kanal zum µC und einen zurück.
Der µC hat datenmäßig einen Eingang und einen Ausgang,
wenn Du nun auf den Ausgang des µC etwas sendest,
was empfängt er dann? ... nix, daher bei
Multimaster auf 485 nur Halbduplex.
Das bring nun aber auch ein etwas komplizierteres
Protokoll ins Spiel, weil ... wie verhinderst Du,
dass 2 Master gleichzeitig senden?
Sollte das dennoch passieren wie löst Du den Konflikt?

Ist nicht ganz trivial, aber machbar.

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.