Appl_Base

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