-
Die
vorliegende Erfindung betrifft im Allgemeinen Verbesserungen bei
Laser-Strichcode-Lesegeräten. Die
vorliegende Erfindung betrifft insbesondere Verfahren und Vorrichtungen
für die
Synchronisierung einer Winkelposition einer sich drehenden optischen
Baugruppe in einem Strichcode-Lesegerät sowie die Bestimmung von
Strichcode-Etikett-
und Lageinformationen.
-
Strichcode-Lesegeräte benutzen
in der Regel einen Motor und Musterspiegel, um mit einem Lichtstrahl
eine Etikettoberfläche
zu überstreichen,
und messen das reflektierte Licht. Der Lichtstrahl wird von einem
Laser, in der Regel einer Laserdiode, und dem dazugehörenden optischen
System erzeugt. Das reflektierte Licht kehrt den Einfallsweg entlang
zurück
und wird auf einen Fotodetektor fokussiert. Der Fotodetektor wandelt
diese aufgefangene Lichtenergie in ein elektrisches Signal um. Dieses
Signal wird von analoger Elektronik verarbeitet, in ein digitales
Signal umgewandelt und von digitaler Elektronik weiterverarbeitet,
zu der in der Regel ein Prozessor und damit verbundene Firmware
gehören.
-
Der
Prozessor empfängt
einen Etikettdatenstrom, der alles enthält, was sich innerhalb der
Reichweite des Lasers oder des Lichtstrahls vorbeibewegt hat, einschließlich vollständiger und
Teildaten. Der Prozessor versucht, unter der Steuerung von in der
Regel in Firmware gespeicherter Programmierung die Teildaten oder Strichcode-Fragmente
zusammenzustellen ("Teilstücke"), ein mehrmaliges
Lesen des gleichen Artikels zu ignorieren und andere Aufgaben auszuführen. Die
empfangenen Informationen können
aus verschiedenen Gründen
mehrdeutig und anderweitig schwierig zu interpretieren sein. Es
können
sich beispielsweise mehrere Artikel oder gleichzeitig mehrere identische Artikel
in der Einlesezone befinden. In der Regel vermeidet die Firmware
ein Mehrfachlesungsproblem, indem sie eine relativ lange Verzögerung zwischen
gültigen
Lesungen identischer Artikel erfordert. Dies reduziert die Einlese-Durchsatzleistung
und stellt somit derzeit eine notwendige, aber unerwünschte Lösung dar.
-
Eine
bessere Lösung
würde darin
bestehen, den Prozessor mit Wissen über die Lage eines Etiketts oder
Teilstücks
zu versorgen. Dadurch wäre
es für
den Prozessor möglich
zu bestimmen, ob sich beispielsweise zwei wiederhergestellte Etiketten
an den gleichen oder unterschiedlichen Artikeln befunden haben.
Es bestünde
auch die Möglichkeit
einer verbesserten Rekonstruktion von Teilstücken, da dem Prozessor bekannt wäre, ob die
wiederhergestellten Teilstücke
nebeneinander gelegen haben oder nicht. Es ist daher Aufgabe der
Erfindung, Verfahren und Vorrichtungen für die Bestimmung von Lageinformationen
von Strichcode-Etiketten während
des Einlesens eines Etiketts bereitzustellen. Mehrere Probleme haben
den Fortschritt beim Sammeln solcher Informationen aufgehalten,
wie nachfolgend erläutert
wird.
-
Die
Abtastmuster erzeugenden Eigenschaften des optomechanischen Aufbaus
eines bestimmten Lesegeräts
werden durch die Position und Ausrichtung der Laserquelle und des
Motors des rotierenden Elements, den Aufbau des abtastenden rotierenden
Elements und die Position und Ausrichtung der verschiedenen eingesetzten
Musterspiegel bestimmt. Bei Kenntnis dieser Elemente lässt sich
die Position und Ausrichtung des Abtastlaserstrahls als Funktion
des Drehwinkels des rotierenden Elements berechnen und beispielsweise
in Form der x-, y- und z-Koordinaten des Schnittpunktes des Laserstrahls
und eines Abtastfensters oder -eingangs zur Einlesezone und der
Richtungskosinus des Vektors des Laserstrahls ausdrücken. Daher
kann bei Kenntnis des Drehwinkels des rotierenden Elements die Firmware
des Lesegeräts
den Ausgangspunkt und die Richtung des Lasers innerhalb der Einlesezone
entweder durch direkte Berechnung oder vorzugsweise durch die Verwendung
einer Nachschlagetabelle bestimmen. Als Beispiel liegt eine Nachschlagetabelle
für den NCR
7875, ein bioptisches Lesegerät
mit 40 eindeutigen Abtastlinien und Top-Down-Erfassung, in Tabelle 1 vor, die am
Ende der vorliegenden Beschreibung zu finden ist. Jeder Satz aus
zwei Zeilen gibt Ausgangspunkt- und Richtungswerte für die Anfangs-
und Endpunkte von 40 eindeutigen Abtastlinien als Funktion des Drehwinkels
des rotierenden Elements an. Zwischenwerte lassen sich durch lineare
Interpolation berechnen.
-
Der
Drehwinkel des rotierenden Elements muss zur Zeit in Beziehung stehen.
In der Regel arbeitet der Motor des rotierenden Elements bei relativ
konstanter Drehzahl. Darüber
hinaus lässt
sich die Motorposition nachverfolgen, indem man die Ausgabe von
Hall-Effekt überwacht,
um Bezugsdaten für
die Motorposition zu erhalten, durch andere Motorwellen-Positionssensoren
oder andere Nachverfolgungsmechanismen. Hierdurch kann das Lesegerät die Drehposition
der Rotorpole des Motors des rotierenden Elements nachverfolgen.
Leider ist es schwierig, diese Pole mechanisch zur Position des
rotierenden Elements selbst in Beziehung zu setzen. Das rotierende
Element kann in einer bekannten Position in Bezug auf die Motorpole
befestigt sein, aufgrund der geringen Radien können jedoch kleine Positionsfehler
zu großen
Winkelfehlern führen.
-
GB 2 310 066 legt ein Strichcode-Lesegerät offen,
das ein an einem Motor angebrachtes rotierendes Element aufweist.
Das Lesegerät
bestimmt die Winkelposition des rotierenden Elements durch das Erfassen des
Beginns eines Einlesevorgangs unter Verwendung eines Sensors S
L, der so angeordnet ist, dass er Licht zu
Beginn eines Einlesevorgangs erfasst. Daher kann das Lesegerät die Winkelposition
des rotierenden Elements an einem vorgegebenen Anfangspunkt bestimmen.
Das Lesegerät
weist auch einen Impulsgeber auf sowie einen Impulszähler, der
vom oben erwähnten
Anfangspunkt an Impulse zählt.
Das Lesegerät
kann dann das Maß der
Winkeldrehung vom Ausgangspunkt aus durch das Zählen von Impulsen bestimmen.
Daher kann das Lesegerät
seine Winkelposition zu jedem beliebigen vorgegebenen Zeitpunkt
während
des Einlesens bestimmen.
-
US-PS 5,510,605 geht das
gleiche technische Problem an wie
GB
2 310 066 , löst
es jedoch nicht über das
Zählen
von Impulsen. Stattdessen wird das rotierende Element bei diesem
Dokument mit einer Reihe genau beabstandeter Markierungen versehen.
Ein Detektor kann diese Markierungen erfassen und aus ihnen die Winkelposition
des rotierenden Elements während
eines Einlesevorgangs bestimmen.
-
Dieser
Stand der Technik wird im Oberbegriff von Anspruch 1 anerkannt.
-
Es
besteht daher in der Technik ein Bedarf für ein Strichcode-Lesegerät, das die
Ausgangsposition eines bei einem Strichcode-Lesegerät verwendeten
rotierenden Elements mit der Position der Motorpole synchronisiert
und die Kenntnis der Ausgangsposition des rotierenden Elements mit
der Kenntnis des Drehwinkels der Motorpole kombiniert, um den Drehwinkel
des rotierenden Elements zu einem bestimmten Zeitpunkt zu bestimmen.
-
Gemäß einem
ersten Aspekt der vorliegenden Erfindung wird ein Strichcode-Lesegerät nach Anspruch
1 bereitgestellt.
-
Das
Strichcode-Lesegerät
weist weiterhin einen Positionsreferenzbestimmungsmechanismus auf,
der vorzugsweise eine an einer genauen Position mit dem Lesegerät verbundene
Synchronisationsmarkierung aufweist. Wenn sich das rotierende Element
dreht, trifft eine bestimmte bekannte Abtastlinie pro Umdrehung auf
die Synchronisationsmarkierung.
-
Wenn
das Lesegerät
in Betrieb genommen wird, sucht der Mikroprozessor nach der Synchronisationsmarkierung
und liest gleichzeitig die Motorimpulse. Durch Korrelieren der nach
der Impulsabgabe eines Synchronisierungsmotors verstrichenen Zeit
mit der Erfassung der Synchronisationsmarkierung kann das Strichcode-Lesegerät den Ausschlagwinkel
des rotierenden Elements von der Synchronisationsmarkierung nachverfolgen,
wodurch eine genaue Winkelposition des rotierenden Elements während des
gesamten Betriebs des Lesegeräts
bereitgestellt wird.
-
Gemäß einem
zweiten Aspekt der vorliegenden Erfindung wird ein Verfahren zum
Initialisieren und Überwachen
der Position einer optischen Baugruppe eines Strichcode-Lesegeräts bereitgestellt,
das die folgenden Schritte umfasst:
Leiten von Licht durch
eine sich drehende optische Baugruppe, wobei die optische Baugruppe
von einem Motor gedreht wird, der eine damit verbundene impulserzeugende
Einrichtung aufweist, und das Licht so geleitet wird, dass es auf
eine Synchronisationsmarkierung auftrifft, wenn sich die optische
Baugruppe in einem bekannten Drehwinkel befindet,
Empfangen
des von der Synchronisationsmarkierung reflektierten Lichts, wenn
das Licht aus der optischen Baugruppe auf der Synchronisationsmarkierung
auftrifft, und Erkennen, dass das Licht von der Synchronisationsmarkierung
herkommt,
Initialisieren der Position der optischen Baugruppe
als Winkelposition der Synchronisationsmarkierung,
Zählen von
von der impulserzeugenden Einrichtung erzeugten Impulsen, um eine
ständig
aktualisierte Winkelposition der optischen Baugruppe in Bezug zur
Ausgangsposition zu bestimmen, und
Bestimmen der Winkelposition
der optischen Baugruppe beim Auftreten eines Ereignisses von Interesse
durch Bestimmen eines Versatzes der Impulszahl beim Ereignis von
Interesse von der Impulszahl an der Ausgangsposition der optischen
Baugruppe.
-
Es
wird nunmehr eine Ausführungsform
der vorliegenden Erfindung im Sinne eines Beispiels und unter Bezugnahme
auf die beiliegenden Zeichnungen beschrieben, in denen:
-
1 eine schematische Darstellung ist, die
ein Strichcode-Lesegerät
veranschaulicht, das die Spiegelwinkelsynchronisation gemäß der vorliegenden
Erfindung verwendet,
-
2 eine schematische Darstellung ist, die
eine Steuer- und
Datenpositionserfassungsschaltung gemäß der vorliegenden Erfindung
veranschaulicht, mit der gemäß der vorliegenden
Erfindung ein Strichcode-Lesegerät
gesteuert wird und Zeitsteuerungs- und Spiegelwinkeldaten ermittelt
werden und der Ausgangswinkel des Spiegels synchronisiert wird,
-
3 eine
schematische Darstellung ist, die eine Videoschaltung veranschaulicht,
die gemäß der vorliegenden
Erfindung für
das Ermitteln von Spiegelwinkeldaten bei einem Strichcode-Lesegerät und das
Synchronisieren der Ausgangsposition des Spiegels verwendet wird,
-
4 ein
Strichcode-Lesegerät
veranschaulicht, das gemäß der vorliegenden
Erfindung eine Synchronisationsmarkierung verwendet, um eine Ausgangsposition
des Spiegels zu ermitteln, und Motorimpulsdaten, um die Spiegelposition
zu aktualisieren, und
-
5 ein
Flussdiagramm ist, das ein Verfahren zum Synchronisieren einer Ausgangsposition
des Spiegels bei einem Strichcode-Lesegerät gemäß der vorliegenden Erfindung
veranschaulicht.
-
1 ist eine schematische Darstellung, die
ein Strichcode-Lesegerät 10 veranschaulicht,
das den Prinzipien der vorliegenden Erfindung entspricht. Das Strichcode-Lesegerät 10 weist
einen ASIC 12 auf. Der ASIC 12 enthält eine
Hauptsteuerschaltung 15, eine erste Videoschaltung 17 und
eine zweite Videoschaltung 19, die in Verbindung mit den 2 und 3 nachfolgend
ausführlicher
erläutert
werden. Das dargestellte Strichcode-Lesegerät 10 weist auch eine
Waagenbaugruppe 16 auf, auf die zum Wägen ein Gegenstand wie eine
variable Masse 21 gelegt werden kann, wobei die Waagenbaugruppe 16 dann
dem ASIC 12 Gewichtsinformationen zuführt.
-
Das
Strichcode-Lesegerät 10 weist
vorzugsweise auch folgendes auf: eine Waagendisplay- und -kommunikationsschaltung 18,
eine erste periphere Kommunikationsschaltung 20, eine zweite
periphere Kommunikationsschaltung 22, eine Waagenkommunikationsschaltung 24 zum
Hostterminal und eine Lesegerät/Waagenkommunikationsschaltung 26 zum
Hostterminal, wobei jede der Schaltungen 18–26 dem
ASIC 12 Signale zuführt
und diese Signale von den einzelnen Schaltungen 18–26 zunächst durch
den Spannungsfilter 28 geleitet werden. Der ASIC 12 führt einem
Laser 29 auch ein Lasersteuersignal und einem Motor 30 Befehle
zu. Der Motor 30 weist eine Motorwelle 30a auf,
an die eine optische Baugruppe 32 angeschlossen ist. Die
Baugruppe 32 kann entsprechend feste Spiegel oder andere
optische Komponenten (nicht genauer gezeigt) aufweisen, die so angebracht
sind, dass sie sich auf einem rotierenden Element 33 drehen.
Da der Motor 30 als Reaktion auf Signale vom ASIC 12 angetrieben
wird, wird das rotierende Element 33 vom Motor 30 bewegt. Wenn
der Laser 29 Licht ausstrahlt, wird dieses von der Baugruppe 32 zu
einem optischen Korb reflektiert, der das Licht so richtet, dass
es auf ein Strichcode-Etikett 34 fällt, wenn sich dieses im Sichtfeld
des Lesegeräts befindet.
Die vorliegende Erfindung kann bei einem bioptischen Lesegerät NCR 7875
verwendet werden.
-
Wenn
Licht auf das Strichcode-Etikett 34 auftrifft, wird es
zur optischen Baugruppe 32 zurückreflektiert, aufgefangen
und an eine analoge Videovorverarbeitungsschaltung 52 weitergeleitet,
die dem ASIC 12 VIDEO0- und VIDEO1-Signale zuführt.
-
Das
Strichcode-Lesegerät 10 enthält auch
einen Mikroprozessor 42. Interrupt-, Verarbeitungs-, UART- und
andere E/A-Signale werden zwischen dem ASIC 12 und dem
Mikroprozessor 42 übertragen.
Das Strichcode-Lesegerät 10 enthält weiterhin
eine Eingabe/Ausgabe-Einheit 40, die Frontplattenschalter,
einen Fotodetektor und LEDs aufweist. Der Mikroprozessor 42 kann
Einstellwerte von den Frontplattenschaltern übernehmen, indem er ein Schalterpositionssignal
von der Eingabe/Ausgabe-Einheit 40 empfängt. Der Mikroprozessor stellt
den Zustand der LEDs an der Eingabe/Ausgabe-Einheit 40 durch Übertragen
eines LED-Zustandssignals zur
Eingabe/Ausgabe-Einheit 40 ein.
-
Das
Strichcode-Lesegerät 10 weist
außerdem
vorzugsweise Fähigkeiten
zur Tonerzeugung auf, einschließlich
einer Tonausgabeschaltung 48, eines Lautsprechers 50,
einer Schaltung 36 für
die automatische Anpassung der Lautstärke und eines Mikrofons 38.
Das Strichcode-Lesegerät 10 enthält auch
RAM- und ROM-Speicher 44 bzw. 46.
-
Zwischen
dem ASIC 12, dem Mikroprozessor 42, dem RAM-Speicher 44,
dem ROM-Speicher 46 und der Tonausgabeschaltung 48 verkehrt
ein Datenbus. Zwischen dem ASIC 12, dem Mikroprozessor 42,
dem RAM-Speicher 44 und dem ROM-Speicher 46 verkehrt auch ein
Adress- und Steuerbus.
-
Das
Strichcode-Lesegerät 10 erzeugt
Töne und
generierte Stimmsignale, um mit der Bedienperson zu kommunizieren
und für
diese Rückmeldungen
bereitzustellen. Die Tonausgabeschaltung 48 empfängt Signale vom
ASIC 12 und vom Mikroprozessor 42, die Anweisungen
dazu enthalten, welche Töne
zu erzeugen sind und wann, und greift für das Erzeugen von Tönen auf
Daten aus dem RAM 44 und dem ROM 46 zu. Die Töne werden
an den Lautsprecher 50 weitergeleitet.
-
Der
Motor 30 treibt das rotierende Element 33 an.
Der Motor enthält
vorzugsweise eine Hall-Effekt-Einrichtung, die jedesmal, wenn der
Motor eine Umdrehung macht, eine festgelegte Anzahl Impulse erzeugt.
Die Impulse werden in Form eines Motorimpulssignals zum ASIC 12 und
zum Mikroprozessor 42 übertragen.
Der ASIC 12 und der Mikroprozessor 42 können die
Motorimpulssignale dazu verwenden, mit einer genauen Zählung der
verstrichenen Zeit zu beginnen, da sich der Motor 30, wenn
er hochgefahren ist und normal arbeitet, mit einer relativ unveränderlichen
Geschwindigkeit dreht.
-
Das
Motorimpulssignal wird auch zum Synchronisieren eines Zeitgebers
benutzt, der zum Prozessor 42 gehört und den Winkel des Motors 30 zu
einem bestimmten Zeitpunkt angibt. Zu einem geeigneten Zeitpunkt
vor dem Beginn des Betriebs des Strichcode-Lesegeräts 10 wird
der Prozessor 42 mit Informationen über die Anzahl der Impulse
einer Motorumdrehung und die als Referenz für den Beginn der Einleseumdrehung
zu verwendende Impulsflankenpolarität programmiert. Der ASIC 12 setzt
diese Informationen beim Bestimmen des Motorwinkels 30 ein,
was nachfolgend noch ausführlicher
beschrieben wird.
-
2 ist eine schematische Darstellung, die
die Hauptsteuerschaltung 15, die der ASIC 12 enthält, genauer
veranschaulicht. Die Hauptsteuerung 15 enthält eine
Decodier- und Auswahlsteuerschaltung 102 und eine Vorderflanken-
sowie eine Hinterflankenerfassungsschaltung 104 bzw. 106.
Die Hauptsteuerung 15 enthält auch ein Frequenzteilungsregister 108,
ein Motorkonfigurationsregister 110, einen Multiplexer 112,
ein Motordrehzahlregister 114, ein Laser-aus-Register 116 und
eine Lasersteuerschaltung 118, die mit der Decodier- und
Auswahlsteuerschaltung 102 und auch mit dem Datenbus 43 verbunden
sind.
-
Bei
einer typischen Funktion des ASIC 12 empfängt die
Hauptsteuerung 15 Adress-, Steuer- und Dateneingaben vom
Mikroprozessor 42. Die Decodier- und Auswahlsteuerschaltung 102 wählt als
Reaktion auf Adress- und Steuersignale vom Mikroprozessor 42 das
Frequenzteilungsregister 108, das Motorkonfigurationsregister 110,
das Motordrehzahlregister 114, das Laser-aus-Register 116 oder
die Lasersteuerschaltung 118 aus. Es werden gleichzeitig
vom Mikroprozessor 42 Daten auf dem Datenbus 43 abgelegt
und in die ausgewählte
Einrichtung geladen.
-
Die
Hauptsteuerung 15 weist ebenso einen Zeitstempeltakt 130 auf,
der einen 14-Bit-Zeitstempelwert erzeugt. Der Zeitstempeltakt 130 wird
von einem Taktfrequenzteiler 120 gesteuert. Der Taktfrequenzteiler
empfängt
eine konstante Takteingabe, und die Geschwindigkeit, mit der der
Taktfrequenzteiler eine Ausgabe erzeugt, wird von einem im Frequenzteilungsregister 108 gespeicherten
Wert gesteuert. Der Frequenzteilungswert ist so eingestellt, dass
der Maximalwert der Bit 0–9
des Zeitstempelwerts wenig größer als
die Dauer einer ganzen Umdrehung des Motors 30 ist, wenn
sich dieser mit einer vorgegebenen Mindestdrehzahl dreht. Der Taktfrequenzteiler
führt dem
Zeitstempelzähler 130 eine
Takteingabe zu, so dass der Takt des Zeitstempelzählers 130 jedesmal
aktiviert wird, wenn der Taktfrequenzteiler inkrementiert. Der Zeitstempelzähler 130 erzeugt das
Signal ZS, das dem A-Eingang eines Motordrehzahlkomparators 126 zugeführt wird.
Der Motordrehzahlkomparator 126 ist ein A > B-Komparator, und
er empfängt
an seinem B-Eingang Daten vom Motordrehzahlregister 114,
die eine erste vorgegebene zulässige
Mindestdrehzahl des Motors 30 angeben. Wenn sich der Motor
mit einer geringeren Drehzahl als dieser zulässigen Mindestdrehzahl dreht, übersteigt
der Wert ZS den im Motordrehzahlregister gespeicherten Wert, und
somit übersteigt
das A-Eingangssignal des Komparators 126 sein B-Eingangssignal. Der
Komparator 126 erzeugt dann ein Interrupt-Signal für den Mikroprozessor 42, der
auf diese Bedingung reagieren kann.
-
Das
Signal ZS wird dann auch dem A-Eingang des Laserkomparators 128 zugeführt, einem
A < B-Komparator,
der an seinem B-Eingang auch Daten vom Laser-aus-Register 116 empfängt, die
einen zweiten vorgegebenen Mindestwert angeben: die zulässige Mindestdrehzahl
für den
Motor 30, bei der der Laser 29 betrieben werden
darf. Das Ausgangssignal des Laserkomparators 128 wird
einem UND-Gatter 134 zugeführt, das
auch ein Eingangssignal von der Lasersteuerung 118 empfängt. Das
UND-Gatter 134 stellt ein Laser-ein-Signal bereit, das
bestimmt, ob der Laser 29 an- oder ausgeschaltet ist. Der Laser 29 kann
daher nur dann arbeiten, wenn die Lasersteuerung 118 den
Befehl ausgibt, den Laser 29 einzuschalten, und wenn das Signal
ZS angibt, dass die Drehzahl des Motors 30 über dem
zweiten vorgegebenen Mindestwert liegt. Wenn die Drehzahl des Motors 30 zu
gering ist, übersteigt
das A-Eingangssignal des Laserkomparators 128 das B-Eingangssignal,
das Ausgangssignal des Laserkomparators 128 geht auf LOW,
wodurch das UND-Gatter 134 sowie das Laser-ein-Signal auf
LOW gehen und der Laser 29 ausgeschaltet wird.
-
Das
Motorkonfigurationsregister 110 speichert Daten, die die
Anzahl der Impulse pro Umdrehung und die Polarität der als Grundlage für die Synchronisation
dienenden Flanke angeben. Die Informationen über die als Grundlage für die Synchronisation
dienende Flanke werden dem Multiplexer 112 zugeführt, der
das richtige Flankenerfassungssignal vom Detektor 104 oder 106 zum
Zeitstempelzähler 130 multiplexiert.
Ein Impulskomparator 122 empfängt die Anzahl Impulse pro
Umdrehung und führt
dem Taktmotorimpulszähler 124 und
dem Zeitstempelzähler 130 ein
Rückstell-Eingangssignal zu
und einem Motorumdrehungszähler 132 ein
Takteingangssignal.
-
Wenn
sich der Motor 30 dreht, wird ein Motorimpulssignal an
den ASIC 12 gesendet, der es an dem Vorderflanken- und
dem Hinterflankendetektor 104 bzw. 106 empfängt. Der
Vorderflanken- und der Hinterflankendetektor 104 bzw. 106 erzeugen
jeweils ein Ausgangssignal, das dem Multiplexer 112 zugeführt wird.
Der Multiplexer 112 liefert dann ein Ausgangssignal, das
dem Taktmotorimpulszähler 124 zugeführt wird.
Der Taktmotorimpulszähler 124 zählt die
vom Multiplexer 112 erhaltenen Eingangssignale und führt die
Zählung
dem Impulskomparator 122 zu. Der Impulskomparator 122 empfängt, wie
oben erwähnt,
ebenfalls ein Eingangssignal vom Motorkonfigurationsregister 110,
das die Anzahl der Impulse in einer ganzen Umdrehung angibt. Wenn
die vom Taktmotorimpulszähler 124 erzeugte
Zählung
dem im Motorkonfigurationsregister 110 gespeicherten Wert
entspricht, erzeugt der Impulskomparator einen Impuls, der den Zeitstempelzähler 130 und
den Taktmotorimpulszähler 124 zurückstellt
und den Takt des Motorumdrehungszählers 132 inkrementiert.
Der Motorumdrehungszähler 132 liefert
ein Signal MU, das sich mit dem Signal ZS vom Taktzeitstempelzähler verknüpft und
die Zeitstempelzählung
erzeugt, deren Verwendung nachfolgend in Verbindung mit der Erläuterung von 3 weiter
beschrieben wird.
-
3 ist
eine schematische Darstellung, die die erste Videoschaltung 17 genauer
veranschaulicht. Die erste Videoschaltung 17 ähnelt der
zweiten Videoschaltung 19, die der Einfachheit halber nicht
genauer beschrieben wird, und arbeitet parallel dazu.
-
Die
erste Videoschaltung 17 enthält einen Intervallzähler 302,
einen Flankendetektor 304, eine Begrenzungsregisterschaltung 306 der
offenen Filter und einen Vorpuffer 308. Der Vorpuffer 308 enthält einen Flag-Vorpuffer 308a und
ein Intervallvorpufferschieberegister 308b. Die erste Videoschaltung 17 enthält weiterhin
ein ZStempelvorpufferschieberegister 310, eine Komparatorschaltung 312,
Intervallsummen 314, eine FIFO-Steuerschaltung 316,
einen Multiplexer 318, einen UPC-Filter 320 und
eine Intervall-FIFO-Schaltung 322.
-
Die
erste Videoschaltung 17 empfängt ein Videoeingangssignal,
das in den Flankendetektor 304 geleitet wird. Der Flankendetektor 304 erzeugt
ein Taktverschiebungs-Ausgangssignal,
das dem Flag-Vorpufferschieberegister 308a und dem ZStempelvorpufferschieberegister 310 zugeführt wird.
Das Taktverschiebungs-Ausgangssignal wird auch dem Intervallzähler 302 als
Rückstell-Eingangssignal
zugeführt.
Der Flankendetektor 304 sorgt dafür, dass der Intervallzähler 302 an
einem Videoübergang
gestartet wird, einem 12-Bit-Signal
INT, das den Wert und die Videopolarität des Intervalls darstellt.
Das Signal INT wird beim nächsten Übergang
des Videosignals in das Intervallvorpufferschieberegister verschoben,
was auch den Intervallzähler 302 zurückstellt,
wodurch die Zeitsteuerung des nächsten
Intervalls gestartet wird. Diese Intervalle stellen das Zeitintervall
oder gewissermaßen
die Breite der Striche und Zwischenräume dar, aus denen ein eingelesener
Strichcode besteht.
-
Gleichzeitig
werden das Zeitstempelsignal, das den 10-Bit-Zeitstempel darstellt, und die 4 niedrigstwertigen
Bit des Motorumdrehungszählers 132 in
das Zeitstempelvorpufferschieberegister 310 verschoben. Somit
wird für
jeden Videoübergang
die Dauer jedes Videointervalls, die Polarität und der zeitliche Bezug zur Motorposition
erfasst.
-
Die
Videointervalle werden auch durch die Intervallsumme 314 und
die Filterschaltung 320 geleitet, die bestimmen, ob der
Videodatenstrom vorgegebenen Bezügen
der Zeitsteuerung entspricht, woraus hervorgeht, ob er gültige Strichcode-Daten darstellt.
Wenn beispielsweise das Zeitintervall zwischen dem Anfang und dem Ende
der Videodaten zu lang ist, dann kommen die Daten nicht von einem
gültigen
Einlesevorgang eines Strichcodes und werden verworfen. Auf ähnliche
Weise wird ein Einlesevorgang ebenso verworfen, wenn das Zeitintervall
zwischen dem Anfangs- und dem Endzeichen eines Strichcodes zu kurz
ist. Anfang und Ende von gültigen
Strichcode-Daten werden durch im Flag-Vorpufferschieberegister 308a gesetzte
Flag-Bit markiert. Die Flag-Bit werden dann zum entsprechenden Intervalldatenwort
hinzugefügt,
das im Intervallvorpufferschieberegister 308b gespeichert
ist. Die Flags werden von der FIFO-Steuerung 316 dazu verwendet
zu bestimmen, welche Intervalle in die Intervall-FIFO 322 geschrieben
werden sollen, die die Intervalldaten für den Mikroprozessor 42 zwischenspeichert.
Wenn der Anfang eines Blockintervalls in die Intervall-FIFO-Schaltung 322 geschrieben
wird, wird vor dem Intervalldatenwort auch der entsprechende Zeitstempelwert
in die Intervall-FIFO-Schaltung 322 geschrieben. Dies geschieht
durch das Weiterleiten des Zeitstempelsignals vom ZStempelvorpufferschieberegister 310 und
dem Ausgang des Intervallvorpufferschieberegisters 308 zum
Multiplexer 318, der unter der Steuerung der FIFO-Steuerschaltung 316 arbeitet
und darauf Einfluss hat, ob die Zeitstempel- oder Intervalldaten
gezielt in einen Komparator 312 geschrieben werden. Der
Zeitstempelwert wird auch zum Komparator 312 geleitet,
wo das Signal mit dem Inhalt der Register in der Begrenzungsregisterschaltung 306 der
offenen Filter verglichen wird.
-
Die
Begrenzungsregisterschaltung 306 der offenen Filter enthält vier
Gruppen Begrenzungsregister für
die offenen Filter, in die der Mikroprozessor 42 Zeitwerte
für den
Vergleich mit den vom Zeitstempelvorpuffer erhaltenen Zeitstempelwerten
laden kann. Der Mikroprozessor 42 kann durch Analysieren
der aus der Intervall-FIFO 322 gelesenen Intervalldaten
feststellen, dass für
das richtige Decodieren der Strichcode-Daten mehr Intervalle notwendig
sind, als die Gruppe digitaler Filter 320 zulässt. Der
Mikroprozessor 42 berechnet dann die Zeitwerte für nebeneinander
liegende Laserabtaststrahlen und lädt diese Begrenzungen in ein
oder mehrere der Begrenzungsregister für die offenen Filter in der
Begrenzungsregisterschaltung 306 der offenen Filter. Der
Inhalt der Register in der Begrenzungsregisterschaltung 306 der
offenen Filter wird der Komparatorschaltung 312 zum Vergleich
mit dem Zeitstempelsignal zugeführt.
Wenn das Zeitstempelsignal innerhalb der von der Begrenzungsregisterschaltung 306 der
offenen Filter erhaltenen zeitlichen Begrenzungen liegt, sendet die
Komparatorschaltung 312 ein Offene-Filter-Signal an die
FIFO-Steuerung 316, die daraufhin zulässt, dass alle folgenden Intervalle
in die Intervall-FIFO 322 geschrieben werden, solange dieses
Offene-Filter-Signal vorliegt. Dieses Signal hebt Anfangs- oder
Endflag-Zustandssignale vom Flag-Vorpuffer 308a auf.
-
Wie
in 2 gezeigt weist der ASIC 12 auch
eine zweite Videoschaltung 19 auf, die zum ersten Videoblock 17 parallel
arbeitet. Die den Videoschaltungen 17 und 19 zugeführten Videosignale
VIDEO0 und VIDEO1 können
vorteilhafterweise mit verschiedenen Filtern und Schwellwerten im
analogen Videoprozessor 52 gefiltert und beschränkt worden
sein. Die empfangenen Videosignale können daher mit unterschiedlich
konditionierten analogen Schaltungen erfasst werden. Die richtige
Wahl des Filterns und Beschränkens
führt zu einem
breiteren Erfassungsbereich des vom Strichcode 34 reflektierten
Lasersignals.
-
Um
eine Ausgangsposition des rotierenden Elements 33 zu ermitteln,
ermittelt das Strichcode-Lesegerät 10 gemäß der vorliegenden
Erfindung einen Ausgangsdrehwinkel des rotierenden Elements 33.
Der Ausgangsdrehwinkel wird im RAM 44 gespeichert. wenn
der Mikroprozessor 42 den Drehwinkel des Motors 30 angebende
Daten empfängt,
werden diese Daten nachverfolgt, um den Winkelversatz des rotierenden
Elements von der Ausgangsposition zu bestimmen, woraus der Drehwinkel
des rotierenden Elements 33 berechnet wird. Der Drehwinkel
des rotierenden Elements 33 kann dann für die Berechnung des Ausgangspunktes und
der Richtung des Lichts vom rotierenden Element 33 verwendet
werden, was entweder durch eine direkte Berechnung erfolgen kann
oder vorzugsweise durch die Verwendung einer Nachschlagetabelle
wie der in Tabelle 1 veranschaulichten, die am Ende der vorliegenden
Patentschrift zu finden ist.
-
4 ist
eine Querschnittsansicht des Strichcode-Lesegeräts 10. Bei dem Strichcode-Lesegerät 10 handelt
es sich vorzugsweise um ein bioptisches Lesegerät mit Top-Down-Lesevermögen wie beispielsweise das
NCR-Lesegerätmodell
7875. Das Strichcode-Lesegerät 10 weist
ein Gehäuse 402 mit
einer im wesentlichen vertikalen Öffnung 404 und einer
im wesentlichen horizontalen Öffnung 406 auf.
Das Lesegerät 10 strahlt aus
der vertikalen Öffnung 404 eine
Reihe von Abtastlinien aus, auf eine Linie 408 davon konzentriert
sich die vorliegende Erläuterung.
Aus Gründen
der Übersichtlichkeit
sind die übrigen
Linien nicht gezeigt. Die Abtastlinie 408 tritt wieder
in die horizontale Öffnung 406 ein
und trifft auf eine Synchronisationsmarkierung 410, die sich
am Boden 412 des Strichcode-Lesegeräts 10 befindet. Da
sie sich innerhalb des abgedichteten Lesegeräts 10 befindet, ist
die Markierung 410 vor Umwelteinflüssen geschützt und unterliegt keinerlei
Abnutzung. Hinzu kommt, dass Artikel, die sich innerhalb der Einlesezone
der vertikalen und der horizontalen Öffnung 404 und 406 befinden,
die Sicht zwischen dem Laser 34 und der Synchronisationsmarkierung 410 blockieren, wenn
sie dort hindurchgezogen werden. Somit stört die Synchronisationsmarkierung 410 normale
Einlesevorgänge
nicht.
-
Die
Synchronisationsmarkierung 410 besteht vorzugsweise aus
einem Code-128-Fragment mit einem Anfangszeichen mod 103 und einem
Endzeichen. Bei normalem Betrieb verwirft der Filter 320,
wie oben erwähnt,
kurze Einlesevorgänge
wie den der Synchronisationsmarkierung 410, wodurch die
Verarbeitungsanforderungen reduziert werden. Der Mikroprozessor 42 kann
jedoch so programmiert werden, dass er den Filter 320 öffnet, damit
Daten von der Synchronisationsmarkierung 410 empfangen
und verarbeitet werden können, und
dies geschieht beim Einschalten des Lesegeräts 10 und zu anderen
derartigen Zeitpunkten, wenn die Synchronisierung durchgeführt werden
muss oder soll.
-
Beim
Einschalten des Motors 30 wird der Filter 320 geöffnet, und
der Mikroprozessor 42 sucht nach den Impulsen von der Synchronisationsmarkierung 410 und
dem Motor. Aus diesen Informationen und der Motordrehzahl berechnet
der Mikroprozessor 42 den Versatz zwischen den Impulsen
und der Synchronisationsmarkierung 410. Der Filter 320 wird
dann geschlossen. Da die Synchronisationsmarkierung 410 mit
einem bekannten Versatz vom Winkel vor der Drehung des rotierenden
Elements entfernt vorliegt (im Fall des bioptischen Lesegeräts NCR 7875
sind dies etwa 13,2 Grad zur Mittellinie der Markierung), lässt sich
ein Bezug des Winkels vor der Drehung des rotierenden Elements 33 zur
Motorimpulsreferenzposition einer bestimmten Einheit herstellen.
Jedesmal, wenn der Motor 30 wieder gestartet wird, wird
der unterschiedliche Versatz vom Mikroprozessor 42 neu
berechnet. Daher wird ein Ersatz der Einheit aus Motor und rotierendem
Element vor Ort nicht zu einem Synchronisationsverlust führen.
-
Bei
normalem Betrieb verfolgt der Mikroprozessor 42 das Auftreten
von Strichcode-Daten nach und setzt den Zeitpunkt, an dem sie auftreten,
mit dem Winkel vor der Drehung des rotierenden Elements 33 in Beziehung.
Auf der Grundlage dieser Informationen und der Nachschlagetabelle
kann der Ausgangspunkt und die Richtung des Laserstrahls zum Zeitpunkt
der Kreuzung mit der Markierung berechnet werden.
-
5 ist
ein Flussdiagramm, das ein Verfahren 500 zum Synchronisieren
der Ausgangsposition einer optischen Baugruppe eines Strichcode-Lesegeräts darstellt,
wobei die optische Baugruppe einen sich drehenden Teil oder ein
rotierendes Element aufweist, der/das Licht von einem Laser auf
ein Abtastfeld leitet und von dem Abtastfeld zurückreflektiertes Licht empfängt. Bei
Schritt 502 wird das Strichcode-Lesegerät eingeschaltet und mit der
Initialisierung begonnen. Bei Schritt 504 wird das Filtern
geöffnet,
um den Empfang von Initialisierungsdaten zu ermöglichen, die normalerweise
während
des normalen Betriebs des Lesegeräts verworfen werden. Bei Schritt 506 wird
an den Motor des rotierenden Elements und an den Laser Strom angelegt.
Der Motor besitzt eine damit verbundene impulserzeugende Einrichtung,
die in regelmäßigen Abständen Impulse erzeugt,
wobei die Impulse in gleich großen
Abständen
bei der Winkeldrehung des Motors vorkommen, wenn dieser mit im wesentlichen
konstanter Drehzahl arbeitet. Bei Schritt 508 werden die
Impulse überwacht
und gezählt.
Bei Schritt 510 wird Licht vom Laser ausgestrahlt und vom
rotierenden Element geleitet. Bei Schritt 512 überstreicht
das Licht eine Synchronisationsmarkierung und wird zum Lesegerät zurückreflektiert
und von diesem geleitet. Das Lesegerät erkennt, dass das reflektierte
Licht von der Synchronisationsmarkierung kommt. Bei Schritt 514 wird
die Winkelposition des Motors initialisiert. Da Licht vom Lesegerät bei einer
bekannten Ausrichtung des rotierenden Elements auf die Synchronisationsmarkierung
auftrifft, ist nunmehr die Ausgangswinkelposition des rotierenden
Elements genau bekannt. Bei Schritt 516 werden Impulse
vom Motor überwacht
und gezählt,
und die Winkelposition des Motors wird fortlaufend aktualisiert.
Die aktualisierte Winkelposition des Motors wird in Bezug zur Ausgangsposition
des rotierenden Elements bestimmt, damit man genaue Informationen über die
Position des rotierenden Elements erhält. Bei diesem Schritt wird
auch fortlaufend die Zeit aktualisiert.
-
Bei
Schritt 518 erfolgt ein Einlesevorgang oder ein anderes
Ereignis von Interesse, und bei 520 wird die Zeit und die
Winkelposition des Motors erfasst. Bei Schritt 522 wird
die Winkelposition des Motors mit der Winkelposition des Motors
bei der Ausgangsposition des rotierenden Elements verglichen, wobei
die Ausgangsposition des rotierenden Elements als Referenz verwendet
wird, damit bei dem Ereignis von Interesse eine genaue Position
des rotierenden Elements bereitgestellt wird. Die Schritte 518–522 werden
wiederholt, bis im Schritt 524 eine Unregelmäßigkeit
erfasst wird, wie beispielsweise ein Abschalten des Lesegeräts. Alternativ
dazu kann in vorher festgelegten Abständen eine Neusynchronisierung
durchgeführt
werden.
-
Eine
Nachschlagetabelle wie die unten angeführte Tabelle 1 kann auf geeignete
Weise eingesetzt werden.
-
-
-