# Linear Encoder Indentifizierung und Interpretieren mit Beckhoff SPS



## Heinonthehill (10 Juli 2017)

*Umbau Messmaschine mit Beckhoff NCI [Aktuell - Alles auf Anfang :D]*

Hallo Zusammen,

mit diesem Beitrag feier ich meinen Einstand in diesem Forum. Vorab danke ich schon mal allen, die sich mit meinem Sachverhalt auseinander setzen 

Kurze Backgroundinfo: Mein Name ist Jan, derzeit noch Student im Rhein-Sieg-Kreis (Maschinenbau) und habe gerade meinen 27. Geburtstag gefeiert. 




Zu meiner Fragestellung:


Ich befinde mich an der Umsetzung eines für mich sehr interessanten Projektes. Vor einiger Zeit habe ich eine defekte Koordinatenmessmaschine erstanden. Die Drive Unit wurde ausgemustert und dementsprechend war auch für die Maschine mit funktioneller Mechanik keine Verwendung mehr. Auf diese Mechanik versuche ich mit einer eigenen Steuerung die Messfunktion wieder herzustellen.

Dafür habe ich mich für einen Beckhoff CX5130 Embedded PC entschieden um ein autarkes arbeiten zu ermöglichen. An diese sind bereits die üblichen Anbaukarten für alle Signalverarbeitungen bezüglich Taster/Sicherheit/Signalverarbeitung untergekommen. Das verbleibende und größte Problem stellt für mich das Auslesen der bestehenden Glasmaßstäbe dar um die Verfahrmechanik der 3 Achsen wieder herzustellen.

Der Antrieb wird über jeweils einen DC Motor realisiert, der reibschlüssig eine Welle antreibt. Für die Positionserfassung ist ein Teledyne Gurley Linear Encoder (Model 8715) verbaut. Das Model stammt wohl aus den 80-ern und hat mich dementsprechend einige Nerven gekostet Informationen darüber zu bekommen. Laut Datenblatt des Nachfolgers (8716) erfolgt die Signalausgabe über Sin/Cos/Index Signalstruktur.





Maschinenseitig habe ich versucht die Struktur der Platinen nicht aufzubrechen sondern lediglich die Signale an der richtigen Stelle abzugreifen.

Von dem Encoder aus verläuft das Signal in diese Platine und wird dort anscheinend umgerechnet. Aus der 10 Poligen Encoder Zuleitung wird das Signal auf ein 6 Poliges Flachbandkabel umgebaut und von da aus der ehemaligen Drive Unit zugeführt. Zwei der Leitungen sind für die Spannungsversorgung, die restlichen vier führen ein zwei-kanaliges Signal.







Mit dem Oszilloskop betrachtet sieht das ganze so aus:




Wird der Lesekopf leicht angetippt erscheint folgendes Bild:





Womit habe ich es hier generell zu tun?

Für das ausgehende Signal des Encoders (Sin/Cos/Index) habe ich bei Beckhoff die El51xx Klemmen gefunden, die dafür scheinbar ein passendes Interface bereitstellen. Allerdings sind diese Karten für eine 3-Achsige Bestückung recht teuer und da ich damit noch nicht gearbeitet habe, ist auch das Ergebnis ungewiss. 

An die Cracks, die sich mit diesen Dingen öfter beschäftigen als ich: Gibt es hier eine einfachere Möglichkeit das bereits verarbeitete A,B, Signal mit einer anderen Klemme auszulesen ohne Einschränkungen an die Genauigkeit zu verlieren? Oder ist der beste Weg das Signal des Encoders direkt abzugreifen und über die erwähnte 51xx Klemme auszulesen?



Über jegliche Hilfe bin ich extrem dankbar!


Lg Jan


----------



## ksc (12 Juli 2017)

Hallo Jan,

bei mir wird nur das Bild mit der Platine angezeigt...
Die anderen Bildern währen aber für die Problemlösung auch interessant.

Grüße


----------



## oliver.tonn (12 Juli 2017)

Wenn der Encoder wirklich, wie Du schreibst, ein Sin/Cos Signal ausgibt ist die von Dir gewählte Klemme falsch, dann müsstest Du die EL5021 benutzen.


----------



## Heinonthehill (12 Juli 2017)

Hallo,

erstmal danke für die Antworten. Was mit den Übrigen Bildern passiert ist verstehe ich auch nicht, hab diese aber gerade neu eingepflegt.


@oliver.tonn:

Ja du hast recht, ich hatte noch die 5101 geöffnet, die 5021 wäre aber wohl die Richtige um das Signal direkt am Lesekopf abzugreifen. Wie kann denn das auf dem Oszilloskop betrachtete Signal interpretiert werden? Gibt es da Klemmen die damit etwas anfangen können? Durch die Umrechnung darf ja keine Genauigkeit verloren gehen, ergo schlussfolgere ich, dass die Platine die Sin/Cos Auswertung bereits auf einen anderen Signaltyp umgewandelt hat.


----------



## Heinileini (12 Juli 2017)

Moin Jan!
Mich macht stutzig, dass in Figure 1 RechteckSignale dargestellt sind, die aber mit Cosine bzw. Sine bezeichnet werden.
Mit Cosine und Sine ist möglicherweise nur gemeint, dass die beiden Signale um 90° gegeneinander verschoben sind?
Wenn bisher RechteckSignale zur AuswerteElektronik übertragen werden/wurden, dann ...
- brauchst Du Dir keinen Kopf über einen Verlust an Genauigkeit zu machen
- benötigst Du keine "Klemmen", die Sinus-/Cosinus-Signale verarbeiten, sondern RechteckSignale.
Wenn bisher Sinus-/Cosinus-Signale zur AuswerteElektronik übertragen werden/wurden, dann ...
- dürfte es kompliziert und teurer werden
- müsstest Du klären, ob die AuswerteElektronik die Möglichkeit der ImpulsVervielfachung nutzt und den entsprechenden Faktor ermitteln
- die nominellen SignalPegel klären, z.B. 11uAss oder 1Vss ... (uA für microA | ss: Spitze/Spitze alias pp=peak to peak).
Die Oszillogramme sagen mir nichts. Kannst Du einen Schieber verfahren? Dran klopfen ist nicht so recht aussagekräftig. 
Motor von Hand drehen? Notfalls Schieber lösen und manuell bewegen?
Wenn das 6pol. Kabel nur 2 zweikanalige Signale hat, dann doch wohl A und B - wird denn das IndexSignal geschlabbert?
Gruss, Heinileini
PS: mit "reibschlüssig" meinst Du doch (hoffentlich) nicht, dass sich eine Rutschkupplung zwischen Motor und der Achse befindet?
PPS: hab mir Deine Beschreibung nochmal auf der Zunge zergehen lassen.
Wenn "nur" MessMaschine, dann also nix CNC, nix Referenzieren der Achsen, sondern vermutlich nur manuell auf Null stellen und die "RutschKupplungen" wären auch kein Thema ...


----------



## ksc (12 Juli 2017)

Hallo Jan,

wenn ich das richtig verstanden habe, dann kommt aus der Platine schon ein Inkremental-Signal raus (A+B-Spur digital)?

Wenn ja, welchen Signalpegel hast du da, sind das 0V-5V (bzw. 0V-24V) Signale (Single ended) oder differenzielle Signale mit RS-485/RS422?
Was auch noch wichtig ist, wie schnell ist das Signal, heißt wie schnell muss dass Signal abgetastet werden, damit keine Flanke verloren geht?

Hintergrund:
Rein theoretisch könnte man die A und B Spur mit einer Oversampling Klemme (EL1262 für 24V bzw. EL1262-0050 für 5V) erfassen (wenn es signle ended Signale sind). Die maximale Abtastrate ist hier 1 MHz!
Aber hier muss man dann echt viel in der SPS umrechnen, damit man hier die Position sauber ausrechnet.

Diese Klemmen kosten aber auch ihr Geld...

Bei differenziellen Signalen sehe ich hier keine sinnvolle Möglichkeit...

Grüße


----------



## Heinonthehill (12 Juli 2017)

Hallo,


puh das ist eine Menge Input. Danke erstmal dafür! Ich versuche auf eure Fragen so gut wie möglich einzugehen, allerdings werden hier auch einige meiner unklaren Punkte abgefragt.

@Heinileini



> Wenn bisher RechteckSignale zur AuswerteElektronik übertragen werden/wurden, dann ...
> - brauchst Du Dir keinen Kopf über einen Verlust an Genauigkeit zu machen
> - benötigst Du keine "Klemmen", die Sinus-/Cosinus-Signale verarbeiten, sondern RechteckSignale.



Ich gehe davon aus, dass die letzte Steuerung auch nur die Rechtecksignale verarbeitet hat, wie gesagt von der Platine zur ehemaligen Drive Unit gehen nur die 2 zweikanaligen Leitungen. Die Möglichkeit eine Sin/Cos Karte zu verwenden kam mir nur als Notanker, falls ich mit den Rechtecken nichts anfangen kann. Komplizierter würde es dadurch auf jeden Fall.



> Wenn das 6pol. Kabel nur 2 zweikanalige Signale hat, dann doch wohl A und B - wird denn das IndexSignal geschlabbert?




