-
Die vorliegende Erfindung betrifft ein Verfahren zum Betreiben eines Encoder-Emulators gemäß Patentanspruch 1 sowie einen Encoder-Emulator gemäß Patentanspruch 10.
-
Im Stand der Technik sind Encoder bekannt, die dazu dienen, ein elektrisches Signal (Encodersignal) zu erzeugen, das eine aktuelle Position eines mechanisch beweglichen Systems kodiert. Solche Encoder können auch als Kodierer bezeichnet werden. Die mechanische Bewegung kann dabei beispielsweise eine translatorische oder eine rotatorische Bewegung sein.
-
Es sind absolut messende Encoder bekannt, die elektrische Signale erzeugen, die einen Absolutwert einer Position angeben. Daneben existieren auch inkremental arbeitende Encoder, die Signale erzeugen, die eine Veränderung einer Position gegenüber einer vorherigen Position angeben. Das Ausgangssignal kann dabei beispielsweise als Quadraturschnittstelle ausgebildet sein.
-
Aus dem Stand der Technik sind ebenfalls Vorrichtungen bekannt, die ein von einem Encoder ausgegebenes Signal emulieren, ohne tatsächlich eine Bestimmung einer Position eines mechanisch beweglichen Systems vorzunehmen. Dies wird als Encoder-Emulation bezeichnet. Die Verwendung eines Encoder-Emulators zur Erzeugung eines Encodersignals kann gegenüber einer Verwendung eines realen Encoders den Vorteil einer erhöhten Flexibilität bieten.
-
Die
US 8,687,060 B1 beschreibt ein System zur Ausgabe von Pulsen, die auf Positionsmessungen eines bewegten Objekts durch einen kontaktlosen Sensor, beispielsweise einen eindimensionalen optischen Sensor, beruhen und eine zeitabhängige Bewegung des Objekts wiedergeben. Das System nutzt die Positionsmessungen, um eine Geschwindigkeit des Objekts abzuschätzen, wobei die abgeschätzte Geschwindigkeit kontinuierlich an die beobachteten Positionsmessungen angepasst wird. Geschwindigkeit und Positionsmessungen ermöglichen es, die Zeitpunkte der nächsten auszugebenden Pulse anzupassen.
-
Eine Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren zum Betreiben eines Encoder-Emulators anzugeben. Diese Aufgabe wird durch ein Verfahren mit den Merkmalen des Anspruchs 1 gelöst. Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, einen Encoder-Emulator bereitzustellen. Diese Aufgabe wird durch einen Encoder-Emulator mit den Merkmalen des Anspruchs 10 gelöst. In den abhängigen Ansprüchen sind verschiedene Weiterbildungen angegeben.
-
Ein Verfahren zum Betreiben eines Encoder-Emulators umfasst Schritte zum Empfangen eines Soll-Positionssignals, zum Ermitteln einer Gesamtzahl von Flanken eines Ausgabesignals aus dem Soll-Positionssignal und zum Erzeugen des Ausgabesignals. Dabei wird das Ausgabesignal mit der Gesamtzahl von Flanken ausgegeben. Jede Flanke wird jeweils nach Ablauf eines ganzzahligen Vielfachen einer Periodendauer eines Systemtakts seit der letzten vorherigen Flanke ausgegeben. Mindestens eine Flanke wird nach Ablauf eines ersten Vielfachen der Periodendauer des Systemtakts seit der letzten vorherigen Flanke ausgegeben. Mindestens eine Flanke wird nach Ablauf eines zweiten Vielfachen der Periodendauer des Systemtakts seit der letzten vorherigen Flanke ausgegeben.
-
Vorteilhafterweise ermöglicht dieses Verfahren die Erzeugung eines Ausgabesignals, das eine einem Soll-Positionssignal entsprechende Anzahl von Flanken aufweist. Dabei wird vorteilhafterweise sichergestellt, dass jede Flanke des erzeugten Ausgabesignals synchron zu dem Systemtakt ausgegeben wird. Dadurch, dass die Zeitintervalle zwischen den Flanken des Ausgabesignals mit dem ersten Vielfachen der Periodendauer des Systemtakts und dem zweiten Vielfachen der Periodendauer des Systemtakts zwei unterschiedliche Längen aufweisen, wird sichergestellt, dass die Gesamtzahl der Flanken des Ausgabesignals in einer festgelegten Gesamtzeit ausgegeben werden kann und dabei trotzdem jede Flanke synchron zum Systemtakt ausgegeben wird.
-
In einer Ausführungsform des Verfahrens wird das Ausgabesignal ab einem Empfang eines Synchronisationspulses ausgegeben. Vorteilhafterweise ermöglicht das Verfahren dadurch eine Synchronisation des durch das Verfahren erzeugten Ausgabesignals mit Synchronisationspulsen eines Synchronisationssignals. Dadurch kann die Erzeugung des Ausgabesignals vorteilhafterweise mit anderen Abläufen eines Gesamtsystems synchronisiert werden.
-
In einer Ausführungsform des Verfahrens umfasst dieses weitere Schritte zum Ermitteln einer ersten Anzahl als Rest einer Division einer Positionierzeit durch ein Produkt der Gesamtzahl und der Periodendauer des Systemtakts, zum Ermitteln einer zweiten Anzahl als Differenz aus der Gesamtzahl und der ersten Anzahl, zum Ermitteln des zweiten Vielfachen der Periodendauer des Systemtakts durch ganzzahlige Division der Positionierzeit durch das Produkt der Gesamtzahl und der Periodendauer des Systemtakts, und zum Ermitteln des ersten Vielfachen der Periodendauer des Systemtakts als Summe aus dem zweiten Vielfachen und der Zahl 1. Dabei wird die erste Anzahl der Flanken des Ausgabesignals jeweils nach Ablauf des ersten Vielfachen der Periodendauer des Systemtakts ausgegeben. Die zweite Anzahl der Flanken des Ausgabesignals wird jeweils nach Ablauf des zweiten Vielfachen der Periodendauer des Systemtakts ausgegeben. Vorteilhafterweise wird dadurch sichergestellt, dass sich die Zeitintervalle zwischen aufeinander folgenden Flanken des Ausgabesignals maximal um eine Periodendauer des Systemtakts voneinander unterscheiden. Dadurch weist das durch das Verfahren erhältliche Ausgabesignal vorteilhafterweise eine große zeitliche Gleichförmigkeit und nur geringe Geschwindigkeitsschwankungen auf. Dadurch kann sichergestellt werden, dass das durch das Verfahren erzeugte Ausgabesignal innerhalb einer Eingangsbandbreite nachgeordneter Systeme liegt.
-
In einer Ausführungsform des Verfahrens ist die Positionierzeit ein ganzzahliges Vielfaches der Periodendauer des Systemtakts. Dadurch wird vorteilhafterweise sichergestellt, dass alle Flanken des Ausgabesignals synchron zum Systemtakt ausgegeben werden können.
-
In einer Ausführungsform des Verfahrens entspricht die Positionierzeit einem zeitlichen Abstand zwischen zwei aufeinander folgenden Synchronisationspulsen. Dadurch kann zu jedem Synchronisationspuls mit der Ausgabe eines neuen Ausgabesignals begonnen werden.
-
In einer Ausführungsform des Verfahrens wird zunächst die erste Anzahl der Flanken jeweils nach dem ersten Vielfachen der Periodendauer des Systemtakts ausgegeben und anschließend die zweite Anzahl der Flanken jeweils nach dem zweiten Vielfachen der Periodendauer des Systemtakts ausgegeben. Alternativ kann zunächst die zweite Anzahl der Flanken jeweils nach dem zweiten Vielfachen der Periodendauer des Systemtakts ausgegeben werden und anschließend die erste Anzahl der Flanken jeweils nach dem ersten Vielfachen der Periodendauer des Systemtakts ausgegeben werden. Vorteilhafterweise ist das Verfahren dadurch besonders einfach durchführbar. Außerdem treten im nach diesem Verfahren erzeugten Ausgabesignal vorteilhafterweise relative Geschwindigkeitsänderungen besonders selten auf.
-
In einer Ausführungsform des Verfahrens werden Flankenabstände, die dem ersten Vielfachen der Periodendauer des Systemtakts entsprechen und Flankenabstände, die dem zweiten Vielfachen der Periodendauer des Systemtakts entsprechen, im Wesentlichen gleichmäßig im Ausgabesignal verteilt. Vorteilhafterweise bilden durch die unterschiedliche Länge der Zeitintervalle zwischen den Flanken des Ausgabesignals bewirkte Geschwindigkeitsänderungen im nach diesem Verfahren erzeugten Ausgabesignal eine Schwebung mit vergleichsweise hoher Frequenz. Diese Schwebung kann vorteilhafterweise durch nachgeordnete Systeme mit Tiefpass-Charakter herausgefiltert werden.
-
In einer Ausführungsform des Verfahrens werden die Flanken des Ausgabesignals abwechselnd als steigende und fallende Flanken ausgegeben. Vorteilhafterweise repräsentieren dann sowohl steigende als auch fallende Flanken des Ausgabesignals Zählimpulse des Encoder-Emulators.
-
In einer Ausführungsform des Verfahrens wird ein weiteres Ausgabesignal ausgegeben, das dem Ausgabesignal bis auf eine Phasenverschiebung entspricht. Die beiden Ausgabesignal können dabei ein Quadratursignal bilden. Vorteilhafterweise kann ein nach diesem Verfahren arbeitender Encoder-Emulator dadurch zur Verwendung in bestehenden Systemen und zum Ersatz realer Encoder genutzt werden. Dabei ermöglichen die durch das Verfahren erzeugten Ausgabesignale eine Berücksichtigung eines Vorzeichens bzw. einer Bewegungsrichtung.
-
Ein Encoder-Emulator ist dazu ausgebildet, ein Verfahren der vorgenannten Art auszuführen. Vorteilhafterweise kann dieser Encoder-Emulator als Ersatz für reale Encoder in bestehenden Systemen eingesetzt werden. Dabei kann der Encoder-Emulator ein Ausgabesignal erzeugen, dessen Flanken synchron zu einem Systemtakt sind. Außerdem weist das durch den Encoder-Emulator erzeugte Ausgabesignal vorteilhafterweise nur geringe relative Geschwindigkeitsänderungen auf.
-
Die Erfindung wird nachfolgend anhand von Figuren näher erläutert. Dabei zeigen:
-
1 eine schematische Darstellung einer Produktionsstraße, in der ein Encoder-Emulator eingesetzt wird;
-
2 eine schematische Darstellung eines Encoder-Emulators;
-
3 eine schematische Darstellung eines zeitlichen Ablaufs einer Encoder-Emulation;
-
4 eine schematische Darstellung eines ersten Emulationsablaufs;
-
5 eine schematische Darstellung eines zweiten Emulationsablaufs; und
-
6 eine schematische Darstellung eines dritten Emulationsablaufs.
-
1 zeigt eine schematische Darstellung einer Produktionsstraße 100. Die Produktionsstraße 100 kann beispielsweise eine Produktionsstraße in einer Fabrik sein. Die Produktionsstraße 100 dient als Beispiel für einen möglichen Einsatzort eines Encoder-Emulators. Ein Encoder-Emulator kann aber auch an vielen anderen möglichen Orten und für viele andere mögliche Zwecke eingesetzt werden.
-
Die Produktionsstraße 100 umfasst ein Fließband 120, auf dem Produkte 110 transportiert werden. Das Fließband 120 wird von einem Antrieb 150 mit einem Motor 160 angetrieben. Der Antrieb 150 wird von einer Steuerung 140 gesteuert.
-
Mittels einer Kamera 130 soll jedes Produkt 110 fotografiert werden, während es auf dem Fließband 120 an der Kamera 130 vorbeigeführt wird. Hierzu muss die Kamera 130 zu geeigneten Zeitpunkten ausgelöst werden. Die durch die Kamera 130 aufgenommenen Fotos der Produkte 110 können beispielsweise einer automatisierten Qualitätskontrolle dienen.
-
Am Fließband 120 der Produktionsstraße 100 ist ein Encoder 170 angeordnet. Der Encoder 170 kann auch als Kodierer bezeichnet werden. In der schematischen Darstellung der 1 ist der Encoder 170 als rotatorischer Kodierer an einer Antriebswelle des Fließbands 120 ausgebildet. Der Encoder 170 erzeugt ein elektrisches Signal, das Auskunft über die Drehung der Antriebswelle des Fließbands 120 und damit auch über die Bewegung des Fließbands 120 und der auf dem Fließband 120 angeordneten Produkte 110 gibt.
-
Das durch den Encoder 170 ausgegebene Signal kann der Kamera 130 zugeführt werden, die hierzu mit einer geeigneten Eingangsschnittstelle ausgestattet ist. Das von dem Encoder 170 erzeugte Signal enthält Positionsinformationen, die in der Kamera 130 eine Auslösung zu geeigneten Zeitpunkten ermöglichen, also zu Zeitpunkten, zu denen ein Produkt 110 im Blickfeld der Kamera 130 an der Kamera 130 vorbeiläuft.
-
Das von dem Encoder 170 ausgegebene Signal kann beispielsweise als Quadratursignal gemäß einer Quadraturschnittstelle ausgebildet sein. In diesem Fall kann das von dem Encoder 170 ausgegebene Signal beispielsweise stets dann eine steigende oder fallende Flanke aufweisen, wenn die Antriebswelle des Fließbands 120 eine Drehung um einen festgelegten Winkel vollzogen hat, beispielsweise eine Drehung um einen Winkel von 45° oder 90°.
-
Der mechanische Encoder 170 weist eine nur geringe Flexibilität hinsichtlich seiner zeitlichen Auflösung und der zeitlichen Positionierung der Flanken in dem von dem Encoder 170 erzeugten Ausgabesignal auf. Eine höhere Flexibilität kann dadurch erreicht werden, dass der Encoder 170 bei der Produktionsstraße 100 durch einen Encoder-Emulator 180 ersetzt wird. Der Encoder-Emulator 180 erzeugt ein Ausgabesignal, das der Kamera 130 anstelle des durch den Encoder 170 erzeugten Ausgangssignals zugeführt wird. In der schematischen Darstellung der 1 erfolgt die Ersetzung des Encoders 170 durch den Encoder-Emulator 180 mittels eines Schalters 190. Selbstverständlich können der Encoder 170 und der Schalter 190 bei Vorhandensein des Encoder-Emulators 180 auch vollständig entfallen.
-
2 zeigt eine weitere schematische Darstellung eines Teils der Produktionsstraße 100 mit dem Encoder-Emulator 180.
-
Der Encoder-Emulator 180 ist mit der Steuerung 140 verbunden, die auch den Antrieb 150 des Fließbands 120 ansteuert. Der Encoder-Emulator 180 empfängt von der Steuerung 140 ein Soll-Positionssignal 200, ein Systemtaktsignal 210 und ein Synchronisationssignal 220.
-
Das Soll-Positionssignal 200 gibt Soll-Positionen an, deren Erreichen der Encoder-Emulator 180 zu festgelegten Zeitpunkten emulieren soll. Die Steuerung 140 kann das Soll-Positionssignal 200 beispielsweise so erzeugen, dass die Soll-Positionen, deren Erreichen der Encoder-Emulator 180 emuliert, den tatsächlich zu den festgelegten Zeitpunkten durch das Fließband 120 der Produktionsstraße 100 erreichten Positionen entsprechen. Dies ist möglich, da die Steuerung 140 auch den Antrieb 150 des Fließbands 120 ansteuert.
-
Das Synchronisationssignal 220 dient zur Synchronisation der durch den Encoder-Emulator 180 durchgeführten Emulation mit anderen durch die Steuerung 140 der Produktionsstraße 100 kontrollierten Prozessen. Insbesondere dient das Synchronisationssignal 220 zur Festlegung der Zeitpunkte, zu denen der Encoder-Emulator 180 das Erreichen der Soll-Positionen emulieren soll.
-
Das Systemtaktsignal 210 dient dem Encoder-Emulator 180 zur Taktung von durch den Encoder-Emulator 180 vorgenommenen Prozessen. Insbesondere dient das Systemtaktsignal 210 zur Taktung eines durch den Encoder-Emulator 180 erzeugten Ausgabesignals 230.
-
Alternativ zur Darstellung der 2 ist es möglich, dass das Systemtaktsignal 210 dem Encoder-Emulator 180 nicht von der Steuerung 140 zugeführt, sondern von dem Encoder-Emulator 180 selbst intern erzeugt wird. In diesem Fall kann das Synchronisationssignal 220 dem Encoder-Emulator 210 zur Synchronisation des lokal erzeugten Systemtaktsignals 210 dienen.
-
Der Encoder-Emulator 180 erzeugt das Ausgabesignal 230 auf Grundlage des von der Steuerung 140 empfangenen Soll-Positionssignals 200. Das Ausgabesignal 230 wird als digitales Signal mit einander abwechselnden hohen und niedrigen Pegeln ausgegeben. Das Ausgabesignal 230 wird durch den Encoder-Emulator 180 über eine physikalische Schnittstelle ausgegeben, die beispielsweise nach dem RS485-Standard ausgebildet sein kann.
-
Falls der Encoder-Emulator 180 das Ausgabesignal 230 als zu einer Quadraturschnittstelle konformes Quadratursignal erzeugt, kann der Encoder-Emulator 180 zusätzlich zu dem Ausgabesignal 230 ein weiteres Ausgabesignal 240 ausgeben. Das weitere Ausgabesignal 240 ist in diesem Fall wie das Ausgabesignal 230 ausgebildet, weist gegenüber dem Ausgabesignal 230 jedoch eine Phasenverschiebung 241 auf. Die Phasenverschiebung 241 kann so bemessen sein, dass Flanken des weiteren Ausgabesignals 240 im zeitlichen Ablauf jeweils mittig zwischen Flanken des Ausgabesignals 230 angeordnet sind. Zusätzlich zu dem Ausgabesignal 230 und dem weiteren Ausgabesignal 240 kann der Encoder-Emulator 180 auch noch weitere Ausgabesignale erzeugen. Im Folgenden wird lediglich das Ausgabesignal 230 betrachtet.
-
3 zeigt eine stark schematisierte Darstellung des zeitlichen Ablaufs 300 der durch den Encoder-Emulator 180 der Produktionsstraße 100 durchgeführten Encoder-Emulation. Auf einer horizontalen Achse ist dabei eine Zeit 301 aufgetragen.
-
Das von der Steuerung 140 dem Encoder-Emulator 180 zugeführte Synchronisationssignal 220 weist regelmäßige Synchronisationspulse 225 auf. Zeitlich aufeinander folgende Synchronisationspulse 225 werden im dargestellten Beispiel zu einem ersten Synchronisationszeitpunkt 221, zu einem zweiten Synchronisationszeitpunkt 222 und zu einem dritten Synchronisationszeitpunkt 223 gesendet.
-
Mit dem Soll-Positionssignal 200 übermittelt die Steuerung 140 dem Encoder-Emulator 180 Soll-Positionen. Die Soll-Positionen werden synchron zu den Synchronisationspulsen 225 gesendet. Zum ersten Synchronisationszeitpunkt 221 wird eine erste Soll-Position 201 gesendet. Zum nachfolgenden zweiten Synchronisationszeitpunkt 222 sendet die Steuerung 140 eine zweite Soll-Position 202. Zum nachfolgenden dritten Synchronisationszeitpunkt 223 sendet die Steuerung 140 eine dritte Soll-Position 203.
-
Die von der Steuerung 140 mit dem Soll-Positionssignal 200 übermittelten Soll-Positionen 201, 202, 203 werden durch den Encoder-Emulator 180 zu zwischen den Synchronisationszeitpunkten 221, 222, 223 liegenden Datenübernahmezeitpunkten 302 übernommen. Die erste Soll-Position 201 wird beispielsweise zu einem zwischen dem ersten Synchronisationszeitpunkt 221 und dem zweiten Synchronisationspunkt 222 liegenden Datenübernahmezeitpunkt 302 durch den Encoder-Emulator 180 übernommen.
-
Der Encoder-Emulator 180 ermittelt zu jeder von der Steuerung 140 empfangenen Soll-Position 201, 202, 203 eine Ausgabe-Position als passendes Flankenmuster des Ausgabesignals 230. Diese Ausgabe-Position wird ab dem nächsten nachfolgenden Synchronisationszeitpunkt 221, 222, 223 in dem Ausgabesignal 230 ausgegeben. Beispielsweise wird ab dem zweiten Synchronisationszeitpunkt 222 eine erste Ausgabe-Position 231 ausgegeben, die der ersten Soll-Position 201 entspricht. Ab dem dritten Synchronisationszeitpunkt 223 wird eine zweite Ausgabe-Position 232 ausgegeben, die der zweiten Soll-Position 202 entspricht. Anschließend wird ab dem nächsten nachfolgenden Synchronisationszeitpunkt eine dritte Ausgabe-Position 233 ausgegeben, die der dritten Soll-Position 203 entspricht.
-
Die Ausgabe jeder Ausgabe-Position 231 beginnt im in 3 dargestellten Beispiel zu einem Synchronisationszeitpunkt 221, 222, 223 zeitgleich mit dem Eintreffen eines Synchronisationspulses 225. Die Ausgabe einer Ausgabe-Position 231, 232, 233 im Ausgabesignal 230 nimmt jeweils eine Positionierzeit Tpos in Anspruch. Im dargestellten Beispiel entspricht die Positionierzeit Tpos dem zeitlichen Abstand zwischen zwei aufeinander folgenden Synchronisationspulsen 225 des Synchronisationssignals 220, sodass die Ausgabe jeder Ausgabe-Position 231, 232, 233 im Ausgabesignal 230 gleichzeitig mit dem Eintreffen eines Synchronisationspulses 225 zu einem nächsten Synchronisationszeitpunkt 221, 222, 223 endet. Es ist allerdings auch möglich, die Positionierzeit Tpos länger oder kürzer als den zeitlichen Abstand zwischen zwei aufeinander folgenden Synchronisationspulsen 225 des Synchronisationssignals 220 zu wählen.
-
Ebenfalls ist möglich, die Ausgabe jeder Ausgabe-Position 231, 232, 233 mit einem festgelegten zeitlichen Versatz zum Eintreffen eines Synchronisationspulses 225 zu beginnen und/oder mit einem zeitlichen Versatz zum Eintreffen eines nachfolgenden Synchronisationspulses 225 zu beenden.
-
Der Encoder-Emulator 180 enthält einen Logikteil, der beispielsweise als FPGA realisiert sein kann. Der Logikteil dient dazu, zu jeder empfangenen Soll-Position 201, 202, 203 das Flankenmuster der als Ausgabesignal 230 ausgegebenen Ausgabe-Position 231, 232, 233 zu berechnen.
-
Diese Berechnung umfasst eine Bestimmung einer Gesamtzahl n von Flanken des Ausgabesignals 230. Dabei kann die Gesamtzahl n steigende und fallende Flanken des Ausgabesignals 230 umfassen. Je nach der Ausgestaltung eines dem Encoder-Emulator 180 nachgeordneten Empfängers des Ausgabesignals 230 (beispielsweise der Kamera 130), können zur Gesamtzahl n aber auch lediglich die steigenden oder die fallenden Flanken des Ausgabesignals 230 berücksichtigt werden.
-
Der Encoder-Emulator 180 gibt die Flanken des Ausgabesignals 230 synchron zu steigenden Flanken des Systemtaktsignals 210 aus. Es wäre alternativ auch möglich, die Flanken des Ausgabesignals 230 synchron zu fallenden Flanken des Systemtaktsignals 210 auszugeben. In beiden Fällen wird jede Flanke des Ausgabesignals 230 einen Zeitraum nach der jeweils vorhergehenden Flanke des Ausgabesignals 230 ausgegeben, der einem Vielfachen einer Periodendauer Ts des Systemtakts 210 entspricht.
-
4 zeigt eine schematische Darstellung eines möglichen ersten Emulationsablaufs 400. Auf einer horizontalen Achse ist eine Zeit 401 aufgetragen. Dargestellt sind das Systemtaktsignal 210 mit der Periodendauer Ts und das Synchronisationssignal 220 mit dem zum zweiten Synchronisationszeitpunkt 220 eintreffenden Synchronisationspuls 225 und dem zum nachfolgenden dritten Synchronisationszeitpunkt 223 eintreffenden Synchronisationspuls 225.
-
Die beiden Synchronisationszeitpunkte 222, 223 weisen einen zeitlichen Abstand 226 voneinander auf. Der zeitliche Abstand 226 zwischen zwei aufeinander folgenden Synchronisationszeitpunkten 221, 222, 223, beziehungsweise zwischen zwei aufeinander folgenden Synchronisationspulsen 225, ist ein ganzzahliges Vielfaches der Periodendauer Ts des Systemtaktsignals 210 und entspricht im dargestellten Beispiel der Positionierzeit Tpos zur Ausgabe einer Ausgabe-Position 231, 232, 233, beispielsweise zur Ausgabe der ersten Ausgabe-Position 231.
-
Während der Positionierzeit T
pos soll die Gesamtanzahl n von Flanken des Ausgabesignals
230 ausgegeben werden. Die Flanken sollen dabei synchron zu steigenden Flanken des Systemtaktsignals
210 ausgegeben werden. Da die Anzahl der steigenden Flanken des Systemtaktsignals
210 während der Positionierzeit T
pos im Allgemeinen, wie auch im konkreten Beispiel der
4, kein ganzzahliges Vielfaches der Gesamtzahl n von auszugebenden Flanken ist, müssen die zeitlichen Abstände zwischen den einzelnen Flanken des Ausgabesignals
230 variieren. Hierzu werden n – 1 Flanken des Ausgabesignals
230 nach zeitlichen Intervallen ausgegeben, deren Dauer ein Vielfaches d
n-1 = T
posdiv(n·T
s) der Periodendauer T
s des Systemtaktsignals
210 ist. Eine weitere Flanke des Ausgabesignals
230 wird nach einem zeitlichen Intervall ausgegeben, dessen Dauer ein Vielfaches
der Periodendauer T
s des Systemtaktsignals
210 ist. Hierbei bezeichnet div den Operator der ganzzahligen Division, also: xdivy = ⌊x/y⌋.
-
Im konkreten Beispiel des ersten Emulationsablaufs 400 der 4 beträgt die Periodendauer Ts des Systemtakts 210 Ts = 1 ms. Der zeitliche Abstand 226 zwischen zwei aufeinander folgenden Synchronisationspulsen 225 des Synchronisationssignals 220, und damit die Positionierzeit Tpos, beträgt in diesem Beispiel Tpos = 28 ms. Die Gesamtzahl n auszugebender Flanken des als erste Ausgabe-Position 231 ausgegebenen Ausgabesignals 230 beträgt n = 5.
-
Das Ausgabesignal 230 wird durch den Encoder-Emulator 180 ab dem zweiten Synchronisationszeitpunkt 222 so ausgegeben, dass eine erste Flanke 411 des als erste Ausgabe-Position 231 ausgegebenen Ausgabesignals 230 nach einem ersten zeitlichen Intervall 421 ausgegeben wird. Das erste Intervall 421 bemisst sich dabei ab dem zweiten Synchronisationszeitpunkt 222, also ab dem Beginn der Positionierzeit Tpos. Eine zweite Flanke 412 des als erste Ausgabe-Position 231 ausgegebenen Ausgabesignals 230 wird nach einem zweiten Intervall 422 ausgegeben. Das zweite Intervall 422 bemisst sich dabei ab der Ausgabe der ersten Flanke 411. Eine dritte Flanke 413 des als erste Ausgabe-Position 231 ausgegebenen Ausgabesignals 230 wird nach einem dritten Intervall 423 ausgegeben. Eine vierte Flanke 414 des als erste Ausgabe-Position 231 ausgegebenen Ausgabesignals 230 wird nach einem vierten Intervall 424 ausgegeben. Eine fünfte Flanke 415 des als erste Ausgabe-Position 231 ausgegebenen Ausgabesignals 230 wird nach einem fünften Intervall 425 ausgegeben.
-
Das erste Intervall 421, das zweite Intervall 422, das dritte Intervall 423 und das vierte Intervall 424 weisen jeweils eine zeitliche Länge auf, die einem Fünffachen der Periodendauer Ts des Systemtakts 210 entspricht, also eine Dauer von 5 ms. Das fünfte Intervall 425 weist dagegen eine größere zeitliche Länge auf, die dem Achtfachen der Periodendauer Ts des Systemtakts 210 entspricht, also eine Dauer von 8 ms. Gemeinsam weisen das erste Intervall 421, das zweite Intervall 422, das dritte Intervall 423, das vierte Intervall 424 und das fünfte Intervall 425 somit eine Dauer auf, die der Positionierzeit Tpos von 28 ms entspricht.
-
Beim beispielhaften ersten Emulationsablauf 400 wird die Ausgabe der letzten Flanke des Ausgabesignals 230 so verzögert, dass die letzte Flanke des Ausgabesignals 230 mit dem dritten Synchronisationszeitpunkt 223 zusammenfällt. Damit ist der zeitliche Abstand zwischen der vorletzten Flanke und der letzten Flanke des Ausgabesignals 230 größer als die zeitlichen Abstände zwischen den vorhergehenden Flanken des Ausgabesignals 230. Selbstverständlich wäre es möglich, anstelle des fünften Intervalls 425 das erste Intervall 421, das zweite Intervall 422, das dritte Intervall 423 oder das vierte Intervall 424 länger als die übrigen Intervalle des zur ersten Ausgabe-Position 231 gehörigen Ausgabesignals 230 auszubilden.
-
Das fünfte Intervall 425 weist eine um 60% größere Dauer auf als das erste Intervall 421, das zweite Intervall 422, das dritte Intervall 423 und das vierte Intervall 424. Ein dem Encoder-Emulator 180 nachgeordneter Empfänger des durch den Encoder-Emulator 180 als erste Ausgabe-Position 231 erzeugten Ausgabesignals 230 kann die Änderung der Dauer der Intervalle 421, 422, 423, 424, 425 als Geschwindigkeitsänderung interpretieren, was in einigen Anwendungsfällen nachteilig ist. Falls es sich bei dem dem Encoder-Emulator 180 nachgeordneten Empfänger des Ausgabesignals 230 um ein Zählsystem handelt, so kann durch die Änderung der Dauer der Intervalle 421, 422, 423, 424, 425 eine Eingangsbandbreite des nachgeordneten Empfängers überschritten sein.
-
5 zeigt eine schematische Darstellung eines zweiten Emulationsablaufs 500 zur Ausgabe der ersten Ausgabe-Position 231 mit dem Ausgabesignal 230. Auf einer horizontalen Achse ist wiederum eine Zeit 501 aufgetragen.
-
Beim zweiten Emulationsablauf 500 wird nach einem ersten Intervall 521 eine erste Flanke 511 des Ausgabesignals 230 ausgegeben. Nach einem weiteren zweiten Intervall 522 wird eine zweite Flanke 512 ausgegeben. Nach einem nachfolgenden dritten Intervall 523 wird eine dritte Flanke 513 ausgegeben. Nach einem weiteren vierten Intervall 524 wird eine vierte Flanke 514 ausgegeben. Nach einem anschließenden fünften Intervall 525 wird eine fünfte Flanke 515 ausgegeben. Die erste Flanke 511, die dritte Flanke 513 und die fünfte Flanke 515 sind fallende Flanken des Ausgabesignals 230. Die zweite Flanke 512 und die vierte Flanke 514 sind im dargestellten Beispiel steigende Flanken des Ausgabesignals 230.
-
Beim zweiten Emulationsablauf 500 ist die zur Verfügung stehende Positionierzeit Tpos derart auf die zwischen den einzelnen Flanken 511, 512, 513, 514, 515 angeordneten Intervalle 521, 522, 523, 524, 525 verteilt, dass sich die Dauern der Intervalle 521, 522, 523, 524, 525 höchstens um die Periodendauer Ts des Systemtakts 210 unterscheiden.
-
Dies erfordert es, von der Gesamtzahl von n = 5 Flanken des Ausgabesignals 230 eine erste Anzahl von l = Tposmod(n·Ts) von Intervallen um den Wert einer Periodendauer Ts des Systemtakts 210 zu verlängern. Eine zweite Anzahl von k = n – l von Intervallen des Ausgabesignals 230 weist eine kürzere Dauer auf. Dabei weisen die k kürzeren Intervalle jeweils eine Dauer auf, die ein erstes Vielfaches dk = Tposdiv(n·Ts) der Periodendauer Ts des Systemtakts 210 ist. Die l längeren Intervalle weisen jeweils eine zeitliche Dauer auf, die einem zweiten Vielfachen dl = dk + 1 der Periodendauer Ts des Systemtakts 210 entspricht. Hier bezeichnet mod den Operator, der den Rest einer ganzzahligen Division liefert, also: xmody = x – y·(xdivy).
-
Im konkreten Beispiel mit Ts = 1 ms, Tpos = 28 ms und n = 5 ergibt sich l = 28 ms mod(5·1 ms) = 3, k = 5 – 3 = 2, dk = 28 ms div(5·1 ms) = 5, dl = 5 + 1 = 6. Beim zweiten Emulationsablauf 500 der 5 weisen das erste Intervall 521, das zweite Intervall 522 und das dritte Intervall 523 (also l Intervalle) eine Dauer von sechsmal (also dl) der Periodendauer Ts des Systemtakts 210 auf. Das vierte Intervall 524 und das fünfte Intervall 525 (also k Intervalle) weisen eine Dauer von fünfmal (also dk) der Periodendauer Ts des Systemtakts 210 auf. Gemeinsam weisen das erste Intervall 521, das zweite Intervall 522, das dritte Intervall 523, das vierte Intervall 524 und das fünfte Intervall 525 eine Dauer auf, die der Positionierzeit Tpos entspricht, also eine Dauer des 28-fachen der Periodendauer Ts des Systemtakts 210.
-
Beim beispielhaften zweiten Emulationsablauf 500 der 5 sind die l verlängerten Intervalle 521, 522, 523 am Beginn der Positionierzeit Tpos nach dem zweiten Synchronisationszeitpunkt 222 angeordnet. Selbstverständlich wäre es auch möglich, die k kurzen Intervalle am Beginn der Positionierzeit Tpos nach dem zweiten Synchronisationszeitpunkt 222 vor den l verlängerten Intervallen anzuordnen.
-
Der zweite Emulationsablauf 500 bietet den Vorteil, dass das erste Intervall 521, das zweite Intervall 522 und das dritte Intervall 523 jeweils dieselbe zeitliche Dauer aufweisen. Ebenso weisen auch das vierte Intervall 524 und das fünfte Intervall 525 die gleiche Dauer auf. Dadurch kommt es während des zweiten Emulationsablaufs 500 lediglich einmal zu Beginn der Positionierzeit Tpos nach dem zweiten Synchronisationszeitpunkt 222 und einmal nach dem dritten Intervall 523 zu einer Änderung der Intervalldauer. Außerdem beträgt die Änderung der Intervalldauer jeweils nur eine Periodendauer Ts des Systemtakts 220.
-
6 zeigt eine schematische Darstellung eines dritten Emulationsablaufs 600. Auf einer horizontalen Achse ist wiederum eine Zeit 601 aufgetragen. Beim dritten Emulationsablauf 600 wird nach einem ersten Intervall 621 eine erste Flanke 611 des Ausgabesignals 230 ausgegeben. Nach einem anschließenden zweiten Intervall 622 wird eine zweite Flanke 612 ausgegeben. Nach einem anschließenden dritten Intervall 623 wird eine dritte Flanke 613 ausgegeben. Nach einem anschließenden vierten Intervall 624 wird eine vierte Flanke 614 ausgegeben. Nach einem anschließenden fünften Intervall 625 wird eine fünfte Flanke 615 des Ausgabesignals 230 ausgegeben.
-
Auch beim dritten Emulationsablauf 600 weisen k Intervalle eine Dauer auf, die dem zweiten Vielfachen dk der Periodendauer Ts des Systemtakts 210 entspricht, während l Intervalle eine Dauer aufweisen, die dem ersten Vielfachen dl der Periodendauer Ts des Systemtakts 210 entspricht. Allerdings weisen beim dritten Emulationsablauf 600 das erste Intervall 621, das dritte Intervall 623 und das fünfte Intervall 625 die größere zeitliche Dauer auf, während das zweite Intervall 622 und das vierte Intervall 624 die geringere zeitliche Dauer aufweisen. Somit sind die verlängerten Intervalle und die kürzeren Intervalle gleichmäßig über die Positionierzeit Tpos verteilt.
-
Die sich daraus ergebenden Änderungen der Intervalldauer während der Positionierzeit Tpos bewirken eine Schwebung im Ausgabesignal 230. Dem Encoder-Emulator 180 nachgeordnete Empfänger des Ausgabesignals 230 können PT1-Eigenschaften aufweisen, wodurch hohe Frequenzen stärker bedämpft werden als niedrigere. In diesem Fall wird die Schwebung in dem mittels des dritten Emulationsablaufs 600 erzeugten Ausgabesignal 230 durch dem Encoder-Emulator 180 nachgeordnete Empfänger des Ausgabesignals 230 gedämpft und hat daher keine negativen Auswirkungen. Falls dem Encoder-Emulator 180 nachgeordnete Empfänger des Ausgabesignals 230 rein zählenden Charakter aufweisen, so ist die Verteilung der kurzen und langen Intervalle auf die Positionierzeit Tpos unerheblich.
-
Zur Ermittlung einer gleichmäßigen Verteilung der k kürzeren und l längeren Intervalle über die Positionierzeit Tpos kann beispielsweise ein angepasster Bresenham-Algorithmus genutzt werden. Hierzu wird beispielsweise dx = k und dy = l gesetzt. Für jeden durch den Bresenham-Algorithmus vorgesehenen Schritt in x-Richtung wird ein kurzes Intervall mit Dauer dk ausgegeben, für jeden durch den Bresenham-Algorithmus vorgesehenen Schritt in y-Richtung ein langes Intervall mit Dauer dl.
-
Das durch den Encoder-Emulator 180 erzeugte Ausgabesignal 230 kann einem dem Encoder-Emulator 180 nachgeordneten Empfänger des Ausgabesignals 230, beispielsweise der Kamera 130 der Produktionsstraße 100 der 1, unmittelbar zugeführt werden, wie dies in 1 dargestellt ist. Es ist allerdings auch möglich, zwischen der Erzeugung des Ausgabesignals 230 und dem Empfänger eine weitere Prozessierung einzufügen, die beispielsweise durch den Encoder-Emulator 180 selbst oder durch ein eingefügtes Zwischenglied vorgenommen werden kann. Dabei kann beispielsweise aus dem Ausgabesignal 230 ein vergröbertes externes Ausgabesignal erzeugt werden, indem lediglich zu jeder i-ten Flanke des Ausgabesignals 230 eine Flanke des externen Ausgabesignal ausgegeben wird. Dabei ist i eine ganze Zahl, bevorzugt eine Zweierpotenz, beispielsweise i = 8 oder i = 16.
-
Bezugszeichenliste
-
- 100
- Produktionsstraße
- 110
- Produkt
- 120
- Fließband
- 130
- Kamera
- 140
- Steuerung
- 150
- Antrieb
- 160
- Motor
- 170
- Encoder
- 180
- Encoder-Emulator
- 190
- Schalter
- 200
- Soll-Positionssignal
- 201
- erste Soll-Position
- 202
- zweite Soll-Position
- 203
- dritte Soll-Position
- 210
- Systemtaktsignal
- 220
- Synchronisationssignal
- 221
- erster Synchronisationszeitpunkt
- 222
- zweiter Synchronisationszeitpunkt
- 223
- dritter Synchronisationszeitpunkt
- 225
- Synchronisationspuls
- 226
- zeitlicher Abstand zwischen zwei aufeinanderfolgenden Synchronisationspulsen
- 230
- Ausgabesignal
- 231
- erste Ausgabe-Position
- 232
- zweite Ausgabe-Position
- 233
- dritte Ausgabe-Position
- 240
- weiteres Ausgabesignal
- 241
- Phasenverschiebung
- 300
- zeitlicher Ablauf
- 301
- Zeit
- 302
- Datenübernahmezeitpunkt
- 400
- erster Emulationsablauf
- 401
- Zeit
- 411
- erste Flanke
- 412
- zweite Flanke
- 413
- dritte Flanke
- 414
- vierte Flanke
- 415
- fünfte Flanke
- 421
- erstes Intervall
- 422
- zweites Intervall
- 423
- drittes Intervall
- 424
- viertes Intervall
- 425
- fünftes Intervall
- 500
- zweiter Emulationsablauf
- 501
- Zeit
- 511
- erste Flanke
- 512
- zweite Flanke
- 513
- dritte Flanke
- 514
- vierte Flanke
- 515
- fünfte Flanke
- 521
- erstes Intervall
- 522
- zweites Intervall
- 523
- drittes Intervall
- 524
- viertes Intervall
- 525
- fünftes Intervall
- 600
- dritter Emulationsablauf
- 601
- Zeit
- 611
- erste Flanke
- 612
- zweite Flanke
- 613
- dritte Flanke
- 614
- vierte Flanke
- 615
- fünfte Flanke
- 621
- erstes Intervall
- 622
- zweites Intervall
- 623
- drittes Intervall
- 624
- viertes Intervall
- 625
- fünftes Intervall
- Ts
- Periodendauer des Systemtakts
- Tpos
- Positionierzeit
- n
- Gesamtzahl von Flanken
- l
- erste Anzahl von Intervallen
- k
- zweite Anzahl von Intervallen
- dl
- erstes Vielfaches der Periodendauer des Systemtakts
- dk
- zweites Vielfaches der Periodendauer des Systemtakts