Die CAN-Nachrichten sind immer nach demselben Muster aufgebaut. Jeder Node kann in einem ID Range kommunizieren. Dabei besitzt er eingehende und ausgehende IDs. Folgende fünf Nachrichtentypen sind vorhanden:
Das erste Datenbyte der CAN-Meldung (falls vorhanden) definiert den Typ der Meldung. Die restlichen Datenbytes werden in den Spalte DB1-7 der nachfolgenden Tabellen beschrieben. Datenwerte von zwei oder mehr Bytes werden als Big-Endian (MSB zuerst) gesendet. Jede Meldung hat immer die selbe Länge. Nicht benötigte Datenbytes sind undefiniert und müssen nicht beachtet werden.
Ein CAN-Node verwendet immer fünf CAN ID's, wovon Nibble 1 und 2 (0xnnF) den Node identifizieren und Nibble 0 (0xFFm) den Typ der Nachricht. Drei der ID's werden für eingehende Nachrichten und zwei für ausgehende verwendet. Der Barkeeper funktioniert nach dem Master-Slave Prinzip. Ein CAN Master (Carme-Kit) sendet Anfragen an Slave's (Nodes) welche nur in diesem Fall antwort senden. Einzige Ausnahme sind “Events” im Fehlerfall des Roboterarms (z.b. Emergency stop).
CAN ID | Can-Node |
---|---|
0x21m | Roboter |
0x22m | Förderband |
0x23m | Waage |
0x24m | Drehteler |
CAN ID | Funktion | Beschreibung | Richtung |
---|---|---|---|
0xnn0 | Status Anfrage | Zustandsanfrage, löst eine 0xnn1 Antwort aus | Master → Slave |
0xnn1 | Status Antwort | Zustand des Nodes (Fehler, Aktoren, Position, etc.) | Master ← Slave |
0xnn2 | Kommando | Abalufsteuerung | Master → Slave |
0xnn3 | Kommando Antwort | Antwort auf Kommandos (ACK, Fehler) | Master ← Slave |
0xnnF | Reset | Reset des CAN-Nodes | Master → Slave |
Jeder CAN-Node kann im Fehlerfall mit einem bestimten Code im Datenbyte 1 (DB1) Antworten. Folgende allgemeine Codes können auftreten:
Code (DB1) | Fehler | Beschreibung |
---|---|---|
0x00 | System | Der Knoten hat einen Fehler und ist nicht mehr Einsatzbereit. |
0x01 | Msg. Typ Unbekannt | Der Typ der Meldung ist unbekannt. |
0x02 | Msg. Länge | Die Länge der Meldung ist falsch. |
0x03 | Daten Ungültig | Die in der Meldung enthaltenen Daten sind ungültig (z.B. Ausserhalb des Wertebereichs). |
0x04 | Beschäftigt | Der Knoten ist beschäftigt und kann zurzeit keinen Befehl annehmen. |
0x05 | Illegaler Zustand | Der Knoten kann den Befehl nicht ausführen, weil es der aktuelle Zustand nicht zulässt |
Ein Fehler des Förderbands bei falscher Nachrichtenlänge (Status Anfrage) würde daher wie folgt aussehen:
ID: 0x221 DB0: 0x00 DB1: 0x02