Das ist auch meine Vermutung, eine andere Kombination würde noch weniger Sinn ergeben.

Mein erster Ansatz (jedoch bevor ich nach monatelangen E-mail Verkehr die Unterlagen von dem amerikanischen Encoder Hersteller bekommen habe), war den integrierten Encoder Eingang der EL 7342 Karte zu verwenden, da ich diese o.Ä. für die Ansteuerung der DC Motoren benötige. Alles über 1,5V wird als high, drunter als low erkannt. Das passt auf die Amplituden die ich auf dem Oszi. sehe. Das Problem ist, dass die Karte nur einkanalig ausliest und dadurch keine Möglichkeit der Verfahrrichtungserkennung besitzt. Die 400.000 inc/s sollten laut Taschenrechner und der vorliegenden Auflösung wohl für 10m/min Geschwindigkeit ausreichen. Obwohl hier das sichere Erkennen aller Flanken wieder auf einem komplett anderen Blatt steht.






> Die Oszillogramme sagen mir nichts. Kannst Du einen Schieber verfahren? Dran klopfen ist nicht so recht aussagekräftig.
> Motor von Hand drehen? Notfalls Schieber lösen und manuell bewegen?




Werde ich morgen mal ausprobieren und ggf. die Ergebnisse auch hier hochladen. Ich meine mich aber zu erinnern, dass sich dort nichts anderes eingestellt hat, wie beim simplen antippen.





> PS: mit "reibschlüssig" meinst Du doch (hoffentlich) nicht, dass sich eine Rutschkupplung zwischen Motor und der Achse befindet?
> PPS: hab mir Deine Beschreibung nochmal auf der Zunge zergehen lassen.
> Wenn "nur" MessMaschine, dann also nix CNC, nix Referenzieren der Achsen, sondern vermutlich nur manuell auf Null stellen und die "RutschKupplungen" wären auch kein Thema ...




Das ist mein wunder Punkt  ja, es ist ein reiner Reibschluss. Pneumatische Aktuatoren drücken mehrere Kugellager unter einem Winkel auf die angetriebene Welle und ermöglichen dadurch die Umwandlung von rotatorischer zu translatorischer Bewegung. Für einen reinen Messbetrieb ist also NC P2P vollkommen ausreichend. Da kommen aber die Ansprüche ins Spiel. Da ich vorhabe auch eventuell andere modulare Werkzeuge aufzunehmen (z.b. Laser, FDM Extruder) wird es eben leider doch eine CNC Steuerung, da dort die Interpolation der Achsen notwendig wird.

Um es vorweg zu nehmen: Ja. Ich werde Probleme mit der Dynamik bekommen. Aber die Tests sind positiv, ein Aufbau mit Druckwaage hat mir vernünftige Beschleunigungen attestiert ohne den Reibschluss zu verlieren. Sollte mir das nicht ausreichen habe ich noch ein paar Möglichkeiten die Reibung zu erhöhen.

Das thema Referenzierung ist nicht wild. Im Messbetrieb kann ich gezielt mit einer Referenzkugel antasten, für alles weitere benötige ich die Genauigkeit nur in der Verfahrbewegung, nicht in den absoluten Maßen.




@ksc




> wenn ich das richtig verstanden habe, dann kommt aus der Platine schon ein Inkremental-Signal raus (A+B-Spur digital)?




s.o. - Ja davon gehe ich auch aus.




> Wenn ja, welchen Signalpegel hast du da, sind das 0V-5V (bzw. 0V-24V) Signale (Single ended) oder differenzielle Signale mit RS-485/RS422?




Also die Signalpegel sind 0-4V. Der Rest der Frage ist quasi der Grund warum ich hier einen Thread eröffne. Ich kann es mir mit meinem Erkenntnisstand nicht sicher herleiten und will keine Vermutungen aufstellen. Wie kann ich das sicher identifizieren?




> Was auch noch wichtig ist, wie schnell ist das Signal, heißt wie schnell muss dass Signal abgetastet werden, damit keine Flanke verloren geht?





Die Länge eines Impulses ist laut Oszi. ca. 750ns lang. Das würde sich ja mit 1MHZ gerade so _nicht_ ausgehen. Da dieses Signal allerdings von der Platine ausgegeben wird und diese mehrere Potis sowie Schalter aufweist... würde mich ja wundern wenn man das nicht in irgendeiner Art und Weise verändern könnte. 



Aber nichtsdestotrotz. Wieder viele gute Ansätze an denen ich mich etwas einlesen kann!

Vielen Dank dafür.


Lg Jan


----------



## Heinileini (12 Juli 2017)

Moin Jan!

Zu "Signalpegel sind 0-4V":
"TTL-Pegel"

Zu: "Länge eines Impulses ist laut Oszi. ca. 750ns lang":
???!!! Die Impulse sind unabhängig von der Verfahrgeschwindigkeit ca. 750ns lang?
Das ist die GrößenOrdnung der IndexSignale (1,5+/-0,3us) in Figure 1 und 2 bzw. der RichtungsImpulse (1,0+/-0,3us) in Figure 2!
Die RichtungsImpulse laut Figure 2 haben aber für mein Verständnis nichts mit den "inkrementalen" Signalen zu tun, wie man sie üblicherweise im Zusammenhang mit MessSystemen versteht - die sind in Figure 1 dargestellt!

Zu "differenzielle Signale":
Laut Figure 1 und 2 hast Du es bei allen Signalen mit differenziellen Signalen zu tun: zu den Signalen A, B, RichtungsImpuls vorwärts und rückwärts sowie Index ist jeweils auch das negierte Signal vorhanden. Sinn der Sache ist es, die Störempfindlichkeit gering zu halten. "Klemmen" - oder wie auch immer die AuswerteElektronik genannt wird - die für die Auswertung inkrementaler Längen- oder Winkelgeber ausgelegt sind, dürften wohl generell den Anschluss differenzieller Signale ermöglichen. 

Zu "CNC":
Die CNC von vorn herein einplanen und nicht erst als spätere Erweiterung. Dann wird aber das Thema "Referenzieren" doch wieder akut. 

Zu "RutschKupplung":
Ich würde spätestens dann mit FehlerMeldungen der CNC rechnen, wenn's rutscht UND Du Motoren mit Gebern verwendest. Letzteres ist aber vermutlich z.Z. nicht der Fall.

Gruss, Heinileini


----------



## ksc (13 Juli 2017)

Hallo,



> Das Problem ist, dass die Karte nur einkanalig ausliest und dadurch keine Möglichkeit der Verfahrrichtungserkennung besitzt.



Das verstehe ich noch nicht ganz. Die EL7342 hat ganz normale Inkremental-Encoder Eingänge und erwartet die in Form von  A und B - Spur (2 um 90° versetzte Rechtecksignale,* keine Pulse!!!*). Also das, was in dem 1. Bild auf der linken Seite gezeigt ist. Damit kann die Klemme natürlich auch die Drehrichtung erkennen!
Hierbei sind die Signalzeiten direkt von der Drehzahl abhänig. Als Eingangspegel erwartet die Klemme für Signalspannung "0": -3 V... 1,5 V und für Signalspannung "1": 2,5 V... 24 V. Laut des 1. Bilds hätte ich auch gedacht, dass es sich um differenzielle handelt...

Die Art mit Forward und Reverse ist zwar auch eine Möglichkeit der Wegerfassung, allerdings meines Wissens nach deutlich seltener und wird von keiner Beckhoff Klemme verwendet. Darüber hinaus gibt es auch noch eine dritte Variante mit den Pulsen auf der einen Leitung und der Zählrichtung (0 = runter zählen, 1= hoch zählen) auf der anderen Leitung.

Ich hoffe das hilft noch etwas...

Grüße


----------



## Heinonthehill (13 Juli 2017)

Hallo,


ich hatte leider heute nicht allzu viel Zeit die neu gewonnenen Erkenntnisse zu überprüfen aber ich bin mir denke ich über viele Sachen etwas klarer geworden. Andere hingegen sind mir immer noch ein Rätsel...


@Heinileini



> ???!!! Die Impulse sind unabhängig von der Verfahrgeschwindigkeit ca. 750ns lang?



Ja, in der Tat! Ich habe mir den Tipp zu Herzen genommen und anstatt des antippens mal ein wirkliches Verfahren der Achse gegengetestet.Dafür musste ich allerdings noch die letzten Arbeiten an der Druckluftversorgung abschließen. Die Impulslänge ist tatsache unabhängig von der Verfahrgeschwindigkeit.





> Laut Figure 1 und 2 hast Du es bei allen Signalen mit differenziellen Signalen zu tun: zu den Signalen A, B, RichtungsImpuls vorwärts und rückwärts sowie Index ist jeweils auch das negierte Signal vorhanden. Sinn der Sache ist es, die Störempfindlichkeit gering zu halten.



Hier ist mir heute einiges grundlegendes über die Sensorik dahinter klar geworden. Zuerst habe ich jede ausgehenden Leitungen als Single Ended gegen die Masse des Oszis betrachtet. Hier liegt eine harmonische Schwingung im Hintergrund mit einer Amplitude von +-1V. Der Encoder selber wird übergangsweise über ein Labornetzteil mit einer Spannung von 8 Volt betrieben. (Habe ich von der Zuleitung der ehemaligen Drive Unit übernommen). Bei der differentiellen Betrachtung der Aderpaare war diese Schwingung nicht mehr vorhanden und das Gehabte Bild stellt sich wieder ein.

Eine neue Sache ist mir dabei allerdings aufgefallen. Durch die freigängige Achse kann ich nun die beiden Verfahrrichtungen differenziert betrachten.

Tut mir leid für die schlechte Bildqualität, aber ich bräuchte noch einen weiteren Arm um das vernünftig zu machen.

Drehrichtung 1:





Drehrichtung 2:






Die Signale ähneln sehr stark der in Figure 2 beschriebenen Datenpulsen. Warum in der einen Drehrichtung allerdings nur ein Puls ausgegeben wird ist mir rätselhaft. Vielleicht ist dies aber auch der Drehrichtungserkennung geschuldet.




> Zu "CNC":
> Die CNC von vorn herein einplanen und nicht erst als spätere Erweiterung. Dann wird aber das Thema "Referenzieren" doch wieder akut.
> 
> Zu "RutschKupplung":
> Ich würde spätestens dann mit FehlerMeldungen der CNC rechnen, wenn's rutscht UND Du Motoren mit Gebern verwendest. Letzteres ist aber vermutlich z.Z. nicht der Fall.




Ja genau. Direkt von Anfang an CNC und dann nicht später nochmal kaufen und nochmal umbauen müssen. Auch zu den Gebern hast du recht, derzeit sind keine verbaut und sollte es sich so in Betrieb nehmen lassen würde ich auch auf Dauer drauf verzichten wollen.



@ksc




> Die EL7342 hat ganz normale Inkremental-Encoder Eingänge und erwartet die in Form von A und B - Spur (2 um 90° versetzte Rechtecksignale,* keine Pulse!!!). *


Ja genau, für die gemessenen Pulse ist die Klemme nicht brauchbar. Ich hatte diese Anfangs in Betracht gezogen, da ich eh eine Lösung für den Antrieb benötige und die Signalpegel wenigstens entsprechend gewesen wären. Zudem lag bei den Signalpegeln die Vermutung nahe, dass es sich tatsache um ein Rechtecksignal handelt, dass die Klemme auslesen kann.




Meine Allgemeinen Erkenntnisse sowie Gedankengänge zum derzeitigen Punkt:

- Die Signalpegel sind 0-4 Volt
- Nach der Platine wird ein pro Inkrement ein Datenpuls von ca 750ns ausgegeben, unabhängig von der Verfahrgeschwindigkeit. Die Drehrichtung entscheidet über die Anzahl der aufeinanderfolgenden Pulse (rechts=1, links=2)
- Vor der Platine liegen SIN/COSINE "genannte" Rechtecksignale an
- Aus einem weiteren eben gefundenen Entschlüsselungscode für die Bestellnummer geht hervor, dass ich:
   - Einen Encoder ohne Index Signal besitze
   - Der Glasmaßstab eine 25 Linien/mm Genauigkeit aufweist
   - Die nachgeschaltete Platine eine 40-Fache Unterteilung der Linien ermöglicht. Anscheinend heißen die vom Encoder ausgegebenen Signale aus diesem Grund SIN/COSINE. Aus meinen Recherchen schlussfolgere ich, dass die Potis auf der Platine zum genauen Überlagern der beiden Signale genutzt werden. Die Art und Weise wie diese markiert sind (Edding!) lässt auf eine erfolgte Kalibrierung schließen und wird deshalb weiterhin nicht angefasst.



Daraus ergeben sich meines Erachtens zwei grundsätzliche Möglichkeiten mit der bestehenden Hardware etwas anzufangen. (Wobei ein Neukauf dieser Elemente wohl einen wirtschaftlichen Totalschaden bedeuten würde)

1: Auslesen der SIN/COSINE Rechtecksignale und die elektronische Unterteilung nachbauen :-? (Okay, streichen wir Option Nr.1)

2: Die Datenpulse nutzen. 



Das Ganze muss ich nun auch erstmal noch etwas weiter durchrecherchieren und alle Unklarheiten beseitigen. Was mich am meisten stört, ist der Fakt dass ich trotz der vielen Betrachtungen immer noch nicht sagen kann wie das System denn nun ordnungsgemäß bezeichnet wird. Zudem ist die Ausgabe der Pulse scheinbar nur über einen Kanal. Kanal 2 auf dem Oszi (blau) wird zwar zeitgleich zum Puls von Kanal 1 (gelb) auch angestoßen, daraus kann ich mir aber keinen Reim bilden.


Ich danke allen die sich durch meine wüsten Aufzeichnungen hier durchkämpfen 


Lg Jan


----------



## ksc (14 Juli 2017)

Guten Morgen, 

was mich noch ein bisschen stutzig macht ist, wenn der Input zu der Platine (= Ausgangssignal vom Sensor)  wirklich ein Rechteck Signal ist, dann frage ich mich, wie die Platine das 40-fach höher auflösen kann... 4-fach hätte ich ja verstanden (4-fach Flankenauswertung, üblich bei Inkremental-Encodern). Aber für 40-fach fehlt in den Rechtecksignalen schlicht an Informationsgehalt,  hätte ich in meinem (nicht mehr ganz) jugendlichem Leichtsinn behauptet... 
Wenn man ein SinCos Geber hat, dann sieht natürlich anders aus, hier ziehe ich die Informationen durch eine entsprechend gute analoge Auflösung raus. 

Grüße


----------



## Heinileini (14 Juli 2017)

Moin Jan!

Das Zitieren hakt mal wieder, also zitiere ich wieder per ZwischenAblage. Du schreibst:

"Meine Allgemeinen Erkenntnisse sowie Gedankengänge zum derzeitigen Punkt:

 - Die Signalpegel sind 0-4 Volt
 - *Nach der Platine *wird ein pro Inkrement ein Datenpuls von ca 750ns ausgegeben, unabhängig von der Verfahrgeschwindigkeit. Die Drehrichtung entscheidet über die Anzahl der aufeinanderfolgenden Pulse (rechts=1, links=2)
 - *Vor der Platine *liegen SIN/COSINE "genannte" Rechtecksignale an
 - Aus einem weiteren eben gefundenen Entschlüsselungscode für die Bestellnummer geht hervor, dass ich:
   - Einen Encoder ohne Index Signal besitze
   - Der Glasmaßstab eine 25 Linien/mm Genauigkeit aufweist
   - *Die nachgeschaltete Platine *eine 40-Fache Unterteilung der Linien ermöglicht. Anscheinend heißen die vom Encoder ausgegebenen Signale aus diesem Grund SIN/COSINE. Aus meinen Recherchen schlussfolgere ich, dass die Potis auf der Platine zum genauen Überlagern der beiden Signale genutzt werden. Die Art und Weise wie diese markiert sind (Edding!) lässt auf eine erfolgte Kalibrierung schließen und wird deshalb weiterhin nicht angefasst."

Das verwirrt mich. Sprichst Du von 2 Platinen? Der Encoder liefert etwas an die 1. Platine und die 1. weiter an die 2.?
Die Schaltung, die die Impulse ver40facht, kann mit Rechtecken am Eingang nichts anfangen - da hat ksc absolut Recht. Sinus und Cosinus (oder von mir aus ähnliche Signale, also DreiecksSpannung) sind/wären auswertbar.
Woher kommen jetzt auf einmal die Erkenntnisse "Glasmaßstab eine 25 Linien/mm Genauigkeit aufweist" und "40-Fache Unterteilung"?
Anfangs hast Du geschrieben:
"stammt wohl aus den 80-ern" - die Garantie dürfte also abgelaufen sein ;o) - will sagen: vielleicht hat schon jemand vor Dir vergeblich versucht, durch Austausch einiger (ungeeigneter!) Teile, die Maschine wieder in Gang zu setzen. Dann wird es natürlich sehr schwer, nachzuvollziehen, wie das ursprüngliche Design ausgesehen hat.
Du hast 3 Achsen. Beschränken sich Deine Messungen/Erkenntnisse bisher auf 1 der Achsen? Dann könntest Du noch checken, wie es sich bei den anderen Achsen verhält. 
Eventuelle Fehlfunktionen (AltersErscheinungen) der verschiedenen Komponenten (Encoder, Decoder) müssen schliesslich nicht in allen 3 Achsen genau identisch sein.
Elkos altern z.B. besonders schnell und können (wenn sie als "StützKondensatoren" verwendet werden) dazu führen, dass das Übersprechen zwischen 2 Kanälen drastische Formen annimmt (könnte Deine Oszillogramme erklären). Schimpf nicht auf die 30 Jahre alte Technik - wir wissen nicht, ob bzw. wie zuverlässig die heutige Technik in 30 Jahren noch funktionieren wird.
Deine Hartnäckigkeit, das Projekt durchzuziehen, finde ich bewundernswert - im positiven Sinne.
Leider hast Du Dir ein Gebiet ausgesucht, das mit Präzision zu tun hat und da sind dann hauptsächlich Teile involviert, die einen hohen "AnschaffungsWiderstand" haben (ordentlich kosten). Die Situation scheint noch sehr unübersichtlich zu sein und den "wirtschaftlichen Totalschaden" wünsche ich Dir in keinster Weise!
Gruss, Heinileini


----------



## Heinonthehill (16 Juli 2017)

Hallo Ihr Zwei 


wie ich bereits mehrmals sagen musste. Viele eurer Anmerkungen und Fragen kann ich mir selbst immer nur sporadisch herleiten bzw. muss viele Vermutungen aufstellen. Damals gab es einfach noch nicht die wunderbare Erfindung des PDF's und da der Hersteller inzwischen 2x aufgekauft wurde auch kein vollständiges Archiv mehr. Zudem stellen Messmaschinen immer einen besonderen Anspruch an Präzision und Prozesssicherheit dar, deshalb wird Johannson damals auch keinen Glasmaßstab ausgewählt haben den man als Standardkonfiguration angeboten bekommt.

Fangen wir deshalb bei den Offensichtlichsten an:





> Das verwirrt mich. Sprichst Du von 2 Platinen? Der Encoder liefert etwas an die 1. Platine und die 1. weiter an die 2.?



Ich habe mich bei *der* Platine wohl missverständlich ausgedrückt. Es gibt eine Platine für jede Achse und in der passiert scheinbar die gesamte Umrechnung.



> Die Schaltung, die die Impulse ver40facht, kann mit Rechtecken am Eingang nichts anfangen - da hat ksc absolut Recht. Sinus und Cosinus (oder von mir aus ähnliche Signale, also DreiecksSpannung) sind/wären auswertbar.



Das Prinzip der 4-fach Auswertung ist mir bekannt. Der Fakt, dass es möglich ist diese weiter zu unterteilen spricht eindeutig für ein anderes Signal, als das Rechteck welches in Fig. 1 beschrieben ist. Da aber leider im Text der Dokumentation keinerlei Fußnoten oder sonstige Verweise auf das Signal gegeben wird, muss ich davon ausgehen dass es je nach ausgewählter Elektronik entweder einen Rechteck Output oder den Pulse Output zu bestellen gibt. Und ich scheine eindeutig den Pulse Output vorliegen zu haben. Die Errechnung dieser beiden Signale muss aber aus einem SIN/COS Signal erfolgen das für beide Arten gleich ist.



> Woher kommen jetzt auf einmal die Erkenntnisse "Glasmaßstab eine 25 Linien/mm Genauigkeit aufweist" und "40-Fache Unterteilung"?




Achtung, unglaubliche Auflösung inc.




Das ist das was ich dem Encoder als Bestellnummer entlocken kann. Allerdings ist das PDF für den Vorgänger, also müssen auch diese Werte hinterfragt werden... Die 25M beziehen sich auf das Glas selber. Den Wert kann ich auch unterschreiben, das macht Sinn! Das einzige Kürzel welches ansonsten noch übereinstimmt ist das FK, welches für 12x Pulse der Linienanzahl steht. Das kann allerdings nicht passen. Die maximale Genauigkeit ohne weitere Unterteilung wäre 0,003 mm. Das liegt bereits über der Genauigkeit die die Maschine auf der gesamten Verfahrdiagonale zertifiziert bekommen hat. Damit die Werte passen muss hier die 40x Pulse verbaut sein. Würde bei einer High-End Messmaschine auch Sinn machen.

Das FK-Kürzel steht in der "no Index"- Spalte. Untermauert von dem Fakt, dass es nur 4 signalführende Leitungen gibt könnte man auch das annehmen. Aber es bleibt bei der Vermutung :lol:



> ielleicht hat schon jemand vor Dir vergeblich versucht, durch Austausch einiger (ungeeigneter!) Teile, die Maschine wieder in Gang zu setzen. Dann wird es natürlich sehr schwer, nachzuvollziehen, wie das ursprüngliche Design ausgesehen hat.




Also es hat definitiv Veränderungen gegeben. Auf der X/Y Achse ist ein 8715 Encoder, auf der Z-Achse ein neuerer 8717 verbaut. (Hatte ich bereits eingangs geschrieben und daher kamen letztendlich auch die Dokumentationen). Allerdings gibt es für die Maschine seit 1990 ein nahezu lückenloses Scheckheft, letzte Kalibrierung sowie Zertifizierung (<1,1µm bei einem 500mm Endmaß) ist laut Aufzeichnung 2014 erfolgt. Aber wer gut im Raten ist, kann sich ja mal dabei versuchen herauszufinden welche Reparaturdokumentation gerade _nicht _ vorhanden ist...

Durch die immer sorgfältig und durch Fachfirmen durchgeführte Wartung kann ich eigentlich davon ausgehen, dass hier noch alles im Lot ist.



> Du hast 3 Achsen. Beschränken sich Deine Messungen/Erkenntnisse bisher auf 1 der Achsen? Dann könntest Du noch checken, wie es sich bei den anderen Achsen verhält.




Gerade durchgeführt, ich kann bis auf ein paar mV keine Veränderungen sehen.





> Deine Hartnäckigkeit, das Projekt durchzuziehen, finde ich bewundernswert - im positiven Sinne.




Danke für die Blumen 





Als letzte Ergängung ist mir bei dem Untersuchen der anderen Achsen noch dies hier aufgefallen:

Drehrichtung 1





Drehrichtung 2





Und der Vollständigkeit halber noch der alte Einzelimpuls (wohl aber Kanal und somit auch Farbe getauscht)






In dieser Gesamtansicht könnte man fast denken, dass es doch einen Sinn ergibt. Ein Signalpaar für die Drehrichtungen, die Impulse korrespondieren zu jeweils einem vorher ausgewerteten Inkrement. Warum es dort allerdings Unregelmäßigkeiten gibt entzieht sich wieder meines Wissens. Vielleicht war ja die Vermutung mit dem "no-Index" doch zu voreilig und es wird hier mit eingebastelt. 


Da dieses Signal ja eher weniger mit den typisch anliegenden Signalen zu tun hat für Encoder Anwendungen habe ich bei Beckhoff ein wenig recherchiert.

Die EL1124 4 Kanal Eingansklemme hat einen Eingangsfilter von 50ns und erlaub den Anschluss von 2-/-3 Leitertechnik. die Schaltzustände würden auf das vorliegende Signal einigermaßen passen (wenn ich auch die Versorgungsspannung ein wenig überfahren müsste). Vielleicht wäre es ja damit möglich einen veritablen Zähler aufzubauen der über eine Variable der Motorregelung die Position weitergibt.


Aber das ist lediglich eine Herangehensweise die ich mit wenig Aufwand testen könnte. Für alles weitere habe ich die gesammelten Infos mal an meinen Beckhoff Dealer weitergeleitet, vielleicht hat er ja eine Idee. Wobei ich inzwischen die Produktpalette einmal durch habe und langsam die Chancen schwinden sehe.



In diesem Sinne,

einen schönen Sonntag!


lg Jan


----------



## Heinileini (17 Juli 2017)

