-
-
Ich kann dir leider kein direktes Programmbeispiel liefern, habe aber beruflich öfter mit RS485-Steuerungen von Videoüberwachungsanlagen zu tun.
Zunächst musst du dir überlegen, ob du eine Punkt-zu-Punkt-Verbindung (wahrscheinlich eher nicht - entnehme ich zumindest deiner Anfrage) oder einen Bus ("Daisy chain") aufbauen willst. Ich vermute bei dir letzteres.
Außerdem musst du dich entscheiden, ob du eine Vollduplex-Verbindung (gleichzeitiges Senden und Empfangen über getrennte Sende- und Empfangsleitungen) oder eine Halbduplex-Verbindung (wechselweises Senden und Empfangen). Diese Unterscheidung wirkt sich sowohl auf deine Hardware als auch auf dein Protokoll aus.
Wenn du dich für Halbduplex entscheidest, musst du dir darüber im Klaren sein, dass du in deinem Protokoll festlegst wer wann senden darf, z.B. in Form von Timern, d.h. nach Senden eines Befehls darf eine Antwort nicht vor xxx ms erfolgen und sollte andererseits nicht später als yyy ms verschickt werden (damit der Sender weiß, ob sein Befehl/ Abfrage (was auch immer) angekommen ist und verarbeitet wurde.
Außerdem solltest du ein Start- und ein Endezeichen für dein Protokoll festlegen, d.h. mit einem bestimmten Zeichen (in meiner Videotechnik ist es Hex 02) beginnt dein Senderahmen und mit einem anderen Zeichen (bei meiner Technik Hex 03) endet er.
Was du zwischen Beginn und Ende treibst bleibt deiner Phantasie überlassen. Du könntest beispielsweise überlegen, zu Beginn eine Längeninformation mitzugeben (also wieviele Zeichen noch kommen), das macht aber nur Sinn, wenn deine Rahmen keine festgelegten Längen haben (wenn du weißt, jeder Rahmen ist x Zeichen lang, brauchst du die Info nicht extra zu übermitteln). Was auf jeden Fall bei einem Busbetrieb erforderlich ist, ist die Angabe der Zieladresse und unter Umständen (falls das bei dir in Frage kommt) auch des Absenders.
Sinnvoll dürfte eine Quittierung sein, um sicherzugehen, dass der gewünschte Empfänger die Message auch erhalten hat, d.h. der Empfänger sollte den Empfang einer gültigen Message positiv quittieren oder falls er Probleme mit der empfangenen Message hat, mit einer negativen Quittung (bei uns heißt so etwas ACK für ACKNOWLEDGE und NAK für NO ACKNOWLEDGE). Die Quittung kann entweder mit einem festgelegten Befehl (z.B. ACK) oder mit einer passenden Antwort auf die Message erfolgen, die Negativquittung mit einem (oder mehreren) festen Nachricht(en), z.B. "ungültige Message empfangen" oder "kann gerade nicht, weil ich zu tun habe...".
Ansonsten hängt es davon ab, was genau du machen willst. Eine Möglichkeit wäre ein Befehl/ Antwort- bzw. Abfrage/ Antwort-Protokoll, also nach dem Motto: "Empfänger xy tue dies (oder jenes)" und der Empfänger xy antwortet "Jawoll wird gemacht" oder "Nee, geht nicht, keine Zeit".
Eine Abfrage- Antwort-Struktur wäre beispielsweise
"Empfänger xy was hast du für Daten für mich" und xy antwortet "Nischt" oder "Hier sind meine Daten".
Wie gesagt, der Phantasie sind kaum Grenzen gesetzt.
Ich denke wichtig ist auf jeden Fall der geregelte Ablauf (wozu das Protokoll ja auch dienen soll) mit Festlegungen für zeitliche Verhalten, damit du einerseits keine Kollisionen kriegst, andererseits aber auch definierte Antwortzeiten erhältst.
Ich hoffe, diese Infos haben dir ein bisschen geholfen.
Volkhard
bei längeren Rahmen
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen