Basisfunktionalität der Applikationsschicht
Die Basisfunktionalität Appl_Base ist in jeder Knotenfirmware identisch. Sie bildet zudem die gemeinsame Schnittstelle zu den Grundparametern, die allen Knoten gleich sind.
Folgende Aufgaben werden von Appl_Base übernommen:
- Bereitstellen des Telegrammpools
- Bereitstellen der Nebenbedingungen
- Zugriff auf die DoTable für den DoType „Knoteneinstellungen“
Telegrammpool
Der Telegrammpool ist ein reservierter Speicherbereich im Flash eines Knotens, in dem alle vorbereiteten und zu gewissen Ereignissen zu versendende Telegramme vorgehalten werden. Der Telegrammpool besteht aus „Pooltelegrammen“. Ein Pooltelegramm kennt folgende Größen:
- Ereignis (z.B. „Steigende Flanke“ oder „Grenzwert überschritten“ o.ä.)
- Trigger (Welche Applikation löste das Ereignis aus, z.B. „Taster4“ oder „Thermometer7“)
- Nebenbedingungen, die alle erfüllt sein müssen, damit das Telegramm verschickt werden darf
- CahTelegramm (inkl. CahHeader und Nutzdaten)
Der Telegrammpool kann bis zu 250 CahTelegramme aufnehmen.
Nebenbedingungen
Um ein Telegramm nur dann zu versenden, wenn gewisse Bedingungen erfüllt sind, wurden Nebenbedingungen eingeführt. Alle konfigurierten Nebenbedingungen eines Pooltelegrammes müssen erfüllt sein, damit dieses Telegramm bei seinem ausgelösten Ereignis versendet werden darf. Die Nebenbedingungen speisen sich grundsätzlich (nur) aus BoDaten, da diese immer verfügbar sind und nicht zyklisch angefragt werden müssen.
Hierfür müssen die BoDaten, die dann in eine Nebenbedingung einfliessen sollen, näher beschrieben werden. Dies geschieht durch Konfiguration eines Empfangsfilters (siehe auch Beschreibung zu Comm-Treiber). Folgende Filterparameter sind konfigurierbar:
- Absender (Knotennummer)
- BoTyp
- BoIndex
- Position (Bitposition/Offset der relevanten Information; 0..63)
- Länge (Nutzdatenbreite in Bit)
Um aus diesen Daten dann eine Operation machen zu können, die zu „true“ oder „false“ evaluiert werden kann, sind noch folgende Parameter notwendig:
- Vergleichsoperator (Größer, Kleiner, Gleich)
- Vergleichsgröße (mit dieser Zahlenwert werden die empfangenen Bo-Daten mittels Vergleichsoperator verglichen)
- BedingungAktiv (Soll dieser Datensatz aktiv geschaltet sein?)
- Bedingungsdefault (Welcher Wert soll angenommen werden, wenn keine aktuellen BoDaten vorliegen; also bei Timeout)
- Timeoutzeit (0..80s)
Alle Nebenbedingungen werden in jedem Zyklus neu evaluiert (alle 10ms) und das Ergebnis in einer Bitleiste gespeichert. Damit ist es möglich beim Durchsuchen des Telegrammpools durch einen schnellen Bitvergleich festzustellen, ob das aktuell betrachtete Pooltelegramm verschickt werden soll. Hierdurch begrenzt sich die Anzahl der erlaubten Nebenbedingungen auf derzeit 32 pro Knoten.
DoType „Knoteneinstellungen“
Alle Knotenfirmwaretypen müssen den DoType „Knoteneinstellungen“ unterstützen. Hierdrin werden Infos und Konfigurationen über den konkreten Knoten gespeichert. Der DoTyp „Knoteneinstellungen“ teilt sich in weitere Untergliederungen, die sich durch die den DataObjectTableMainIndex (DoMainIndex) unterscheiden:
- Knotenspezifische Parameter (0x00): Alle für diesen Knoten wichtige Parameter wie z.B. Knotennummer, Softwaretyp, Hardwaretyp, Betriebsstundenzähler usw.
- Bootloader (0x02): Parameter für den Bootloader, wie z.B. Seriennummer oder Bootloaderversion
- Bedingungen (0x12): Konfigurationsinterface zu den Nebenbedingungen (Lesen/Schreiben)
- Telegrammpool (0x20..0x2F): Konfigurationsinterface zu den Pooltelegrammen
- BDK (0x30..0x3F): Konfigurationsinterface zu den BDKs (Bo->Ddo-Konverter)
Die folgende Tabelle listet alle Knotenspezifischen Parameter auf:
Spalten:
DoSi: DataObjectSubIndex
Ort: Speicherort
Datenart: Cfg: Config; Ctl: Control; Lcfg; LiveConfig; Bw: BusWriteable; Br: BusReadable
DoTable Knoteneinstellungen (DoType 0x00) / Knotenspezifische Parameter (DoMainIndex 0x00):
DoSi | Beschreibung | Typ/ Länge |
Ort | Default | Datenart |
0x00 | (reserviert) | ||||
0x01 | KnotenNummer | u8 | EEP | Cfg, Bw, Br | |
0x02 | EepromValidFlag | u8 | EEP | Cfg, Bw, Br | |
0x03 | Inbetriebnahmedatum | string/6 | EEP | „000000“ | Cfg, Bw, Br |
0x04 | Resets (Einschaltvorgänge) | u16 | EEP | Cfg, Bw, Br | |
0x05 | Betriebsstunden [h] |
u32 | EEP | Lcfg, Bw, Br | |
0x06 | Uptime [s] |
u32 | RAM | Ctl, Bw, Br | |
0x07 | EepromSichern | u8 | CONST | Ctl, Bw, Br | |
0xD0 | Einbauort | string/6 | EEP | „——„ | Cfg, Bw, Br |
0xE0 | Softwaretyp | string/6 | ROM | Cfg, Br | |
0xF0 | Hardwaretyp | string/6 | ROM | Cfg, Br |
Alle Eepromparameter liegen im FixEeprombereich und sind somit auch nach einem Softwareupdate (via Bootloader) noch unverändert vorhanden.
DoTable Knoteneinstellungen (DoType 0x00) / Bootloader (DoMainIndex 0x01):
DoSi | Beschreibung | Typ/ Länge |
Ort | Default | Datenart |
0x00 | Seriennummer | u16 | ROM | Cfg, Br | |
0x01 | BootloaderVersion | u16 | ROM | Cfg, Br | |
0x02 | GotoBootloader (Cmd) | u8 | CONST | Ctl, Bw |