Moin Jan!
Schöne Aufnahmen, aber immer noch rätselhaft.
Kannst Du mal die EingangsSignale einer Platine oszilloskopieren?
Vielleicht liegt das Problem weiter am Anfang der Kette - Verschmutzung der Massstäbe, nachlassende Helligkeit der Lämpchen. ...
Da, wo die vielen Impulse zu sehen sind, kommen sie anscheinend recht unregelmässig und der andere Kanal bringt sauber nur einen einzigen Impuls weit und breit - hat man den Index-Impuls einfach auf den jeweils "inaktiven" RichtungsAusgang gelegt? Bzw. parallel auf beide?
Habe mal ein Bisschen bei Heidenhain gespinxt. Was ich als ImpulsVerfielfachung bezeichnet hatte, heisst dort schlicht und ergreifend "Interpolation" - aber der Faktor 40 taucht dort nicht auf ;o(
http://www.heidenhain.de/de_DE/produkte/folge-elektroniken/interface-elektroniken/
http://www.heidenhain.de/de_DE/dokumentation/grundlagen/schnittstellen/
Du hattest mal das MäuseKlavier auf den Platinen erwähnt. Vielleicht kann man dort wählen, ob RichtungsImpulse raus kommen oder 90°versetzteRechtecke?
Ich weiss gar nicht, was "üblich" ist. Habe immer unterstellt dass 90°versetzteRechtecke rauskommen - hab's aber nie zu sehen bekommen.
Könnte mir vorstellen, dass die RichtungsImpulse gar nicht so exotisch sind, wie ich immer angenommen hatte. Denn es war eigentlich nie die Rede davon, dass das vervielfältigte Signal anschliessend noch eine Auswertung von 1 oder 2 oder 4 Flanken zulässt.
So gesehen haben wir vielleicht vor dem falschen Loch gebellt?
Mir fällt nix mehr ein. Berichte zu gegebener Zeit mal, was Beckhoff für Tipps hat!
Gruss. Heinileini
PS: habe auf Deinem PlatinenFoto doch noch 2 Dinger entdeckt, die (Stütz-)Elkos sein könnten: die liegend montierten silberigen Zylinderchen links von der Schraube. Kann man erkennen, was draufsteht?


----------



## Heinonthehill (17 Juli 2017)

Hey Heinileini,


eingangs habe ich mal einen kurzen Test mit dem Oszi gemacht. Das ist allerdings mehr als undankbar - Die steckverbinder sind weiblich, müssen zwecks Versorgungsspannung auf der Platine eingesteckt sein und verlaufen mit einem halben mm abstand neben-und über-einander. Ich habe hier zu viel Angst beim messen etwas zu brücken und damit die Elektronik ggfs. zu zerstören. Zudem habe ich auch hierfür keine entsprechende Leitungsbelegung... Für gewöhnlich sind die Encoder mit einem 15 Poligen Stecker versehen - ich habe 10 Leitungen zur Platine. Um in diesem Gewirr etwas herauszufinden müsste ich das ganze ausbauen und erstmal herausfinden was wohin läuft. Der allgemeinen Verwirrung wird das sicherlich förderlich sein 

Falls ich von Beckhoff keine Möglichkeit für die Verarbeitung der Pulse gezeigt bekomme, werde ich das ganze mal aufbröseln da ich die Platinen dann eh rauswerfen kann.





> Du hattest mal das MäuseKlavier auf den Platinen erwähnt. Vielleicht kann man dort wählen, ob RichtungsImpulse raus kommen oder 90°versetzteRechtecke?




Der Einfall kam mir gestern Nacht auch... Schlecht geschlafen und heute morgen direkt ausprobiert. Aber die Schalter unterbrechen lediglich das Signal zum Stecker. Wofür? Gute Frage!





> Denn es war eigentlich nie die Rede davon, dass das vervielfältigte Signal anschliessend noch eine Auswertung von 1 oder 2 oder 4 Flanken zulässt.




Ja genau. Ich denke die Präzision des Systems ist lediglich von Linienanzahl und der daraus interpolierten Pulsanzahl abhängig. 25/mm x 40 = 0,001mm. Das ist genau die Auflösung die im Maschinendatenblatt angegeben ist. Ist für das Baujahr wohl auch schon eine Hausnummer!

Deshalb würde es mich reizen einfach auszuprobieren ob eine Digital Eingangskarte mit entsprechenden High und Low Pegeln eine verlustfreie Aufnahme von Pulsen ermöglicht. Ob da noch ein Index überlagert ist, stört ja erstmal nicht wirklich, da die positive Flanke ausgewertet wird.



Zum Elko:

https://www.vishay.com/docs/40018/m3900301.pdf

Sollte aus der Reihe sein. Alles was ich lesen kann ist folgendes:

M39003 
56289
8431A


Lg Jan


----------



## Heinileini (18 Juli 2017)

Moin Jan!
Die Ziffernfolge 5628 finde ich bei einem 1,5uF/20V Tantal, Baugröße A - für die 9 am Ende finde ich keine Erklärung.
Baugröße A gefällt mir - hatte ich schon auf dem Foto anhand der Größe in Relation zu einem IC (Rastermaß 1 Zehntel Inch) ausgeguckt.
8431 könnte HerstellungsDatum sein: 1984, 31. KW - passt zu Deiner Angabe.
Was sagt uns das? Nicht so ganz viel. 
Tantals stehen meines Wissens nicht so sehr wie Alu-Elkos unter dem GeneralVerdacht, recht schnell ihre Kapazität zu verlieren.
Die Schaltung scheint nicht so ganz risikofreudig ausgelegt zu sein - umso besser.
Habe vorhin entdeckt, dass ich "links von der Schraube" geschrieben hatte - sollte "links von der Mitte bei der Schraube" heissen - sorry!
Gruss, Heinileini


----------



## Heinonthehill (19 Juli 2017)

Hallo,


also bei den Elkos und sonstigen Bauteilen habe ich eigentlich recht wenige Befürchtungen. Alles an der Maschine ist mit wirklich hochwertigen und damals state of the art komponenten bestückt. Der Zustand nach fast 35 Jahren ist auch noch hervorragend und unverbastelt, von daher drücke ich mir selbst die Daumen dass das so bleibt.... 



Durch verzweifelte Suche im Netz bin ich gestern übrigens auf folgendes Dokument gestoßen, welches das Kind erstmals beim Namen nennt. 

http://www.gurley.com/Encoders/Understanding_Quadrature.pdf

[...]

Back when people were counting edges, it was often convenient to have the encodervendor provide an output that not only identified a specific number of edges per cycle (1,2 or 4), but also gave direction information directly. That's when Gurley started to offerpulse output. 

Pulses differ from square waves in 2 important ways:
• Pulse widths are of fixed time duration, whereas the width of a square wave ON stateis a function of speed. (The distance between pulses is, of course, a function ofposition.)
• "Quadrature" has no meaning with pulse output; you get FWD pulses on one line,and REV pulses on another. (Or pulses on one line and direction information on theother.)

Pulse output options were fairly popular at one time, but it's been dwindling for quite awhile. With the new quad decode chips available, the requirement has gone away, as longas the customer is using technology from the 1980’s or later. On any of our newerencoders, pulses will no longer be offered.

[...]

Also mit anderen Worten: ich habe ein Fossil ausgegraben. Aber mit den Infos kann man die generelle Herangehensweise überdenken.

Dadurch, dass die Pulse lediglich inkrementweise gezählt werden müssen wird mein erster Versuch über eine Digitale Eingangskarte EL1124 erfolgen. Grundsätzlich traue ich der Beckhoff es zu die Signale prozesssicher aufzunehmen. 

Sollte das ganze nicht passieren habe ich inzwischen eine Belegung der Zuleitung zur Platine gefunden. Hier sind eindeutig drei Kanäle drin, die SIN/COSINE/INDEX führen sollen. Die entsprechenden Kanäle habe ich oszilloskopiert und in der Tat eine Schwingung mit P2P ~5 V gefunden. Allerdings sind die Signale doch einigermaßen stark von der Grundfunktion ab, es sieht es als wäre hier eine Dreiecksspannung überlagert. Das habe ich allerdings auch schonmal als Aussage vom Hersteller gefunden, dass das Signal bei niedrigen Geschwindigkeiten so aussehen kann.

Da ich allerdings auch damit zum ersten mal arbeite, würde ich es auch hier auf einen Versuch mit dem SIN/COS Interface encoder ankommen lassen und dann schauen ob die Ergebnisse und Präzision brauchbar und prozesssicher sind.


So long,

Jan


----------



## ksc (20 Juli 2017)

Hallo Jan,

wenn ich das richtig verstanden haben (sonst bitte korrigieren) willst du mit der EL1124 Signalpulse mit einer Breite von 750 ns erfassen. Da sehe ich ein kleines Problem. Die minimale Zykluszeit die du bei TwinCAT einstellen kannst sind 50 µs! Da ist also vorprogrammiert, dass Pulse verloren gehen und nicht erfasst werden. Was du hier eigentlich brauchst, ist eine Klemme die die Pulse unabhängig von der Zykluszeit zählt und nur den zyklisch den aktuellen Zählerstand an die Steuerung überträgt (so wie es die ganzen Wegmess-Klemmen Von Beckhoff machen).

Das einziege, was mir hier ansatzweise einfallen würde ist die EL5101. Die kann zwar Singel-ended Signale (hier müsste man mal testen, ob die 4 V Signalpegel ausreichen), allerdings hat die wieder nur die 1 MHz Erfassungsrate und das Zählerinterface passt auch nicht ganz (etweder normale A und B-Spur eines Inkrementalenkoders, oder A-Spur: Zählpulse und B-Spur Zählrichtung)...


Kannst ja mal bei deinem Beckhoff Dealer anfragen, ob sie die eine Leihstellung zum Testen geben können. Das geht im Allgemeinen ganz gut...

Grüße


----------



## Heinonthehill (20 Juli 2017)

Hallo ksc,



das Gespräch mit Beckhoff ist bereits im Kalender eingetragen, leider muss ich erstmal den Urlaub meines Kontaktes abwarten.


Ansonsten, ja. Genau wie du beschrieben hast will ich das mit der 1124 machen. Vielleicht bin ich da mit den Begrifflichkeiten nicht ganz auf dem Laufenden. Wofür steht denn dann die Angabe des Eingangsfilters? Dieser ist mit 0,05µs angegeben was ja mehr als ausreichend wäre. Für mich klingt das nach einem Prozessabbild dass die Klemme für ihre Eingänge anlegt in genau diesem Zyklus. Wenn die Zählfunktion auf der Klemme bearbeitet wird und nur in der übergeordneten Zykluszeit mit dem Bus kommuniziert sollte es doch eigentlich funktionieren. (Analogie zur Berechnung der Position über die Inkrementinterface Karten und deren Kommunikation mit der SPS)


Eine andere Möglichkeit habe ich gestern noch gefunden wobei die Beschaffung schwierig werden könnte. Die bisher eingesetzten Platinen scheinen Einzelanfertigungen zu, auch der Teledyne Support hat die unter keiner Nummer abgespeichert.

Für gewöhnlich wurden die Leseköpfe an eine Platine (HR2B, HR2C) angeschlossen, die die Umwandlung des SIN/COS unter verschiedenen Interpolationen auf ein wirkliches zweispuriges Rechtecksignal umwandelt.


http://www.gpi-encoders.com/PDF/HR2B_HR2C.pdf


Die könnte ich mit einer entsprechend aufgelegten Sub D-Miniature Leitung direkt anschließen und das Ausgangssignal sollte direkt auf meine El7342 Motortreiberklemmen passen. Das ganze würde es von der Regelungsseite stark vereinfachen, da der gesamte Regelkreis über eine Karte läuft.

Präzisionsmäßig wäre das wohl auch mit eine der besten Lösungen. Mit 20-facher Interpolation und 4-Fach Auswertung ließen sich 0,0005mm Genauigkeit realisieren.

Problem dahinter wird wohl die Beschaffung, da die Teile wohl auch schon lange nicht mehr hergestellt werden und ich ja schließlich drei Einheiten davon brauche. Vielleicht lässt sich über den Vertrieb in New York da noch eine Charge auftreiben, das habe ich auch schon angefragt, allerdings bin ich auf die Preisvorstellungen mehr als gespannt.


Lg Jan


----------



## Morymmus (20 Juli 2017)

Heinonthehill schrieb:


> Vielleicht bin ich da mit den Begrifflichkeiten nicht ganz auf dem Laufenden. Wofür steht denn dann die Angabe des Eingangsfilters? Dieser ist mit 0,05µs angegeben was ja mehr als ausreichend wäre.



Ich denke beim Eingangsfilter handelt es sich um eine Entprellung des Eingangs und nicht um die Abtastrate.


----------



## ksc (20 Juli 2017)

Hallo, 

Morymmus hat recht. Die 0,05 us sind nur die Filterzeit des Eingangsfilters. D.h., dass das anliegende Signal nach frühestens 0,05 us auf den Prozessdaten zum abholen bereit steht. 
In TwinCAT ist die minimal mögliche Zykluszeit 50 us. Heißt aber auch, dass das kürzeste Zeitraster in dem der Zustand des Eingangs von den PDOs gelesen werden kann (= versenden des EtherCAT-Frames) 50 us ist. Für alles andere gibt es entweder den Oversampling-Mechanismus, Timestamps oder Zählerbaugruppen (Klemmen) die unabhängig von der Zykluszeit zählen können. 

Gruß


----------



## Heinonthehill (20 Juli 2017)

Hey,


okay dann habe ich ja wenigstens heute wieder etwas gelernt. Sinn macht das auch, was ihr beschrieben habt. Versucht das gleiche herauszufinden habe ich auch, allerdings habe ich keine eindeutige Begriffserklärung gefunden.


Dann heißt es jetzt auf Antworten warten. Da ich die EL7342 Klemmen bereits hier liegen habe und so oder so für die Ansteuerung der Motoren brauche, wäre es am einfachsten den alten Leseköpfen doch noch ein wirkliches Rechtecksignal zu entlocken. Mit der richtigen (und auch verfügbaren) Hardware soll das problemlos möglich sein und ich hätte die kleinstmögliche Menge an Bauteilen verwendet.

Die Anfrage zu alten Interpolatoren von Teledyne habe ich bereits gestern versandt, wenn ich da etwas bekommen kann wird es wohl darauf hinauslaufen.

Ob es eine andere sinnvolle Möglichkeit seitens Beckhoff angeboten bekomme, kann ich erst Mitte August berichten. 


Abermals vielen Dank für die rege Beteiligung 


Lg Jan


----------



## Heinonthehill (4 Februar 2018)

Hallo Leute,


es ist inzwischen bereits fast ein halbes Jahr vergangen und ich würde euch gerne meinen Progress nicht vorenthalten. Vielleicht hilft dem ein oder anderem weiter, was ich herausgefunden habe und zudem kommen auch bei mir ständig neue Fragen auf!


*Zur Erinnerung: *

Mein ursprüngliches Messsystem bestand aus alten Teledyne Gurley GMS sowie passenden Encodern (8715 sowie 8716). Nach langer Recherche habe ich herausgefunden, dass diese nicht mit heutzutage gängigen Rechtechsignalen sondern mit Pulssignalen arbeiten. Diese sind wie auf den Oszi-Aufzeichnungen zu erkennen von endlicher Dauer (~750ns) und werden bei erreichen jedes Inkrementes abgegeben.

*
Ab Juli:*

Keiner der Vertriebler sowie Techniker bei Beckhoff konnte mit diesen Signalen etwas anfangen und es gab auch keine darauf zugeschnittene Hardware. Um einen letzten Test durchzuführen habe ich damals eine El5101-0011 zur Verfügung gestellt bekommen um die Signale damit u.U. auffangen zu können. Das Ende vom Lied: auch hiermit hatte ich leider keinen Erfolg.


Also musste ich um weiterzukommen auf ein neues Messsystem umsteigen. Hier bin ich bei Sino eingestiegen. Das hatte vielerlei Gründe, der offensichtlichste natürlich, dass die Systeme erschwinglich sind. Zudem musste ich für jede Achse eine unterschiedliche Ausführung bestellen, da ich platzmäßig sehr eingeschränkt bin und die vorhandenen Befestigungsbohrungen sowie Infrastruktur weiter nutzen muss. Dies wäre sicherlich auch mit den höchstgenauen Lösungen der Marktführer möglich gewesen - aber hey, als Student überlegt man sich mehrmals wo man sein Geld investiert. Für alle meine GMS liegt ein Messprotokoll vor und ich bin damit vollkommen zufrieden. (Kann ich bei Interesse mal einscannen)

Um das neu gewonnene Bewusstsein über die Ist-Position zu verarbeiten, wurden die schon bereits vorhandenen EL7342 genutzt. Der Antrieb wurde über die originalen DC Motoren realisiert. Hier stellte sich allerdings schnell heraus, dass die Ansteuerung zwar funktionierte und auch sehr akurat positionieren konnte, allerdings viele Kompromisse eingegangen werden mussten. Z.B. musste dem PID Regler sehr lange Nachstellzeiten zur Verfügung gestellt werden um die hohe Masse ohne Überschwinger ins Ziel zu bringen. Das schwache Drehmoment der kleinen Motoren (gerade bei langsamer Fahrt) haben da natürlich nicht geholfen. 

Da mit diesem Aufbau der grundsätzliche Betrieb hergestellt wurde, habe ich mich dann erstmal dem Schaltschrank und einem richtigen Aufbau gewidmet. Der komplette Kabelstrang für den letztendlichen Betrieb wurde eingezogen, in Zusammenarbeit mit Igus eine komplette Energiekettenlösung erarbeitet sowie bereits Temperatursteuerung und die 4. Achse eingerichtet (Nema 34 Stepper an EL7041).
*

Stand Heute:
*
Da der ganze Rest soweit abgeschlossen ist kann ich mich nun dem letztendlichen Umbau des Antriebsstranges der X und Y - Achse widmen. (Die Z-Achse erfüllt mit dem originalen Motor alle benötigten Eigenschaften) Die alten DC Motoren fliegen auf jeden Fall raus und werden durch etwas zeitgemäßes und dynamisches ersetzt. Da ich bei Beckhoff angefangen habe und eine gewisse Systemintegrität sowie Plug&Play Eigenschaften behalten will, kommen hier eigentlich keine anderen Lösungen in Frage. Ins Auge gefasst habe ich einen Servoantrieb aus folgenden Komponenten:

- EL 7211-0010 Servomotorklemme 50V 4,5A
- AM 8131 (1,35NM, 1000 U/min)

Das ganze wird entweder über einen HTD Zahnriemen oder eine Kugelumlaufspindel an den Ausleger angebracht. Hier muss ich noch ein paar Testaufbauten durchführen um das letztendlich zu entscheiden, die Vorauswahl der Komponenten ist davon aber unabhängig - es ist auf beide Konzepte ausgelegt um so flexibel wie möglich zu sein. Für die Tests brauche ich allerdings Hardware um wirkliche Abschätzungen machen zu können.


*Fragen die mich beschäftigen:*


Bei den ausgewählten Servokomponenten hätte ich eine Positionsabfrage über den Drehwinkel der Motorwelle. Dieser löst mit 18 Bit Genauigkeit auf und würde bei beiden Konzepten eine mehr oder weniger genaue Rückmeldung über die Istposition geben (Kugeltrieb > Zahnriemen). Das Wegmesssystem ist allerdings nach wie vor installiert, bietet ähnlich gute Auflösung, könnte aber darüber hinaus Wärmeausdehnung der Antriebselemte ausblenden und korrigieren.

- inwiefern ist es möglich in den geschlossenen Regelkreis des Servos das übergeordnete Wegmesssystem einzubinden? oder nehme ich mir damit einen Großteil der Dynamik da nun von der klemmeninternen Regelung noch die Zykluszeit der SPS sowie eine Totzeit dazu kommt?

      - Falls ja, wie bindet man das in die NC ein? In meiner Simulation mit den Komponenten kann ich weder für den Drive noch für den Encoder unterschiedliche Einträge machen, da sich damit auch die Betriebsart ändert (bzw. das Profil)

- Würde sich in dem Fall ein anderes, (weitaus teureres) System lohnen dass einen direkten Anschluss von zwei Wegmesssystemen ermöglicht?





Ich wünsche allen einen schönen Sonntag und versuche in den nächsten Wochen mal ein paar anschauliche Bilder hochzuladen 


Lg Jan


----------



## Guga (4 Februar 2018)

Die EL72xx kann nur mit einem Encodersystem arbeiten.
D.h. solange du der El72xx eine Position schickst muss es der Encoder des Motors sein den du mit der NC nutzt.

Du könntest der El72xx auch eine Geschwindigkeit über die NC vorsetzen. Der Regelkreis wird damit in der NC geschlossen. Wenn du die Laufzeiten für Encoder und Antrieb korrekt in der NC einstellst ist eigentlich die gleiche Dynamik/Genauigkeit erreichbar (=Schleppfehler). Diese Zeiten sind ja "fix" und die NC kann es herausrechnen. Es sind aber etwas mehr Einstellungen in der NC vorzunehmen.
In dieser Konstellation würdest du somit den externen Encoder auf die Achse in der NC ebenso wie die EL72xx verknüpfen. Und da die Frage dann sich auch noch kommt: Den Encoder auf dem Motor braucht die El72xx trotzdem, in diesem Falle ist  die Singleturn - Version vollkommen ausreichend und die Multi-Turn-Variante unnötig.
Servos die zwei Encoder verarbeiten gibt es. Bei Beckhoff sind es die AX5000, dürften aber preislich und auch vom Platz wohl deine Vorstellungen sprengen... Andere Anbieter gibt es auch. Vom Prinzip geht es aber dann immer in die High-End-Version.


----------



## Heinonthehill (5 Februar 2018)

Hallo Guga und danke für die Aufklärung,



wie du bereits schriebst, die AX 5000 habe ich mir auch schon angeschaut. Das ist natürlich der Traum für eine Servo Achse aber nicht mit dem Budget vereinbar. Aber die restlichen Aussagen hinsichtlich der Dynamik hören sich ja schonmal gut an!


Für die Einbindung des zweiten Encoders habe ich gerade noch einige Zeit in der Simulation rumgespielt. Ich habe dafür in der Achse den zweiten Encoder eingefügt und diesen parametrisiert. Als Totzeit für die Verrechnung habe ich 4 Zyklen eingetragen. 




> Du könntest der El72xx auch eine Geschwindigkeit über die NC vorsetzen. Der Regelkreis wird damit in der NC geschlossen.




Kannst du mir hier einen Tipp geben wie ich das anstelle? Bei der derzeitigen Konstellation kann ich den zweiten encoder lediglich als Positionscontroller definieren.


Lg Jan


----------



## Guga (5 Februar 2018)

Mache folgendes:
Vorraussetzung: Du nutzt die CSV-Betriebsart der EL72 (Prozessdaten auf der Klemme).
#1 Verknüpfe die Achse mit der EL72xx
#2 Nun geh mal auf den Encoderaanteil der Achse. Hier kannst du die Verknüpfung zum Encoder der EL72xx löschen und auf einen anderen Encoder umsetzen.
#3 Totzeitkompensation ist schön und gut aber ... Die Laufzeiten werden korrekterweise für Motor und Encoder gesetzt. 
     Also unter diesen Objekten jeweils unter "Time compensation". Wie die Werte für die EL72xx idealerweise gesetzt werden weiss ich nun nicht.
     Ich würde mal anfangen mit 
        - Achse: "On (with velocity)" setzen
        - Encoder: "On (with velocity)"

     Und dann fahre mal die EL72xx mit konstanter Geschwindigkeit und schau dir den Schleppfehler in der NC an. Danach eventuell mti den Delay-Cyclen spielen um den Schleppfehler noch zu minimieren. Ich schätze aber das die Konfig oben schon korrekt ist.

Guga


----------



## Heinonthehill (5 Februar 2018)

Hallo Guga,


soweit habe ich das durchexerziert. 

Leider kann ich #2 nicht hinterlegen. Sobald ich den Encoderanteil ändere fliegt mir in der Achsenkonstellation das Servo-Interface wieder raus. Das Messsystem kann ich nur über das hinzufügen eines weiteren Encoders einbinden.

Hast du dazu noch eine Ergänzung?

Lg Jan


----------



## Heinileini (5 Februar 2018)

Heinonthehill schrieb:


> ... Das Messsystem kann ich nur über das hinzufügen eines weiteren Encoders einbinden. ...


Hmmm. Das wäre doch auch richtig so? Oder hattest Du die Hoffnung, zwei Encoder an einer einzigen EncoderKlemme anzuschliessen?
Gruss, Heinileini


----------



## Heinonthehill (5 Februar 2018)

> _
> 
> 
> 
> ...


----------



## Heinonthehill (5 Februar 2018)

Hallo allerseits,


also eure Vorschläge haben mich schonmal weitergebracht. 

Das umlegen des enc. eingangs auf die 7342 funktioniert tatsächlich. Es wird zwar auch automatisch der Link auf der gesamten Achse umgelegt (das hat mich vorher gestört), mir ist aber nicht aufgefallen dass der Reiter "Drive" nach wie vor auf dem Servointerface liegt. 

Ich habe nun drei Konfigurationen zur Auswahl, die allerdings wieder ihre eigenen Probleme mitbringen 





*#1*

Enc.:    EL 7342
Drive:   EL 7211-0010

Das ganze läuft, allerdings werden die auf dem Sino Glasmaßstab eingestellten mm/inc auch auf dem servo übernommen. Es scheint also so, dass der integrierte Drehgeber dadurch umgangen wird. Verfahrwege sind dadurch stark hochskaliert.






Auflösung GMS = 1/1000mm /Inc

Vorschubskonstante Servo = 110mm/U

*
#2*


Enc.:    EL 7211-0010
Enc.2:  EL 7342
Drive:   EL 7211-0010

Verfahren ist i.O., Skalierung passt! Allerdings ist der Drehgeber das Dominante Messsystem und ich kann keinen Einfluss des GMS erkennen.


*#3*


Enc.:    El 7342
Enc.2:  EL 7211-0010
Drive:   EL 7211-0010

Hier wieder wie in #1. Das richtige Messsystem gibt die Position der Achse an.




Aber auch hier ist im Drive Manager die umgerechnete Vorschubskonstante angegeben. D.h. der Motor dreht ca. 10-fach schneller (oder we als er sollte. Gebe ich nun hier die richtige Konstante an, wird das automatisch aktualisiert. Allerdings immer im Encoder 1...




Also zusammenfassend, was will ich erreichen:

- Das dominante Messsystem soll der Glasmaßstab an der 7342 sein. 
- Der Servo soll aber seinen eigenen Drehgeber nicht ignorieren 



Kann mir da jemand den richtigen Tipp geben?


Lg Jan


----------



## Guga (5 Februar 2018)

Das der "DriveManager" die Skalierungen nicht hinbekommt ist verständlich. Ist kein alltäglicher use-case.
Da musst du selber Hand anlegen. Ach ja: #1 und #3 ist inhaltlich das Gleiche in Bezug auf Steuerung der Achse:
EL72xx als Antrieb und ext. Encoder. Jetzt musst du aus den beiden Szenarien dir die korrekten Werte zusammensuchen...

Guga


----------



## Heinonthehill (15 Juli 2018)

Hallo Leute,

es ist doch einige Zeit seit Februar vergangen und ich wollte hier mal ein Update an die Helfer abgeben, sowie auch ein paar Problemlösungen kurz dokumentieren, falls jemand mit ähnlichen Dingen hantieren muss 


Als kurzer Einblick wie so der Stand ist habe ich ein Video hinterlegt. Sorry für die nicht existente Kinematographie.








*Skalierung der beiden Messsysteme:*


Habe ich bis heute nicht auf die Kette bekommen. Auch der Beckhoff Support hat alles von sich gewiesen und es nicht zum Rennen bekommen. Momentan nutze ich lediglich den Drehgeber der AM Servo's und in Zusammenspiel mit den Kugelspindeln bin ich eigentlich recht zufrieden mit der Performance. Vielleicht grabe ich das irgendwann nochmals aus, aber für heute sind andere Dinge wichtiger 


*Ansonsten passiert:
*
- Extrudervorschub als Hilfsachse über Beckhoff EL7041 & (vorerst) kleinen Stepper eingerichtet

- PT100 Sensoren verbaut, EL 3204 liest diese ein und in der PLC einen closed-loop für die Temperatursteuerung realisiert. Gepulst wird eine PWM auf einen digitalen Ausgang der EL2008, dieser triggert ein SSR für die Lastspannung und diese heizt letztendlich die Heizkartusche.

- Wie oben schon geschrieben, sind auf X & Y Kugelspindeln eingezogen. Der Zahnriementrieb hat funktioniert, allerdings waren die erreichbaren Geschwindigkeiten jenseits von gut und böse. Laut Scope lagen einmal 120m/min auf der kurzen Strecke an. Scary! Jetzt ist das Ganze auf 10m/min begrenzt, dafür aber hochpräzise und stabil.

- Schaltschrankverbindungen neu aufgelegt und alte Teststrukturen entfernt



*Aktuelles Fragenwerk

*1). Ich arbeite derzeit daran, die PLC so intelligent zu gestalten, dass der anderweitig erzeugte G-Code vollständig verstanden wird. Da ich nicht mit einem DIN Code arbeite, diesen aber nicht oder nur aufwendig ändern kann, muss die Maschine es zwangsläufig beigebracht bekommen.

Beispiel:

M104 S200          // M104 = Sollwert für Temperaturregelung an der Extruderdüse. S200 = Temperatur in °C

Hierfür habe ich in der NC in der M-Code Tabelle diesen Befehl hinterlegt. Dazu habe ich auf der Beckhoff Page die Library "NCI Interpreter" gefunden, die für Austausch & Übergabe eine Hilfestellung bietet.

Ich habe zwar auch hier noch Probleme alleine das Triggern der M-Funktion zu übergeben, aber ich glaube da weiß ich woran es liegt. Größeres Problem ist, dass ich nicht in der Lage bin noch mehr Information damit zu übertragen. Der Sollwert durch den "Sxxx" Befehl geht damit verloren und die Steuerung weiß dann zwar, dass es einen neuen Sollwert für die Temperatur geben soll, aber nicht auf welchen Wert dieser zu setzen ist.

In der Beckhoff Doku finde ich hier nur dazu, dass die M-Funktionen auch gerade dafür nicht gemacht sind. Triggern ohne Informationsaustausch. Dafür sind dann z.B. die H-Funktionen zuständig...


Gibt es hier eine elegante Lösung mit der ich ohne große Umwege doch beides übertragen bekomme? Letztenendes ist es mir eigentlich egal ob es überhaupt über einen M-Befehl läuft oder sonstwas - ich muss lediglich den eingelesenen Wert in eine Variable übergeben, die ich in der PLC und damit der Temperaturregelegung einbinden kann. 



2). Für den letztendlichen Betrieb benötige ich auch noch zwei autarke Lüfteransteuerungen. Da ich anfänglich die EL 7342 für die DC Motoren gekauft habe, habe ich hier noch genug Ausgänge frei. Falls das funktioniert, würden an jeden Ausgang ein 12V DC Lüfter angeschlossen werden. Ja ich weiß... Overkill! 

