Master-Slave verfahren

Gast #4213661
Lesenswert?
• ▲
▼
Hi,
ich habe eine Frage, bezüglich des Master-Slaves verfahren als 
Buszugriffsverfahren.
Master sendet Befehl an Slave 1 -> Empfange Daten
Master sendet Befehl an Slave 2 -> Sende Daten
Slave 1 empfängt Befehl -> ist auf emfpang-Modus
Slave 2 empfängt Befehl -> Sendet Daten
Slave 1 empfängt Daten
Slave 2 ist fertig -> Meldung mit "ende" an Slave 1
Slave 1 gibt Meldung mit "ende" an Master
neuer Datenaustausch möglich

meine Frage ist jetzt zum Vorgang beim Senden und Empfangen.
Werden erst alle Daten gesendet, bevor Slave 1 die Daten empfangen kann? 
Oder passiert das Senden und empfangen gleichzeitig?

Und zwar möchte ich das wissen, da ich das Master-Slave verfahren als 
Petri-Netz darstellen möchte. Und da bin ich mir jetzt unschlüssig, wo 
die Verbindung zwischen Slave 2 und Slave 1 hinkommt.
#4213665
Lesenswert?
• ▲
▼
Mark schrieb:

> meine Frage ist jetzt zum Vorgang beim Senden und Empfangen.
> Werden erst alle Daten gesendet, bevor Slave 1 die Daten empfangen kann?
> Oder passiert das Senden und empfangen gleichzeitig?

So wie praktisch bei jeder Datenübertragung. Das geht gleichzeitig ab. 
Das Kabel wird wohl kaum zwischenspeichern. Wenn es einen Sender gibt, 
der auf einer Leitung winkt, dann ist es sinnvoll wenn ein Beobachter 
gleichzeitig die Leitung beobachtet.

Alles darüber hinausgehende ist dann Sache des Protokolls, welches den 
Datenverkehr regelt.
#4213714
Lesenswert?
• ▲
▼
Mark schrieb:
> Slave 2 ist fertig -> Meldung mit "ende" an Slave 1

???
Üblicher Weise senden Slaves nie was untereinander. Es geht immer nur 
zwischen einem Slave und dem Master.

Wann was zeitlich passiert, hängt vom konkreten Bus ab und nennt sich 
OSI-Schicht 1.
Bei RS-485 muß die Software die Richtung umschalten.
Und für den Fehlerfall muß es ein Timeout geben, wann wieder der Master 
senden darf.

Bei CAN macht das die Hardware automatisch und Slave/Master können 
Sendepakete bereitstellen, wann sie lustig sind.
#4213848
Lesenswert?
• ▲
▼
Master-Slave bedeutet, eine Kommunikation besteht zwischen Master und 
Slave, Der Slave macht nichts von sich aus. Der Master sendet etwas, der 
Slave antwortet dem Master. Es duerfen mehrere Slaves da sein, die haben 
aber keine logische Verbindung zueinander, alles laeuft ueber den 
Master.
Der Master spricht nie 2 Slaves miteinander an die antworten sollen. 
Erst der Eine, dann der Andere. Denn was geschieht, wenn der Zweite die 
Meldung nicht erkennt.

Ich empfehle die Slaves zustandsfrei laufen zu lassen. Eine Anfrage, 
eine Antwort, keine Zustaende. Denn was geschieht wenn ein Packet 
verloren geht.

Man kann natuerlich auch etwas anderes implementieren. Muss sich aber 
immer vergewaertigen, ein Slave kann ausfallen, und wieder kommen. zB 
wenn er umgesteckt/ersetzt/erneuert wird. Und es kann ein Paket verloren 
gehen.
Wie wird wieder aufgesetzt? Wo macht man Timeouts, wo macht man Retries?

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.