# Umfang der Kabelwicklung auf Kabeltrommel berechnen?



## drfunfrock (13 September 2013)

Hei!
Ich brauche den Umfang einer Kabelwicklung auf einer Kabeltrommel. Um es einfacher zu machen, gehe ich davon aus, dass alle Lagen die gleiche Zahl von Wicklungen haben und nicht ineinander liegen, sondern schön aufeinander. Dann wickel ich das Kabel ab und mit jeder Lage die verschwindet verändert sich der Umfang. Kennt jemand ein  Verfahren, das möglichst billig zu berechnen? Ich würde jedesmal die komplette Iteration durchfahren, was bei einer kleinen SPS einfach dumm ist.


----------



## MasterOhh (13 September 2013)

Der Umfang der Trommel ergibt sich aus (PI * [Durchmesser Trommel + {2 * Durchmesser Kabel * Anzahl Lagen auf der Trommel}]). Du brauchst halt die Anzahl der Umdrehungen die die Trommel gemacht hat und den Startzustand. Dann kannst du über die Wicklungszahl zurück rechnen auf welcher Lage du gerade bist. Natürlich wird deine Trommel immer 2 Umfänge haben, wenn eine Lage nicht vollständig auf oder abgewickelt ist.

Oder möchtest du eher wissen wie viel Meter Kabel noch auf der Trommel sind / bzw. wie viel schon abgewickelt wurden?


----------



## drfunfrock (13 September 2013)

Nein, ich möche wissen auf welcher lage ich bin in Abhängigkeit von der abgespulten Länge. Meine Idee dazu war konserativ. Berechne die Längen von Lage1 bis N, wobei Lage(N)>Länge ist.


----------



## Thomas_v2.1 (14 September 2013)

Glaub da kommt der kleine Gauß ins Spiel...

Als vereinfachten Ansatz würde ich die Bedingung annehmen, dass pro Lage nur eine einzige Windung existiert.

Dann ergibt sich als Summenformel für die Länge:

ln = [Sigma für k=0 bis n] PI * T + ( 2 * d * n)

mit:
ln = Gesamtlänge der Leitung mit n Lagen
T = Trommeldurchmesser
d = Drahtdurchmesser

Als Summationsformel lässt sich mit:

ln = n * PI * T + 2 * d * (n * (n + 1) / 2)

die Länge der Leitung bei gegebener Lagenanzahl bestimmen.

Wenn man die Formel nach n umstellt kann man aus der Länge der Leitung die Lage bestimmen. Wenn das eine Art Wickelmaschine werden soll, muss man z.B. für die Positionierung der Drahtführung auf den nächsten ganzzahligen Wert entweder auf- oder abrunden.

Muss mir morgen mal überlegen wie man die Windungen pro Lage da einbauen kann.


----------



## MasterOhh (14 September 2013)

Da bei jedem Lagenwechsel ein Sprung auftritt (abrupte Änderung des Umfangs), denke ich nicht das man hier mit einer stetigen Funktion weiterkommt. 
Wenn man die exakten Startbedingungen kennt (Anzahl der Lagen auf der Trommel und wie weit die letzte Lage gefüllt ist) kann man das ganze ja einfach abschnittsweise berechnen. 
Für jede Lage bestimmt man die Leitungslänge über Umfang * Wicklungsanzahl. Wurde diese Leitungslänge abgewickelt, reduziert man die Variable "Lage" um 1 und berechnet den Umfang und damit die Leitungslänge für die neue Lage. Dann wieder messen ob die Leitungslänge erreicht wurde, die Lage um 1 vermindern, neu berechnen  etc. pp.

Das wäre für mich die einfachste Lösung. 
Sowas hab ich mal für eine Seiltrommel gemacht bei der ich den Wickler nachführen musste. Da allerdings anders herum, ich musste aus den Trommelumdrehungen ermitteln wie viel Seil ab/aufgewickelt wurde und auf welcher Wicklung sich das Seil befindet (damit ich den Wickler positionieren konnte). Der Fehler lag am Ende bei ca. 1% (Abweichung von realer Seillänge zu berechneter Seillänge bei 50m) was sehr gut war, wenn man bedenkt das ich das Verhalten des Seils unter Belastung nur grob abschätzen konnte.