Ausgang ist auch hier wieder eine M-Funktion aus dem G-Code. In diesem Fall M106 S255 (8 Bit PWM, in diesem Fall also Vollgas)

Leider habe ich in meinen Tests bis jetzt nicht herausgefunden ob es möglich ist einen angeschlossenen DC Motor rein über einen prozentualen Wert anzusteuern. In meinem Fall würde ich hier gerne eine 0-100% (0-255) über die PWM Einschaltdauer normieren und auch diesen dann per G-code einlesen.

Ist das so möglich mit der Klemme?




Ich wünsche euch noch einen schönen Sonntag! 

Lg Jan


----------



## Heinileini (15 Juli 2018)

M und S haben nix miteinander zu tun (ausser bei M+S-Reifen ;o)
S ist die SpindelDrehzahl  (wenn mehrere Spindeln, dann S01=xxxx, S02=xxxx, ...) - S gab's glaube ich auch bei G04 (Verweilzeit) - das ist wieder etwas anderes.

Das Mittel Deiner Wahl dürfte sein H01=xxxx, H02=xxxx, … , H99=xxxx.
Kenne ich aus Urzeiten von Siemens. Habe NullAhnung von Beckhoff, aber da gibt's das sicher auch.
Bei Hyy=xxxx mit yy (01 … 99) das Gerät adressieren und mit xxxx (0000 … 9999) den Wert (Temperatur, Drehzahl, … ) übergeben.
Muss ja nicht alles mit Mxx gemacht werden.
Wenn ich mich richtig erinnere, gibt es auch H00=xxxx, was aber normalerweise als Hxxxx geschrieben wird.

