Tabelle S19 Block
Bei den S19 Blöcken handelt es sich um Steuerblöcke für das Laden eines BCU2 Geräts. Das Laden ist eine Kombination aus Memory Write und ParameterValue Write Befehlen. Eine zentrale Rolle hat dabei der Parameter für die Load Control. Mehr zur Load Control findet man in der BCU2 Hilfe Datei.
Tabellenspalten
block_id - Integer, Hauptschlüssel, muss vorhanden sein.
Eindeutige ID des Parametertyps
block_number - Integer
Zur Sortierung der Blöcke für die Verarbeitung
program_id - Integer
ID des Applikationsprogramms zu dem der Block gehört
block_name - String
Name des Blocks, meist "Paragraph $xxxx"
block_type
control_code - Integer
Kontroll Code für die Verarbeitung des Blocks.
Bit 0..3 - Load state: 1=Laden starten, 2=Laden beendet, 3=Daten setzen, 4=Objekt entladen
Bit 4..7 - Object ID (0=Device, 1=Adress Tabelle, 2=Assoziations Tabelle, 3=Applikationsprogramm, ...)
segment_type - Integer
Typ des Segments. Wird nur bei Load State 3 "Daten setzen" in control_code verwendet.
0=Code/Daten Segment mit absoluter Adresse allozieren,
1=Stack Segment mit absoluter Adresse allozieren,
2=Segment Kontroll Satz,
3=Applikationszeiger setzen: Zeiger zu Applikation's Funktionen: init, appSave, customPeiHandler,
4=Adresse und Anzahl für die Tabelle von Applikations EIB Objekten.
5=Applikationszeiger setzen: Funktion appCallback, ComOjects Tabelle, Segment 0 Adresse, Segment 1 Adresse.
Kurzer Exkurs: bei der BCU2 sind die meisten Pointer 16bit. Die Adresse der Com Objekt Werte ist aber weiterhin in der Comms Tabelle 8bit. Das Flag dort unterscheidet nicht wie bei der BCU1 zwischen RAM und EEPROM, sondern zwischen Segment 0 und Segment 1 (siehe oben bei segment_type==5).
segment_id - Integer
ID des Segments
segment_address - Integer
16 Bit Adresse
segment_length - Integer
Länge der Daten, wenn Daten geschrieben werden sollen
access_attributes - Integer
Zugriffsrechte für späteren Zugriff auf den Speicherblock der durch segment_address ud segment_length angegeben wird. Bit 0..3 Lese Rechte, Bit 4..7 Schreib Rechte. Man braucht den entsprechenden Zugriffs-Level wenn man auf den Speicherblock zugreifen will. Den erreicht man bei der BCU2 mit dem Befehl Authorize_Request.
memory_type - Integer
Typ des Speicherblocks: 1=Low Ram, 2=High Ram, 3=Eeprom
memory_attributes - Integer
Bit 7 gibt an ob für den Speicherblock eine Prüfsumme errechnet werden soll. Alle anderen Bit werden nicht verwendet.
block_data - Hex String
Daten des Speicherbereichs. Leer wenn segment_length leer ist.
block_mask - Hex String
Optional. Zweck bisher unbekannt.