Der Aufbau der CAN Nachricht

Der Nachrichten Aufbau:
Die CAN Nachricht besteht aus der CAN ID (ich verwende die extendet ID) und bis zu 8 Byte Daten.
In der CAN ID werden die folgenden Informationen gespeichert:
Source_Node 8 Bit, die ID des Senders
Target_Type 2 Bit, des Ziels D_BC (Broadcast), D_GR (Gruppe, Multicast), D_NODE (Knoten, Unicast)
Message_Type 4 Bit, der Type der Nachricht, Kommando, Anfrage, Konfiguration etc.
Target_Node 8 Bit, die ID des Ziels Knoten oder Gruppe
Reserve sind noch 7 Bit für andere Zwecke
Zu sendende Daten werden in 2 Arrays (txHead[4] (CAN ID) und txBuf[8] (Daten) gespeichert und nach Kodierung der CAN ID mit den Daten gesendet.
Empfangen Packete werden nach der Dekodierung der CAN ID ebenfalls in 2 Arrays rxHead[4| und rxBuf[8] gespichert und dann ausgewertet und verarbeitet.
Die Node_ID geht von 0x00 - 0xFF, wobei 0x00 noch reserviert ist. 0x7F für den RASPI reserviert ist und die 0xFF einen neuen unkonfigurierten Knoten definiert.
Zur besseren Übersicht werden die Nachrichten noch in Typen eingeteilt:
Bei den Broadcasts sind aktuell definiert, aktuelle Zeit C_Time (noch ohne Sommerzeit), Temperatur S_Temp , Luftfeuchtigkeit S_Humidity, geplant Luftdruck.
Bei den Knoten sind aktuell definiert L_Infio, Ankündigung einer langen (mehr als 8 Byte) nachricht,z.B. neu Konfiguratiosdaten. Ack, eine Quittung, isFeedBack, einen Rückmeldung, Conf Anforderung aktuelle Konfig etc..
Es gibt aktuell 2 Gruppen, Source_Groups und Target_Groups.
Source_Groups sind im Prinzip Aktoren, z.B. kann ein Flurlicht von mehreren Stellen geschaltet werden, eine Statusrückmeldung geht dann an alle möglichen Aktoren welche dieses Flurlicht schalten können.
Target_Groups sind Zielgruppen, z.B. wenn ein Aktor mehrere Dinge z.B. eine Gruppe von Lampen schalten soll. Beide Gruppen können kombiniert werden, d.h. ein Source_Group kann eine Target_Group steuern.

 

 

CAN Nachrichten im Detail

Detaillierter Aufbau der CAN Nachrichten:

Die CAN Nachricht besteht aus 2 Teilen.
Der erste Teil wird in der CAN ID (extended type) vor dem Senden verschlüsselt und von den empfangen Knoten entschlüsselt und ausgewertet. Da bei CAN ja ohne Filter jeder Knoten alles empfängt, wertet jeder Knoten auch die CAN ID aus und entscheidet dann ob diese Nachricht für ihn relevant ist und weiter verarbeitet wird oder nicht.
Der zweite Teil besteht aus 0 - 8 byte und enthält zusätzliche Informationen.

Hier die wichtigsten Nachrichten als Beispiel: (Ziel kann Unicast, Multicast oder Broadcast sein)
Message Type. Request (0) Anforderung bestimmter Daten
Byte 0 = PortState (0), PingRequest (1)
Byte 1 = Port Nummer bei PortState

Message Type Action (1) Befehl zum ausführen bestimmer Aktion
Byte 0 = Zielport (Port Nummer)
Byte 1 = Aktion (auszuführende Aktion OFF (0), ON (1), TOGGLE (2),  TIMED (3))
Byte 2 = Feedback (NOFEEDBACK (0), FEEDBACK (1), GRFEEDBACK (2))
Byte 3 = Zielport für Feedback (typisch der LEDport des auslösenden Tasters)
Byte 4 optional = time (die Zeit in Sekunden die eine getimte Aktion ausgeführt werden soll
           bzw. Feedback Group

Message Type U_Action (2) noch nicht verwendet

Message Type L_Info (3) Längeninformation Ankündigung eines Datenstroms
  Byte 0 = Type der zu empfangenden Daten
  Byte 1 = SubType der zu empfangenden Daten (ConfNew 0xEE,)
  byte 2 = Anzahl Byte der zu empfangend Daten (Max 255 !)

Message Type Ack (5) Quittierung für empfanges Datenpaket, no additional Data

Message Type Data (6) Datenpaket
  Byte 0 -7 Daten

Message Type SetTime (7) Zeit der RTC setzen
  Byte 0 - 3 enthält Unix Time Stamp

Message Type Conf (8) Konfigurationsnachricht
  Byte 0 = Konfigurationsanforderung (Reset 0xFF, Anfordern der Konfiguratio 0xFE, neue ID 0xEF, neue Konfiguration 0xEE, neue Gruppe 0xED)
  Byte 1 = wenn > 0 Delay in Sekunden bis Reset, bzw. neue ID)

Message Type Info (9) Senden von Information, wie aktuelle Uhrzeit, Temperatur, Luftdruck, Luftfeuchtigkeit, etc. Typisch als broadcast, so dass jeder interessierte knoten die Information auswerten kann
  Byte 0 = Art der Info
  Byte 1 - n = Wert

Message Type PingReply (11) No more data

Message Type Feedback (12)

Message Type GrFeedback (13)

 

Zurück zuz Software