Sie werden auf jeden Fall eine Standardnetzwerkschicht wählen wollen. Ich habe einige Fälle gesehen, in denen Leute ihre eigenen gerollt haben, und häufig ist das Protokoll ineffizient, und am Ende ist es Zeitverschwendung. Eine bewährte Netzwerkschicht bietet grundlegende Funktionen, um die meisten Probleme zu lösen, die bei der Vernetzung mit einem eingebetteten Gerät auftreten können, und spart Ihnen am Ende wertvolle Zeit und Geld.
Ich bin mit CANopen vertraut, daher werde ich hier eine kurze Erklärung abgeben, die Ihnen bei der Entscheidung helfen kann, ob Sie diesen Weg gehen möchten. Wenn es nicht passt, was Sie tun müssen, würde ich mir etwas anderes ansehen.
CANopen ist sehr datenorientiert. Alle CANopen-Slave-Knoten (Dinge, die Sie von einem Master-Knoten aus steuern, wie Sensoren oder Motortreiber) bieten ein Wörterbuch, das alle Konfigurations-, Steuerungs- und Datenerfassungsdaten enthält, die Sie lesen / schreiben müssen, um Ihre Arbeit zu erledigen. Sie können diese Objekte dann einzeln über den SDO-Mechanismus (Service Data Object) lesen / schreiben oder diese Objekte regelmäßig in zeitgesteuerten CAN-Nachrichtenübertragungen über den PDO-Mechanismus (Producer Data Object) lesen / schreiben. Das Starten, Herunterfahren und Zurücksetzen sowie die Erkennung von Herzschlägen und Knotenfehlern werden von NMT-Diensten sowie von einem Dienst zur Zuweisung von Knoten-IDs bereitgestellt (falls Sie ihn verwenden möchten). Um ein Gerät mithilfe einer eingebetteten CANOpen-Bibliothek zu implementieren, richten Sie im Grunde ein Objektwörterbuch ein, richten PDOs ein, um regelmäßig Datenaktualisierungen zu senden / empfangen. und schreiben Sie Benutzercode, der sich basierend auf diesen Dateneinträgen verhält. Es gibt andere Dinge, die CANopen bietet, aber das ist der größte Teil davon. Lesen Sie dieses Buch für weitere Informationen.