Paketaufbau CAN
Aus iSysBus Doku
Allgemein / Protokoll / ISB-Protokoll
iSysBus Protokollschichten
| Anwendung | Bootloader | Config-Dienst | Input-Dienst | Output-Dienst | ... | |
| Nachrichtentyp | Unicast | Multicast | Broadcast | |||
| Transport | ISB-Protokoll | |||||
| Bussystem | CAN | USB | RS232 | RS485 | ... | |
Diese Seite beschreibt den Aufbau der Datenpakete, wenn als Bussystem CAN zum Einsatz kommt
Die IDs werden nach einem festgelegten Schema vergeben, um verschiedene Kommunikationsmöglichkeiten zu bieten. Normalerweise gibt es bei CAN keine Möglichkeit, Knoten direkt zu adressieren, gesendete Pakete werden von allen Knoten empfangen und jeder hört auf vorher festgelegte IDs.
Für einen Hausbus müssen bestimmte Knoten aber häufig direkt adressiert werden, deswegen wurden die CAN-IDs ein wenig "umgebogen", um Adressen nachbilden zu können. Hierbei werden alle 29 Bit (11 Bit identifier A und 18 Bit identifier B)des extended CAN Frame Formats verwendet.
Inhaltsverzeichnis |
Absender-Adresse
Die Absender-Adresse besteht aus 11 Bits, die prinzipiell frei vergeben werden können, lediglich die IDs 0 (0x0000) sowie 2047 (0x07FF) sind für spezielle Zwecke reserviert. Je niedriger die Adresse ist, desto höher ist die Priorität bei Verwendung von CAN als Basis.
Empfänger-Adresse / Multicast-ID / Broadcast-ID
Die Empfänger-Adresse besteht aus 16 Bit (5 Bit + 11 Bit) die abhängig vom Nachrichtentyp unterschiedliche Bedeutung haben. Nachrichtentypen sind: Unicast (Punkt-zu-Punkt-Kommunikation: Ein Knoten kommuniziert mit einem bestimmten zweiten Knoten), Multicast (ein Knoten kommuniziert mit einer Gruppe) sowie Broadcast (ein Knoten sendet ein Event an eine unbestimmte Anzahl von Empfängern, in der Regel an alle aktiven Knoten).
Anmerkung: Zum besseren Vergleich mit einem Datalogger oder Oszillogramm wurden die für die iSysBus Adressierung nicht relvanten CAN Bits mit dargestellt.
Unicast
Aufbau der Unicast Nachricht Für den Unicast sind die Bits A0 und A1 der CAN-ID auf 1 gesetzt.
| A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | SSR | IDE | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | B9 | B10 | B11 | B12 | B13 | B14 | B15 | B16 | B17 |
| Identifier A | CAN | Identifier B | ||||||||||||||||||||||||||||
| =1 | =1 | Port | Ziel-Adresse (1) | CAN | Ziel-Adresse (2) | Absender-Adresse | ||||||||||||||||||||||||
Beispiel: Ein Taster schickt eine Aufforderung zum Öffnen an einen elektronischen Türöffner.
Multicast
Aufbau der Multicast Nachricht Für den Multicats sind die Bits A0 und A1 der CAN-ID auf 01 gesetzt.
| A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | SSR | IDE | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | B9 | B10 | B11 | B12 | B13 | B14 | B15 | B16 | B17 |
| Identifier A | CAN | Identifier B | ||||||||||||||||||||||||||||
| =0 | =1 | Multicast ID (1) | CAN | Multicast ID (2) | Absender-Adresse | |||||||||||||||||||||||||
Beispiel: Ein Taster fordert mehrere Knoten auf, das Licht im Treppenhaus einzuschalten
Broadcast
Aufbau der Broadcast Nachricht Für den Broadcast sind die Bits A0 und A1 der CAN-ID auf 00 gesetzt.
| A0 | A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | SSR | IDE | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | B9 | B10 | B11 | B12 | B13 | B14 | B15 | B16 | B17 |
| Identifier A | CAN | Identifier B | ||||||||||||||||||||||||||||
| =0 | =0 | Broadcast ID (1) | CAN | Broadcast ID (2) | Absender-Adresse | |||||||||||||||||||||||||
Beispiel: Alle Knoten Restart
Port
Ein Port ist ein logischer Endpunkt, welcher einen Wert von 0-31 annehmen kann, wobei die Ports 0 und 31 für spezielle Zwecke reserviert sind.
Flags
Datenlänge
Der iSysBus überträgt, wie auch CAN, zwischen 0 und 8 Byte an Nutzdaten je Paket, wobei immer ganze Byte, d.h. keine kleineren Einheiten, zulässig sind. Die Anzahl der übertragen Datenbytes wird im DLC Feld des CAN Frames mit übermittelt.
Daten
Der Inhalt und die Menge (Größe und Anzahl der Paktete) der Daten hängt von verschiedenen Umständen wie Pakettyp und Funktion ab. Mögliche Inhalte sind z.B. Befehle wie Licht ein/aus, Statusmeldungen wie Kontakt zu/auf, Messwerte wie Temperatur, Druck, etc. oder auch Softwareupdates für einzelne Knoten.
Prüfsumme
Als Prüfsumme wird CRC (siehe auch Zyklische Redundanzprüfung) verwendet. Berechnung und Prüfung übernimmt im Regelfall der CAN Controller. Im Falle, dass iSysBus Pakete über Medien ohne eigene Sicherungsschicht, wie z.B. RS232, übertragen werden, erfolgt eine CRC Prüfung durch die Software, die Prüfsumme wird jeweils für ein ganzes Paket berechnet.