Definition der CANNET ID-Gruppen
Im „CANNET“ Netzwerk werden die verschiedenen Informationen, die entweder in den Nodes selbst erzeugt werden (Digitale Eingänge, ADC Werte usw.) oder über die UART-Schnittstellen in die Nodes eingespeist bzw. ausgelesen werden (Kommandos, zu übertragende Daten usw.), über den CAN-Bus übertragen. Die dabei verwendete 29 Bit lange CAN-ID (Extended ID) wurde in einzelne Felder (Gruppen) unterteilt, welche aus Sicht der Priorität der Übertragung, der verbesserten Übersichtlichkeit und natürlich für die einfache Dekodierung innerhalb der Firmware nach dem nachfolgenden Schema festgelegt wurde.
definiert „CANNET“ PrioritätEXID[27:24] Zuordnung der Priorität zu den Signalen | |||||
Signalname | Signalart | Sender | Empfänger | Datenbytes | Priorität |
Nicht erlaubt! | 0 | ||||
Alarmsignal | Digitaler Eingang (DIN) | Node X | Node Y/ Master | 3 | 1 |
Virt. Leitungssignal | Eingang (DIN) > Ausgang(DOUT) | Node X | Node Y | 3 | 2 |
System Kommando | Steuerung durch Master | Master | Node | 8 | 3 |
reserviert | 4 | ||||
Steuersignal | Digitaler Ausgang (DOUT) | Master | Node / Master | 2 | 5 |
Report Output | Änderung Ausgang (DOUT) | Node / Master | Master | 2 | 6 |
System Request | Datenabfrage | Master | Slave | 2 | 7 |
reserviert | 8 | ||||
Sensorsignal | 16 Bit Wert vom ADC | Node | Master | 2 | 9 |
reserviert | 10 | ||||
Quad Sensorsignal | Quad 16 Bit v. ADC | Node | Master | 4 x 2 | 11 |
reserviert | 12 | ||||
System Reply | Antwort von NODE | Node | Master | multiple 8 | 13 |
14 | |||||
System Kommunikation | UART zu UART (virtuell) | Master | Master | 8 | 15 |
Die Gruppe „Priorität“ ist ein 4 Bit Feld das auf die Extended ID Bits [27:24] eingeblendet wird. Das Prioritätsfeld bestimmt primär welches Signal die höchsten Übertragungsrechte auf dem CAN-Bus besitzt. Die niedrigste Prioritätsnummer (rechte Spalte) besitzt die höchste Ünertragungspriorität.
Der Prioritätswert „0“ ist im CANNET aktuell reserviert für eventuelle zukünftige Erweiterungen in Form von kritischen System Informationen. Aktuell sind nicht alle definierten Prioritäten in Verwendung.
Über die Signal-Kennungs Bits ist eine detailiertere Aufschlüsselung von einzelnen Rahmen möglich und damit eine Untergruppierung der Prioritätsgruppen. Für die Signalkennungs-Bits werden die EXID[23:20] Bits verwendet, womit bis zu 15 verschiedene Signalarten definiert werden können.
Der Wert „0“ ist auch innerhalb der 8-Bit Signalkennung nicht zulässig.
Während über die „PRIORITÄT“ eine Mehrfachverwendung für verschiedene Signale möglich ist werden über die Signal-Gruppe innerhalb der gleichen Priorität definierte Signale weiter priorisiert. Kritische Signale werden so auf dem Bus bevorzugt übertragen und können von weniger wichtigen Signalen nicht geblockt werden.
„CANNET“ Signal EXID[23:20] | |||||
Signalname | Signal-ID | Sender | Inhalt | Datenbytes | Signal |
Reserviert! | 0 | ||||
Alarm | 0x0001b | Node | Digital | 3 Byte | 1 |
Fehler | 0x0010b | Node | ASCII | max. 8 Byte | 2 |
Leitung (virtuell) | 0x0011b | Node | Digital | 3 Byte | 3 |
Kommando | 0x0100b | Master | ASCII | max. 8 Byte | 4 |
Request | 0x0101b | Master | Digital | 1 Byte | 5 |
Schaltbefehl | 0x0110b | Master / Node | Digital | 3 Byte | 6 |
0x0111b | 7 | ||||
Meßwert | 0x1000b | Node | Analog | 2 Byte | 8 |
Quad-Meßwert | 0x1001b | Node | 4 x Analog | 4 x 2 Byte | 9 |
0x1010b | 10 | ||||
BIN oder ASCII String | 0x1011b | Master | UART-Data | 8 Byte | 11 |
0x1100b | /td> | 12 | |||
Kommando Reply | 0x1101b | Node | Software | 1...3 Frames | 13 |
Request Reply | 0x1110b | Node | 1...3 Frames | 14 | |
0x1111b | 15 |
Je niedriger der „SIGNAL“-Wert ist desto höher ist die Priorität des Signals. ALARM, FEHLER und VIRTUELLE LEITUNG sind die „Realtime“kritischen Signale und besitzen die höchste Priorität. Durch die Anpassung des Wertes in der Prioritäts-Gruppe können aber Verschiebungen vorgenommen werden.
Die „DATA REQUEST“ und „DATA REPLY“ Signale unterscheiden sich hinsichtlich des Aufbaus der CANNET-ID Gruppen, speziell der Verwendung des CHAN (Kanal) Signales zugunsten eines FRNR (Frame Nummer) Signales.
Die CANNET-Node die abgefragt wird, wird durch das später noch erklärte „REQUEST NODE“-Signal (ZNODE) adressiert und sendet als Antwort die entsprechenden Datenbytes. Dieses ZNODE Signal (1 Byte) ersetzt in den genannten Frames die beiden Felder WERT (4 Bit) und DIM (4 Bit).
Die Kombination aus „Signalname“ (EXID[23:20] ) und „Kanalnummer“ (EXID[19:16]) erlaubt eine feine Abstimmung für die verschiedensten Anwendungsfälle.
Die Signalnummer bildet dabei das höherwertige Nibble (4 Bit) der Signalkennung (EXID[23:16]), die Kanalnummer bildet das niedrigwertigere Nibble (4 Bit) das in den RX und TX Mailboxen im Register CAN_MIDR2 verfügbar ist.
Für jedes Signal können bis zu 15 Kanäle definiert werden. Besitzt ein Signal keine eindeutige Zuordnung zu einem Kanal (werden z.B. Daten von mehreren Kanälen in einem Protokoll übertragen) so wird die Kanalnummer „0“ verwendet !
Achtung: Bei den den Signalkennungen „ Command Reply“ (Signal 13) und „Request Reply“ (Signal 14) wird dasCHAN Feld für die Anzahl der übertragenen FramesFRNR benutzt. Der erste Frame eines solchen Replies trägt die CHAN Kennung = 0 . Jeder weitere Frame wird hinsichtlich der Framenummer inkrementiert und damit besitzt der letzte übertragene Frame beispielsweise die Kennung „3“ (für ein VCOM Protokoll).
Bei kanalbezogenen Signalen die eine feste Kanalnummer besitzen, wird die Filterauswertung hinsichtlich des CHAN-Feldes maskiert um gleich geartete Signale über das gleiche Filter zu erfassen und damit der selben Verarbeitung zuführen zu können. In diesen Fällen wird das CHAN-Feld im weiteren Verlauf per Software (CANNET Parser) ausgewertet um zwischen den einzelnen Kanälen unterscheiden zu können. Dies geschieht auch im Hinblick auf die begrenzte Anzahl von möglichen Hardware-Filtern die im beCAN Controller konfiguriert werden können.
„CANNET“ Kanal EXID[19:16] | |||||
Kanal Nummer bzw. Frame Nummer |
Name | Sender | Frames für SIG: 13,14,15 |
CHAN bzw. FRNR Nummer |
|
0x0000b | multi CHAN | Node | Frame 1 | 0 | |
0x0001b | Kanal 1 | Node | Frames 2 | 1 | |
0x0010b | Kanal 2 | Node | Frames3 | 2 | |
0x0011b | Kanal 3 | Node | Frames 4 | 3 | |
0x0100b | Kanal 4 | Node | Frames 5 | 4 | |
0x0101b | Kanal 5 | Node | Frames 6 | 5 | |
0x0110b | Kanal 6 | Node | Frames 7 | 6 | |
0x0111b | Kanal 7 | Node | Frames 8 | 7 | |
0x1000b | Kanal 8 | Node | Frames 9 | 8 | |
0x1001b | Kanal 9 | Node | Frames 10 | 9 | |
0x1010b | Kanal 10 | Node | Frames 11 | 10 | |
0x1011b | Kanal 11 | Node | Frames 12 | 11 | |
0x1100b | Kanal 12 | Node | Frames 13 | 12 | |
0x1101b | Kanal 13 | Node | Frames 14 | 13 | |
0x1110b | Kanal 14 | Node | Frames 15 | 14 | |
0x1111b | Kanal 15 | Node | Frames 16 | 15 |
Die EXID [15:8] werden im dritten Byte (CAN_MIDR3) der RX und TX Mailboxen übergeben. Der höherwertige Nibble beinhaltet nach dieser CANNET Spezifikation die „WERTE“-Gruppe.
„CANNET“ Wert Kennung: EXID[15:12] | |||||
Wertekennung | Typ | Beispiel | Daten | Datenfeld | Nummer |
Nicht erlaubt! | 0 | ||||
0x0001b | 1 Bit Wert | Boolean | 1 Byte 1 Byte |
log“1“ = ON = 0xF0h log“0“ = OFF = 0x00h |
1 |
0x0010b | Toggle | Boolean | 1 Byte | Toggle = 0x3Fh | 2 |
0x0011b | 4 Bit Wert | Status: Ausgänge | 1 Byte | 0x00h bis 0x0Fh | 3 |
0x0100b | 4 | ||||
0x0101b | 8 Bit Wert | Status: Register | 1 Byte | 0x00h bis 0xFFh | 5 |
0x0110b | 6 | ||||
0x0111b | 7 | ||||
0x1000b | 10 Bit Analog Wert | ADC-Wert rechtsbündig |
2 Byte | 0% = 0x00h 100% = 0x03Fh |
8 |
0x1001b | Quad 10 Bit Analog Wert | 4 ADC Werte rechtsbündig |
4 x 2 Byte | 0% = 0x00h 100% = 0x03Fh |
9 |
0x1010b | 10 | ||||
0x1011b | 11 | ||||
0x1100b | ASCII Wert | Kommando | 1...8 Byte | 0xxxx.xxxxh | 12 |
0x1101b | 13 | ||||
0x1110b | ASCII Wert | UART Endframe | 1...8 Byte | beliebig | 14 |
0x1111b | ASCII Wert | UART Mehrfach | 8 Byte | beliebig | 15 |
In diesem Zusammenhang ist wichtig, dass von der WERTE-Kennung nur das höchstwertige Bit EXID[15] von den „16 Bit STM8 CAN Hardware Filtern“ ausgewertet wird. Dieses Bit unterscheidet ob es bei dem übertragenen Wert um einen digitalen (EXID[15] = 0) oder einen analogen Wert (bzw. ASCII), bei dem in diesem Fall EXID[15] = 1 ist, handelt.
Die Auswertung der drei niedrigerwertigen Bits ( EXID[14:12] ) erfolgt, falls benötigt durch Software, da diese IDs nicht von den Hardware- Filtern im 16-Bit Modus erfasst werden.
Details zur Verwendung der WERTE und DIMENSION Felder sind durch die Implementierung der einzelnen CAN-Messages ersichtlich.
Die „DIMENSION“-Gruppe erlaubt eine Zuordnung der physikalischen Dimension zu den WERTE-Kennungen. Diese Gruppe wird im normalen Anwendungsfall nicht zur Message-Filterung verwendet sondern gegebenenfalls als Information extrahiert und in einem ASCII Rahmen der per UART weiterübertragen wird eingefügt.
„CANNET“ Dimensions Kennung: EXID[11:8] | |||||
Datendimension | Typ | Dimension | Datenlänge | Datenfeld | Nummer |
Nicht erlaubt! | |||||
0x0001b | ON/OFF | keine | 1 Byte | log“1“ = ON = 0xF0h log“0“ = OFF = 0x00h |
1 |
0x0010b | Digital „Nibble“ | keine | 1 Byte | 0000.XXXX | 2 |
0x0011b | Digital „Byte“ | keine | 1 Byte | XXXX.XXXX | 3 |
0x0100b | Spannung | Volt | 2 Byte | 0 Volt = 0x00h 5 Volt = 0x03Fh |
4 |
0x0101b | Temperatur | °C | 2 Byte | t.b.d. | 5 |
0x0110b | Rel. Feuchte | rH | 2 Byte | 0% = 0x00h 100% = 0x03Fh |
6 |
0x0111b | Druck | millibar | 2 Byte | 7 | |
0x1000b | Bytewerte | Integer | 2 Byte | <Ziel-ID>,<Cmd-Nr.> | 8 |
0x1001b | 9 | ||||
0x1010b | ASCII | 8 Byte | beliebig | 10 | |
0x1011b | 11 | ||||
0x1100b | Verschiedene | 8 Byte | 4 x 16 Bit | 12 | |
0x1101b | Ext. Spannung | typ. 12 Volt | 2 Byte | t.b.d | 13 |
0x1110b | System Temperatur | typ. 21 °C | 2 Byte | t.b.d | 14 |
0x1111b | ADC Kalibrierung | 2.5 Volt | 2 Byte | nom. 0x1Fh | 15 |
Die letzten drei Werte (13, 14 und 15) sind dabei die auf der CANNET-Hardware implementierten Überwachungswerte für Versorgungsspannung (typ. 12 Volt), System Temperatur (typ. Umgebungstemperatur) sowie der Referenzwert für 2.5 Volt der vom ADC aus der separaten Spannungsreferenz eingelesen wird und einen Korrekturwert für den ADC darstellt.
Bei „KOMMANDO“ (SIG=4) und „REQUEST“ (SIG=5) Frames sowie bei „REPLY“ Frames (SIG=13 bzw. 14), welche von einer remote Node an die „ Requester“ oder „Command“ Node als Antwort zurückgeschickt werden, ist eine Abweichung vom normalen CANNET Schema definiert. Anstatt der beiden Gruppen WERT und DIMENSION wird in den EXID[15:8] Bits die Adresse der anfragenden Node (ZNODE ) zurück übertragen. Damit kann die Antwort gezielt an den Requester adressiert werden und andere Nodes werden weniger belastet.
Zu beachten ist dabei dass das höchstwertige Bit ZNODE[7], (dem „WERT“ Bit[3] entsprechend) im beCAN Empfangsfilter ausmaskiert wird um die Übertragung bei NODES mit NODE-IDs größer 127 gewährleisten zu können.
„CANNET“ ZNODE Kennung: EXID[15:8] | |||||
NODE (Bin) | NODE (Hex) | Länge | NODE | ||
Nicht erlaubt! | 0 | ||||
0x0000.0001b | 0x01h | 1 Byte | 1 | ||
0x0000.0010b | 0x02h | 1 Byte | 2 | ||
0x0000.0011b | 0x03h | 1 Byte | 3 | ||
0x0000.0100b | 0x04h | 1 Byte | 4 | ||
0x0000.0101b | 0x05h | 1 Byte | 5 | ||
0x0000.0110b | 0x06h | 1 Byte | 6 | ||
..... | ..... | ..... | |||
0x0001.0000b | 0x10h | 1 Byte | 16 | ||
0x0001.0001b | 0x11h | 1 Byte | 17 | ||
...... | ...... | ...... | |||
0x1000.1011b | 0x8D | 1 Byte | 139 | ||
0x1000.1100b | 0x8C | 1 Byte | 140 | ||
...... | ...... | ...... | |||
0x1111.1110b | 0xFEh | 1Byte | 254 | ||
0x1111.1111b | 0xFFh | 1 Byte | 255 |
Im Gegensatz zur ursprünglichen Verwendung des CAN-Busses der keine Adressen verwendet sondern nur die Messages kennzeichnet, wird im CANNET unter anderem auch eine direkte Adressierung verwendet.
Dies ermöglicht eine gezielte Abfrage bzw. Steuerung jeder einzelnen NODE. Die EXID[7:0] Bits im CAN Rahmen beinhalten immer die „Quelladresse“ der jeweilige Message, also die Adresse der NODE welche die jeweilige CANNET Message ausgibt.
Bei Antworten auf einen „Request“ wird in den WERT und DIM Gruppen die „Zieladresse“ (ZNODE) übertragen um eine eindeutige Zuordnung einer Antwort von der adressierten NODE auf eine Abfrage einer anderen NODE zu ermöglichen.
Die „NODE“ Kennung ist eine frei konfigurierbare Adresse der mit dem System (Bus) verbundenen Geräte (Nodes bzw. Master) und erlaubt eine Zuordnung zur „Lokalisierung“ der Geräte in der Infrastruktur des Netzwerkes. Im Gegensatz zu den vorher beschriebenen WERT und DIM Gruppen ist die SNODE-Gruppe ein Byte-Wert und ermöglicht so bis zu 255 Teilnehmer im Netzwerk.
Die SNODE-Nummer (die lokale Sender Adresse) kann über die UART eines jeden Gerätes „programmiert“ werden und wird im EEPROM des STM8 abgelegt. Der Default-Wert im Auslieferungszustand besitzt den Wert 0x7Fh. Der Wert „0“ ist für die Node-Nummer nach CANNET Spezifikation nicht erlaubt (gegebenenfalls für zukünftige Verwendung reserviert).
INFO: teilweise werden ZNODE-Nummern auch im Datenfeld bestimmter Protokolle übertragen.
Die Node-Kennungen werden von den 16 Bit Hardware-ID-Filtern nicht erfasst. Die Auswertung erfolgt statt dessen per Software im CANNET Parser. Der EXID[7:0] Wert ist in den RX und TX Mailboxes in den CAN_MIDR4 Registern verfügbar (RX) bzw. muß dort eingetragen werden (TX).
„CANNET“SNODE Kennung: EXID[7:0] | |||||
NODE (Bin) | NODE (Hex) | Länge | NODE | ||
Nicht erlaubt! | 0 | ||||
0x0000.0001b | 0x01h | 1 Byte | 1 | ||
0x0000.0010b | 0x02h | 1 Byte | 2 | ||
0x0000.0011b | 0x03h | 1 Byte | 3 | ||
0x0000.0100b | 0x04h | 1 Byte | 4 | ||
0x0000.0101b | 0x05h | 1 Byte | 5 | ||
0x0000.0110b | 0x06h | 1 Byte | 6 | ||
.... | .... | .... | .... | ||
0x0001.0000b | 0x10h | 1 Byte | 16 | ||
0x0001.0001b | 0x11h | 1 Byte | 17 | ||
.... | .... | .... | .... | ||
0x1000.1011b | <0x8D> | 1 Byte | 139 | ||
0x1000.1100b | 0x8C | 1 Byte | 140 | ||
.... | .... | .... | .... | ||
0x1111.1110b | 0xFEh | 1 Byte | 254 | ||
0x1111.1111b | 0xFFh | 1 Byte | 255 |
Copyright 2019 by Dipl.Ing.(FH) Franz Henkel
Dieses Dokument sowie dessen Inhalt, insbesondere Texte, Fotografien und Grafiken, unterliegt dem Copyright (© 2019) und sind nur mit einer schriftlicher Zustimmung des Autors, Dipl.Ing.(FH) Franz Henkel zur vollständigen oder auszugsweisen Weiterverwendung in Form einer gedruckten oder elektronischen Kopie oder Replikation bzw. einer vollständigen oder auszugsweisen Bereitstellung des Inhalts in schriftlicher, gedruckter oder elektronischer Form, zu verwenden.