----------



## drfunfrock (14 September 2013)

Danke, ich hatte mir das schon gedacht, dass eine lineare Funktion nicht realisierbar ist. Eine Approximation mit bis zu 10% Fehler wäre auch akzeptabel. Ich hab hier ein Programm für eine Winch, dass von Hydraulik auf E-Motor umgestellt werden soll. Der Regler für die Geschwindigkeit soll rausfliegen und dass ganze per Schätzung gesteuert werden.


----------



## Thomas_v2.1 (14 September 2013)

In meiner Formel erst war noch ein Klammerfehler enthalten.

Jetzt mal die Wickelbreite B mit hinzugenommen ergibt sich für die Länge die Gleichung (schon gekürzt):

l = (n + 1) * B/d * PI * T + B * PI * n * (n + 1)

Die erste Lage ist Lage n = 0.

Du müsstest jetzt diese Gleichung nach n umstellen.
Sodenn dieses möglich ist, müsstest du bei gegebener Länge l durch Abtrennen des Nachkommaanteils (und nicht durch runden) auf die Lagenanzahl kommen.

Ich kämpfe noch mit dem Umstellen, scheint nicht ganz so einfach zu werden...oder es ist nicht möglich.


----------



## Thomas_v2.1 (14 September 2013)

Ich habe mal Wolfram-alpha dafür bemüht, ist aber einiges zu rechnen:

http://www.wolframalpha.com/input/?i=solve+l+=+(n+++1)+*+B/d+*+PI+*+T+++B+*+PI+*+n+*+(n+++1)+for+n

Wenn ich das Ganze in einer Excel-Tabelle eintrage funktioniert das sogar. Ich habe die Datei mal angehängt.


----------



## drfunfrock (14 September 2013)

Da wird es interessant, wenn man ein Polynom  für eine Approximation entwickeln könnte..... Ich hatte die Seite von Wolfram Alpha nicht auf dem Radar...


----------



## Thomas_v2.1 (14 September 2013)

Hast du denn sich ändernde Trommel- oder Kabel/Drahtabmessungen?
Wenn nicht, dann kann man fast alle Werte vorher ausrechnen und nur noch die Konstanten einsetzen.

Ansonsten ist die Berechnung an sich überschaubar, denn für Wurzel Pi setzt man ja auch eine Konstante ein.


----------



## drfunfrock (14 September 2013)

Ich muss das leider flexibel gestalten, sonst funkt das nicht mit verschiedenen Trommeln. Egal, ich werd mal schauen, ob ein Polynom es auch tun würde.


----------



## drfunfrock (15 September 2013)

Thomas_v2.1 schrieb:


> In meiner Formel erst war noch ein Klammerfehler enthalten.
> l = (n + 1) * B/d * PI * T + B * PI * n * (n + 1)
> 
> Die erste Lage ist Lage n = 0.




Könntest du mir noch einmal helfen? Ich komm da von selbst nicht drauf.

Bisher hab ich das so gemacht

L = summe über k  von 1..n [w/d * (pi * (c +2dk) )]

wobei 
c: kerndurchmesser der Trommel
d: Kabeldurchmesser
w: Wickelbreite 

der Ausdruck w/d steht für die Anzahl der Windungen pro Lage. 

Bei Wolfram hab ich dann

solve L=sum(B/d (Pi (c+2 d k)) for k=1..n) for n

eingegeben. Aber die Lösung ist eine andere, weil 

sum(B/d (Pi (c+2 d k)) for k=1..n)

etwas anderes als 

l = (n + 1) * B/d * PI * T + B * PI * n * (n + 1)

ergibt


----------



## Thomas_v2.1 (15 September 2013)

Was bei deiner Berechnung glaub ich nicht berücksichtig wird ist, dass sich der Wickeldurchmesser in der ersten Lage nicht um 2 mal Drahtdurchmesser erhöht.

