-
TECHNISCHES
GEBIET
-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf Techniken
zum Komprimieren von Daten und spezifischer auf Techniken, um aus
einer nicht komprimierten Datentabelle eine komprimierte Datentabelle
zu bilden.
-
HINTERGRUND
DER ERFINDUNG
-
Kalibrierungsdatentabellen
in Kraftfahrzeuganwendungen stellen typischerweise eine Sammlung diskreter
Werte dar, die eine gewünschte
analoge Funktion approximieren. Um in der Praxis die analoge Funktion
genauer zu approximieren, werden typischerweise bekannte Dateninterpolationstechniken verwendet,
um die Kalibrierungsdaten zu bestimmen, die zwischen die diskreten
Tabelleneinträge
fallen, wobei in einer zweidimensionalen Tabelle eine derartige
Interpolation die Kenntnis von vier benachbarten Tabelleneinträgen erfordert.
Wenn z. B. die Dateneinträge
in einer speziellen Kalibrierungsdatentabelle als "D" bezeichnet werden, dann sind die Datenelemente
Di,j, Di,j+1, Di+1,j und Di+1,j+1 erforderlich,
um die Datenwerte zwischen den Zeilen i und i + 1 und den Spalten
j und j + 1 zu interpolieren.
-
Die
Datentabellen können
im Allgemeinen ziemlich groß sein,
wobei sie deshalb eine signifikante Menge der Speicherkapazität für ihre Speicherung erfordern.
-
US 5 125 072 A offenbart
ein Verfahren und eine Vorrichtung, die Text- und Bilddaten effizient speichern.
Die Textdaten werden mit zwei Bits pro Bildpunkt gespeichert, wohingegen
die Bilddaten mit vier Bits pro Bildpunkt gespeichert werden. Die
verschiedenen Datenformate werden verschmolzen. Es wird eine Ortstabelle
verwendet, um den Übergangsort
zu speichern, wo sich ein Datenformat in das andere Datenformat ändert.
-
US 4 645 916 A offenbart
ein Verfahren, um Felder von 4-Bit-, 5-Bit- und 7-Bit-Codes effizient
zu speichern. Die Codes sind durch Feldtrennzeichen getrennt.
-
Es
ist demzufolge erwünscht,
derartige Datentabellen in kleinere Blöcke der Daten zu komprimieren,
die weniger Speicher verbrauchen. Es ist außerdem bei den komprimierten
Kalibrierungsdatentabellen erwünscht,
die Fähigkeit
zu bewahren, benachbarte Tabelleneinträge für die Dateninterpolation, wie
sie gerade beschrieben worden ist, schnell und effizient wiederzugewinnen.
Die vorliegende Erfindung ist auf Datentabellen-Komprimierungstechniken gerichtet, die
konstruiert sind, um jede dieser Aufgaben sowohl separat als auch
in Kombination zu lösen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung umfasst eines oder mehrere der folgenden Merkmale
oder Kombinationen aus diesen. Es wird ein Verfahren zum Bilden
einer komprimierten Datentabelle aus einer nicht komprimierten Datentabelle
geschaffen, wobei die komprimierte Datentabelle in einem computerlesbaren
Medium gespeichert sein kann. Die komprimierte Datentabelle kann
auf einer Codebeschreibungs-Bitstruktur basieren, die eine erste
Anzahl von Bits, die einen Codetyp definiert, und eine zweite Anzahl
von Bits, die eine Folgenlänge
der Datenelemente definiert, enthalten.
-
Es
kann ein erster Code-Deskriptor als die Codebeschreibungs-Bitstruktur definiert
werden, bei der die erste Anzahl von Bits so konfiguriert ist, dass sie
einen Bytecode-Codetyp definieren, der ein Byte lange Datenelemente
identifiziert, wobei jede Folge von einem oder mehreren ein Byte
langen Datenelementen der nicht komprimierten Datentabelle mit dem
ersten Code-Deskriptor, dessen Folgenlänge gleich der Anzahl von ein
Byte langen Datenelementen in der Folge von einem oder mehreren
ein Byte langen Datenelementen ist, gefolgt von dem einen oder den
mehreren ein Byte langen Datenelementen in der komprimierten Datentabelle
dargestellt werden kann. Es kann ein zweiter Code-Deskriptor als
die Codebeschreibungs-Bitstruktur definiert werden, bei der die
erste Anzahl von Bits so konfiguriert ist, dass sie einen Wortcode-Codetyp
definieren, der ein Wort lange Datenelemente identifiziert, wobei
jede Folge von einem oder mehreren ein Wort langen Datenelementen
der nicht komprimierten Datentabelle mit dem zweiten Code-Deskriptor,
dessen Folgenlänge gleich
der Anzahl von ein Wort langen Datenelementen in der Folge von einem
oder mehreren ein Wort langen Datenelementen ist, gefolgt von dem
einen oder den mehreren ein Wort langen Datenelementen in der komprimierten
Datentabelle dargestellt werden kann. Es kann ein dritter Code-Deskriptor
als die Codebeschreibungs-Bitstruktur definiert werden, bei der die
erste Anzahl von Bits so konfiguriert ist, dass sie einen ersten
Kurzcode-Codetyp
definiert, der ein erstes spezifiziertspezifiziertes Datenelement
identifiziert, wobei jede Folge von einem oder mehreren ersten spezifiziertspezifizierten
Datenelementen in der nicht komprimierten Datentabelle in der komprimierten
Datentabelle dargestellt werden kann, wobei die Folgenlänge des
dritten Code-Deskriptors gleich der Anzahl der ersten spezifiziertspezifizierten
Datenelemente in der Folge von einem oder meh reren der ersten spezifiziertspezifizierten
Datenelemente ist. Es kann ein vierter Code-Deskriptor als die Codebeschreibungs-Bitstruktur
definiert werden, bei der die erste Anzahl von Bits so konfiguriert
ist, dass sie einen zweiten Kurzcode-Codetyp definiert, der ein zweites
spezifiziertspezifiziertes Datenelement identifiziert, das von dem
ersten spezifiziertspezifizierten Datenelement verschieden ist,
wobei jede Folge von einem oder mehreren der zweiten spezifiziertspezifizierten
Datenelemente in der nicht komprimierten Datentabelle in der komprimierten
Datentabelle dargestellt werden kann, wobei die Folgenlänge des vierten
Code-Deskriptors gleich der Anzahl der zweiten spezifizierten Datenelemente
in der Folge von einem oder mehreren der zweiten spezifizierten
Datenelemente ist. Die Codebeschreibungs-Bitstruktur kann ein ein
Byte langes Codebeschreibungs-Byte oder
alternativ durch irgendeine Anzahl von Bits definiert sein.
-
Die
komprimierte Datentabelle kann einen Kopfsatz definieren, wobei
der Kopfsatz eine erste Anzahl von Bits, die die Anzahl von Zeilen
in der nicht komprimierten Datentabelle definieren, und eine zweite
Anzahl von Bits, die die Anzahl von Spalten in der nicht komprimierten
Datentabelle definieren, enthält.
Der Kopfsatz kann ferner eine dritte Anzahl von Bits enthalten,
die ein durch einen Kurzcode-Codetyp identifiziertes spezifiziertes
Datenelement definieren. Alternativ kann die komprimierte Datentabelle
keinen Kopfsatz enthalten, wobei das erste Element in der komprimierten
Datentabelle stattdessen eine im Voraus definierte Anzahl von Bits
umfassen kann, die die erste Anzahl von Zeilen und die zweite Anzahl
von Spalten definieren.
-
Es
kann eine Zeilenbeschreibungsmatrix definiert und im computerlesbaren
Medium gespeichert werden, wobei die Matrix eine Anzahl von Zeilenidentifizierern
enthalten kann, die gleich der Anzahl von Zeilen in der nicht komprimierten
Datentabelle ist, wobei jeder Zeilenidentifizierer einen entsprechenden
der Code-Deskriptoren identifiziert, der in der komprimierten Datentabelle
vorhanden ist und das erste Element in der entsprechenden Zeile
der nicht komprimierten Datentabelle definiert.
-
In
dem computerlesbaren Medium kann ein Suchalgorithmus gespeichert
sein, der so konfiguriert sein kann, dass er aus der komprimierten
Datentabelle Datenelemente wiedergewinnt, die Datenelementen in
spezifizierten Zeilen und Spalten der nicht komprimierten Datentabelle
entsprechen, indem zunächst
ein geeigneter erster, zweiter oder dritter Code-Deskriptor in der
komprimierten Datentabelle lokalisiert wird, der durch Zeilenidentifizierer,
die den entsprechenden Zeilen entsprechen, identifiziert wird, und
anschließend
wenigstens der geeignete erste, zweite oder dritte Code-Deskriptor verarbeitet wird,
um diejenigen Datenelemente in der komprimierten Datentabelle zu
lokalisieren, die jenen in den spezifizierten Spalten der nicht
komprimierten Datentabelle entsprechen.
-
Die
nicht komprimierte Datentabelle kann eine Kalibrierungstabelle sein,
die Daten zum Steuern wenigstens einer einem Kraftfahrzeug zugeordneten
Funktion enthält.
-
Diese
und andere Merkmale der vorliegenden Erfindung werden aus der folgenden
Beschreibung der veranschaulichenden Ausführungsformen offensichtlicher
werden.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
1 ist
eine graphische Veranschaulichung eines Steuercomputers, der innerhalb
eines Kraftfahrzeugs eingebettet ist und einen Speicher besitzt,
der eine oder mehrere Kalibrierungsdatentabellen enthält.
-
2 ist
eine graphische Darstellung eines veranschaulichenden Formats eines
Codebeschreibungsbytes, das verwendet wird, um die Daten zu komprimieren,
die eine Datentabelle bilden.
-
3 ist
eine graphische Darstellung eines veranschaulichenden Formats einer
komprimierten Datentabelle unter Verwendung einer Anordnung von Codebeschreibungsbytes
des in 2 veranschaulichten Typs.
-
4 ist
eine graphische Darstellung einer veranschaulichenden Ausführungsform
einer Zeilenbeschreibungsmatrix, die Zeilenidentifizierer enthält, die
das erste Datenelement in jeder Zeile einer nicht komprimierten
Datentabelle auf ihre entsprechenden Datenelemente in der komprimierten
Datentabelle nach 3 abbilden.
-
5 ist
ein Beispiel einer nicht komprimierten Kalibrierungsdatentabelle.
-
6A ist
eine komprimierte Darstellung der Kalibrierungsdatentabelle nach 5 unter
Verwendung einer Anordnung der Codebeschreibungsbytes des in 2 veranschaulichten
Typs.
-
6B ist
eine Zeilenbeschreibungsmatrix, die Zeilenidentifizierer enthält, die
das erste Datenelement in jeder Zeile der nicht komprimierten Datentabelle
nach 5 mit den entsprechenden Datenelementen in der
komprimierten Datentabelle nach 6A abbilden.
-
7 ist
ein Ablaufplan, der eine Ausführungsform
eines Algorithmus zum Lokalisieren von vier benachbarten Datenelementen
in der komprimierten Datentabelle nach 6A für deren
anschließende
Interpolation, um einen spezifischen Wert der Kalibrierungsdaten
zu bestimmen, veranschaulicht.
-
BESCHREIBUNG
DER VERANSCHAULICHENDEN AUSFÜHRUNGSFORMEN
-
In 1 ist
eine graphische Veranschaulichung eines Steuercomputers 12 gezeigt,
der in ein Kraftfahrzeug 10 eingebettet ist. Der Steuercomputer 12 enthält einen
Mikroprozessor 14, der mit einer Speichereinheit 16 und
einer Eingabe-/Ausgabe-Schaltungsanordnung (E/A-Schaltungsanordnung) 18,
die den Mikroprozessor 14 und die Speichereinheit 16 über eine
Anzahl M von Signalwegen 201–20M, wobei M irgendeine positive ganze Zahl sein
kann, mit externen elektronischen Vorrichtungen und/oder Systemen
verbindet, in Verbindung steht.
-
Die
Speichereinheit 16 kann für die Datenspeicherung in Übereinstimmung
mit irgendeiner von verschiedenen bekannten Techniken konfiguriert und/oder
partitioniert sein, wobei in der in 1 veranschaulichten
Ausführungsform
die Speichereinheit 16 in einer bekannten Weise konfiguriert
ist, um darin eine Anzahl verschiedener Informationstypen zu speichern.
Die Speichereinheit 16 enthält z. B. einen ersten Abschnitt
oder einen ersten Anteil, der konfiguriert ist, um einen oder mehrere
Steueralgorithmen zum Steuern einer oder mehrerer Komponenten, eines
oder mehrerer Systeme oder eines oder mehrerer Untersysteme des
Kraftfahrzeugs 10 zu speichern. Ein zweiter Abschnitt oder
Anteil der Speichereinheit 16 ist konfiguriert, um Betriebsdaten
zu speichern, wobei derartige Daten Parameter-Schwellenwerte und/oder
-Bereiche, vorgegebene Parameterwerte und dergleichen enthalten
können,
die durch den einen oder die mehreren Steueralgorithmen beim Steuern
der einen oder mehreren Komponenten, Systeme oder Untersysteme des
Kraftfahrzeugs verwendet werden. Ein dritter Abschnitt oder Anteil der
Speichereinheit 16 ist konfiguriert, um dem Fahrzeug und/oder
irgendeiner durch dieses getragenen Komponente zugeordnete Betriebsdaten
zu sammeln und zu speichern. Derartige Daten können z. B. diagnostische Daten,
Reisedaten, Kraftstoffverbrauchsdaten und/oder dergleichen enthalten.
Ein vierter Abschnitt oder Anteil der Speichereinheit 16 ist
konfiguriert, um irgendeine Anzahl N von Kalibrierungsdatentabellen
zu speichern, wobei N irgendeine positive ganze Zahl sein kann.
Jede der Kalibrierungsdatentabellen enthält typischerweise Informationen,
die einen oder mehrere Betriebsparameter auf eine spezielle Fahrzeugfunktion
abbilden. Eine spezielle Kalibrierungstabelle kann z. B. mit den
Werten der Motor-Kraftstoffversorgung belegt sein, die die Werte
der Motordrehzahl und der Motorbelastung auf die spezifizierten
Kraftstoffversorgungs-Befehlswerte abbilden. Für den Fachmann auf dem Gebiet
werden andere Beispiele deutlich sein Der in 1 veranschaulichte
Steuercomputer 12 kann irgendeinen aus einer Anzahl von
Steuercomputern repräsentieren,
die typischerweise innerhalb eines Kraftfahrzeugs 10 eingebettet
sind, einschließlich
eines Motor-Steuercomputers, der konfiguriert ist, um den Gesamtbetrieb
eines internen Verbrennungsmotors, der durch das Kraftfahrzeug 10 getragen
wird, zu managen und zu steuern, eines Kraftübertragungs-Steuercomputers,
der konfiguriert ist, um den Gesamtbetrieb der Kraftübertragung
des Kraftfahrzeugs zu steuern und zu managen, eines Getriebe-Steuercomputers,
der konfiguriert ist, um den Gesamtbetrieb eines automatischen oder
halbautomatischen Getriebes, das durch das Kraftfahrzeug 10 getragen wird,
zu steuern und zu managen, eines Antiblockiersystem-Steuercomputers (ABS-Steuercomputers), der
konfiguriert ist, um den Gesamtbetrieb des Antiblockiersystems zu
steuern und zu managen, oder dergleichen, aber nicht eingeschränkt auf
diese. Die Fachleute auf dem Gebiet werden andere Steuercomputer
erkennen, die in das Kraftfahrzeug 10 eingebettet sein
können
oder vom Kraftfahrzeug 10 getragen werden können, wobei
vorgesehen ist, dass alle derartigen anderen Steuercompu ter im Allgemeinen
durch den 1 veranschaulichten Steuercomputer 12 repräsentiert
werden.
-
In 2 ist
eine veranschaulichende Ausführungsform
eines Codebeschreibungsbytes (CDB) gezeigt, wobei eine Sammlung
derartiger Codebeschreibungsbytes verwendet werden kann, um eine Datentabelle
zu komprimieren, um einen kleineren Block der Daten zu bilden, der
für seine
Speicherung weniger Speicher verbraucht. Das Codebeschreibungsbyte
ist in einen CODETYP und in einen Code FOLGENLÄNGE partitioniert. Der CODETYP
identifiziert den Typ der Daten, die in einigen Fällen dem Codebeschreibungsbyte
folgen, während
der Code FOLGENLÄNGE
die Anzahl der Datenelemente definiert, die dem Codebeschreibungsbyte
folgt. In der veranschaulichten Ausführungsform ist der CODETYP
durch zwei Bits des Codebeschreibungsbyte definiert; z. B. die Bits
6 und 7, während
der Code FOLGENLÄNGE
durch die sechs verbleibenden Bits des Codebeschreibungsbytes definiert
ist; z. B. die Bits 0–5.
Es ist selbstverständlich,
dass eine größere oder kleinere
Anzahl von Bits verwendet werden kann, um sowohl den CODETYP als
auch den Code FOLGENLÄNGE
zu definieren, und/oder dass das Codebeschreibungsbyte alternativ
ein Codebeschreibungswort sein kann, das aus zwei Bytes besteht,
die einen CODETYP und einen Code FOLGENLÄNGE mit jeweils irgendeiner
gewünschten
Anzahl von Bits definieren. Das Codebeschreibungsbit kann demzufolge eine
Codebeschreibungs-Bitstruktur mit irgendeiner Bitlänge sein,
die irgendeine Anzahl von verschiedener CODETYPEN und irgendeine
Anzahl von entsprechenden FOLGENLÄNGEN definiert. In der folgenden
Beschreibung wird die Codebeschreibungs-Bitstruktur im Kontext eines
Codebeschreibungsbytes beschrieben, obwohl es selbstverständlich sein
wird, dass die Codebeschreibungs-Bitstruktur alternativ kleiner
oder größer als
eine Länge
von einem Byte sein kann, wie gerade beschrieben worden ist. Eine
komprimierte Datentabelle 40 wird aus einer nicht komp rimierten
Datentabelle gebildet, indem die verschiedenen nicht komprimierten
Einträge unter
Verwendung der Codebeschreibungsbytes des gerade beschriebenen Typs
dargestellt werden, wobei jedem Codebeschreibungsbyte eine Anzahl
von Dateneinträgen
folgen kann, um die Struktur CDB[DATEN] CDB[DATEN] ..., zu bilden,
wie in 3 veranschaulicht ist.
-
Der
CODETYP definiert spezifische Datentypen, wobei in einigen Fällen derartige
Daten dem Codebeschreibungsbyte folgen. Die Gesamtzahl der verschiedenen
Codetypen, die definiert sein können, ist
durch die Anzahl der Bits vorgeschrieben, die verwendet wird, um
den Codetype im Codebeschreibungsbyte darzustellen. In der veranschaulichten Ausführungsform
ist der CODETYP z. B. durch zwei Bits definiert; nämlich die
Bits 6 und 7 des Codebeschreibungsbyte, wobei er demzufolge bis
zu vier verschiedene Datentypen definieren kann. Jeder der Codetypen
definiert ein spezifisches Datenformat, wobei in der in 2 veranschaulichten
Ausführungsform
ein erster Code-Deskriptor mit einem CODETYP 11 einen BYTECODE definiert,
was bedeutet, dass die Dateneinträge, die dem Codebeschreibungsbyte
in der komprimierten Datentabelle folgen, BYTE-Daten repräsentieren, wobei deshalb jeder derartige
Dateneintrag eine Länge
von einem Byte besitzt. Die Anzahl derartiger Dateneinträge, die
dem Codebeschreibungsbyte in der komprimierten Datentabelle folgen,
ist durch die FOLGENLÄNGE
des Codebeschreibungsbytes definiert. Es wird z. B. angenommen,
dass die folgenden zwölf
hexadezimalen Einträge
in einer nicht komprimierten Datentabelle nacheinander vorkommen;
0000E0, 0000FF, 0000A9, 0000B7, 00001A, 000001, 0000D8, 0000C9,
000015, 000022, 00006C, 00004D. Alle zwölf Einträge repräsentieren die BYTECODE-Daten,
wobei das Codebeschreibungsbyte für derartige Daten folglich "11" in den Bits 6 und
7, um einen CODETYP darzustellen, der den BYTECODE-Daten entspricht,
und "001100" in den Bits 0–5, um eine FOLGENLÄNGE von
12 Ein-Byte-Daten-Einträgen darzustellen,
die dem Codebeschreibungsbyte folgen, sein würde. Hexadezimal würde das
Codebeschreibungsbyte folglich "CC" sein, wobei die
Darstellung des Beispiels der nicht komprimierten BYTECODE-Datenkette
in einer komprimierten Datentabelle die Form CDB[DATEN] oder CCE0FFA9B71A01D8C915226C
4D besitzen würde.
-
In
der veranschaulichten Ausführungsform definiert
ein zweiter Code-Deskriptor,
der einen CODETYP 10 besitzt, einen WORTCODE, was bedeutet, dass
die Dateneinträge,
die dem Codebeschreibungsbyte in der komprimierten Datentabelle
folgen, WORT-Daten repräsentieren,
wobei jeder derartige Dateneintrag deshalb eine Länge von
zwei Bytes besitzt. Wie bei den BYTECODE-Daten ist die Anzahl derartiger
Dateneinträge,
die dem Codebeschreibungsbyte in der komprimierten Datentabelle
folgen, durch die FOLGENLÄNGE
des Codebeschreibungsbyte definiert. Es wird z. B. angenommen, dass
die folgenden fünf
hexadezimalen Einträge
in einer nicht komprimierten Datentabelle nacheinander vorkommen;
0018E0, 0024FF, 0A9A9, 0045B7, 00F41A. Alle fünf Einträge repräsentieren WORTCODE-Daten, wobei
das Codebeschreibungsbyte für
derartige Daten folglich "10" in den Bits 6 und
7, um einen CODETYP darzustellen, der den BYTECODE-Daten entspricht,
und "000101" in den Bits 0–5, um eine FOLGENLÄNGE von
fünf Doppelbyte-Dateneinträgen darzustellen,
die dem Codebeschreibungsbyte folgen, sein würde. Hexadezimal würde das
Codebeschreibungsbyte folglich "85" sein, wobei die
Darstellung des Beispiels der nicht komprimierten WORTCODE-Datenkette
in einer komprimierten Datentabelle die Form CDB[DATEN] oder 8518E024FFA9A945B7F41A
besitzen würde.
-
In
der in 2 veranschaulichten Ausführungsform definiert ein dritter
Code-Deskriptor, der einen CODETYP 00 besitzt, einen ersten Kurz-Code, KURZCODE1,
während
ein vierter Code-Deskriptor, der einen CODETYP 01 besitzt, einen
zweiten Kurz-Code, KURZCODE2, definiert. KURZCODE1 und KURZCODE2
sind jeweils benutzerdefinierbare Datentypen, die verwendet werden
können,
um spezielle Ketten der Daten zu definieren, die durch irgendeinen
anderen CODETYP nicht definierbar sind und/oder die mit irgendeiner
Häufigkeit
in der nicht komprimierten Datentabelle vorkommen können. Eine
Datenkette, die zu groß sein
kann, um sie entweder durch einen BYTECODE- oder durch einen WORTCODE-CODETYPE
zu definieren, kann z. B. stattdessen als der KURZCODE1 oder der KURZCODE2
definiert werden. Wie im Allgemeinen in 3 veranschaulicht
ist, kann die komprimierte Datentabelle 40 einen Kopfsatz
enthalten, wobei in einer Ausführungsform
der Kopfsatz sowohl die Indikatoren der Anzahl der Zeilen und Spalten
in der nicht komprimierten Datentabelle als auch die Codedefinitionen
aller Kurz-Codes, die durch ein oder mehrere Codebeschreibungsbytes
definiert sind, enthalten kann. In dieser Ausführungsform kann der Kopfsatz
z. B. das folgende Format besitzen:
ZEILEN, SPALTEN, KURZCODE1LÄNGE, KURZCODE1,
KURZCODE2LÄNGE,
KURZCODE2, wobei KURZCODE1LÄNGE
und KURZCODE2LÄNGE
ein Byte lange Indikatoren der Bitlängen des KURZCODE1 bzw. des
KURZCODE2 sind.
-
Als
ein Beispiel wird eine nicht komprimierte Datentabelle betrachtet,
die 10 Zeilen (0A hexadezimal) und 20 Spalten (14 hexadezimal) sowie
einen hexadezimalen Eintrag der Form EAAEFBB (28 Bits oder "1C" hexadezimal lang),
der neunmal nacheinander in der nicht komprimierten Datentabelle
vorkommt, und einen weiteren hexadezimalen Eintrag der Form FDFACB
(24 Bits oder "18" hexadezimal lang),
der 4-mal nacheinander in der nicht komprimierten Datentabelle vorkommt,
besitzt. Weil diese Datenketten jede zu groß sind, um sie als BYTECODE-
oder WORTCODE-CODETYPEN
darzustellen, wird die erste als der KURZCODE1 und die zweite als
der KURZCODE2 definiert. Der Kopfsatz der komprimierten Datentabelle 40 in
der oben beschriebenen Ausführungsform
ist dann 0A 141CEAAEFFBB18FDFACB. Alternativ kann der Kopfsatz nur
die Indikatoren der Anzahl der Zeilen und Spalten in der nicht komprimierten
Datentabelle enthalten; z. B. 0A14 im obigen Beispiel, wobei die Definitionen
aller Kurz-Codes als Variable zum Datenwiedergewinnungsalgorithmus
weitergeleitet werden können,
der konfiguriert ist, um die Daten aus der komprimierten Datentabelle 40 wiederzugewinnen. Nochmals
alternativ kann der Kopfsatz aus der komprimierten Datentabelle 40 weggelassen
werden, wobei die Indikatoren der Anzahl der Zeilen und Spalten in
der in nicht komprimierten Datentabelle als das erste Element in
der komprimierten Datentabelle selbst enthalten sein können, wobei
die Definitionen aller Kurz-Codes als Variable zum Datenwiedergewinnungsalgorithmus
weitergeleitet werden können. In
dieser Ausführungsform
kann das erste Element in der komprimierten Datentabelle 40,
das die Anzahl der Zeilen und Spalten in der nicht komprimierten
Datentabelle umfasst, durch irgendeine Anzahl von Bits in irgendeinem
gewünschten
Format definiert sein. Eine erste Anzahl von Bits des ersten Datenelements in
der komprimierten Datentabelle 40 kann z. B. die Anzahl
der Zeilen in der nicht komprimierten Datentabelle definieren, während eine
zweite Anzahl der folgenden Bits die Anzahl der Spalten in der nicht komprimierten
Datentabelle definieren kann. Im obigen Beispiel kann das erste
Element in der komprimierten Datentabelle 40 das ein Wort
lange Datenelement "0A14" sein, wobei "0A" angibt, dass die
nicht komprimierte Datentabelle 10 Zeilen der nicht komprimierten
Daten besitzt, während "14" angibt, dass die
nicht komprimierte Datentabelle 20 Spalten der nicht komprimierten
Daten besitzt.
-
In
jedem Fall folgen einem Codebeschreibungsbyte, das irgendeinen Kurz-Code definiert, im Allgemeinen
in der komprimierten Datentabelle 40 keine Daten, weil
die Daten bereits durch den Kurz-Code selbst definiert sind. Die
tatsächlichen Daten
des Kurz-Codes können
im Kopfsatz der Tabelle 40 gefunden werden, oder sie können als
Variable zu einem Datenwiedergewinnungsalgorithmus weitergeleitet
werden, wie gerade beschrieben worden ist. Folglich wird im oben
angegebenen Beispiel ein Codebeschreibungsbyte für EAAEFBB, das neunmal nacheinander
in der nicht komprimierten Datentabelle vorkommt und das als der KURZCODE1
definiert ist, in der komprimierten Datentabelle 40 einfach
als "09" (die Bits 7 bzw.
6 des Codebeschreibungsbytes sind "00" und
die Bits 5–0 sind
entsprechend "001001" oder "09" hexadezimal) dargestellt. Ähnlich wird
ein Codebeschreibungsbyte für
FDFACB, das viermal nacheinander vorkommt und das als der KURZCODE2
definiert ist, in der komprimierten Datentabelle 40 einfach
als "44" (die Bits 7 bzw.
6 des Codebeschreibungsbytes sind "01" und
die Bits 5–0
sind entsprechend "000100" oder "44" hexadezimal) dargestellt.
-
Wie
oben beschrieben worden ist, kann das Codebeschreibungsbyte konfiguriert
sein, um irgendeine Anzahl von verschiedenen CODETYPEN und FOLGENLÄNGEN zu
definieren, wobei die Fachleute auf dem Gebiet erkennen werden,
dass die Anzahl der verschiedenen CODETYPEN und die zulässige Größe der FOLGENLÄNGE in Abhängigkeit
von der Anwendung variieren können,
wobei sie im Allgemeinen durch die Größe der nicht komprimierten
Datentabelle und die Art ihrer Inhalte vorgeschrieben sind. Als
ein Beispiel ist das in 2 veranschaulichte Codebeschreibungsbyte
konfiguriert, um außer
einem WORTCODE und einem BYTECODE zwei benutzerdefinierbare Kurz-Codes
zu erlauben und um FOLGENLÄNGEN
von bis zu 64 (z. B. sechs verfügbare
Bits oder 26) zu erlauben. Als ein weiteres Beispiel kann das Codebeschreibungsbyte
konfiguriert sein, um drei Bits, um den CODETYP zu definieren, und
fünf Bits,
um die FOLGENLÄNGE
zu definieren, zu erlauben. In diesem Beispiel ist das Codebeschreibungsbyte
konfiguriert, um außer
einem WORTCODE und einem BYTECODE sechs benutzerdefinierbare Kurz-Codes
zu erlauben, und um FOLGENLÄNGEN
von bis zu 32 (z. B. fünf verfügbare Bits
oder 25) zu erlauben. Die Fachleute auf
dem Gebiet werden andere Konfigurationen des Codebeschreibungsbytes
erkennen, wobei vorgesehen ist, dass derartige andere Konfigurationen
in den Umfang der vorliegenden Erfindung fallen. Nochmals alternativ
kann das Codebeschreibungsbyte durch eine Codebeschreibungsstruktur
ersetzt sein, die weniger als acht Bits besitzt, oder es kann durch
eine Codebeschreibungs-Bytebit-Kombination, -Wort-, -Wortbit- oder
Wortbyte-Kombination oder Kombinationen von Wörtern, die mehr als acht Bits
besitzen, ersetzt sein. In derartigen Fällen kann demzufolge irgendeine
Anzahl von Bits oder Bytes verwendet werden, um die Anzahl der verschiedenen
CODETYPEN und die FOLGENLÄNGE
zu definieren.
-
In
jedem Fall wird die komprimierte Datentabelle 40, die sich
aus der vorausgehenden Datenkompressionstechnik ergibt, im Speicher 16 (1) als
ein Block von Daten gespeichert, dem in einigen Ausführungsformen
ein Kopfsatz vorangehen kann, wie gerade beschrieben worden ist.
Um die Wiedergewinnung der Daten aus der komprimierten Datentabelle 40 zu
unterstützen,
die den Daten an spezifischen Stellen in der nicht komprimierten
Datentabelle entsprechen, ist es erwünscht, in der komprimierten
Datentabelle 40 die verschiedenen Einträge zu identifizieren, die die
ersten Datenelemente in jeder Zeile der nicht komprimierten Datentabelle
definieren. Dies wird mit einer Zeilenbeschreibungsmatrix erreicht,
wobei eine veranschaulichende Ausführungsform einer derartigen
Matrix 50 in 5 veranschaulicht ist. Die Zeilenbeschreibungsmatrix 50 enthält "X" Zeilenidentifizierer R1–RX, wobei "X" der Anzahl der Zeilen in der nicht
komprimierten Datentabelle entspricht. Jeder Zeilenidentifizierer
R1–RX
in der Zeilenbeschreibungsmatrix 50 identifiziert einen Eintrag
in der kompri mierten Datentabelle 40, der das erste Element
in der Zeile der nicht komprimierten Datentabelle definiert, die
diesem Zeilenidentifizierer entspricht. In der veranschaulichten
Ausführungsform
beginnen verschiedenen Gruppen von Einträgen in der komprimierten Datentabelle 40,
die die einzelnen Zeilen der nicht komprimierten Datentabelle definieren,
jede mit einem Codebeschreibungsbyte. Mit anderen Worten, der Beginn
jeder Zeile in der nicht komprimierten Datentabelle ist in der komprimierten
Datentabelle als ein Codebeschreibungsbyte eingetragen. Wenn der
CODETYP dieses Codebeschreibungsbytes ein Kurz-Code ist (z. B. der KURZCODE1
oder der KURZCODE2), dann definiert das Codebeschreibungsbyte selbst
das erste Datenelement dieser Zeile. Wenn andererseits der CODETYP
des Codebeschreibungsbytes ein BYTECODE ist, dann definiert das
Byte, das dem Codebeschreibungsbyte folgt, das erste Datenelement
dieser Zeile, wobei, wenn der CODETYP stattdessen ein WORTCODE ist,
dann das Zwei-Byte-Wort, das dem Codebeschreibungsbyte folgt, das
erste Datenelement dieser Zeile definiert.
-
Im
obigen Beispiel wurde die nicht komprimierte Datentabelle als zehn
Zeilen und 20 Spalten besitzend identifiziert, wobei eine entsprechende
Zeilenbeschreibungsmatrix 50 demzufolge 10 Zeilenidentifizierer
R1–R10
enthält.
Der erste Zeilenidentifizierer R1 zeigt auf die Stelle in der komprimierten
Datentabelle 40, an der das Codebeschreibungsbyte, das
das erste Datenelement in der ersten Zeile der nicht komprimierten
Datentabelle definiert, gefunden werden kann. In den Ausführungsformen
der komprimierten Datentabelle 40, die einen Kopfsatz enthalten,
kann der Kopfsatz als Ganzes als das erste Element in der Tabelle 40 betrachtet
werden. Alternativ kann in Ausführungsformen
der komprimierten Datentabelle 40, die keinen Kopfsatz
enthalten, das erste "Element", das aus einer vorgegebenen
Anzahl von Bits besteht, ein Indikator der Anzahl der Zeilen und
Spalten der nicht komprimierten Daten in der nicht kompri mierten
Datentabelle sein. In jeder derartigen Ausführungsform ist das zweite Element
in der komprimierten Datentabelle 40 folglich das erste
Codebeschreibungsbyte, das das erste oder mehrere Datenelemente
in der ersten Zeile der nicht komprimierten Datentabelle definiert,
wobei R1 in diesem Fall "02" ist. In den Ausführungsformen
der komprimierten Datentabelle 40, die keinen Kopfsatz
enthalten und in denen irgendeine oder mehrere der Anzahl der Zeilen
der Daten in der nicht komprimierten Datentabelle, der Anzahl der
Spalten der Daten in der nicht komprimierten Datentabelle, ein oder
mehrere Kurzcode-Folgenlängen-Deskriptoren
und/oder eine oder mehrere Kurzcodedefinitionen als Variable zwischen
den Datenwiedergewinnungsalgorithmen weitergeleitet werden, würde R1 "01" sein. Vorausgesetzt,
dass die zweite Zeile in der nicht komprimierten Datentabelle kein
genaues Duplikat der ersten Zeile ist, würde R2 dann auf das Codebeschreibungsbyte in
der komprimierten Datentabelle 40 zeigen, das das erste
Element in der zweiten Zeile der nicht komprimierten Datentabelle
definiert, usw. Falls jedoch die zweite Zeile der nicht komprimierten
Datentabelle ein genaues Duplikat der ersten Zeile ist, würde das
Einbeziehen derartiger Daten in die komprimierte Datentabelle 40 redundant
sein. In derartigen Fällen
würde über die
doppelte Zeile über
die Zeilenbeschreibungsmatrix 50 Rechenschaft abgelegt,
indem einfach der Wert von R1 als der Wert von R2 verdoppelt wird.
In dieser Weise müssen
die Daten für
die zweite Zeile der komprimierten Datentabelle 40 nicht
tatsächlich
in die komprimierte Datentabelle 40 eingetragen werden,
weil über
die Zeilenbeschreibungsmatrix 50 über die Datenverdoppelung Rechenschaft abgelegt
wird. Diese Technik wird auf irgendeine Anzahl von Wiederholungen
in irgendeiner Anzahl von Zeilen der nicht komprimierten Datentabelle
angewendet. In jedem Fall werden für den Zweck des Definierens
und des Zählens
der verschiedenen Einträge
in der Zeilenbeschreibungsmatrix 50 die Dateneinträge oder
-elemente in der komprimierten Datentabelle 40 als mit
einer Länge
von einem Byte betrachtet, sodass alle BYTECODE-Dateneinträge als ein
Datenelement gezählt
werden, während
alle WORTCODE-Dateneinträge
als zwei Elemente gezählt
werden.
-
In
den 5, 6A und 6B ist
ein Beispiel bereitgestellt, um die Komprimierung einer 10-Zeilen-mal-21-Spalten-Tabelle 60 der
Kalibrierungsdaten auf eine signifikant kleinere komprimierte Kalibrierungstabelle 70 und
die begleitende Zeilenbeschreibungsmatrix 80 zu demonstrieren.
In diesem Beispiel enthält
die komprimierte Kalibrierungstabelle 70 keinen Kopfsatz,
wobei die Anzahl der Zeilen und Spalten der nicht komprimierten
Daten in der nicht komprimierten Kalibrierungstabelle 60 durch
das erste ein Wort lange Element in der komprimierten Kalibrierungstabelle 70 dargestellt
wird. Weil die Anzahl der Zeilen der nicht komprimierten Daten in
der nicht komprimierten Kalibrierungstabelle 60 gleich
10 ist, das "0A" hexadezimal ist,
und weil die Anzahl der Spalten der nicht komprimierten Daten in
der nicht komprimierten Datentabelle 60 gleich 21 ist,
das "15" hexadezimal ist,
ist folglich das erste Element in der komprimierten Kalibrierungstabelle 70 nach
einem ZEILEN-, SPALTEN-Format "0A15", wie in 6A veranschaulicht
ist.
-
Aus 5 ist
ersichtlich, dass die ersten drei Zeilen der nicht komprimierten
Kalibrierungstabelle 60 völlig gleich sind, wobei jede
aus 21 Einträgen
der völlig
gleichen Daten "FFFFFFFF" besteht. Es ist demzufolge
bei derartigen Daten erwünscht,
den ersten Kurz-Code KURZCODE1 als "FFFFFFFF" zu definieren, der eine Bitlänge oder
KURZCODE1 LÄNGE
von 32 (hexadezimal 20) besitzt. Alle verbleibenden Daten in der
nicht komprimierten Kalibrierungstabelle 60 sind entweder
als ein WORTCODE oder als ein BYTECODE definierbar, deshalb ist
eine zweite Kurz-Code-Definition
in diesem Fall nicht notwendig, wobei in diesem Beispiel die Werte
der KURZCODE1LÄNGE
und des KURZCODE1 als Variable zwischen den Datenwiedergewinnungsalgorithmen
weitergeleitet werden.
-
Der
CODETYP für
den KURZCODE1 ist "00", wobei die FOLGENLÄNGE für die Daten
in jeder der drei Zeilen 21 (hexadezimal 15) ist, sodass das Codebeschreibungsbyte,
das den KURZCODE1 definiert, der eine FOLGENLÄNGE von 21 besitzt, "15" ist, das folglich
der erste Eintrag in der komprimierten Kalibrierungstabelle 70 nach
dem Kopfsatz ist, wie in 6A veranschaulicht
ist. Weil das erste Codebeschreibungsbyte einen Kurz-Code definiert und
weil das erste Codebeschreibungsbyte dem Kopfsatz folgt, ist der
Eintrag in der komprimierten Kalibrierungstabelle 70, der
das erste Datenelement in der ersten Zeile der nicht komprimierten
Kalibrierungstabelle 60 definiert, das zweite Element in
der komprimierten Kalibrierungstabelle 70 (das erste Element
ist der ein Wort lange Zeilen-/Spaltenanzahl-Deskriptor "0A15"). Der erste Zeilenidentifizierer in
der Zeilenbeschreibungsmatrix 80 ist demzufolge "02". Weil die Zeilen
zwei und drei der nicht komprimierten Kalibrierungstabelle 60 zur
ersten Zeile völlig gleich
sind, ist es überflüssig, die
Datenelemente der Zeilen zwei und drei in der komprimierten Kalibrierungstabelle 70 zu
definieren, wobei sie stattdessen jedes als das zweite Element in
der komprimierten Kalibrierungstabelle 70 identifiziert
werden. Die zweiten und dritten Zeilenidentifizierer in der Zeilenbeschreibungsmatrix 80 sind
demzufolge jeder "02".
-
Die
vierte Zeile der nicht komprimierten Kalibrierungstabelle 60 ist
durch vier aufeinanderfolgende KURZCODE1-Datenelemente, gefolgt
von drei aufeinanderfolgenden WORTCODE-Datenelementen, gefolgt von
neun aufeinanderfolgenden BYTECODE-Datenelementen, gefolgt von fünf aufeinanderfolgenden
KURZCODE1-Datenelementen, definiert. Das Codebeschreibungsbyte für die ersten
vier KURZCODE1-Datenelemente ist "04",
wobei dies folglich der dritte Eintrag in der komprimierten Kalibrierungstabelle 70 ist,
wie in 6A veranschaulicht ist. Das
Codebeschreibungsbyte für
die drei folgenden aufeinanderfolgenden WORTCODE- Datenelemente ist "83" hexadezimal,
wobei die drei aufeinanderfolgenden ein Wort langen Datenelemente "0276", "01 F4 bzw. "0172" sind. Die Einträge 4–10 in der
komprimierten Kalibrierungstabelle 70 sind folglich "830127601F40172", wobei angegeben
werden sollte, dass, weil "83" drei aufeinanderfolgende WORTCODE-Datenelemente
definiert, die drei Dateneinträge,
die dem Codebeschreibungsbyte "83" folgen, jedes zwei
Bytes lang sind, wobei sie deshalb über sechs ein Byte lange Dateneinträge in der
komprimierten Kalibrierungstabelle 70 Rechenschaft ablegen.
Das Codebeschreibungsbyte für
die neun folgenden aufeinanderfolgenden BYTECODE-Datenelemente ist "C9" hexadezimal, wobei
die neun aufeinanderfolgenden ein Byte langen Datenelemente "BE", "96", "7D", "69", "5F", "41", "37", "1E" bzw. "28" sind. Die Einträge 11–20 in der
komprimierten Kalibrierungstabelle 70 sind folglich "C9BE967D695F41371E28". Schließlich ist
das Codebeschreibungsbyte für
die fünf
folgenden aufeinanderfolgenden KURZCODE1-Datenelemente, die die
Zeile vier der nicht komprimierten Kalibrierungstabelle 60 abschließen, "05", wobei der Eintrag
21 in der komprimierten Datentabelle 70 folglich "05" ist. Weil dieser
dritte Eintrag in der komprimierten Kalibrierungstabelle 70 das
Codebeschreibungsbyte ist, das das erste Datenelement in der vierten
Zeile der nicht komprimierten Kalibrierungstabelle 60 definiert, ist
der vierte Zeilenidentifizierer in der Zeilenbeschreibungsmatrix 80 folglich "03".
-
Weil
die Zeile vier der nicht komprimierten Kalibrierungstabelle 60 in
der komprimierten Kalibrierungstabelle 70 mit dem Element 21 endet,
ist das Element 22 der komprimierten Kalibrierungstabelle 70 das
Codebeschreibungsbyte, das den ersten Dateneintrag der Zeile fünf der nicht
komprimierten Kalibrierungstabelle 60 definiert. Der erste
Dateneintrag in der Zeile fünf
der nicht komprimierten Kalibrierungstabelle 60 repräsentiert
ein einzelnes Auftreten der KURZCODE1-Daten, wobei das Codebeschreibungsbyte,
das das Element 22 in der komprimierten Kalibrierungstabelle 70 definiert,
folglich "01" ist, wie in 6A veranschaulicht
ist. Weil das Element 22 der komprimierten Kalibrierungstabelle 70 den
ersten Dateneintrag in der Zeile fünf der nicht komprimierten Kalibrierungstabelle 60 definiert,
ist der fünfte
Zeilenidentifizierer der Zeilenbeschreibungsmatrix 80 folglich
16 (d. h. "22" dezimal entspricht "16" hexadezimal).
-
Die
verbleibenden Dateneinträge
der nicht komprimierten Kalibrierungstabelle 60 werden
in die komprimierte Kalibrierungstabelle 70 eingetragen, wobei
die Zeilenidentifizierer der Zeilenbeschreibungsmatrix 80 in
der gleichen Weise definiert werden, um die komprimierte Kalibrierungstabelle 70 und
die zugeordnete Zeilenbeschreibungsmatrix 80 zu erzeugen,
die in den 6A und 6B veranschaulicht
sind. Die Fachleute auf dem Gebiet werden erkennen, dass die Datenkomprimierungstechnik,
die verwendet worden ist, um die komprimierte Kalibrierungstabelle 70 und
die Zeilenbeschreibungsmatrix 80 zu bilden, auf jede geeignete
Datentabelle in irgendeiner Anwendung angewendet werden kann, in
der eine derartige Datentabelle in einem elektronisch zugänglichen
Speicher gespeichert ist, während
die Konstruktion der komprimierten Kalibrierungstabelle 70 und
der Zeilenbeschreibungsmatrix 80 aus der nicht komprimierten
Kalibrierungstabelle 60 im Kontext der innerhalb des Speichers 16 des Steuercomputers 12,
der innerhalb eines Kraftfahrzeugs 10 eingebettet ist (siehe 1),
gespeicherten Kalibrierungstabelle beschrieben worden ist.
-
Wie
oben im HINTERGRUND-Abschnitt beschrieben worden ist, ist es in
einigen Anwendungen erwünscht,
die Datenelemente aus einer komprimierten Datentabelle, die benachbart
angeordneten Datenelementen in der nicht komprimierten Datentabelle
entsprechen, für
den Zweck der Dateninterpolation oder einer oder mehrerer anderer
Datenapproximationsfunktionen wiederzugewinnen. 7 zeigt
einen Ablaufplan, der eine Ausführungsform
eines Software-Algorithmus 100 zum Wiedergewinnen von vier Datenelementen
aus der komprimierten Kalibrierungstabelle 70 nach 6A veranschaulicht,
die den vier benachbart angeordneten Datenelementen in der nicht
komprimierten Kalibrierungstabelle 60 nach 5 entsprechen.
Der Algorithmus 100 erfordert die Kenntnis nur des Zeilen-Spalten-Orts
von einem der Dateneinträge
in der nicht komprimierten Kalibrierungstabelle 60, wobei
in der in 7 veranschaulichten Ausführungsform
des Algorithmus 100 dieser Zeilen-Spalten-Ort die Zeilen-
und Spaltenkombination mit dem kleinsten Wert ist. Falls folglich
erwünscht ist,
die Datenelemente DX,Y, DX,Y+1,
DX+1,Y und DX+1,Y+1 wiederzugewinnen,
erfordert der Algorithmus 100 als Eingaben die Zeile X
und die Spalte Y. Die Wahl dieses speziellen Zeilen-Spalten-Ortes
ist beliebig, wobei die Fachleute auf dem Gebiet erkennen werden, dass
der Algorithmus 100 alternativ konfiguriert sein kann,
um als die Eingangs-Zeilen-Spalten-Kombination
irgendeine der drei verbleibenden Zeilen-Spalten-Kombinationen zu empfangen.
Die Modifikation des Algorithmus 100, um ihn an irgendeine
derartige alternativ Wahl der Eingangs-Zeilen-Spalten-Kombination anzupassen, würde für einen
Fachmann einen mechanischer Schritt sein.
-
Der
Algorithmus 100 wird beschrieben, wie er durch den Steuercomputer 12 ausgeführt wird,
obwohl es selbstverständlich
ist, dass der Algorithmus 100 alternativ durch irgendeinen
Universalcomputer ausgeführt
werden kann, der betreibbar ist, wie hierin beschrieben ist. Für den Zweck
der Veranschaulichung wird der Algorithmus 100 außerdem im
Kontext eines Beispiels beschrieben, das sich auf die nicht komprimierte
Kalibrierungstabelle 60 nach 5, die komprimierte
Kalibrierungstabelle 70 nach 6A und
die Zeilenbeschreibungsmatrix 80 nach 6B bezieht.
In diesem Beispiel sind die vier benachbarten Datenelemente in der
nicht komprimierten Kalibrierungstabelle 60, die in der
komprimierten Kalibrierungstabelle 70 zu finden sind, die
Datenelemente in der Zeile 6, den Spalten 4 und 5, und in der Zeile
7, den Spalten 4 und 5, die "000008D4", "0000051E", "000000B31" bzw. "00000704" entsprechen, wie
in 5 hervorgehoben ist. Es ist selbstverständlich,
dass dieses Beispiel nur für
den Zweck der Veranschaulichung des Algorithmus 100 bereitgestellt
worden ist und dass es in keiner Weise vorgesehen ist, um den Umfang
der vorliegenden Erfindung einzuschränken.
-
Der
Algorithmus 100 beginnt im Schritt 102, in dem
der Steuercomputer 12 betreibbar ist, um als Eingaben die
Zeile X und die Spalte Y zu empfangen, deren Kombination der Zeilen-Spalten-Kombination mit
dem niedrigsten Wert entspricht, wo sich die gesuchten Daten, die
wiederzugewinnen sind, in der nicht komprimierten Kalibrierungstabelle 60 befinden,
wie oben beschrieben worden ist. In dem angegebenen Beispiel ist
X folglich 6, während
Y gleich 4 ist. Nach dem Schritt 102 geht die Ausführung des
Algorithmus zum Schritt 104 weiter, in dem ein Zähler i auf
eins gesetzt wird und eine Vier-Element-Daten-Matrix INT initialisiert
wird. Danach ist im Schritt 106 der Steuercomputer 12 betreibbar,
um das Element X in der Zeilenbeschreibungsmatrix 80 zu
finden. In dem Beispiel ist X gleich 6, deshalb ist der Steuercomputer 12 im
Schritt 106 betreibbar, um den 6. Zeilenidentifizierer
(Rx) in der Zeilenbeschreibungsmatrix 80 wiederzugewinnen,
der "33" hexadezimal ist,
wie in 6B gezeigt ist. Der Wert des
6. Zeilenidentifizierers in der Zeilenbeschreibungsmatrix 80 ist
die Elementnummer in der komprimierten Kalibrierungstabelle 70,
die dem ersten Eintrag in der sechsten Zeile der nicht komprimierten
Kalibrierungstabelle 60 entspricht.
-
Nach
dem Schritt 106 geht die Ausführung des Algorithmus zum Schritt 108 weiter,
in dem der Steuercomputer 12 betreibbar ist, um das Element Rx
in der komprimierten Kalibrierungstabelle 70 zu finden.
In dem Beispiel ist Rx hexadezimal "33",
das dezimal "51" entspricht. Im Schritt 106 ist
der Steuercomputer 12 folglich betreibbar, um das 51. Element in
der komprimierten Kalibrierungstabelle 70 zu finden, das "89" ist, wie in 6A hervorgehoben
ist. Nach dem Schritt 108 geht der Algorithmus 100 zum Schritt 110 weiter,
in dem der Steuercomputer 12 betreibbar ist, um sowohl
den Wert des Elements Rx in der nicht komprimierten Kalibrierungstabelle 60 als auch
alle zusätzlichen
Elemente, die dem Element Rx folgen, zu verarbeiten, um die Elemente
Y und Y + 1 in der Zeile zu finden, die mit dem Element Rx beginnt.
Der Wert des Elements Y wird als CY bezeichnet,
während
der Wert des Elements Y + 1 als CY+1 bezeichnet
wird. In dem Beispiel ist Y gleich 4, während Y + 1 gleich 5 ist, wobei
der Steuercomputer 12 demzufolge im Schritt 110 betreibbar
ist, um das Element Rx zu verarbeiten, das das Element 51 in der komprimierten
Kalibrierungstabelle 70 ist, um die Werte der 4. und 5.
Elemente der Zeile zu finden, die mit dem Element 51 beginnt. Wie
im Schritt 108 bestimmt wird, ist der Wert (Rx) des Elements
51 hexadezimal "89", und weil das Element
51 die Zeile 6 der nicht komprimierten Kalibrierungstabelle 60 beginnt, muss
das Element 51 demzufolge ein Codebeschreibungsbyte sein. Ein Codebeschreibungsbyte
mit dem hexadezimalen Wert "89" wird in "10001001" binär umgesetzt,
wobei unter abermaliger Bezugnahme auf 2 dieses
Codebeschreibungsbyte ein WORTCODE ist, der neun ein Wort lange
Einträge besitzt,
die dem Codebeschreibungsbyte folgen, weil die Bits 7 und 6 dieses
binären
Werts "10" und die Bits 5–0 "001001" sind. Weil in diesem
Fall Y und Y + 1 (vier bzw. fünf)
beide kleiner als die FOLGENLÄNGE
des Codebeschreibungsbytes "89" sind, entsprechen
die Elemente Y und Y + 1 folglich den 4. und 5. Wörtern, die
dem Codebeschreibungsbyte "89" folgen. CY ist folglich "08D4",
während
CY+1 "051C" ist, wie in 6A veranschaulicht
ist.
-
Nach
dem Schritt 110 geht der Algorithmus 100 zum Schritt 112 weiter,
in dem der Steuercomputer 12 betreibbar ist, um den i-ten
(= 1 im ersten Durchlauf des Algorithmus 100) Wert der
Vier-Element-Daten-Matrix INT auf CY oder "08D4" und den i + 1-ten
(= 2 im ersten Durchlauf des Algorithmus 100) Wert der
Vier-Element-Daten-Matrix INT auf CY+1 oder "051E" zu setzen. Danach
inkrementiert im Schritt 114 der Steuercomputer 12 X
um 1 und i um 2, wobei er zum Schritt 116 weitergeht, um
den Wert des "i"-Zählers gegen
den Wert von 5 zu prüfen.
Weil nach dem ersten Durchgang durch den Schritt 114 i =
3 gilt, führt
der Schritt 116 in einer Schleife vom "NEIN"-Zweig
zurück
zum Schritt 106.
-
Im
zweiten Durchlauf durch den Schritt 106 ist der Steuercomputer 12 betreibbar,
um das Element X in der Zeilenbeschreibungsmatrix 80 zu
finden. In dem Beispiel ist X nun 7, wobei der Steuercomputer 12 im
Schritt 106 betreibbar ist, um den 7. Zeilenidentifizierer
(Rx) in der Zeilenbeschreibungsmatrix 80 wiederzugewinnen,
der "53" hexadezimal ist,
wie in 6B gezeigt ist. Der Wert des
7. Zeilenidentifizierers in der Zeilenbeschreibungsmatrix 80 ist die
Elementnummer in der komprimierten Kalibrierungstabelle 70,
die dem ersten Eintrag in der siebenten Zeile der nicht komprimierten
Kalibrierungstabelle 60 entspricht.
-
Nach
dem Schritt 106 geht die Ausführung des Algorithmus zum Schritt 108 weiter,
in dem der Steuercomputer 12 betreibbar ist, um das Element Rx
in der komprimierten Kalibrierungstabelle 70 zu finden.
In dem Beispiel ist Rx hexadezimal "53",
das dezimal "83" entspricht. Im Schritt 106 ist
der Steuercomputer 12 folglich betreibbar, um das 83. Element in
der komprimierten Kalibrierungstabelle 70 zu finden, das "8A" ist, wie in 6A hervorgehoben
ist. Nach dem Schritt 108 geht der Algorithmus 100 zum Schritt 110 weiter,
in dem der Steuercomputer 12 betreibbar ist, um sowohl
den Wert des Elements Rx in der nicht komprimierten Kalibrierungstabelle 60 als auch
alle zusätzlichen
Elemente, die dem Element Rx folgen, zu verarbeiten, um die Elemente
Y und Y + 1 in der Zeile zu finden, die mit dem Element Rx beginnt.
Der Wert des Elements Y ist CY, während der Wert
des Elements Y + 1 CY+1 ist. In dem Beispiel
ist Y gleich 4, während
Y + 1 gleich 5 ist, wobei der Steuercomputer 12 demzufolge
im Schritt 110 betreibbar ist, um das Element Rx zu verarbeiten,
das das Element 83 in der komprimierten Kalibrierungstabelle 70 ist,
um die Werte der 4. und 5. Elemente der Zeile zu finden, die mit
dem Element 83 beginnt. Wie im zweiten Durchlauf des Schritts 108 bestimmt
wird, ist der Wert (Rx) des Elements 83 hexadezimal "8A", und weil das Element
83 die Zeile 7 der nicht komprimierten Kalibrierungstabelle 60 beginnt,
muss das Element 83 demzufolge ein Codebeschreibungsbyte sein. Ein
Codebeschreibungsbyte mit dem hexadezimalen Wert "8A" wird in "10001010" binär umgesetzt, wobei
unter abermaliger Bezugnahme auf 2 dieses
Codebeschreibungsbyte ein WORTCODE ist, der zehn ein Wort lange
Einträge
besitzt, die dem Codebeschreibungsbyte folgen, weil die Bits 7 und
6 dieses binären
Werts "10" und die Bits 5–0 "001010" sind. Weil in diesem
Fall Y und Y + 1 (vier bzw. fünf) beide
kleiner als die FOLGENLÄNGE
des Codebeschreibungsbytes "8A" sind, entsprechen
die Elemente Y und Y + 1 folglich den 4. und 5. Wörtern, die dem
Codebeschreibungsbyte "8A" folgen. CY ist folglich "0B31",
während
CY+1 "0704" ist, wie in 6A veranschaulicht
ist.
-
Nach
dem Schritt 110 geht der Algorithmus 100 zum Schritt 112 weiter,
in dem der Steuercomputer 12 betreibbar ist, um den i-ten
(= 3 im zweiten Durchlauf des Algorithmus 100) Wert der
Vier-Element-Daten-Matrix INT auf CY oder "0B31" und den i + 1-ten
(= 4 im ersten Durchlauf des Algorithmus 100) Wert der
Vier-Element-Daten-Matrix INT auf CY+1 oder "0704" zu setzen. Danach
inkrementiert im Schritt 114 der Steuercomputer 12 X
um 1 und i um 2, wobei er zum Schritt 116 weitergeht, um
den Wert des "i"-Zählers gegen
den Wert von 5 zu prüfen.
Weil nach dem ersten Durchgang durch den Schritt 114 i =
5 gilt, führt
der Schritt 116 vom "JA"-Zweig zum Schritt 118 weiter,
in dem der Algorithmus 100 endet. Wenn der Algorithmus 100 abgeschlossen
ist, enthält die
Vier-Element-Daten-Matrix
INT DX,Y, DX,Y+1,
DX+1,Y bzw. DX+1,Y+1.
Dann kann eine bekannte Dateninterpolation oder ein anderer bekannter
Datenapproximationsalgorithmus verwendet werden, um die vier Datenelemente
zu verarbeiten, um das gewünschte
Ergebnis zu bestimmen.
-
Obgleich
die Erfindung in der vorangehenden Zeichnung und Beschreibung ausführlich veranschaulicht
und beschrieben worden ist, sind dieselben in ihrem Charakter als
veranschaulichend und nicht als einschränkend zu betrachten, wobei
es selbstverständlich
ist, dass nur ihre veranschaulichenden Ausführungsformen gezeigt und beschrieben
worden sind.