ApplikationsKommandos
Alle Applikationen ab v3.x implementieren einige Kommandos, die von jeder
Applikationssoftware, unabhängig von deren speziellen Funktionalität,
verstanden werden. Die Kommandonummer für applikationsspezifische Kommandos
beginnt bei 0x00 und ist abhängig von der eingesetzten Applikationsart.
Für Applikationskommandos beginnt die Kommandonummer ab 0xA0. Die einzelnen
Applikationskommandos sind im Folgenden aufgeführt.
Sämtliche Kommandos sind an die CAN-ID der anzusprechenden Applikation
zu richten.
InfotextSchreiben (0xA0)
InfotextSchreiben dient zum Ablegen von ASCII-Texten, die die Applikation
näher beschreiben. Dieser Text kann z.B. von einer PC-Applikation
ausgelesen und angezeigt werden oder ein Statusdisplay kann z.B. direkt
den Verwendungszweck eines Relais ausgeben. Somit ist keine eigene Datenbasis
für die einzelnen Applikationen/Komponenten notwendig. Der Infotext
wird im Knoteneigenen EEPROM abgelegt und muß mittels InfotextSchreiben
übergeben werden. Ein direktes Beschreiben z.B. mittels Knotenbefehl
FernEEPROMSchreiben funktioniert nicht, da der Speicherplatz im EEPROM
von der jeweiligen Applikation abhängt.
Die einzelnen ASCII-Zeichen werden in mehreren CAN-Telegrammen zu je 5Nutzdatenbytes
(ASCII-Zeichen) übertragen. Dazu besteht ein Telegramm neben der
Applikationskommandonr.(0xA0), und dem InfotextTyp, auch aus einer Sequenznummer/Offset,
die die 5er Blocks fortlaufend durchnummeriert. Der InfotextTyp "kurz"
beschreibt die Funktion der Applikation in max. 10 Zeichen. Der InfotextTyp
"lang" reserviert 40 Zeichen für eine ausführlichere
Beschreibung. Ist der abzuspeichernde Text kürzer als der zur Verfügung
stehende Speicherplatz, so muß die Zeichenkette mit 0x00 '\0' abgeschlossen
werden.
Byte0 |
Byte1 |
Byte2 |
Byte3 |
Byte4 |
Byte5 |
Byte6 |
Byte7 |
Komanndonr. |
InfotextTyp |
Sequenznr./
Offset |
1. ASCII-Zeichen |
2. ASCII-Zeichen |
3. ASCII-Zeichen |
4. ASCII-Zeichen |
5. ASCII-Zeichen |
0xA0 |
0x00: InfotextKurz
0x01: InfotextLang |
0-1
0-7 |
x |
x |
x |
x |
x |
Mit der Übertragung des letzten 5er-Blocks (genauer: mit dem Eintreffen
des Telgrammes mit der Sequenznr/Offset 1 bzw. 7) wird der übermittelte
Text ins EEPROM gespeichert. Wurden vorhergehende Telegramme aus irgendeinem
Grund nicht übermittelt oder gingen "verloren", dann entstehen
Inkonsistenzen im EEPROM. Das korrekte Beschreiben ist also mit dem Rücklesen
(InfotextLesen) sicherzustellen.
Beispiele für abgelegte Texte:
InfotextKurz: "Temp außen"; InfotextLang: "Außentemperatur"
InfotextKurz: "Relais 01"; InfotextLang: "Schreibtischlampe"
InfotextKurz: "Roll Schlz"; InfotextLang: "Rolladen Schlafzimmer"
Beispiel:
Es soll der Kurztext "Relais 1" abgelegt werden:
---- Kurz Seq0 --R- --e- --l-
--a- --i-
0xA0 0x00 0x00 0x52 0x65 0x6C 0x61 0x69
---- Kurz Seq1 --s- -- - --1-
-\0- ----
0xA0 0x00 0x01 0x73 0x00 0x00
0x00 0x00
InfotextLesen (0xA1)
InfotextLesen liefert den hinterlegten Infotexte der Applikation zurück
Der InfotextTyp und die CanId, auf der eine Antwort erwartet wird, ist
anzugeben.
Byte0 |
Byte1 |
Byte2 |
Byte3 |
Komanndonr. |
InfotextTyp |
Antwort-CanId high |
Antwort-CanId low |
0xA1 |
0x01: InfotextKurz
0x02: InfotextLang |
|
|
Daraufhin sendet die Applikation ihre Antwort an die übergebene
CAN-ID in folgendem Format:
Byte0 |
Byte1 |
Byte2 |
Byte3 |
Byte4 |
Byte5 |
Byte6 |
Byte7 |
Komanndonr. |
InfotextTyp |
Sequenznr./
Offset |
1. ASCII-Zeichen |
2. ASCII-Zeichen |
3. ASCII-Zeichen |
4. ASCII-Zeichen |
5. ASCII-Zeichen |
0xA1 |
0x00: InfotextKurz
0x01: InfotextLang |
0-1
0-7 |
x |
x |
x |
x |
x |
Beispiel:
Ein Knoten möchte den InfotextLang aus einer Applikation auslesen:
---- Lang IDhi IDlo
0xA1 0x01 0x00 0xF5
Antwort der angesprochenen Applikation auf der übergebenen
CanId:
---- Typ- Seq- ---- ---- ----
---- ----
0xA1 0x01 0x00 --R- --e- --l-
--a- --i-
0xA1 0x01 0x01 --s- -- - --S- --c- --h-
0xA1 0x01 0x02 --r- --e- --i- --b- --t-
0xA1 0x01 0x03 --i- --s- --c- --h- --l-
0xA1 0x01 0x04 --a- --m- --p- --e- -\0-
0xA1 0x01 0x05 -\0- -\0- -\0- -\0- -\0-
0xA1 0x01 0x06 -\0- -\0- -\0- -\0- -\0-
0xA1 0x01 0x07 -\0- -\0- -\0- -\0- -\0-
|