Gruss, Heinileini

PS:
DC-Motor über prozentualen Wert ansteuern? Wenn es die Hardware hergibt, warum nicht?
Du arbeitest bereits mit PWM, also sollte das kein Problem sein.
Wenn's um die Lüfter geht, könnte man doch gut auf M-Funktionen für Lüfter-EIN und Lüfter-AUS verzichten und mit der H-Fkt den Sollwert 0 vorgeben, wenn der Lüfter stoppen soll …
Könnte mir vorstellen, dass der minimale Wert, mit dem der Lüfter laufen soll, nicht gerade bei 1% (sondern vllt bei z.B. 15%) beginnt?
Egal, der Zusammenhang zwischen Deiner ProzentAngabe und der an den Motor ausgegebenen PWM muss ja nicht linear sein - mach was sinnvolles/zweckmässiges!


----------



## Heinonthehill (17 Juli 2018)

@ Heinileini



> M und S haben nix miteinander zu tun (ausser bei M+S-Reifen ;o)
> S ist die SpindelDrehzahl (wenn mehrere Spindeln, dann S01=xxxx, S02=xxxx, ...) - S gab's glaube ich auch bei G04 (Verweilzeit) - das ist wieder etwas anderes.




Das ist die ursprüngliche Syntax aus dem Slicer für den additiven Aufbau. Die open source Arduino Welt hat Sachen schon immer anders bennant. Kann ich aber ja alles per Suchen & Ersetzen anpassen.