Die Auflösung der Summe habe ich nicht mit Wolframalpha gemacht, kann natürlich sein dass ich da falsch liege.
Das ist mein Gedankengang (ich mache es jetzt mal so, dass ich bei der Wickelerhöhung n-1 rechne, kommt beim Ergebnis auf das gleiche raus):

Drahtlängen für die einzelnen Lagen:
l1 =      w/d * PI * ( c + 2 * d * (1 - 1))
l2 = l1 + w/d * PI * ( c + 2 * d * (2 - 1))
l3 = l2 + w/d * PI * ( c + 2 * d * (3 - 1))
usw.

Als Summenformel:
l = Summe {von k=1 bis n} w/d * PI * (c + 2 * d * (k - 1))

Als erstes multipliziere ich die Klammern aus:

l = Summe {von k=1 bis n} w/d * PI * c - w/d * PI * 2 * d + w/d * PI * 2 * d * k

Ich weiß jetzt nicht wie man das mathematisch korrekt beschreibt, aber wenn ich diese Summenformel
auflösen will, kommen die beiden konstanten Summanden n-mal vor, und an der Stelle mit dem k
setze ich entsprechend der Gaußschen Summenformel n * (n + 1) / 2 ein.
Es ergibt sich dann:

l = n * w/d * PI * c - n * w/d * PI * 2 * d + w/d * PI * 2 * d * n * ( n + 1) / 2

Wenn ich mir das von Wolfram nach n umstellen lasse, kommt prinzipiell die gleiche Gleichung raus wie in meiner 1. version.

Der Test in meiner Excel-Tabelle zeigt dass zumindest die korrekten Werte herauskommen 


Wenn man Wolfram aber die modifizierte Summenformel zu auflösen vorsetzt, kommt trotzdem etwas anderes heraus. Entweder da ist wirklich ein Unterschied, oder das Programm schafft es in der einen Variante besser umzustellen.
Bin zumindest auch etwas verwirrt...


----------



## drfunfrock (15 September 2013)

Jupp, es wird der totale Durchmesser ermittelt und nicht von Kabel-Mitte zu Kabel-Mitte. Die Korrektur muss man dann noch durchführen. Ich hab die Korrektur erstmal weggelassen


----------



## drfunfrock (15 September 2013)

Thomas_v2.1 schrieb:


> Drahtlängen für die einzelnen Lagen:
> l1 =      w/d * PI * ( c + 2 * d * (1 - 1))
> l2 = l1 + w/d * PI * ( c + 2 * d * (2 - 1))
> l3 = l2 + w/d * PI * ( c + 2 * d * (3 - 1))




Bei l1 gibt es kein Problem, dass dann nur die Kabeltrommel überbleibt. 

Ich hab das auch jetzt mit Maple probiert. Nun, Excel zeigt richtige Werte, Ich würd trotzdem gerne dahinterkommen, was falsch ist :|


----------



## Thomas_v2.1 (15 September 2013)

Hast du mal verglichen ob sich die berechneten Werte der beiden Gleichungen unterscheiden? Kann ja durchaus sein, dass für das Programm die eine Variante leichter umzustellen ist.

Es sollte zumindest in der Vorwärtsrichtung, also bei der Berechnung der Drahtlänge bei gegebener Lagenanzahl, der gleiche Wert herauskommen. Den iterativ bestimmten Wert würde ich da mal als Referenz heranziehen, denn der stimmt auf jeden Fall.

Ob man mit dem mittleren oder inneren Durchmesser des Kabels rechnen muss ist dann eine technische Frage. Ein Kabel hat je nach Dicke in der Mitte ein Zugseil, da könnte man eher davon ausgehen das sich im Mittel das Kabel auf den mittleren Durchmesser aufwickelt.


----------



## Thomas_v2.1 (15 September 2013)

Ich habe mal die Einzelschritte von mir und Wolfram verglichen, da komme ich zum gleichen Ergebnis:

Test:
l = sum( w/d * PI * (c + 2 * d * (k - 1))) for k=1..n
http://www.wolframalpha.com/input/?i=l+=+sum(+w/d+*+PI+*+(c+++2+*+d+*+(k+-+1)))+for+k=1..n

Ergibt als Summenformel laut Wolfram:

l = PI * n * w * (c + d * (n - 1)) / d

Dazu lässt sich meine Gleichung von oben:
l = n * w/d * PI * c - n * w/d * PI * 2 * d + w/d * PI * 2 * d * n * ( n + 1) / 2
auch vereinfachen, die sind also identisch.

Dieses umgestellt nach n:

solve l = PI * n * w * (c + d * (n - 1)) / d for n
http://www.wolframalpha.com/input/?i=solve+l+=+PI+*+n+*+w+*+(c+++d+*+(n+-+1))+/+d+for+n

ergibt die identische Gleichung wie meine erste Variante.


Für den technischen Teil müssen wir uns auf einen Wickeldurchmesser einigen.
Willst du so rechnen dass du die erste (und weitere) Lagen auf den Trommeldurchmesser c, sondern auf den mittleren Kabeldurchmesser c + d aufwickelst?
Es ändert sich dann an der Gleichung nichts, da sich nur die Konstante c um d erhöht, also:

l1 =      w/d * PI * ( (c + d) + 2 * d * (1 - 1))
l2 = l1 + w/d * PI * ( (c + d) + 2 * d * (2 - 1))
l3 = l2 + w/d * PI * ( (c + d) + 2 * d * (3 - 1))


----------



## drfunfrock (15 September 2013)

Ich hab jetzt das gleiche bekommen, wenn ich von k=0..n-1 summiere. Ich bekomme dann L=10*w*pi  wenn d=0.1 und c=1 ist. Ich wollte tatsächlich nur den Umfang bis zur Kabelmitte haben!


----------



## extruder_luder (20 September 2013)

Hallo,

ich hab öfter mal etwas "ähnliches" gemacht.

In der Kabelindustrie hat man ein umgekehrtes Problem. Die Kabel müssen aufgewickelt werden und zwar mit einer konstanten Zugkraft des Wicklers. Um diese Kraft zu berechnen, benutzt man einen sogenannten "Bundrechner". Der ist in manchen Umrichtern schon integriert.
Funktion ist:

Man hat eine Geschwindigkeit (mit der müsstest Du das Kabel abwickeln), jetzt beginnt sich die Trommel zu drehen. Die Geschwindigkeit der Trommel ändert sich entsprechend der Abzugsgeschwindigkeit. Aus der Abzugsgeschwindigkeit und der Drehgeschwindigkeit kann man ganz leicht den Umfang und damit den Durchmesser des Kabelpaketes ausrechen und alles weitere ausrechen.


Andere Möglichkeit wäre evtl. einen Abstandssensor (Laser oder Ultraschall) in einem fixen Abstand zu montieren. Ist der Kerndurchmesser bekannt, ergibt sich dann alles andere.

Kommt beides ohne Polynome n-ten Grades aus.

Gruss

Oliver


----------



## Zottel (30 Oktober 2013)

Das Ergebnis von 
solve l = PI * n * w * (c + d * (n - 1)) / d for n
http://www.wolframalpha.com/input/?i...29+%2F+d+for+n
sieht schon ein bischen erschreckend aus. 

Wenn man erst vereinfacht:

l = sum( w/d * PI * (c + 2 * d * (k - 1))) for k=1..n
 = w/d * PI * sum( c + 2 * d * (k - 1)) for k=1..n
= n*c+ w/d * PI * sum( 2 * d * (k - 1)) for k=1..n
= n*c+w*2*PI * sum(k - 1)) for k=1..n
= n*c+w*2*PI * (n^2-n)/2  // Kommt auch der kleine Gauß wieder zum Vorschein...
= n*c+w*PI * (n^2-n)
= n*c+a * (n^2-n) mit a=w*PI

Das läßt sich jetzt mit dem Vieta'schen Wurzelsatz lösen, aber ich gebe es mal bei Wolfram ein:







a!=0 and n = (sqrt(a^2-2 a c+4 a l+c^2)+a-c)/(2 a)

Da hast du eine geschlossene Formel, die sich mit vertretbarem Aufwand in der SPS berechnen läßt.


----------



## drfunfrock (30 Oktober 2013)

