-
Die
Erfindung bezieht sich allgemein auf Balkencode-Abtaster und speziell
auf das Abtasten von durch Druckfehler beeinträchtigten Balkencodes.
-
Übliche Balkencodes
haben unterschiedlich breite Balken und Zwischenräume, die
geeignet auf ein Etikett gedruckt sind. Der Balkencode kann jegliche übliche Form
in ein oder zwei Dimensionen annehmen und enthält beispielsweise die typische
eindimensionale UPC-Form. Die UPC-Symbologie basiert auf einer Spezifikation,
die von der Uniform Product Code Council, Inc. in Dayton, Ohio,
eingeführt
wurde. Ein typischer UPC-Balkencode
enthält
eine Reihe oder Folge von abwechselnden dunklen Balken und hellen
Zwischenräumen
unterschiedlicher Breiten. Die Balken und Zwischenräume sind
in Gruppen angeordnet, welche einzelne Zeichen darstellen. Der Balkencode
beginnt mit einem Zeichen am linken Rand und endet mit einem Zeichen am
rechten Rand und hat weiterhin in der Mitte Bezugszeichen, wobei
irgendwelche gewünschte
Daten darstellenden Zeichen dazwischen angeordnet sind.
-
Die
minimale Breite entweder eines Balkens oder eines Zwischenraums
in der UPC-Symbologie ist definiert als ein einzelnes Modul, welches
eine Einheitsbreite darstellt. Die Breite eines einzelnen Zeichens, welches
nach UPC-Symbologie codiert ist, beträgt sieben (7) Module. Ein Sieben-Modul-UPC-Zeichen
hat zwei Balken und zwei Zwischenraumelemente, die unterschiedliche
Breite haben, um zwischen den jeweiligen Zeichen zu unterscheiden.
Ein üblicher
Balkencode-Abtaster, etwa ein Laserscanner, wie er in dem Dokument
US 5 493 108 A beschrieben
ist, tastet den Balkencode mit einem Abtaststrahl über alle
Balken und Zwischenräume
ab, und das davon zurückgeworfene
Licht wird von einem Photodetektor im Abtaster festgestellt, der daraus
eine Signatur abwechselnder maximaler und minimaler Signalintensitäten und
unterschiedlicher Zeitdauer erzeugt. Die maximale Signalintensität entspricht
dem Feststellen eines weißen
Zwischenraums, und die minimale Signalintensität entspricht dem Feststellen
eines dunklen Balkens. Da die Abtastgeschwindigkeit des Abtaststrahls
genau bekannt ist, entspricht die relative Zeitdauer der abwechselnden
minimalen und maximalen Signalintensitäten den unterschiedlichen Breiten
der Balken und Zwischenräume.
Der Abtaster enthält einen üblichen
Decoder, welcher die unterschiedlichen Breiten der festgestellten
Balken und Zwischenräume aufgrund
der Breitenmodule erkennt und das auf diese Weise codierte entsprechende
Datenzeichen liefert.
-
Daher
sind die genauen Größenverhältnisse
der Breiten von Balken und Zwischenräumen kritisch für eine einwandfreie
Decodierung der auf diese Weise codierten Daten. Wenn ein Balken
oder ein Zwischenraum entweder zu breit oder zu schmal ist, dann
kann der Decodierer den Balkencode nicht als gültig erkennen und ihn daher
nicht lesen.
-
Es
gibt viele praktikable Möglichkeiten
zum Drucken existierender Balkencode-Etiketten. Bei einer Ausführung enthält ein linearer
Druckkopf, wie etwa ein Thermodrucker, eine lineare Anordnung von
Hunderten von Thermodruckelementen, die unter einzelner Ansteuerung
geheizt werden können.
Ein Etikett wird gedruckt durch Vorbeiführen eines thermoempfindlichen
leeren Papieretiketts an der linearen Thermodruckelementanordnung.
Das Papier reagiert auf die Hitze durch Dunkelwerden an der Stelle
der Hitzezuführung,
während
die nicht der Hitze ausgesetzten Stellen im Wesentlichen weiß bleiben.
Auf diese Weise lassen sich die Druckelemente einzeln steuern, um
Bilder von Text, Zahlen und insbesondere Balkencodes auf Papier
hervorzubringen.
-
Ein üblicher
Fehler bei linearen Druckern besteht in dem Ausfall eines einzelnen
Druckelementes. In diesem Fall kann der Drucker an der Stelle des
ausgefallenen Elementes nicht drucken, und anstelle des beabsichtigten
dunklen Zwischenraums bleibt ein weißer Zwischenraum auf dem Papier.
Bei einem Balkencode-Etikett erzeugt ein ausgefallenes Element,
welches sich dort findet, wo ein dunkler Balken erforderlich ist,
einen sichtbaren dünnen
Zwischenraum in der Länge
des Balkens, wo der Druck fehlt. Solch ein Druckzwischenraum beeinträchtigt einen
Balkencode leicht, der dann fehlerhaft ist, weil ein Zwischenraum
an der gesamten Länge
des einzelnen Balkens auftritt und entsprechende Änderungen
seiner Breite von der beabsichtigten Größe die Folge sind. Ein Druckfehler
kann entweder an den beiden Grenzen eines einzelnen Balkens oder
im Inneren eines einzelnen Balkens auftreten und in beiden Fällen ändert sich
die entsprechende Breite und führt
zu Decodierfehlern, da der Balkencode nicht mehr die erforderlichen
Spezifikationen der anwendbaren Balkencode-Symbologie erfüllt.
-
Die
Aufgabe der Erfindung besteht in der Schaffung eines Balkencode-Abtasters,
welcher weniger anfällig
gegen Druckfehler als bisherige Abtaster ist.
-
Gemäß der Erfindung
zeichnet sich ein Verfahren zum Abtasten eines Balkencodes mit einer
Mehrzahl aufeinanderfolgender Balken und Zwischenräume unterschiedlicher
Breite aus durch die Schritte:
Aufeinanderfolgendes Abtasten
eines Balkencodes über
seine Balken und Zwischenräume
zur Erzeugung einer Balkencode-Signatur;
Messen
der Breiten der Balken und Zwischenräume in der Signatur als Vielfache
eines Minimalbreitenmoduls; und
Ermittlung jeglicher Teilbreiten
in angrenzenden Balken und Zwischenräumen zum Auffinden jeglichen
Fehlers in dem festzustellenden Balkencode.
-
Weiterhin
hat gemäß der Erfindung
ein Abtaster zum Abtasten eines Balkencodes mit mehreren abwechselnden
Balken und Zwischenräumen
verschiedener Breiten
eine Vorrichtung zum sequentiellen Abtasten
eines Balkencodes über
dessen Balken und Zwischenräume
zur Lieferung einer Balkencode-Signatur;
eine Vorrichtung zum
Messen der Breiten und Zwischenraumbreiten in der Signatur als Vielfache
eines Minimalbreitenmoduls; und
eine Vorrichtung zum Feststellen
jeglicher Teilbreiten in benachbarten Balken bzw. Zwischenräumen zur
Ermittlung jeglichen Fehlers in dem festzustellenden Balkencode.
-
Die
Erfindung sei nun in Beispielform mit Bezug auf die beiliegenden
Zeichnungen erläutert.
Es zeigen:
-
1 eine schematische Darstellung
eines Balkencode-Abtasters,
der einen fehlerhaften Balkencode feststellt und Fehler darin zum
Zwecke der Decodierung korrigiert, gemäß einer beispielhaften Ausführungsform
der Erfindung;
-
2 ein Beispiel eines Flussdiagramms
für ein
Verfahren zum Feststellen, Korrigieren und Decodieren eines feh lerhaften
Balkencodes, wie er in dem Balkencode-Abtaster nach 1 enthalten ist;
-
3 einen vergrößerten linken
Randteil eines beispielhaften UPC-Balkencode-Etiketts und linearen Druckers,
um Balken darauf zu drucken;
-
4 eine Kopie des Balkencode-Etiketts
nach 3 zur Veranschaulichung
eines fehlerhaften Druckelementes am Rand eines Balkens;
-
5 eine Kopie des Balkencode-Etiketts
nach 3 mit einem fehlerhaften
Druckelement im Inneren eines Balkens; und
-
6 eine Kopie des Balkencodes
nach 5 zusammen mit
einer schematischen Darstellung entsprechender Balkencode-Signatur-Abtastdaten
und zugehöriger
Druckfehlerprotokolle.
-
1 zeigt schematisch einen
Laser-Balkencode-Abtaster 1 zum Abtasten und Decodieren
eines üblichen
Balkencodes 12, der auf ein geeignetes Etikett 14 aufgedruckt
ist. Der Balkencode 12 kann irgendeine übliche Form in ein oder mehreren
Dimensionen sein, einschließlich
der dargestellten üblichen
eindimensionalen UPC-Symbologie.
-
Der
in 1 veranschaulichte
beispielhafte Balkencode 12 enthält eine Mehrzahl aufeinanderfolgender
oder abwechselnder dunkler Balken 12a und heller Zwischenräume 12b,
welche geradlinig und parallel zueinander verlaufen und entsprechend
unterschiedliche Breiten Wb und Ws haben. Die Balken und Zwischenräume sind
in einer Mehrzahl aufeinanderfolgender Gruppen angeordnet, welcher
jeweils Zeichen gleicher Breite definieren. Die Minimalbreite eines
Balkens oder Zwischenraums wird als Minimalbreitenmodul definiert und
muss in der UPC-Symbologie
definitionsgemäß mehr als
228,6 μ (9
mils) betra gen. Ein einzelnes UPC-Zeichen hat definitionsgemäß zwei Balken 12a und
zwei Zwischenräume 12b unterschiedlicher
Breiten. Ferner müssen
die definierten Breiten eines einzelnen unter Verwendung der UPC-Symbologie
codierten Zeichens definitionsgemäß sieben Module betragen. Die
UPC-Symbologie definiert schließlich
auch die maximale Balkenbreite als vier Module.
-
Bei
dem in 1 veranschaulichten
beispielhaften Balkencode 12 beginnt der Balkencode üblicherweise
mit einem Linksrandzeichen 12c und endet mit einem Rechtsrandzeichen 12d und
hat in der Mitte ein Bezugszeichen 12e, wobei die übrigen Balken
und Zwischenräume
dazwischen die gewünschten
Datenzeichen bestimmen. Wie oben gesagt, hat jedes der Datenzeichen
eine Gesamtbreite von sieben Modulen und umfasst zwei Balken und
zwei Zwischenräume.
-
Das
in 1 gezeigte Beispiel
eines Abtasters 10 enthält übliche Mittel
zur optischen Abtastung des Balkencodes 12 in einer Abfolge über die
Balken und Zwischenräume 12a, b über die
gesamte Breite des Balkencodes 12 von linken Randzeichen 12c zum
rechten Randzeichen 12d. Bei der gezeigten bevorzugten
Ausführungsform
erfolgt die Abtastung unter Verwendung eines üblichen Lasers 16,
der einen geeigneten Laserstrahl 16a aussendet, welcher
mit Hilfe eines üblichen
Ablenkgenerators 18 über
die Fläche
des Balkencodes 12 geführt
wird, der die Form eines rotierenden Mehrflächenspiegels haben kann. Der
Laserstrahl 16a wird quer über den Balkencode 12 in
Abtastrichtung S geführt,
so dass das zurück
reflektierte Licht 16b die Balken und Zwischenräume zum
Abtaster zurück
reflektiert. Da die Balken 12a dunkel sind, wird von ihnen
nur sehr wenig Licht reflektiert, während die Zwischenräume 12b im
Wesentlichen weiß sind
und erheblich mehr Abtastlicht zum Abtaster zurück streuen.
-
Im
Abtaster 10 ist ein üblicher
Photodetektor 20 in geeigneter optischer Ausrichtung vorgesehen,
um das zurückgestreute
Licht 16b zu empfangen und eine elektrische Balkencode-Signatur 20s zu
erzeugen, deren Intensität
zwischen Maximal- und Minimalwerten liegt entsprechend dem von den
Zwischenräumen 12b bzw.
Balken 12a zurückgestreuten
Licht. Die zeitliche Dauer der Teile der maximalen und minimalen
Intensität in
der Signatur 20s entspricht den unterschiedlichen Breiten
der Balken und Zwischenräume.
Da der Abtaststrahl 16a über den Balkencode 12 in
bekannter Weise und mit konstanter Geschwindigkeit geführt wird,
stellt die Balkencode-Signatur 20s den Balkencode 12 selbst
dar und kann mit einem üblichen
Decoder 22 decodiert werden, der speziell für die entsprechende
Symbologie des auf das Etikett 14 gedruckten Balkencodes
konfiguriert ist.
-
Der
Decoder 22 kann irgendeine geeignete Form haben und ist
typischerweise ein digital programmierbarer Mikroprozessor, der
eine geeignete Software für
die Analysierung der Balkencode-Signatur 20s und für die Decodierung
der darin enthaltenen Daten enthält.
Der Abtaster 10 ist elektrisch mit einem geeigneten Display 24 verbunden,
das zur Darstellung bestimmter im Balkencode 12 codierter
Information benutzt werden kann, wie etwa dem Preis eines durch
ihn repräsentierten
Verkaufsartikels. Wenn der Balkencode 12 genau abgetastet
und decodiert ist, dann können
die Daten auf dem Display 24 angezeigt werden, und ein
mit dem Abtaster 10 verbundener kleiner Lautsprecher 26 gibt
einen Ton, um die erfolgreiche Decodierung des Balkencodes 12 anzugeben.
-
Wenn
jedoch der Abtaster 10 den Balkencode 12 nicht
lesen kann, dann piept der Lautsprecher nicht, und das Display 24 bleibt
leer. Man kann ein mehrfaches Überstreichen
des Balkencodes 12 mit dem Abtaster 10 versuchen,
um das Etikett falls möglich
richtig abzulesen, oder der Balkencode 12 kann nicht gelesen
werden, wenn er fehlerhaft ist.
-
Wie
oben im Abschnitt über
den technischen Hintergrund beschrieben wurde, wird der in 1 gezeigte Balkencode 12 typischerweise
unter Verwendung eines üblichen
linearen Druckers 28 gedruckt, von denen in 1 drei Stück gezeigt
sind. Mehrere Drucker 28 sind veranschaulicht, weil der
Abtaster 10 typischerweise in einem Ladengeschäft benutzt
wird zur Decodierung der verschiedenen Balkencodes, die sich auf
den verschiedenen Verbraucherwaren befinden und mit einer erheblichen
Anzahl verschiedener Drucker gedruckt worden sein können. Jeder
der drei Drucker kann im Laufe der Zeit ausfallen und die Balken
und Zwischenräume
nicht richtig drucken, wobei einzelne der Balken und Zwischenräume entweder
Untergröße oder
Obergröße haben,
so dass der Abtaster 10 den Balkencode im normalen Betrieb
nicht erkennen und decodieren kann.
-
Da
ein grundlegender Gesichtspunkt der üblichen Decodierung eines beispielsweise
die UPC-Symbologie verwendenden Balkencodes in der Benutzung von
Minimalbreitenmodulen für
die Definierung der Balken und Zwischenraumelemente liegt, kann
dies mit Vorteil für
die Erfindung ausgenutzt werden zum Feststellen bestimmter Arten
von Druckfehlern im Balkencode 12. 2 zeigt ein Flussdiagramm eines Beispiels
für ein Verfahren
gemäß einer
Ausführung
der Erfindung, welches zum Feststellen von Fehlern im Balkencode
in den im übrigen
normalen Abtaster 10 gemäß 1 inkorporiert werden kann.
-
Das
Verfahren beginnt bei irgendeinem Typ von Balkencode 12,
der in üblicher
Weise abgetastet wird, um seine Balkencode-Signatur 20s zu bekommen. Die
Breiten der Balken und Abstände
in der Signatur 20s sind dann passend als Vielfache des
Mini malbreitenmoduls bemessen. Dann können aufeinanderfolgende Teilbreiten
benachbarter der Balken und Zwischenräume festgestellt werden, um
Druckfehler im Balkencode 12 zu entdecken. Da definitionsgemäß nach der
UPC-Symbologie jeder Balken 12a und Zwischenraum 12b ein
ganzes Vielfaches von ihre Breite definierenden Modulen haben muss,
sind Teilbreiten oder nicht ganzzahlige Breiten ein Zeichen für einen
Balkencodefehler, der gemäß der Erfindung
festgestellt werden kann und gewünschtenfalls
anschließend
korrigiert werden kann.
-
Im
einzelnen veranschaulicht 3 den
linken Randteil des in 1 gezeigten
Balkencode-Etiketts 14, auf dem als Beispiel ein Balkencode 12 aufgedruckt
ist. Der lineare Drucker 28 ist schematisch neben dem Etikett 14 angeordnet
veranschaulicht, um in üblicher
Weise die Balkencodes 12a aufzudrucken. Der Drucker 28 enthält einen
linearen Druckkopf, der durch eine Reihe individueller Druckelemente 28a definiert
ist, welche bei einem Ausführungsbeispiel
Thermodruckelemente sein können.
Lineare Thermodrucker sind allgemein bekannt, und bei ihnen wird
jedes Druckelement 28a unter individueller Steuerung erhitzt,
um mit thermisch empfindlichem Papier zusammenzuwirken, welches
das Etikett 14 bildet. Wenn das in 3 gezeigte Etikett 14 nach unten
bewegt wird, wie es die Figur zeigt, dann werden die jeweiligen
Druckelemente 28a geheizt, um das Etikett 14 unter
den betreffenden Elementen 28a thermisch dunkel werden
zu lassen, um die gewünschten Balken 12a zu
erzeugen, zwischen denen die Zwischenräume 12b verbleiben,
da die dortigen Druckelemente 28a nicht geheizt werden.
-
Ein
repräsentativer
Thermodruckkopf hat eine lineare Auflösung von 137 Druckelementen
pro 25,4 mm oder 185,42 μ (7.3
mils) pro Element. Weil ein UPC-Minimalmodul größer als 228,6 μ (9 mils)
sein muss, muss man ein Minimum von zwei Druckelementen 28a verwenden,
um die minimale Balkenbreitengröße zu überdecken.
Daher bestimmt die anwendbare Balkencode-Symbologie die Breite des
Minimalmoduls beim Drucken von Etiketten, und die lineare Auflösung des
Thermodruckers bestimmt die Anzahl von Druckelementen, die benutzt
werden muss, um die minimale Modulbreite zu erfüllen.
-
Die
Mehrzahl der üblichen
linearen Druckköpfe,
die zum Drucken von Balkencode-Etiketten benutzt werden, arbeiten
entweder mit zwei oder drei Druckelementen 28a für jedes
Balkencodemodul, wobei 3 zwei
Druckelemente 28a pro Modul veranschaulicht. Es sei bemerkt,
dass die ersten drei Balken, welche in 3 gezeigt sind, jeweils die Breite eines
einzigen Moduls haben, der unter Verwendung von zwei benachbarten
Druckelementen 28a gedruckt ist. Der vierte Balken 12a hat
eine Breite von zwei Modulen und ist unter Verwendung von vier benachbarten
Druckelementen 28a gedruckt. Die entsprechenden Zwischenräume 12b zwischen
den benachbarten Balken 12a haben entsprechend der Symbologie
notwendigerweise Breiten von einem oder mehr Modulen und werden
einfach dadurch erzeugt, dass das darüber befindliche Druckelement 28a nicht
geheizt wird.
-
Fehlertypen
-
Wenn
das Druckelement 28a schlecht wird, hört es auf zu drucken. Dies
führt zu
zwei verschiedenen Arten von Fehlern in gedruckten Balkencode-Etiketten 14. 4 veranschaulicht einen
ersten Fehlertyp I. Hier liegt der Fall vor, dass ein schlechtes
Druckelement 28b in die normale Grenze zwischen einem Balken-
und einem Zwischenraumelement fällt.
Das schlechte Druckelement 28b führt zu einer Verschiebung in
dieser Grenze, wie gestrichelt gezeichnet, und dies verfälscht die
beabsichtigte Symbolcodierung. Wenn das gedruckte Etikett von einem
Balkencode-Abtaster gelesen wird, dann sieht der Abtaster nur das
beschädigte Symbol.
Ein Fehler des Typs I vergrößert die
betroffene Zwischenraumbreite Ws und verringert
die Breite Wb des benachbarten Balkens.
-
5 zeigt einen Fehler vom
Typ II. Hier fällt
das schlechte Druckelement 28 ins Innere eines beabsichtigten
Balkens, wie gestrichelt gezeigt. Das schlechte Druckelement 28b führt dazu,
dass benachbarte Balkenteile fälschlicherweise
als Balken-Zwischenraum-Balken-Muster erscheinen. Wenn dieses gedruckte Etikett
von einem Balkencode-Abtaster gelesen wird, dann sieht dieser nur
das beeinträchtigte
Symbol, und weil dies keine gültige
Codierung darstellt, kann er es nicht mit den üblichen Methoden decodieren.
-
Feststellung
eines Fehlers vom Typ I
-
Im
Prinzip verlässt
sich die Feststellung eines Fehlers vom Typ 1 auf die Fähigkeit,
eine verschobene Grenze zwischen benachbarten Paaren von Zwischenraum/Balken
und Balken/Zwischenraum festzustellen. Bei vielen gebräuchlichen
Balkencode-Symbologien
sind die Zeichen unter Verwendung einer ganzzahligen Anzahl von
Balken- und Zwischenraum-Modulen codiert. Da ein typischer linearer
Druckkopf 28 mehr als ein Druckelement 28a pro
Modul enthalten muss, führen
Ausfälle
einzelner Druckelemente zu einer Verschiebung der Grenze um einen
Bruchteilsbetrag. Bei zwei Druckelementen pro Modul verschiebt beispielsweise
ein einziges fehlerhaftes Druckelement 28b eine Grenze
um die Hälfte
eines Moduls. Bei drei Druckelementen pro Modul (nicht dargestellt)
verschiebt ein einzelnes fehlerhaftes Druckelement gleichermaßen eine
Grenze um ein Drittel eines Moduls.
-
Ein
Fehler vom Typ I wird festgestellt durch Suche nach dem Auftreten
von Grenzverschiebungsversetzungen von einem halben Modul in benachbarten
Paaren von Zwischenraum/Balken oder Balken/Zwischenraum. Ein Grenzverschiebungsversatz
bedeutet, dass ein vergrößerter Zwischenraum 12b zusammen mit
einem äquivalent
verdünnten
benachbarten Balken auftreten muss. Betrachtet man wiederum 4, so sieht man, dass der
angrenzende Zwischenraum durch einen Nichtdruck-Fehler 30 um
2,5 Module vergrößert ist,
während
der betroffene Balken 12a in der Breite um 1,5 Module abgenommen
hat. Alle anderen benachbarten Balken und Zwischenräume haben
Maße von
ganzzahligen Anzahlen von Modulen.
-
Entdeckung
von Fehlern des Typs II
-
Im
Prinzip verlässt
sich die Feststellung eines Fehlers vom Typ II auf die Fähigkeit
zu ermitteln, dass ein normaler Balken durch einen fehlerhaften
Druckkopf in ein unnormales Balken-Zwischenraum-Balken-Muster aufgeteilt
ist. Weil wiederum der typische lineare Druckkopf 28 zwei
oder mehr Druckelemente 28a pro Modul verwenden muss, muss
der Zwischenraum 30, der, wie 5 zeigt, innerhalb des Balkens gebildet worden
ist, einen halben Modul oder weniger breit sein. Wenn die Breite
des Zwischenraums zur Breite der beiden benachbarten Balken hinzuaddiert
wird, dann muss die Gesamtbreite eine ganze Anzahl von Modulen betragen.
Wenn die Breite der Kombination Balken-Zwischenraum-Balken zu den übrigen Balken
und Zwischenräumen
dieses speziellen Zeichens hinzuaddiert wird, dann muss die Breite
der Summe für
diese spezielle Symbologie mit der Breite des Zeichens übereinstimmen.
Für einen
echten Fehler vom Typ 2 muss die Gesamtbreite der Kombination Balken-Zwischenraum-Balken
kleiner als die maximale Balkenbreite sein, wie sie für diese
spezielle Symbologie definiert ist, d. h. vier Module für die UPC-Symbologie.
-
Als
Beispiel sei die in 5 verwendete
UPC-Symbologie betrachtet. Die Breite eines einzelnen Zeichens,
das unter Verwendung der UPC-Symbologie codiert ist, muss definitionsgemäß sieben
Module betragen. Ein Sieben-Modul-UPC-Zeichen hat zwei Balken und
zwei Zwischenräume.
Vergleicht man ein gutes UPC-Zeichen
mit einem durch einen Fehler vom Typ II gestörten UPC-Zeichen, dann sieht man, dass die vier Balken
und Zwischenräume
des guten Zeichens sich zu sieben Modulen aufaddieren, während die
sechs Balken und Zwischenräume
des schlechten Zeichens sich auf sieben Module aufaddieren. Der
in 5 gezeigte Fehler
vom Typ II zeigt diese Eigenschaften deutlich.
-
Die
oben beschriebenen Fehler vom ersten und zweiten Typ sind insofern ähnlich,
als ein einzelnes fehlerhaftes Druckelement 28b den erforderlichen
Teil eines entsprechenden Balkens 12a nicht druckt. Der Druckausfall
des schlechten Druckelementes 20b führt jedoch nicht zu einem Fehler
im beabsichtigten Zwischenraum 12b, weil dort kein Druck
erforderlich ist. Die Fehlertypen sind also ähnlich, weil sie dazu führen, dass
die benachbarten Balken und Zwischenräume nicht ganzzahlige Teilbreiten
haben. Weil definitionsgemäß eine Mehrzahl
einzelner Druckelemente 28 zum Drucken der einzelnen Balken 12a mit
unterschiedlichen Breiten benutzt werden, indem nur eine entsprechende
Anzahl der einzelnen Druckelemente 28a geheizt wird, hat
der Ausfall eines einzelnen Druckelementes, wie beispielsweise des
fehlerhaften Druckelements 28b, das Nichtdrucken eines
durch die Breite des einzelnen Druckelementes 28a dargestellten
Teils des Moduls zur Folge. Für
zwei Druckelemente pro Modul hat der Fehler eine Breite von 1/2
Modul, und für
eine Ausführung
mit drei Druckelementen pro Modul hat der Fehler eine Breite von
1/3 Modul.
-
Bei
dem in 4 veranschaulichten
Fehler vom Typ I nimmt die Breite des dem Fehler 30 benachbarten
beeinträchtigten
Zwischenraums 12b im selben Maße zu, wie die Breite des benachbarten
Balkens 12a abnimmt. Beim in 5 veranschaulichten
Fehler vom Typ II verliert der beeinträchtigte Balken 12a einen
inneren Teil, der eine Teilbreite hat, so dass der übrig bleibende
linke Balkenteil ebenfalls nur eine Teilbreite hat.
-
Da
der Fehler 30 bei beiden in den 4 und 5 gezeigten
Fehlertypen notwendigerweise eine Teilkomponente in einen andernfalls
ganzzahligen Modulzwischenraum einführt, können beide Fehler einfach dadurch
entdeckt werden, dass die Teilbreite im Zwischenraumteil der abgetasteten
Signatur festgestellt wird.
-
Wie
oben angedeutet, ist der Balkencode 12 ferner aufgrund
einer speziellen Symbologie codiert worden, die spezielle Datengruppen
definiert, die vom Decodier 12 beim Decodieren des Balkencodes
benutzt werden. Die Balken und Zwischenräume sind daher in mehreren
aufeinanderfolgenden Gruppen angeordnet, welche die jeweiligen Zeichen
gleicher Breite definieren, welche die gleiche Anzahl von Modulen
haben, wie etwa bei der als Beispiel genannten UPC-Symbologie sieben
Module. Der oben beschriebene Fehler vom zweiten Typ verändert nicht
die gesamte Modulbreite der gestörten
Zeichengruppe, und daher können
diese Fehler ermittelt werden, indem eine der Gruppen festgestellt
wird, welche die richtige Zeichenbreite hat, aber einen Teilbreiten-Zwischenraum
enthält.
-
Wie
oben gesagt, können
die Fehler des ersten und zweiten Typs voneinander unterschieden
werden durch Feststellen, ob die Teilbreite in dem beeinträchtigten
Zwischenraum entweder grö ßer oder
kleiner als ein einzelnes Modul ist, je nachdem, ob es sich um einen
Fehler vom ersten oder zweiten Typ handelt.
-
Bei
dem in 4 gezeigten Fehler
vom ersten Typ nimmt der Fehler 30 an der Grenze des beeinträchtigten
Balkens 12a notwendigerweise in seiner Breite ab, wobei
gleichzeitig die Breite des benachbarten Zwischenraums 12 zunimmt.
Da jeglicher Zwischenraum 12b definitionsgemäß mindestens
ein Modul breit sein muss, führt
das Hinzufügen
der Teilbreite zum vom Fehler 30 beeinträchtigten
Zwischenraum zu einem Anwachsen der Breite des Zwischenraums 12 um
mehr als das einzelne Modul. Durch Feststellung, dass die Teilbreite
des Zwischenraums 12b größer als ein einzelnes Modul
ist, wird der Fehler vom ersten Typ angezeigt, der definiert ist
durch einen fehlenden Grenzteil einer Seite des benachbarten Balkens 12a.
In 4 hat der betroffene
Zwischenraum 12b eine vergrößerte Breite von 2,5 Modulen,
und der beeinträchtigte
Balken 12a hat eine verringerte Breite von 1,5 Modulen.
-
Der
in 5 veranschaulichte
Fehler vom zweiten Typ, der im Inneren eines beeinträchtigten
Balkens 12a erscheint, verursacht notwendigerweise einen
Zwischenraum einer Teilbreite von weniger als einem einzelnen Modul.
Demgemäss
zeigt die Entdeckung der Teilbreite eines Zwischenraums von weniger
als einem einzelnen Modul den Fehler vom zweiten Typ an, der durch
den fehlenden inneren Teil von zwei aneinandergrenzenden Balkenteilen
definiert ist. Wenn der in 5 gezeigte
fehlerhafte Balken im normalen Betrieb abgetastet wird, wird er
in der Balkencode-Signatur als Balken-Zwischenraum-Balken identifiziert
anstelle eines einzigen Balkens. Die beiden Balkenteile, die durch
den Fehler 30 entstanden sind, werden von dem Abtaster als
Balken gelesen, und weil der linke Balkenteil weniger als eine einzelne
Modulbreite hat, entspricht er nicht der betreffenden Symbologie,
und die Decodierung des Balkencodes wird normalerweise fehlerhaft.
-
Wie
oben gezeigt, wird der in 1 veranschaulichte
Decoder 22 typischerweise unter Verwendung geeigneter Software
in einem digital programmierbaren Prozessor implementiert. Der Decoder 22 bestimmt normalerweise
die relativen Breiten der Balken und Zwischenräume für die Decodierung. Wenn die
relativen Breiten nicht der Spezifizierung für die spezielle Symbologie
entsprechen oder wenn die einzelnen Balken, Zwischenräume oder
Gruppen von ihnen nicht der Symbologiespezifizierung entsprechen,
dann schlägt
die Decodierung fehl.
-
Erfindungsgemäß kann im
Prozessor oder Decoder 22 zusätzliche Software ergänzt werden,
um speziell die oben beschriebenen Fehler vom ersten und zweiten
Typ für
nachfolgende Evaluierung und Verwendung durch einen Benutzer zu
identifizieren. Der in 1 gezeigte
Abtaster 10 enthält
daher vorzugsweise Einrichtungen, die speziell für die Ermittlung dieser Fehler,
wie oben beschrieben, konfiguriert sind und üblicherweise in geeigneter
Software in einem Fehlerdetektor 22a implementierbar sind,
der Teil des Prozessors ist. Durch Feststellung der Teilbreite,
wie oben erwähnt,
können
Fehler vom ersten Typ identifiziert werden, wenn die Teilbreite
größer als
ein einzelnes Modul ist, und können
Fehler vom zweiten Typ identifiziert werden, wenn die Teilbreite
kleiner als ein einzelnes Modul ist. Die Fehlerfeststellung kann
dann in geeigneter Weise über
das Display 24 oder durch irgendwelche anderen geeignete
Mittel für
nachfolgende Evaluierung bei der Identifizierung des betreffenden
fehlerhaften Druckers 28 an den Benutzer gemeldet werden.
-
Da
die oben beschriebenen Fehler vom ersten und zweiten Typ ermittelbar
sind und die bekannte Wirkung in benachbarten Balken und Zwischenräumen zeigen,
können
sie, falls gewünscht,
nun automatisch korrigiert werden.
-
Fehlerkorrektur
-
Ein
gedrucktes Balkencode-Etikett 14, welches von einem Fehler
des Typs 1 oder 2 beeinträchtigt
ist, kann mit einem Abtaster unter Verwendung der üblichen
Decodiermethoden nicht korrekt gelesen werden. Jedoch können die
nachstehend beschriebenen Fehlerkorrekturverfahren erfolgreich bei
einem zuvor entdeckten Fehler vom Typ I oder II angewandt werden.
-
Zur
Durchführung
einer Fehlerkorrektur werden die Ergebnisse der Fehlerfeststellung
vorzugsweise akkumuliert. Der Grund für die Akkumulierung dieser
Daten liegt in einer Verbesserung der Qualität der Fehlerkorrektur. Es ist
zwar möglich,
eine Korrektur lediglich aufgrund der Daten einer einzigen Abtastung
des Balkencode-Etiketts 14 vorzunehmen, jedoch führt ein
solcher Versuch üblicherweise
zu unrichtigen Korrekturen des fehlerhaften Etiketts. Akkumuliert
man Fehler vom Typ I und II über
mehrfache Abtastungen eines einzigen Etiketts oder mehrerer Etiketten,
dann vergrößerte sich
die mögliche
Qualität
der Fehlerkorrektur. Daher ist eine Druckkopffehlerprotokollierung
(PEL) 22b ein zentraler Punkt der Fehlerkorrekturverfahren.
Das Protokoll 22b enthält
die Akkumulierung von Ermittlungen von Fehlern des Typs I und II.
-
Druckkopffehlerprotokoll
-
Das
Druckkopffehlerprotokoll (PEL) 22b codiert und repräsentiert
ein Modell des linearen Druckkopfs, der zum Drucken von Balkencode-Etiketten
benutzt wird. Jedoch ist das PEL eine Abstraktion des tatsächlichen
Druckkopfmechanismus, weil es nicht versucht, die einzelnen Druckkopfelemente
direkt nachzubilden. Stattdessen bildet das PEL den Druckkopf als
lineare Folge von Modulen ab, welche die Gesamtbreite des Balkencodes überspannen.
Das PEL verwendet eine Auflösung
von 1/n Modul, wobei n eine ganze Zahl größer oder gleich 1 ist. Der
Parameter n wird so gewählt,
dass Fehler vom Typ I und Typ II für die typischen ein-dimensionalen
Balkencode-Symbologien adequat dargestellt werden. Die aktuellen
Daten im PEL geben die Lage der guten und schlechten Druckkopfelemente über die
Gesamtbreite des Balkencodes an. Durch Verwendung einer Auflösung von
1/n Modul erfasst das PEL akkurat die Wirkung von Druckkopffehlern
auf dem Balkencode-Etikett und bildet sie nach.
-
Wie 1 zeigt, kann das Protokoll 22b üblicherweise
im Prozessor in einem geeigneten, dafür vorgesehenen Speicher implementiert
werden. 6 zeigt das
beispielhafte Balkencode-Etikett 14 von 5 mit einem Defekt 30 im Inneren
des Balkens schematisch mit den zugehörigen Abtastdaten und eine
Mehrzahl beispielhafter Druckkopffehlerprotokolle 22b,
die als Protokolle 1 ... n bezeichnet sind. Die individuellen Protokolle
sind lediglich lineare Anordnungen, die in geeigneter Weise im Speicher
als Folge von Speicherregistern an Stellen gespeichert sind, welche
sowohl dem Balkencode 12 wie auch jeglicher Art von Drucker 28 entsprechen,
mit denen die Balken gebildet werden. In den Ausführungsbeispielen
der 6 sind zwei Registerplätze für jedes
Modul vorgesehen, welche den beiden Druckerelementen 28a entsprechen,
die zu jedem Modul gehören.
Bei einer (hier nicht gezeigten) Ausführungsform mit drei Druckerelementen
pro Modul würden
zu jedem Modul drei Register gehören.
Auf diese Weise lassen sich die Protokolle benutzen zur Darstellung
des Status oder Zustandes jedes Untermodulinkrements zusammen mit
dem gesamten Balkencode 12 mit geeigne ter Auflösung entsprechend
den erwarteten Auflösungen
des Druckers 28.
-
Bei
einer Ausführungsform
gibt es für
jeden Platz im Protokoll drei mögliche
Werte. Der Wert GUT zeigt an, dass die Druckkopfelemente 28a,
die für
das Drucken dieser speziellen 1/n Modulbreite des Balkencode-Etiketts
zuständig
sind, in gutem Betriebszustand sind. Der Wert SCHLECHT zeigt an,
dass die für
das Drucken dieser speziellen 1/n Modulbreite des Balkencode-Etiketts zuständigen Druckkopfelemente
eine Fehlfunktion aufweisen. Eine solche Fehlfunktion hat zur Folge,
dass das Druckkopfelement kein dunkles (Balken-)Element druckt,
wenn es dazu angesteuert wird, jedoch hat dies keine Auswirkung,
wenn ein helles (Zwischenraum-)Element an dieser Stelle gedruckt
werden soll. Der Wert ZWEIFELHAFT zeigt an, dass die für das Drucken
dieser speziellen 1/n Modulbreite im Balkencode verantwortlichen
Druckkopfelemente möglicherweise
nicht funktionieren.
-
Es
sollte an dieser Stelle klar sein, dass ein Nichtfunktionieren des
Druckkopfelements nicht notwendigerweise jedes mit diesem Drucker
gedruckte Balkencode-Element fehlerhaft werden lässt. Speziell wirkt sich ein
fehlerhaftes oder nichtfunktionierendes Druckkopfelement auf das
Etikett überhaupt
nicht aus, wenn ein helles Element (Zwischenraum) an der Stelle
des Druckkopffehlers erscheinen soll.
-
Aktualisierung
des Druckkopffehlerprotokolls
-
Ehe
irgendwelche Etiketten abgetastet worden sind, kann jeder Protokollplatz
auf den Wert GUT eingestellt werden. Wenn Abtastungen verschiedener
Etiketten durchgeführt
werden, dann werden Fehler vom Typ I und II, wie oben beschrieben
festgestellt. Der Protokollplatz eines Fehlers beider dieser Typen kann
leicht im Decoder 22 berechnet werden als eine bestimmte
Anzahl von 1/n Modulbreiten vom ersten normalerweise auftretenden
Balkenmodul der linken Seite des Balkencodes. 6 zeigt die Platz- oder Stellenberechnung unter
Verwendung einer UPC-Symbologie mit n = 2 in diesem speziellen Beispiel.
Das Protokoll beginnt vorzugsweise mit dem ersten festgestellten
Balken 12a an der linken Seite des Balkencodes 12,
der einen Bezugs- oder Indexpunkt für alle nachfolgenden hierauf
bezogenen Plätze
bildet.
-
Beispielsweise
zeigt 6 ein UPC-Symbol,
welches mit einem Fehler vom Typ II gedruckt worden ist und sich
an der PEL-Indexnummer 18 vom
linken Ende des Symbols befindet. Solange der Druckkopf an dieser
Stelle defekt bleibt, zeigen mit diesem Gerät weitergedruckte Etiketten
immer die Fehlertypen I und II am Protokollplatz 18. Beim
ersten Feststellen eines Problems am Protokollplatz 18 wird
der Protokollwert von GUT auf ZWEIFELHAFT geändert. Wenn am Platz 18 weiterhin
Fehler festgestellt werden, dann verstärkt sich der Verdacht, dass
in der Tat dort ein Druckkopffehler vorliegt, welcher die Fehler
am Platz 18 verursacht. Wenn sich zusätzliche Fehler am Platz 18 akkumulieren,
dann wächst
der Wert ZWEIFELHAFT proportional an. Nachdem eine geeignete Menge
von Fehlern, z. B. etwa 4 bis 12 Fehler, am Platz 18 festgestellt
worden sind, dann wird dessen Wert in SCHLECHT geändert. Nur
solche Protokollplätze,
die den Wert SCHLECHT enthalten, werden zur Durchführung einer
Fehlerkorrektur benutzt.
-
Fehlerkorrektur
unter Verwendung des PEL
-
Es
wird keine Fehlerkorrektur versucht, solange PEL nicht mindestens
einen Platz enthält,
der von dem oben erwähnten
PEL-Aktualisierungsverfahren
als SCHLECHT markiert worden ist. Eine Fehlerkorrektur wird nur
versucht, wenn das PEL diesen Zu stand erfüllt und in der laufenden Abtastung
ein Fehler vom Typ I oder II festgestellt worden ist. Wenn der Platz
des Fehlers in der momentanen Abtastung mit dem Platz im PEL übereinstimmt,
der vorher als SCHLECHT markiert worden war, dann wird angenommen,
dass der Fehler durch ein fehlerhaftes Druckelement verursacht worden
ist. Das Fehlerkorrekturverfahren stellt dann die von dem fehlerhaften
Druckelement beeinflussten Abtastdaten ein. Die zentrale Idee des
Korrekturverfahrens besteht darin, den weißen Zwischenraum aufzufüllen, der
von dem oder den fehlerhaften Druckelement(en) übrig geblieben ist. Speziell
werden die von den beeinträchtigten
Balken- oder Zwischenraum-Modulen erzeugten Abtastdaten um eine
1/n Modulbreite berichtigt entsprechend dem Platz im SCHLECHT-Bereich,
und die Rohdaten werden mit dem Standard-Balkencode-Decodierverfahren
im Decoder 22 verarbeitet. Die verarbeiteten Abtastdaten
ergeben dann den korrigierten Balkencode.
-
Wenn
also einmal ein Fehler vom Typ I oder II festgestellt worden ist,
dann kann er automatisch korrigiert werden, indem die festgestellte
Teilbreite des beeinträchtigten
benachbarten Balkens oder Zwischenraums korrigiert wird durch entsprechendes
Vergrößern oder
Verkleinern, bis im Wesentlichen ganzzahlige vielfache Modulen hiervon
erhalten sind. Die Korrektur kann üblicherweise im Prozessor in
einem zugeordneten Teil des Decoders 22 programmiert werden,
der als Fehlerkorrektur 22 in 1 gezeigt ist. Nach Feststellung einer
fehlerhaften Balkencode-Signatur 20s kann die Signatur
selbst korrigiert werden durch Berichtigen ihrer örtlichen
Intensitäten,
um die Intensität
des festgestellten Fehlers 30 über seine entsprechende Teilbreite effektiv
zu vergrößern, anstatt
einen Balkenteil zu zeigen. Auf diese Weise wird die Signatur 20s korrigiert
und füllt
effektiv den Fehler 30 aus und zwar bei Fehlern des ersten
sowie des zweiten Typs, wie in 4 und 5 gezeigt, um den dortigen
fehlerhaften Balken 12a vollständig zu machen. Die korrigierte
Signatur wird in üblicherweise
durch den Decoder 22 verarbeitet, welcher dann in der Lage
sein sollte, den korrigierten Balkencode erfolgreich zu decodieren.
Falls gewünscht,
kann der Abtaster 10 automatisch dem Benutzer beispielsweise über das
Display 24 berichten, dass ein Fehler festgestellt und
korrigiert worden ist.
-
Anordnung
mit mehreren Druckköpfen
-
Wenn
auch das oben beschriebene Fehlerkorrekturverfahren im Prinzip funktioniert,
werden vorzugsweise zusätzliche
Maßnahmen
getroffen zur Anpassung an den Fall, dass viele verschiedene Druckköpfe Balkencode-Etiketten
erzeugen, die von einem einzigen Abtaster gelesen werden. Speziell
kann jedes PEL dazu bestimmt sein, eine einzelne Druckkopf-Signatur
nachzubilden. Im Falle mehrerer Druckköpfe sollten daher viele PELs
gleichzeitig gemanagt und aktualisiert werden. Es sollte auch ein
Verfahren geben, um zu bestimmen, welches PEL sich auf die momentanen
Abtastdaten bezieht.
-
Zuordnung
eines PEL zu Abtastdaten
-
Dieser
Abschnitt beschreibt ein Verfahren, das zur Zuordnung der momentanen
Abtastdaten zu einem speziellen PEL 22b verwendet wird.
Mit diesem Verfahren werden PELs gefunden, welche zu den Daten und Fehlern
passen, die in den momentanen Abtastdaten ermittelt wurden. Der
Zweck dieses Verfahrens besteht in der Bestimmung, welches PEL,
falls überhaupt,
die momentanen Abtastdaten erzeugt haben könnte. Zur Ermöglichung
dieser Vergleiche kann jeder PEL-Platz einen von vier Zuständen haben:
GUT, SCHLECHT, UNBEKANNT und ZWEIFELHAFT. Außerdem ist jeder entsprechende
Platz in den Abtastdaten gekennzeichnet durch einen der drei Zustände: GUT,
UNBEKANNT und ZWEIFELHAFT. Die Zuordnung und Verarbeitung dieser
Zustände
sei nachfolgend beschrieben.
-
Abtastdatenklassifizierung
-
Bei
der Abtastung eines Balkencode-Etiketts werden Daten erzeugt, die
für die
auf dem Etikett codierten Symbole typisch sind. Diese Daten stellen
Balken und Zwischenräume
dar, die auf dem zugehörigen
balkencodierten Etikett zu sehen sind. Es ist damit möglich, Stellen
in den Abtastdaten zu identifizieren, welche direkt den tatsächlich gedruckten
Balken entsprechen. Weil das Drucken eines Balkenelements zeigt,
dass sein zugehöriger
Druckkopf richtig funktioniert, kann es als GUT markiert werden.
Wenn die Abtastdaten einen Zwischenraum anzeigen (also das Fehlen
eines Balkens), dann weiß man
nichts über
die Unversehrtheit des zugehörigen
Druckelementes. Daher bewirkt ein Zwischenraumelement in den Abtastdaten,
dass sein zugehöriger
Platz in den Zustand UNBEKANNT eingestellt wird. Werden durch die
vorstehend beschriebenen Fehler Ermittlungsmethoden Fehler vom Typ
I oder II festgestellt, dann werden die beeinträchtigten Plätze als ZWEIFELHAFT markiert.
Nachdem alle PEL-Plätze
der Abtastdaten klassifiziert worden sind, werden sie mit den existierenden
PELs verglichen.
-
Vergleich
klassifizierter Abtastdaten mit PELs
-
Wenn
ein oder mehrere Fehler vom Typ I oder II bei einer momentanen Abtastung
festgestellt werden, dann können
sie mit den existierenden PELs verglichen werden. Gibt es keine
PELs, dann wird aufgrund der momentanen Abtastdaten ein neues geschaffen.
Die Fehlerplätze
in der laufenden Abtastung werden mit einer Auflösung von 1/n Modulen, wie oben
beschrieben, berechnet. Gibt es bereits ein oder mehrere PELs, dann werden
die momentanen Abtastdaten mit allen PELs verglichen, um sicherzustellen,
dass die momentanen Daten zu irgendeinem der bestehenden PELs passen.
Der Zweck des Vergleichs der Fehler in der momemtanen Abtastung
mit allen PELs liegt in der Ausschaltung derjenigen PELs, welche
nicht das spezielle Fehlermuster erzeugen konnten, das in der momentanen
Abtastung beobachtet wurde. Die momentanen Abtastdaten werden mit
einem PEL Platz für
Platz verglichen.
-
Tabelle
1 zeigt die Logik der Entscheidungen, welche bei dem Vergleich der
momentanen Abtastdaten mit einem vorhandenen PEL gemacht werden.
Erfolgt bei irgendeinem Platz während
des Vergleichsvorgangs eine Entscheidung KEINE ÜBEREINSTIMMUNG, dann könnte das
betrachtete PEL die momentanen Abtastdaten nicht erzeugt haben.
Es erfolgen Vergleiche für
alle vorhandenen PELs. Wird eine Entscheidung KEINE ÜBEREINSTIMMUNG
beim Vergleich mit allen PELs getroffen, dann wird ein neues PEL
erschaffen und entsprechend den momentanen Abtastdaten initialisiert.
-
-
6 veranschaulicht das Übereinstimmungsverfahren
durch die Darstellung eines Etiketts 14, von Beispielsprotokollen
und den klassifizierten Abtastdaten. Die Protokolle 1–n werden
durch das in den vorangegangenen Abschnitten beschriebene Verfahren
erzeugt. Danach stellen Fehler in den momentanen Abtastdaten, beispielsweise
am Platz 18, ein definitives KEINE ÜBEREINSTIMMUNG mit Protokoll
1 dar. Die Entscheidung KEINE ÜBEREINSTIMMUNG
erfolgt, weil das Protokoll 1 am Platz 18 ein GUT vorhersagt,
wo diese Abtastdaten ZWEIFELHAFT sind. Somit kann das in 6 gezeigte Balkencode-Etikett
nicht mit demselben Druckkopf gedruckt worden sein, welcher die
nun im Protokoll 1 protokollierten Fehler verursacht hat. Das Protokoll
n kann nunmehr im Zustand ZWEIFELHAFT, wie in den vorangehenden
Abschnitten beschrieben, gestartet werden. Nach einer geeigneten
Anzahl von Abtastungen erreicht der vom Protokoll n nachgebildete Druckkopffehler
den Zustand SCHLECHT, wie 6 zeigt,
und wird damit während
der Fehlerkorrektur benutzbar.
-
Wie
bereits erwähnt,
können
nur PELs, die mindestens einen Platz mit dem Zustand SCHLECHT haben,
an der Fehlerkorrektur teilnehmen. Ein neu erzeugtes PEL, wie im
Beispiel der 6, nimmt
nicht an der Fehlerkorrektur teil, bis sein Platz ZWEIFELHAFT in
den Zustand SCHLECHT umgesetzt worden ist. Diese Umwandlung erfolgt
nur dann, wenn derselbe Fehlerplatz in einer geeigneten Anzahl zusätzlicher
Abtastungen festgestellt worden ist. Die Plätze ZWEIFELHAFT in PELs werden
in dem nachfolgend beschriebenen Aktualisierungsverfahren in Plätze SCHLECHT
umgewandelt.
-
PEL-Aktualisierungsverfahren
-
Nach
der Ausführung
des oben beschriebenen Vergleichsverfahrens wird eine Liste von
Null oder mehreren PELs als mit den Abtastdaten übereinstimmend identifiziert.
Im Fall von null Übereinstimmungen wird,
wie oben erwähnt,
ein neues PEL erstellt. Im Falle von ein oder mehreren Übereinstimmungen
werden die Abtastdaten zur Aktualisierung der übereinstimmenden PELs benutzt.
Außerdem
werden nur diejenigen PELs aktualisiert, welche mindestens eine
EXAKTE ÜBEREINSTIMMUNG
erzeugt haben, wie anhand von 1 beschrieben.
Das Aktualisierungsverfahren ist im Tabelle 2 zusammengefasst.
-
-
Die
Notierung ZWEIFELHAFT+ in Tabelle 2 zeigt
an, dass der Zustand des Platzes ZWEIFELHAFT in dem PEL als Ergebnis
des Aktualisierungsprozesses in seiner "Zweifelhaftigkeit" zunimmt. Typischerweise kann jedem
zweifelhaften Platz ein Zähler
zugeordnet werden, dessen Zählerstand
dann jedes Mal erhöht wird,
wenn an diesem Platz eine EXAKTE ÜBEREINSTIMMUNG zu finden ist.
Wenn dieser Zähler
einen bestimmten Zählwert überschreitet,
dann wird der Zustand dieses Platzes auf SCHLECHT gesetzt.
-
Die
Aktualisierung lässt
sich leicht mit geeigneter Software in dem in 1 veranschaulichten Fehlerkorrektor 22c bewirken
und ist schematisch im Flussdiagramm der 2 gezeigt. Jedes Mal, wenn ein Balkencode
abgetastet wird, werden die seiner Signatur entsprechenden Abtastdaten
evaluiert. Wird ein Balken festgestellt, dann wird das anfängliche
UNBEKANNT für
den entsprechenden Registerplatz in die Anzeige GUT geändert, wie
in Tabelle 2 dargestellt ist. Nach einer geeigneten Anzahl von Abtastungen
verschiedener Balkencodes, die mit einem gegebenen Drucker 28 gedruckt
worden sind, wird die Verhaltenssignatur für diesen Drucker durch sein
entsprechendes Protokoll dargestellt. Wenn ein bestimmter Registerplatz
ZWEIFELHAFT ist, wie in Tabelle 2 gezeigt, dann zeigt das Pluszeichen
(+) die Verwendung eines geeigneten Zählers an, welcher jedes Mal
nach oben indexiert wird, wenn ein Platz ZWEIFELHAFT in den Abtastdaten
mit einem entsprechenden Protokollregister übereinstimmt. Hat sich eine
genügende
Anzahl von ZWEIFELHAFT-Übereinstimmungen
ergeben, beispielsweise etwa 4 bis 12 Übereinstimmungen, dann wird
der Registerplatz aktualisiert, um eine Anzeige SCHLECHT wiederzugeben.
-
Ein
Registerplatz SCHLECHT zeigt die Wahrscheinlichkeit eines fehlerhaften
Druckelementes 28b an, das fortlaufend zu einer Bestimmung
ZWEIFELHAFT an dem entsprechenden Registerplatz führt. In
Tabelle 2 zeigt die erste Reihe an, dass die Bezeichnung SCHLECHT+
unter Verwendung eines geeigneten Zählers jedes Mal dann inkrementiert
wird, wenn eine Bestimmung ZWEIFELHAFT mit einer Anzeige SCHLECHT
in den entsprechenden Protokollen übereinstimmt. Auf diese Weise
wird beim Abtasten fehlerhaften Balkencodes mit einem gegebenen
Drucker 28 ein Zählwert
seines kumulierten Gesamtwertes erhalten. Da der im Abtaster 10 verfügbare Speicher
begrenzt ist, kann dieser Zähler
benutzt werden, um eine bestimmte Anzahl von Protokollen entsprechend
dem Zähler
SCHLECHT+ festzuhalten, wobei relativ hohe Zählwertprotokolle beibehalten werden
und die niedrigsten Zählwertprotokolle
wenn nötig
durch neue Protokolle ersetzt werden.
-
Fehlerkorrektur
bei Verwendung mehrerer Druckköpfe
-
Ein
Fehler in den momentanen Abtastdaten wird nur dann korrigiert, wenn
ein PEL 1.) einen Vergleichsprozess durchläuft, bei dem keine Anzeige
KEINE ÜBEREINSTIMMUNG
auftritt, wie oben angegeben, und 2.) eine EXAKTE ÜBEREINSTIMMUNG
hat, wenn ein Zustand SCHLECHT in dem PEL an der gleichen Stelle wie
ein Zustand ZWEIFELHAFT in den momentanen Abtastdaten protokolliert
wird. Wie oben beschrieben, besteht der zentrale Gedanke des Korrekturverfahrens
im Auffüllen
des weißen
Zwischenraums, der von dem oder den fehlerhaften Element(en) hinterlassen
wird. Speziell werden die von den beeinträchtigten Balken und Zwischenraummodulen
erzeugten Abtastdaten um die 1/n Modulbreite korrigiert entsprechend
dem Platz des SCHLECHT-Bereiches, und die Rohdaten werden im Decoder 22 durch
Standard-Balkencode-Decodierverfahren
nachbearbeitet. Die nachbearbeiteten Abtastdaten ergeben dann den
korrigierten Balkencode.
-
Berichten
von Fehlern an den Benutzer
-
Wenn
eine erfolgreiche Fehlerkorrektur durchgeführt ist, dann wird der korrigierte
Balkencode zum Benutzer (Terminal) weitergegeben. Ebenfalls kann
dem Benutzer der betreffende Fehlertyp angegeben werden. Der Benutzer
kann dann eventuell eine Korrekturhandlung vornehmen, um den fehlerhaften
Druckkopf zu kennzeichnen oder zu ersetzen.
-
Wie
in 2 gezeigt ist, können Fehler
des ersten und zweiten Typs sofort korrigiert werden und es erfolgt
gewünschtenfalls
eine Decodierung. Es ist jedoch vorzuziehen, dass man die Balkencodefehler
in einem entsprechenden der Fehlerprotokolle über eine Mehrzahl von Abtastungen
einzelner Balkencodes und aufeinanderfolgender Balkencodes akkumuliert.
Auf diese Weise geben die Protokolle genau den Zustand des betreffenden
Druckers 28 wieder. Dann kann in nachfolgenden Abtastungen
ein Balkencodefehler entdeckt und mit jedem der mehreren Protokolle
verglichen werden, um eine Übereinstimmung
dazwischen aufzudecken. Sobald man eine passende Übereinstimmung
findet, kann dann, wie oben beschrieben, eine automatische Korrektur
des Balkencodefehlers erfolgen.
-
Jedes
der in 6 schematisch
gezeigten Fehlerprotokolle enthält
vorzugsweise eine lineare Folge von Registern, die, wie gezeigt,
den jeweiligen Plätzen
längs der
Gesamtbreite des Balkencodes 12 entsprechen, wobei jedes
Register das Vorhandensein eines Balkencodefehlers an dem zugehörigen Platz
anzeigt. Das Register wird anfangs auf die Bezeichnung UNBEKANNT
gesetzt, und über
eine geeignete Anzahl von Abtastungen ändert sich das Register dann
nach und nach zur Anzeige SCHLECHT, nachdem das Vorhandensein eines
SCHLECHTEN Druckelementes 28b sichergestellt ist. Die genaue
Auflösung
der verschiedenen Balkencodes 12 selbst und der entsprechenden
Drucker 28 wird leicht erhalten durch Vorsehen einer Mehrzahl
von Registern entsprechend jedem der den Balkencode 12 definierenden
Modulen. Bei einer bevorzugten Ausführung ist die Anzahl von Registern
pro Modul in einer Eins-zu-Eins-Entsprechung gleich der Anzahl von
Druckelementen 28a pro Modul.
-
Durch
das Vorsehen einer Mehrzahl von Fehlerprotokollen lässt sich
eine entsprechende Anzahl einzelner Drucker 28 nachbilden
zur fortlaufenden Identifizierung ihres Betriebsverhaltens im Bestreben,
fehlerhafte Drucker 28 zu identifizieren. Da der in 1 gezeigte Abtaster 10 Balkencodefehler
feststellt und den Benutzer darauf aufmerksam macht, kann dieser
seinerseits Untersuchungen anstellen und zu versuchen zu bestimmen,
welcher der verschiedenen Drucker 28 fehlerhaft ist, und
dann wiederum den fehlerhaften Drucker 28 in Ordnung bringen.
-
Da
das oben beschriebene Verfahren zum Feststellen und Korrigieren
fehlerhafter Balkencodes leicht in übliche Software innerhalb zugehöriger Teile
des Decoders 22 inkorporiert werden kann, wie oben beschrieben,
können
weiterhin vorhandene Abtaster durch geeignete Programmänderungen
leicht nachgerüstet
werden. Derzeitige Abtaster und Decoder können die relativen Breiten
von Balken und Zwischenräumen
in typischen Balkencodes bestimmen und können geeignet abgewandelt werden,
um auch die oben erläuterten
Teilbreiten zu identifizieren, die dadurch entstehen, dass ein einzelnes
Druckelement 28a dort nicht druckt, wie ein Balken 12a erforderlich
wäre.