Auf der Beckhoff Seite bin ich nochmal über einen interessanten Beitrag gestolpert....

[...]

Bei M/H-Funktionen kann im NC-Programm optional ein Zusatzwert als negative oder positive Ganzzahl direkt oder als allgemeiner mathematischer Ausdruck programmiert werden. Er wird über die Technologieschnittstelle mit der M/H-Funktion der SPS zur Verfügung gestellt.
Beispiel: M50*=123* oder H44*=-256*
Die s.g. internen M-Funktionen M00, M01, M02, M17, M29 und M30 sowie alle anwenderspezifischen M/H-Funktionen können in kanal- als auch in achsspezifischer Programmiersyntax mit einem Zusatzwert programmiert werden.
Die Spindel M-Funktionen M03, M04, M05, M19 sowie M40-M45 können mit keinemZusatzwert programmiert werden!

[...]


Ergo kann ich also doch die Struktur aufrechterhalten und muss nicht noch den Umweg über die H-Funktion machen. Das wäre auch nicht der große Aufwand gewesen aber ich stehe nach wie vor an dem Hauptproblem: Ich kriege die Übergabe dieser Werte nicht auf die Reihe.

Für einen erfahrenen Beckhoff Programmierer mag das trivial sein, ich allerdings finde nicht die basics dessen.

Z.B. wird in jeglicher Dokumentation immer auf die Übergabevariable m_synch hingewiesen. Die ist in meiner Struktur im VBA nicht vorhanden... 


Hat da jemand einen heißen Tipp wie es möglich ist eine einfache Befehlszeile (M104=200) in die PLC zu übergeben und dann lediglich in eine Variable zu schreiben die eine Regelung versorgt? Ich komme hier einfach nicht weiter...


Lg Jan


----------



## Heinonthehill (16 August 2020)

Hallo Leute,


es sind zwei Jahre vergangen und ich hole diese Leiche nochmal aus dem Keller 


Die letzten zwei Jahre waren komplett ruhig. Nach dem letzten Post gab es zwei massive Umzüge, diverse Neustrukturierungen und so weiter...


Vor einigen Tagen hatte ich erstmals wieder die Motivation dieses Projekt zu entstauben und den Schaltschrank aus seinem Lager zu holen, hier ein Update zu posten und auch natürlich ein paar Fragen nachzuschieben. An dieser Stelle nochmals danke an alle die damals geholfen haben!




Zu sehen ist der Umbau derzeit und die Schwestermaschine die hoffentlich nie als Ersatzteilspender aushelfen muss... 


Zu Zeiten des Umzugs habe ich die Maschine mit gemischten Gefühlen eingepackt. Ich habe mich nie 100% mit der Beckhoff Umgebung anfreunden können und habe zu viele Anliegen gehabt bei der mir auch der (gute) Support nicht weiterhelfen konnte. Letztlich hatte ich die Verfahrmechanik und meine grundlegenden Funktionen programmiert und zuverlässig zum Laufen bekommen, allerdings war das Ganze sehr umständlich zu bedienen und ich konnte absehen wie viele Monate Arbeit ich da in Eigenleistung noch reinstecken muss um es auf 100% zu bekommen.

Jetzt sieht das anders aus. Ich habe einen konkreten Plan was ich mit der Maschine machen will und das Ganze auch bereits in einem anderen Prototypen final umgesetzt. Das Ziel ist es jetzt das Prinzip auf die präzise Mechanik der Messmaschine umzusiedeln.


Mein Problem:

Ich bin in der Arduino Programmierung wesentlich fitter als auf der Beckhoff. Der Prototyp ist auf dem Arduino geschrieben und mir reicht die Leistungsfähigkeit für die zu realisierenden Funktionen zu 100% aus. 

Was dem Arduino derzeit fehlt ist die einfache Ansteuerung von einer leistungsfähigen Verfahrmechanik.



Die konkrete Fragestellung:

Ist es möglich die Sollwerte für die Positionierung aus dem Arduino in die NCI zu bekommen? Es handelt sich lediglich um die kartesischen Achsen X, Y, Z. 


Ich nutze die Beckhoff NCI, auf allen Servoachsen werkelt eine EL 7211-0010 Karte mit einem AM 81xx Servomotor.



Über jeglichen Input wäre ich sehr dankbar.



Lg Jan


----------

