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.

„Prioritäts“-Gruppe ( EXID[27:24] )

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.

„Signal“-Gruppe ( EXID[23:20] )

Ü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).

„Kanal“-Gruppe bzw. „Framenummer“ ( EXID[19:16] )

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

„Werte“-Gruppe ( EXID[15:12] )

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.

„Dimension“-Gruppe ( EXID[11:8] )

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.

„ZNODE“-Gruppe ( EXID[15:8] )

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

„SNODE“-Gruppe ( EXID[7:0] )

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 Notiz

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.