Der
Erfindung liegt die Aufgabe zugrunde, eine Vorrichtung zum optischen
Abtasten einer laufenden Warenbahn der eingangs genannten Art zu schaffen,
die eine einfache und feinfühlige
Justierung des Abtastbereichs der CCD-Kamera ermöglicht.
Diese
Aufgabe wird erfindungsgemäß mit den
Merkmalen des Patentanspruchs 1 gelöst.
Die
Vorrichtung gemäß Anspruch
1 dient zum optischen Abtasten einer laufenden Warenbahn, insbesondere
zur optischen Oberflächenkontrolle. Dabei
sollen insbesondere Web-, Druck- und Färbefehler erkannt werden. Grundsätzlich ist
es auch vorstellbar, die Vorrichtung zum Erfassen der Randkante oder
einer aufgedruckten Markierung der Warenbahn einzusetzen, um den
Bahnlauf zu erfassen. Die Vorrichtung ist von mindestens einer gegen
die Warenbahn gerichteten CCD-Kamera gebildet, die ein Objektiv
und ein CCD-Empfangselement aufweist. Da sich die Warenbahn an der
CCD-Kamera vorbeibewegt, ist es grundsätzlich ausreichend, als CCD-Empfangselement
ein Zeilenempfangselement einzusetzen, bei dem sämtliche lichtempfindlichen Empfänger in
einer Reihe nebeneinander angeordnet sind. Durch Erstellen mehrerer,
zeitlich versetzter Zeilenaufnahmen kann aufgrund der Bewegung der Warenbahn
ein vollständiges
Bild der Oberfläche
der Warenbahn gewonnen werden. Insbesondere bei breiten Warenbahnen
reicht der Abtastbereich einer einzelnen CCD-Kamera nicht aus, um
die Oberfläche der
Warenbahn über
ihre gesamte Breite zu erfassen. Daher werden im allgemeinen mehrere CCD-Kameras
eingesetzt, die über
die Breite der Warenbahn verteilt sind. Um eine lückenlose
Abtastung der Warenbahn mit den CCD-Kameras zu erzielen, ist es wichtig,
die Abtastbereiche mit geringem Überlapp
korrekt aufeinander und auf die schmalbandig beleuchtete Warenbahn
einzustellen. Doch auch bei Verwendung einer einzigen CCD-Kamera
ist es wichtig, diese so zu positionieren, daß sich die beleuchtete Warenbahn
im Abtastbereich der CCD-Kamera befindet. Um insbesondere die Feinjustierung der
Abtastbereiche der CCD-Kameras vorzunehmen, ist erfindungsgemäß vorgesehen,
das CCD-Empfangselement der CCD-Kamera relativ zu dessen Objektiv
quer zu dessen optischer Achse zu verstellen. Damit genügt es, das
relativ leichte CCD-Empfangselement zu verstellen, ohne das Objektiv
mit der gegebenenfalls vorhandenen Autofocus-Steuereinrichtung mitbewegen
zu müssen.
Da das Objektiv der CCD-Kamera mit dem CCD-Empfangselement nicht mitbewegt wird,
gerät letzteres
zwar außerhalb der
optischen Achse des Objektivs, dies kann jedoch insbesondere für die Feinjustierung
des Abtastbereichs leicht hingenommen werden. Um die Abtastbereiche
der einzelnen CCD-Kameras mit geringem, vorgegebenem Überlapp
aufeinander einstellen zu können,
ist es wichtig, die absolute Position der einzelnen CCD-Kameras
an der Warenbahn zu erfassen. Zu diesem Zweck ist eine linealförmige Vorrichtung
zum Erfassen der Lage der CCD-Kamera
vorgesehen. Diese CCD-Kamera weist zumindest ein CCD-Empfangselement
auf, das eine digitale Codierung der Vorrichtung erfaßt. Die
Codierung besteht aus einer Folge von Bits, die vom CCD-Empfangselement
abgetastet werden. Insbesondere zur Abtastung einer Warenbahn mit
mehreren über
die Breite der Warenbahn verteilten CCD-Kameras ist jedoch ein Anfahren
eines Meßbereichs-Nullpunkts
durch die einzelnen CCD-Kameras zu aufwendig. Außerdem kann dies aufgrund der
großen
Verstellwege nicht durch einfaches Verschieben des CCD-Empfangselements
ohne gleichzeitige Verschiebung des Objektivs realisiert werden.
Deshalb ist erfindungsgemäß vorgesehen,
daß die
die Codierung bildende Folge von Bits derart ausgebildet ist, daß die darin enthaltenen
n-Bit-Codes eindeutig die absolute Position des Objekts wiedergeben.
Um
eine exakte Ausrichtung des Abtastbereichs der CCD-Kamera zu erzielen,
reicht es gemäß Anspruch
2 aus, das CCD-Empfangselement in Warenbahnlaufrichtung und quer
zur optischen Achse des Objektivs verschiebbar zu halten. Eine zusätzliche
Verschiebung des CCD-Empfangselements quer zur Warenbahnlaufrichtung
ist grundsätzlich
entbehrlich, da diese Ausrichtungsfehler durch Wahl eines entsprechen den Überlapps
zwischen den CCD-Kameras berücksichtigt
werden können.
Um
die einzelnen Bildzeilen, die von den CCD-Empfangselementen erzeugt
werden, leicht zu einem Bild zusammensetzen zu können, ist es wichtig, daß diese
parallel zueinander ausgerichtet sind. Im gesamten Aufbau der Halterungen
der CCD-Kameras und im CCD-Empfangselement selbst sind jedoch Fertigungstoleranzen
bezüglich
der Ausrichtung der Empfangszeile des CCD-Empfangselements enthalten,
die zu einer für
die Auswertung des empfangenen Bildes relevanten Abweichung dieser Ausrichtung
von der idealen Parallelität
führen.
Deshalb ist es gemäß Anspruch
3 günstig,
wenn das CCD-Empfangselement auch um eine in etwa parallel zur optischen
Achse des Objektivs ausgerichtete Drehachse verdrehbar ist. Im allgemeinen
genügt eine
Verdrehung um 1° bis
3°, da die
erwähnten
Fertigungstoleranzen ausreichend klein sind. Damit kann die Lichtquelle
ein besonders schmales Lichtbündel
aussenden, wobei trotzdem gewährleistet
ist, daß die
CCD-Kameras nur
den beleuchteten Abschnitt der Warenbahn erfassen.
Um
die geforderte Verstellbarkeit des CCD-Empfangselements möglichst
einfach realisieren zu können,
ist es gemäß Anspruch
4 vorteilhaft, dieses auf einem Drehtisch zu halten, der drehbar
an einem Schiebeschlitten abgestützt
ist. Damit kann das CCD-Empfangselement sehr einfach sowohl gedreht
als auch quer zur optischen Achse des Objektivs verschoben werden,
wobei der erforderliche mechanische Aufwand trotzdem gering bleibt.
Zur
Erzielung einer präzisen
Verschiebung bzw. Verdrehung des CCD-Empfangselements ist es wichtig,
den Drehtisch bzw. den Schiebeschlitten möglichst spielfrei anzutreiben.
Da zum Antrieb des Drehtisches bzw. des Schiebeschlittens stets
spielbehaftete Getriebe erforderlich sind, ist es gemäß Anspruch
5 günstig,
dieses Spiel durch mindestens eine am Drehtisch bzw. Schiebeschlitten
angreifende Feder auszuschalten.
Um
einen einfachen und gleichzeitig präzisen Antrieb des Drehtisches
und des Schiebeschlittens zu gewährleisten,
ist es gemäß Anspruch
6 günstig,
wenn am Drehtisch zwei Spindelmuttern angreifen. In jede Spindelmutter
greift eine von einem Stellmotor angetriebene Gewindespindel ein,
wobei als Stellmotor vorzugsweise ein Servo- oder Schrittmotor eingesetzt
wird. Durch synchron gleichsinniges Verdrehen der beiden Gewindespindeln
wird der Schiebeschlitten ohne Drehung des Drehtisches entlang einer
Führung
verschoben. Durch synchron gegensinniges Verdrehen der beiden Gewindespindeln wird
dagegen der Drehtisch verdreht, ohne den Schiebeschlitten zu bewegen.
Bei der Verdrehung des Drehtisches führen die Gewindespindeln keine reine
Schiebebewegung aus, sondern sie werden zusätzlich geringfügig verschwenkt.
Da die erforderlichen Drehwinkel zur Verdrehung des Drehtisches sehr
gering sind, ist es zur Vereinfachung des Aufbaus der Vorrichtung
zweckmäßig, die
Gewindespindel in der Spindelmutter bzw. im Stellmotor begrenzt verschwenkbar
auszubilden, so daß keine
zusätzlichen
Mittel zum Ausgleich der Schwenkbewegung der Gewindespindel erforderlich
sind. Vorzugsweise greift die Gewindespindel mit Spiel in die Spindelmutter
bzw. in den Stellmotor ein, so daß die erforderliche Schwenkbewegung
der Gewindespindel von diesem Gewin despiel aufgenommen werden kann. Durch
die vorgeschlagene einseitige Federbelastung des Drehtisches bzw.
des Schiebeschlittens wirkt sich dieses Spiel nicht auf die Präzision der
Bewegung des CCD-Empfangselements aus.
Um
die Abtastbereiche der einzelnen CCD-Kameras mit geringem, vorgegebenem Überlapp
aufeinander einstellen zu können,
ist es wichtig, die absolute Position der einzelnen CCD-Kameras an
der Warenbahn zu erfassen. Gemäß Anspruch
7 ist vorgesehen, daß jede
beliebige Teilfolge von n unmittelbar aufeinander folgenden Bits
einen eindeutigen n-Bit-Code liefert. In diesem Fall kann an jeder beliebigen
Stelle innerhalb der Folge von Bits mit dem Lesen von n-Bits be gonnen
werden, wobei trotzdem gesichert ist, daß der auf diese Weise eingelesene
Code zur eindeutigen Positionsbestimmung des Objekts geeignet ist.
Damit reicht das Erfassen von n aufeinanderfolgenden Bits der Folge
völlig
aus, um die Position zu bestimmen, so daß nur ein sehr kleiner Ausschnitt
der Folge von Bits ausgewertet werden muß.
Grundsätzlich ist
es möglich,
bei Zugrundelegung von n-Bit-Codes
für die
absolute Position des Objekts 2n unterschiedliche
n-Bit-Codes in der Folge unterzubringen. Für die Anwendung dieser Codierung
in der Praxis reicht es jedoch im allgemeinen aus, wenigstens 2n-1 n-Bit-Codes unterzubringen.
Soll
die Vorrichtung zum Codieren von Winkeln eingesetzt werden, so ist
es gemäß Anspruch
9 vorteilhaft, wenn die Folge von Bits zyklisch ist. In diesem Fall
kann das letzte Bit der Folge unmittelbar an das erste Bit angesetzt
werden, wobei auch im Übergangsbereich
zwischen dem letzten und ersten Bit eindeutige n-Bit-Codes gegeben
sind.
Um
zusätzlich
zur absoluten Position des Objekts auch ein Taktsignal zur Bestimmung
der Breite jedes Bits zur Verfügung
zu haben, ist es gemäß Anspruch
10 günstig,
wenn jedes Bit der Folge manchestercodiert ist. Dabei wird jedem
0-Bit die Folge 0-1 und jedem 1-Bit die Folge 1-0 zugeordnet, so daß bei jedem
Bit ein 0-1- bzw. 1-0-Übergang
stattfindet. Selbstverständlich
ist es auch vorstellbar, die Codierung der 0- und 1-Bits umzukehren.
Um
eine Codierung mit den vorgenannten Eigenschaften zu erstellen,
hat sich das Verfahren gemäß Anspruch
11 bewährt.
Dabei wird eine Datenverarbeitungsvorrichtung verwendet, wobei insbesondere
an Einplatinencomputer bzw. Einchip-Mikrocontroller gedacht ist.
In dieser Datenverarbeitungsvorrichtung werden zwei Felder erstellt,
wobei das erste Feld jedem möglichen
n-Bit-Code der Folge einen Wahrheitswert zuordnet, der angibt, ob
der betreffende n-Bit-Code
in der Folge bereits vorhanden ist oder nicht. Zur Initialisierung
werden sämtliche Feldelemente
dieses ersten Feldes zunächst
zurückgesetzt.
Außerdem
wird ein zweites Feld angelegt, in das sukzessive die Folge von
Bits geschrieben wird, die die Codierung ergibt. Erst ab dem n-ten
in das zweite Feld geschriebenen Bit liegt der erste vollständige n-Bit-Code
der Folge vor. Nun wird bei jedem weiteren in das zweite Feld geschriebenen
Bit geprüft,
ob die Folge der letzten n-Bits einen Code ergeben, der bereits
in der Folge vorhanden ist. Dies ist sehr einfach anhand des ersten
Feldes möglich,
in dem zu jedem bereits vergebenen Code das entsprechende Feldelement
gesetzt ist. Ist der Code bereits vorhanden, so wird das letzte
geschriebene Bit invertiert, so daß wieder ein gültiger neuer
Code n-Bit-Code erzeugt wird. Auf jeden Fall wird nach jedem neu in
das zweite Feld geschriebenen Bit der entsprechende Eintrag im ersten
Feld gesetzt, um die Vergabe des neu gebildeten n-Bit-Codes für weitere
Prüfungen
anzuzeigen. Es spielt grundsätzlich
keine Rolle, ob in das zweite Feld zunächst ein 0-Bit oder ein 1-Bit geschrieben wird,
da durch die anschließende
Prüfung
des ersten Feldes sichergestellt ist, daß kein n-Bit-Code doppelt in
der Folge vorkommt. Führt sowohl
ein 0-Bit als auch ein 1-Bit zu einem gültigen n-Bit-Code, so ist es
grundsätzlich
gleichgültig,
ob ein 0-Bit oder ein 1-Bit in das zweite Feld geschrieben wird.
Es ist auch denkbar, in diesem Fall einmal ein 0-Bit und einmal
ein 1-Bit in das zweite Feld zu schreiben, wobei die Wahl des zu
schreibenden Bits in diesem Fall gegebenenfalls von einem Zufallszeilengenerator
getroffen werden könnte.
In diesen Fällen
ist jedoch nicht gesichert, daß eine
vorgegebene Anzahl von n-Bit-Codes auch tatsächlich realisierbar ist, so
daß in
diesem Fall ein zusätzliches
Abbruchkriterium eingeführt
werden sollte, welches das Schreiben weiterer Bits in das zweite
Feld verhindert, sobald kein eindeutiger n-Bit-Code mehr generiert werden
kann.
Günstiger
ist es in jedem Fall, wenn gemäß Anspruch
12 vor der Prüfung
des ersten Feldes stets das gleiche Bit in das zweite Feld geschrieben
wird. Dabei genügt
es, spätestens
nach dem vollständigen Schreiben
des ersten n-Bit-Codes
in das zweite Feld stets das gleiche Bit in das zweite Feld zu schreiben, da
die ersten n-Bits keinerlei Überprüfung bedürfen. In
jedem Fall ist sichergestellt, daß bei Verwendung eines n-Bit-Codes
2n-1 Codes in der Folge enthalten sind.
Die Folge besetzt daher ihre maximal mögliche Länge und läßt sich zudem besonders einfach
generieren.
Bei
der Prüfung,
ob der zuletzt generierte n-Bit-Code bereits in der Folge vorhanden
war, ist es grundsätzlich
denkbar, die letzten n-Bits aus dem zweiten Feld auszulesen um daraus
einen n-Bit-Code zu bilden, der als Zeiger für das erste Feld verwendet
wird. Einfacher und damit effizienter ist es jedoch, wenn gemäß Anspruch
13 der zuletzt generierte n-Bit-Code in einer gesonderten Variablen
gespeichert wird. Der Inhalt dieser Variable kann dann einfach um
eine Stelle bitweise nach links verschoben werden, wobei das höchstwertige
Bit gelöscht
wird. Wird nun an der niederwertigsten Stelle das neue Bit der Folge
eingeschrieben, so enthält
die Variable zwangsläufig
den nächsten
n-Bit-Code, so daß die Variable
direkt als Feldindex für
das erste Feld herangezogen werden kann.
Eine
bevorzugte Weiterentwicklung des Verfahrens ergibt sich aus Anspruch
14. Dabei wird vor der Prüfung
der Variablen stets ein 0-Bit in die niederwertigste Stelle der
Variablen eingeschrieben. Dies läßt sich
in der Regel sehr einfach bewerkstelligen, da bei allen bekannten
Mikroprozessoren beim Linksverschieben des Inhalts einer Variablen
das niederwertigste Bit selbsttätig
auf 0 gesetzt wird. Daher ist zum Setzen des niederwertigsten Bits
auf 0 kein zusätzlicher
Arbeitsschritt erforderlich. Ergibt sich aufgrund der Prüfung mittels
des ersten Feldes, daß der
in der Variablen gespeicherte n-Bit-Code in der Folge bereits existiert,
so wird die Variable einfach mit 1 oder -verknüpft, so daß das niederwertigste Bit auf
1 gesetzt ist.
Die
Vorrichtung gemäß den Ansprüchen 7 bis
10 läßt sich
gemäß Anspruch
15 vorteilhaft zum Abstimmen der Abtastbereiche mehrerer CCD-Empfangselemente
einsetzen. Dabei wird die Vorrichtung in den Abtastbereich der CCD-Empfangselemente gebracht,
so daß diese
die einzelnen Bits der Folge anhand der hell-dunkel-Übergänge erfassen
können. Durch
Lesen von n aufeinanderfolgenden Bits dieser Folge können die
beiden Enden des Abtastbereichs jedes einzelnen CCD-Empfangselements
erfaßt
werden. Damit kann ein Überlapp
oder eine gegebenenfalls vorhandene Lücke zwischen den Abtastbereichen
genau bestimmt werden, um die CCD-Empfangselemente korrekt aufeinander
auszurichten.
Eine
bevorzugte Weiterentwicklung der Verwendung zur Erfassung einer
laufenden Warenbahn ergibt sich aus Anspruch 16. Dabei ist die Vorrichtung zum
Erfassen der Lage des Abtastbereichs des CCD-Empfangselements im
Bereich der Warenbahnebene fixierbar. Insbesondere ist daran gedacht,
diese Vorrichtung einsteckbar oder einklappbar an einem Maschinenrahmen
zu halten, so daß eine
Verschiebung der Vorrichtung gegenüber dem Maschinenrahmen ausgeschlossen
ist. Die CCD-Empfangselemente erfassen dabei mindestens einen n-Bit-Code
dieser Vorrichtung, so daß die
absolute Position des Abtastbereichs des CCD-Empfangselements hieraus bestimmt werden
kann. Die CCD-Empfangselemente
selbst sind in Vorrichtungen zum optischen Abtasten einer laufenden
Warenbahn gemäß den Ansprüchen 1 bis
6 gehalten. Damit kann der Abtastbereich durch Verstellen der CCD-Empfangselemente
einfach in Abhängigkeit von
den abgetasteten n-Bit-Codes eingestellt werden. Damit können die
einzelnen Abtastbereiche der CCD-Kamera ohne manuellen Eingriff
des Personals korrekt aufeinander eingestellt werden, was sowohl Personalkosten
als auch Zeit zum Justieren der CCD-Kameras einspart.
Alternativ
kann die Vorrichtung nach den Ansprüchen 7 bis 10 auch zum Erfassen
der Position eines Computereingabegeräts, insbesondere einer Computermaus
oder eines Digitalisiergeräts,
eingesetzt werden. Dabei wird die Codierung zweidimensional auf
einer stationären
Fläche
aufgebracht, wobei jedem Bereich der Fläche von der Größe eines
Bits ein eindeutiger x-y-Koordinatenwert zugeordnet ist.
Schließlich kann
die Vorrichtung auch vorteilhaft gemäß Anspruch 18 zum Erfassen
der Position eines Bearbeitungswerkzeugs einer Werkzeugmaschine
eingesetzt werden. Auch in diesem Fall ergibt sich der besondere
Vorteil, daß zu
jedem Zeitpunkt die absolute Position des Bearbeitungswerkzeugs bestimmt
werden kann, ohne zuvor einen Meßbereichs-Nullpunkt anfahren
zu müssen,
was insbesondere bei Werkzeugmaschinen aufgrund der erheblichen
zu bewegenden Massen von besonderer Bedeutung ist.
Der
Erfindungsgegenstand wird beispielhaft anhand der Zeichnung erläutert, ohne
den Schutzumfang zu begrenzen.
Es
zeigt:
1 eine schematische, räumliche
Darstellung einer Vorrichtung zum optischen Abtasten einer laufenden
Warenbahn,
2 einen Ausschnitt einer
Vorrichtung zum Erfassen der Lage eines Objekts,
3 einen Code und
4 einen Algorithmus zur
Erstellung des Codes gemäß 3.
1 zeigt eine räumliche
Darstellung einer Vorrichtung 1 zum optischen Abtasten
einer in Richtung 2 bewegten Warenbahn 3. Die
Vorrichtung 1 weist eine CCD-Kamera 4 auf, die
von einem Objektiv 5 und einem CCD-Empfangselement 6 gebildet ist.
Das Objektiv 5 ist dabei lediglich als einfache Linse und
das CCD-Empfangselement als Chip dargestellt, um die Darstellung übersichtlicher
zu gestalten. Selbstverständlich
besteht das Objektiv 5 aus mehreren hintereinander geschalteten
Linsen, die in einem entsprechenden Halter abgestützt sind.
Das Objektiv 5 ist außerdem
in Richtung einer optischen Achse 7 verschiebbar, um eine
Focusierung des Bildes auf das CCD-Empfangselement zu ermöglichen.
Das
CCD-Empfangselement 6 ist auf einem gebrochen dargestellten
Drehtisch 8 gehalten, der um eine Drehachse 9 verdrehbar
ist. Die Drehachse 9 ist dabei parallel zur optischen Achse 7 des
Objektivs 5 ausgerichtet. Der Drehtisch 8 weist
unterseitig einen Drehzapfen 10 auf, der in einem Drehlager 11 eines
Schiebeschlittens 12 abgestützt ist.
Der
Schiebeschlitten 12, ist entlang zweier Führungsschienen 13 quer
zur optischen Achse 7 des Objektivs 5 in Laufrichtung 2 der
Warenbahn 3 verschiebbar gehalten. Damit kann das CCD-Empfangselement 6 um
die Drehachse 9 verdreht und entlang der Führungsschienen 13 verschoben
werden. Das CCD-Empfangselement 6 ist dabei derart ausge richtet,
daß die
Zeile der lichtempfindlichen Elemente 14 in etwa senkrecht
zu den Führungsschienen 13 angeordnet
ist.
Zur
Verdrehung und Verschiebung des CCD-Empfangselements 6 ist
am Drehtisch 8 beidseits des Drehzapfens 10 jeweils
eine Spindelmutter 15 angebracht. In jede dieser Spindelmuttern 15 greift
eine Gewindespindel 16 ein, die von jeweils einem Stellmotor 17 zur
Drehung angetrieben ist. Der Stellmotor 17 ist vorzugsweise
ein Schrittmotor, wobei alternativ auch ein Servomotor eingesetzt
werden kann.
Beim
Verdrehen des Drehtisches 8 um die Drehachse 9 werden
die Spindelmuttern 15 verschwenkt, so daß die beiden
Gewindespindeln 16 verschwenkbar sein müssen. Zu diesem Zweck besitzt
das Gewinde der beiden Gewindespindeln 16 zu den Spindelmuttern 15 bzw.
zu den Stellmotoren 17 ein Spiel, das eine geringe Verschwenkung
der Gewindespindeln 16 zuläßt. Damit kann der Drehtisch 8 zwar
nur um einen geringen Drehwinkel verdreht werden, dies reicht jedoch
zum Ausgleich von Fertigungstoleranzen der Vorrichtung 1 bzw.
des CCD-Empfangselements 6 aus. Damit ergibt sich ein besonders
einfacher und kompakter Aufbau der Vorrichtung 1.
Um
das von den Gewindespindeln 16 hervorgerufene Spiel auszugleichen,
sind an den Führungsschienen 13 Federn 18 abgestützt, die
einseitig gegen den Schiebeschlitten 12 drücken. Außerdem ist
am Schiebeschlitten 12 eine Drehfeder 19 gehalten,
die am Drehtisch 8 angreift. Diese bei den Federn 18, 19 drücken den
Schiebeschlitten 12 und den Drehtisch 8 soweit
in eine Richtung, wie dies das Spiel der Gewindespindeln 16 zuläßt. Damit
nimmt der Schiebeschlitten 12 und der Drehtisch 8 in
jeder Stellung der Gewindespindeln 16 eine vorgegebene Lage
ein, so daß das
Spiel der Gewindespindeln 16 ausgeglichen ist.
2 zeigt eine Vorrichtung 20 zum
Erfassen der Lage eines Objekts 21, insbesondere einer CCD-Kamera 4.
Die CCD-Kamera 4 weist wiederum ein Objektiv 5 auf,
welches von der Vorrichtung 20 ausgehende Lichtstrahlen 22 auf
ein CCD-Empfangselement 6 abbildet. Das CCD-Empfangselement 6 bildet
dabei einen Fühler 23 zum
Abtasten der Vorrichtung 20.
Die
Vorrichtung 20 ist in Form eines Lineals ausgebildet, dessen
Oberfläche 24 im
wesentlichen schwarz eingefärbt
ist. Die Vorrichtung 20 weist einen weißen Balken 25 auf,
der zum Helligkeitsabgleich der CCD-Kamera 4 eingesetzt
werden kann. An der Vorrichtung 20 ist außerdem eine
Codierung 26 vorgesehen, die aus einzelnen Bits 27 besteht.
Diese Codierung 26 ist derart ausgebildet, daß acht aufeinanderfolgende
Bits 27 einen eindeutigen Code 28 ergeben. Aufgrund
der Eindeutigkeit des Codes 28 ist sichergestellt, daß durch
Lesen von acht aufeinanderfolgenden Bits 27 die absolute
Position entlang der Vorrichtung 20 bestimmt werden kann.
Um zusätzlich
zu den einzelnen Bits 27 die Breite jedes Bits 27 feststellen
zu können,
ist jedes einzelne Bit 27 manchestercodiert, so daß jedes
Bit 27 eine weiße Fläche 29 und
eine schwarze Fläche 30 aufweist.
Dabei bedeutet die Abfolge schwarze Fläche 30- weiße Fläche 29 ein
0-Bit und die Abfolge weiße
Fläche 29-schwarze
Fläche 30 ein
1-Bit. Damit kann die Codierung 26 unabhängig von
der Entfernung 31 des Objekts 21 von der Vorrichtung 20 und
unabhängig von
der Brennweite des Objektivs 5 korrekt erfaßt werden.
3 zeigt die Codierung 28 in
Form einer 0-1 Darstellung der einzelnen Bits 27. Diese
Codierung 28 ist derart aufgebaut, daß jede Abfolge von acht aufeinanderfolgenden
Bits 27 einen eindeutigen 8-Bit-Code liefert, der zur Positionsbestimmung
herangezogen werden kann.
Schließlich zeigt 4 einen Algorithmus zur
Erstellung der Codierung 28 gemäß 3. In einem Definitionsbereich 32 wird
ein erstes Feld 33 mit 256 Wahrheitswerten unter dem Namen „Test" angelegt. Dieses
erste Feld 33 dient zum Speichern der Information, ob die
einzelnen 8-Bit-Codes 28 bereits in der generierten Folge
der Codierung 26 enthalten sind. Außerdem wird im Definitionsbereich 32 ein zweites
Feld 34 mit dem Namen „Code" angelegt, der 263 Wahrheitswerte enthält. Dieses
zweite Feld 34 dient zur Aufnahme der einzelnen Bits 27 der
Codierung 26. Schließlich
werden im Definitionsbereich zwei Ganzzahl-Variablen 35, 36 mit
den Namen „NewCode" und „i" angelegt. Die Variable 35 dient dabei
zum Speichern des letzten vom Algorithmus generierten 8-Bit-Codes 28,
während
die Variable 36 lediglich als Zählvariable dient.
In
einem Initialisierungsbereich 37 werden die beiden Felder 33, 34 sowie
die Variable 35 vorbelegt. In einer ersten Zählschleife 38 werden
zunächst alle
Elemente des ersten Feldes 33 zurückgesetzt, um anzuzeigen, daß noch sämtliche
Codes 28 erlaubt sind. In einer zweiten Zählschleife 39 werden die
ersten 8-Bits des zweiten Feldes 34 auf 1 gesetzt, so daß der erste
gültige
8-Bit-Code 28 den Wert 255 enthält. Dieser Wert wird außerdem in
die Variable 35 eingeschrieben, die den letzten generierten
8-Bit-Code 28 speichert. Schließlich wird im Initialisierungsbereich 37 das
255te Feldelement des ersten Feldes 33 gesetzt, da dieser
8-Bit-Code nunmehr bereits aufgetreten ist.
An
den Initialisierungsbereich 37 schließt sich der eigentliche Codegenerator 40 an,
der im wesentlichen von einer dritten Zählschleife 41 gebildet ist.
In dieser dritten Zählschleife 41 wird
die Variable 36 beginnend ab der ersten freien Stelle bis
zum Ende des gesamten Coderaums durchgezählt.
Innerhalb
der dritten Zählschleife 41 wird
zunächst
die Variable 35 bitweise um eine Stelle nach links verschoben
und das höchstwertige
Bit gelöscht. Da
beim bitweisen nach links verschieben automatisch an der niederwertigsten
Stelle der Variablen 35 ein 0-Bit angefügt wird, enthält die Variable 35 einen neuen
8-Bit-Code 28, dessen letztes Bit zwangsläufig gleich
0 ist. Da jeder 8-Bit-Code 28 innerhalb
der Codierung 26 jedoch eindeutig sein muß, erfolgt
nun eine Prüfung 42.
Dabei wird das erste Feld 33 ausgewertet, wobei lediglich
der Wahrheitswert bei jenem Feldindex 43 interessiert,
der das Auftreten des 8-Bit-Codes 28 enthält, der
in der Variablen 35 gespeichert ist. Damit kann die Variable 35 direkt
als Feldindex 43 für
das erste Feld 33 herangezogen werden. Ist dieses Feldelement
noch zurückgesetzt, so
stellt der neu gefundene 8-Bit-Code 27 einen gültigen Code
dar, so daß in
das zweite Feld 34 ein 0-Bit 44 eingeschrieben
werden kann.
Ist
das Feldelement des ersten Feldes 33 beim geprüften Feldindex 43 jedoch
gesetzt, so zeigt dies an, daß der
gefundene 8-Bit-Code 28 in der Codierung 26 bereits
vorhanden ist. In diesem Fall erfolgt eine Invertierung 45 des
niederwertigsten Bits der Variablen 35. Dies geschieht
am einfachsten, indem die Variable 35 mit der Zahl 1 oder-verknüpft wird.
Der
Algorithmus ist so angelegt, daß sämtliche
256 möglichen
Codes der Codierung 26 auch genutzt werden, so daß die dritte
Zählschleife 41 problemlos
bis zum Ende zählen
kann, ohne daß die
Gefahr besteht, daß ein
8-Bit-Code 28 doppelt auftritt. Lediglich vorsorglich ist
jedoch in die Prüfung 42 eine Abbruchprüfung 46 eingeschachtelt.
Diese prüft
erneut das erste Feld 33 beim Feldindex 43, der
wiederum der Variablen 35 entspricht. Da der Inhalt der Variablen 35 durch
die Invertierung 45 geändert
wurde, wird gegenüber
der Prüfung 42 ein
anderes Feldelement des ersten Feldes 33 abgefragt.
Für den Fall,
daß das
abgefragte Feldelement gesetzt ist, gibt es keine Möglichkeit,
die Codierung 26 fortzusetzen, da sowohl das Anfügen eines 0-Bits
als auch eines 1-Bits zum Auftreten eines doppelten Codes führt. Daher
folgt in diesem Fall ein Abbruch 47 der dritten Zählschleife 41.
Es
ist jedoch anzumerken, daß diese
Abbruchprüfung 46 grundsätzlich entbehrlich
ist.
Falls
die Abbruchprüfung 46 ergeben
hat, daß der
neu gefundene 8-Bit-Code 28 in der Codierung 26 noch
nicht aufgetreten ist, so wird in das zweite Feld 34 ein
1-Bit 48 eingeschrieben. Dies ist auch bei Fortfall der
Abbruchprüfung 46 erforderlich.
Unabhängig vom
Ergebnis der Prüfung 42 wird
anschließend
das den neu gefundenen 8-Bit-Code 28 entsprechende Feldelement
des ersten Feldes 33 gesetzt. Dadurch wird verhindert,
daß der
bereits gefundene 8-Bit-Code 28 innerhalb der Codierung 26 noch
einmal auftreten kann.