Ich hab das einfacher gemacht, wobei ich zugeben muss, dass meine Mathematik ist nicht mehr die beste. 

Die Form ist

Länge(x) = a + b x + c x^2

x ist identisch mit dem Enkoderzähler, welcher den Drehwinkel des Motors angibt. Ich hab das auf Pulse/Umdrehung der Trommel reduziert. 

a muss 0 sein, da Länge(0) = 0 sein soll.

Weil ein x^2 in der Nähe von 0 sehr viel kleiner als x ist, beachte c im Punkt 0 nicht. Daher muss b die Längenänderung per Enkoderpuls sein. Das entspricht der 1. Ableitung einer Gleichung, die ich nicht habe. 

c ist dann die 2.Ableitung nach dem Enkoderzähler und es gehen nur der Kabeldurchmesser, die Breite der Trommel und die Enkoderauflösung mit Pulsen/Trommelumdrehung ein. 

Das kann man ausprobieren, indem man einfach in der iterativen Funktion einen Parameter verdoppelt und schaut, wie sich c in der numerischen Näherung verhält. Wächst es linear, quadratisch oder umgekehrt proportional? Dann geht der Parameter in C entsprechend ein. Zum Schluss muss man nur noch die Numpy-Lösung durch das eigene C teilen und man bekommt den Faktor Pi. Welch eine
Uberraschung. 

Deine Lösung hatte immer den Haken, dass ich verkehrtherum rechnen muss, dh. die Trommel ist voll und da ist dann auch der Nullpunkt. Nun weiss ich nicht, wie voll die letzte Lage ist. Ich hatte auch keine Lust mir darum einen Kopp zu machen. Daher hab ich einfach iterativ von leerer Trommel bis Kabelende für alle Enkoderwerte gerechnet und alle Längen in eine Pythonliste eingetragen. Die Liste wurde dann gespiegelt und jeder Wert durch Kabellänge-Länge ersetzt. Das war eine Zeile

result = [self.cable_len-z for z in result[::-1]]

Ist Python nicht wunderbar?

Das gibt dann alle Funktionswerte in einer Liste für eine abzurollende Trommel.  Dann rechne ich auch von Kabelmitte zu Kabelmitte, weil die bis zu etwa 50mm dick sein können.

Für die Lösungsfindung reicht eine Enkoderauflösung von 4 Pulsen pro Trommelumdrehung. Man muss also nicht mit realen Enkoderwerten arbeiten.


----------



## drfunfrock (1 November 2013)

Ich hab übrigens etwas einfacheres herausbekommen

http://www.wolframalpha.com/input/?i=solve+l%3Dsum_%28k%3D1%29^n+%28B%2Fd*PI+*+%28T+%2B+d+*+%282*k-1%29%29%29+for+n


Einfach von 1..n summieren und  von Kabelmitte zu  Kabelmitte rechnen, weswegen ein Kabeldurchmesser abgezogen werden muss. 

l = SUM von k=1..n (B/d * PI * (durchmesser) =  SUM von k=1..n (B/d * PI * (T+d*(2*k-1))
l = (pi B n (d n+T))/d


----------



## drfunfrock (1 November 2013)

Leider ist die Umstellung nach n (Lagen) auf Wolfram Alpha fehlerhaft. Die Ausgangsgleichung hab ich gegen eine iterative Lösung gescheckt, aber nach der Umstellung bekomme ich nicht den richtigen Layer heraus.


----------



## drfunfrock (1 November 2013)

So der Online Equation Solver gibt mir eine Lösung raus, die der praktischen Prüfung standhält:

n = (sqrt(p^2*B^2*T^2+4*d^2*l*p*B)-p*B*T)/(2*d*p*B)

http://www.numberempire.com/equationsolver.php?function=l=(p*B*n*(d*n+T))/d&var=n&answers=

Meine Lösung zählt die Lagen direkt von 1...N :smile:


----------



## anusha22 (4 November 2013)

Ja, erspar dir einiges an Kopfzerbrechen und nutze den Online Equation Solver. Der ist zuverlässiger als unsere grauen Zellen haha


----------

