Hallo, ich hab für ein µC-Projekt ein Befehlsprotokoll erstellt, also wie welcher Befehl auszusehen hat, wie die Parameter und Daten aufgebaut sind usw. Mein Problem ist, wie ich das Protokoll richtig implementiere. Damit meine ich, vom Empfang über die Prüfung bis zur Ausführung des Befehls. Wie macht ihr das? Kann mir da jemand Beispiele zeigen? Ralf
Die Frage erinnert mich ein wenig an: ich will von Hamburg nach München, wie mach ich das am besten? Die Abarbeitung eines Protokolls hängt von vielen verschiedenen Umständen ab. Ein paar mehr Infos wären nicht schlecht. Ist es Multi- oder Singlemaster Wie viele Teilnehmer kommunizieren miteinander Welche Datenmengen sind zu erwarten
Hi Dieter, okay, habs zu ungenau beschrieben, da hast du recht. Also, es ist nur ein SingleMaster. PC ist Master, µC ist Slave. Pro Befehl gehen maximal 48 Byte an den µC, die Antworten sind maximal genauso lang. Es geht mir nicht um ein Übertragungs-Protokoll, sondern darum, das Protokoll richtig im µC umzusetzen. Mir fehlt quasi die Schnittstelle zwischen Empfang eines Befehls, der Aufbereitung der Daten und dem Ausführen des Befehls. Ralf
Hier mal was einfaches: <header-byte> <destination-byte> <payload-length> <payload...> <crc> Dann baust dir eine Statemachine, welche automatisch nach einer Weile wenn nichts übertragen wird in State 0 springt. in State 0 wartest auf das Eintreffen des (oder der) Header Bytes und springst dann auf State 1. In State 1 empfängst das Adressbyte (z.B. die Modulnummer) In State 2 dann die Payloadlength. Dann bleibst so lange in State3 bis die Payloadlength erreicht ist, die Bytes schreibst dabei in einem Puffer. In State 4 prüfst dann mittels einem CRC-Verfahren ob die Übertragung korrekt war. Weiterhin prüfst ob das empfangene Paket für den entsprechenen µC war. Wenn dieses alles korrekt ist, dann kannst die Daten weiterverarbeiten. Danach springst in State 0 und sendest evtl eine Antwort zurück zum Master. Kommt keine Antwort kann der Master davon ausgehen, das das Paket fehlerhaft übertragen wurde. Dies ist zwar nicht das Beste Protokoll aber relativ einfach zu implementieren. Am Besten schaust dir mal ein paar andere Protokolle an (z.B. SNAP, CAN, Nokia FBus/MBus oder auch TCP/IP) und verstehst ihre Vor und Nachteile und implementierst dann eins, was für deinen Anwendungszweck passt. Gruß Roland
Der Controller ist eine Statemaschine. Die Zustandshierarchie sollte so flach wie moeglich sein. Dh man sollte von jedem Zustand in einem anderen gelangen koennen, sofern das physikalisch ueberhaupt moeglich ist. Die Commands aktivieren entweder Vorgaenge oder aendern den Zustand. Zudem gibt es noch Statusabfragen. Die Zustaende und die Commands sollen so zusammenpassen, dass auch mal ein Command verschwinden kann. Das Protokol sollte auf ein command eine Antwort bedingen. Damit kann der PC pruefen, ob das command angekommen ist. Ein Beispiel : http://www.ibrtses.com/embedded/shortmsgprotocol.html rene
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.