Pipe coiler algorithm

JRW

Member
Join Date
Jun 2002
Location
South Carolina
Posts
2,284
I hope everyones having a good evening

I was looking at an interesting application. A section of pipe comes into 3 rolls. The one with the hydraulic cylinder controls the diameter and spacing of the spiral bend
Right now its controlled by an old pc based system

Some thoughts?

Peter- you have a nice formula for this one?
 
I hope everyones having a good evening

I was looking at an interesting application. A section of pipe comes into 3 rolls. The one with the hydraulic cylinder controls the diameter and spacing of the spiral bend
Right now its controlled by an old pc based system

Some thoughts?

Peter- you have a nice formula for this one?


sorry- heres the pic, I hope the coil will be straighter than
my pic :)

Coiler.jpg
 
Peter could probably do a cam function and make that coil look like your drawing (y)

I AM NOT a extreme algorithm writer.
Looking at this it looks like a linear taper from start to stop with the length determining the slope of the taper.

I bet it if was that easy you wouldn't have posted this. I will probably be a bell curve with some 17th order PID inside a PID. Stuff that gets way above my head.
 
Hi guys, I am at the IMTS show in Chicago and won't be able to devove any time to this till Wednesday and I won't be back in the office till Thursday. I only have my iPad with me so I don't have access to mathcad but the math is no problem. I can work out symbolic equations so you just plug in numbers, no cam table required if the controller can do the math on-the-fly like we can, hint.
 
Attached is a Wire/Rope drum spreadsheet that may be of help. Obviously you are using hose rather than wire or rope but the calculations should be the same.
 
Peter
Yes the cylinder retracts as the roll gets bigger
The cylinder is not mounted at an angle, it's straight

Thanks for the interest
 
OK, that simplifies things. It would have been more complicated if the actuator moved up at an angle. Hopefully this is just a matter of solving some simultaneous equations.
Starting. After looking at this a few minutes the center of the coil must change positions and move away from the rollers because the circumference of the coil gets bigger. The current circumference of the coil must touch a0,b0 a1,b1 and a2,b2. I am assuming the coil is being wound tight as possible.

I am calling the roller on the bottom left roller 0, the top roller 1 and the bottom right roller 2. Their center points are x0, y0 etc. Their contact points with the steel are a0, b0 etc. However, it looks like the contact points for rolls change as the circumference changes. That is what make this tricky.

First I need to find the equation for the center of a circle given 3 points.

BTW, isn't there code from the PC or is it simply an exe file?
 
I have 6 equations and 6 unknowns now. 3 for the distance between the center of the coil and the 3 contact points. 3 more for the distance between the center of the rolls and the contact points. The unknowns are the positions where the steel makes contact with the rolls so there is a coil circumference rc. I have a symbolic solution but it is very messy as it stretches across pages. I will look for a way to simplify this. This would be a challenge to compute on-the-fly. I need more constraints.

This challenges the abilities of my mathcad. I will have to use wxMaxima. It doesn't look as pretty but it handles more complicated jobs.
 
JRW, I need more constraints.
Code:
eq0: (a0-xc)^2+(b0-yc)^2=rc^2$
eq1: (a1-xc)^2+(b1-yc)^2=rc^2$
eq2: (a2-xc)^2+(b2-yc)^2=rc^2$
eq3: (a0-x0)^2+(b0-y0)^2=r0^2$
eq4: (a1-x1)^2+(b1-y1)^2=r1^2$
eq5: (a2-x2)^2+(b2-y2)^2=r2^2$
xc,yc is the center of the coil
rc is the radius of the coil
x0,y0 are the center of roll 0. x0 is fixed/ y0 is what we want to find the equation for.
x1,y1 are the center of roll 1. x1 and y1 are fixed
x2,y2 are the center of roll 2. x2 and y2 are fixed.
a0,b0 is the contact point on the edge of roll 0.
a1,b1 is the contact point on the edge of roll 1.
a2,b2 is the contact point on the edge of roll 2.
I have 6 equations. I can only eliminate 6 variables. I have eliminated a0,b0,a1,b1,a2 and b2. We know x0, x1, y1, x2, y2 because they are fixed and we want to calculate the height of roll or so we need to calculate y0 as a function of the coil radius rc. However there are two variables xc and yc that we must eliminate too. We need to know more about the process.

BTW, I have switched to wxMaxima. It is much more powerful. Even so the formula is taxing. Here is the result I have so far.
Code:
y2 = (sqrt(((32*xc-32*x2)*yc^3+(72*xc^3-216*x2*xc^2
                                       +(216*x2^2-36*rc^2+36*r2^2)*xc-72*x2^3
                                       +(36*rc^2-36*r2^2)*x2)
                               *yc)
            *sqrt(-yc^4+4*y2*yc^3
                       +(-6*y2^2-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)*yc^2
                       +(4*y2^3+(4*xc^2-8*x2*xc+4*x2^2-4*rc^2-4*r2^2)*y2)*yc
                       -y2^4+(-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)*y2^2-xc^4
                       +4*x2*xc^3+(-6*x2^2+2*rc^2+2*r2^2)*xc^2
                       +(4*x2^3+(-4*rc^2-4*r2^2)*x2)*xc-x2^4
                       +(2*rc^2+2*r2^2)*x2^2-rc^4+2*r2^2*rc^2-r2^4)
            +(64*xc^2-128*x2*xc+64*x2^2)*yc^4
            +(27*xc^2-54*x2*xc+27*x2^2)*(-yc^4+4*y2*yc^3
                                              +(-6*y2^2-2*xc^2+4*x2*xc-2*x2^2
                                                       +2*rc^2+2*r2^2)
                                               *yc^2
                                              +(4*y2^3
                                               +(4*xc^2-8*x2*xc+4*x2^2-4*rc^2
                                                       -4*r2^2)
                                                *y2)
                                               *yc-y2^4
                                              +(-2*xc^2+4*x2*xc-2*x2^2+2*rc^2
                                                       +2*r2^2)
                                               *y2^2-xc^4+4*x2*xc^3
                                              +(-6*x2^2+2*rc^2+2*r2^2)*xc^2
                                              +(4*x2^3+(-4*rc^2-4*r2^2)*x2)*xc
                                              -x2^4+(2*rc^2+2*r2^2)*x2^2-rc^4
                                              +2*r2^2*rc^2-r2^4)
            +(32*xc^4-128*x2*xc^3+(192*x2^2-80*rc^2+80*r2^2)*xc^2
                     +((160*rc^2-160*r2^2)*x2-128*x2^3)*xc+32*x2^4
                     +(80*r2^2-80*rc^2)*x2^2-4*rc^4+8*r2^2*rc^2-4*r2^4)
             *yc^2+4*xc^6-24*x2*xc^5+(60*x2^2+12*rc^2-12*r2^2)*xc^4
            +((48*r2^2-48*rc^2)*x2-80*x2^3)*xc^3
            +(60*x2^4+(72*rc^2-72*r2^2)*x2^2+12*rc^4-24*r2^2*rc^2+12*r2^4)
             *xc^2
            +(-24*x2^5+(48*r2^2-48*rc^2)*x2^3
                      +(-24*rc^4+48*r2^2*rc^2-24*r2^4)*x2)
             *xc+4*x2^6+(12*rc^2-12*r2^2)*x2^4
            +(12*rc^4-24*r2^2*rc^2+12*r2^4)*x2^2+4*rc^6-12*r2^2*rc^4
            +12*r2^4*rc^2-4*r2^6)
   /(2*3^(3/2))
   +((27*x2-27*xc)*sqrt(-yc^4+4*y2*yc^3
                             +(-6*y2^2-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)
                              *yc^2
                             +(4*y2^3+(4*xc^2-8*x2*xc+4*x2^2-4*rc^2-4*r2^2)
                                      *y2)
                              *yc-y2^4
                             +(-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)*y2^2-xc^4
                             +4*x2*xc^3+(-6*x2^2+2*rc^2+2*r2^2)*xc^2
                             +(4*x2^3+(-4*rc^2-4*r2^2)*x2)*xc-x2^4
                             +(2*rc^2+2*r2^2)*x2^2-rc^4+2*r2^2*rc^2-r2^4)
    -16*yc^3-36*xc^2*yc+72*x2*xc*yc-36*x2^2*yc+18*rc^2*yc-18*r2^2*yc)
    /54)
   ^(1/3)
   +(4*yc^2-3*xc^2+6*x2*xc-3*x2^2-3*rc^2+3*r2^2)
    /(9*(sqrt(((32*xc-32*x2)*yc^3+(72*xc^3-216*x2*xc^2
                                          +(216*x2^2-36*rc^2+36*r2^2)*xc
                                          -72*x2^3+(36*rc^2-36*r2^2)*x2)
                                  *yc)
               *sqrt(-yc^4+4*y2*yc^3
                          +(-6*y2^2-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)*yc^2
                          +(4*y2^3+(4*xc^2-8*x2*xc+4*x2^2-4*rc^2-4*r2^2)*y2)
                           *yc-y2^4
                          +(-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)*y2^2-xc^4
                          +4*x2*xc^3+(-6*x2^2+2*rc^2+2*r2^2)*xc^2
                          +(4*x2^3+(-4*rc^2-4*r2^2)*x2)*xc-x2^4
                          +(2*rc^2+2*r2^2)*x2^2-rc^4+2*r2^2*rc^2-r2^4)
               +(64*xc^2-128*x2*xc+64*x2^2)*yc^4
               +(27*xc^2-54*x2*xc+27*x2^2)
                *(-yc^4+4*y2*yc^3
                       +(-6*y2^2-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)*yc^2
                       +(4*y2^3+(4*xc^2-8*x2*xc+4*x2^2-4*rc^2-4*r2^2)*y2)*yc
                       -y2^4+(-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)*y2^2-xc^4
                       +4*x2*xc^3+(-6*x2^2+2*rc^2+2*r2^2)*xc^2
                       +(4*x2^3+(-4*rc^2-4*r2^2)*x2)*xc-x2^4
                       +(2*rc^2+2*r2^2)*x2^2-rc^4+2*r2^2*rc^2-r2^4)
               +(32*xc^4-128*x2*xc^3+(192*x2^2-80*rc^2+80*r2^2)*xc^2
                        +((160*rc^2-160*r2^2)*x2-128*x2^3)*xc+32*x2^4
                        +(80*r2^2-80*rc^2)*x2^2-4*rc^4+8*r2^2*rc^2-4*r2^4)
                *yc^2+4*xc^6-24*x2*xc^5+(60*x2^2+12*rc^2-12*r2^2)*xc^4
               +((48*r2^2-48*rc^2)*x2-80*x2^3)*xc^3
               +(60*x2^4+(72*rc^2-72*r2^2)*x2^2+12*rc^4-24*r2^2*rc^2+12*r2^4)
                *xc^2
               +(-24*x2^5+(48*r2^2-48*rc^2)*x2^3
                         +(-24*rc^4+48*r2^2*rc^2-24*r2^4)*x2)
                *xc+4*x2^6+(12*rc^2-12*r2^2)*x2^4
               +(12*rc^4-24*r2^2*rc^2+12*r2^4)*x2^2+4*rc^6-12*r2^2*rc^4
               +12*r2^4*rc^2-4*r2^6)
        /(2*3^(3/2))
        +((27*x2-27*xc)*sqrt(-yc^4+4*y2*yc^3
                                  +(-6*y2^2-2*xc^2+4*x2*xc-2*x2^2+2*rc^2
                                           +2*r2^2)
                                   *yc^2
                                  +(4*y2^3
                                   +(4*xc^2-8*x2*xc+4*x2^2-4*rc^2-4*r2^2)*y2)
                                   *yc-y2^4
                                  +(-2*xc^2+4*x2*xc-2*x2^2+2*rc^2+2*r2^2)*y2^2
                                  -xc^4+4*x2*xc^3+(-6*x2^2+2*rc^2+2*r2^2)*xc^2
                                  +(4*x2^3+(-4*rc^2-4*r2^2)*x2)*xc-x2^4
                                  +(2*rc^2+2*r2^2)*x2^2-rc^4+2*r2^2*rc^2-r2^4)
         -16*yc^3-36*xc^2*yc+72*x2*xc*yc-36*x2^2*yc+18*rc^2*yc-18*r2^2*yc)
         /54)
        ^(1/3))+yc/3$
I know I said we had to solve for y0 but wxMaxima wants to solve for x2. The equation would be the same just swap x0 for x2 and y0 for y2 and r0 for r2.

It would help to reduce the clutter if I had numeric values for x0,r0,x1,y1,r1,x2,y2 and r2. If all the rolls have the same diameter that would simplify things a lot.

JRW, help me help you. You can see this is not an easy problem. Those that said a cam table will be needed are right. It is easy to see the calculations are complex. I haven't even taken into account the thickness of the metal that is being rolled yet.
 
I haven't even taken into account the thickness of the metal that is being rolled yet.


And you have not mentioned the elasticity of the metal pipe (how much it attempts to straighten after being bent)

JRW - what is the approximate metal temperature?
Does the roll have to be a tight flat coil?
Can we have some examples (pictures of final product?) of final diameter and pipe thickness and total rolled length?
 
Peter,

Here is an old spreadsheet for a manual pipe bender that I developed years ago for our shop guys using a manual hydraulic bender. I don't remember much about the equations (dementia has stolen my math abilities) except that my math-professor wife helped me figure them out. The equations and bend angle are calculated here based on the distance from the beginning end of the pipe, the rise and run inputs in inches that measure how far out and how far up or down the bent pipe needs to go, the pipe diameter, and the bender wheel diameter (radius of the bend).

In the spreadsheet, the blue cells are the user inputs for pipe diameter, bender wheel diameter, rise, and run. The red cells are the distances from pipe end to first bender roller and second bener roller. RC is the calculated bend radius (which in your calculations would be a variable that determines the spiral radius at any given point along the pipe).

You might be able to adopt part of this method to find some of your unknowns.

EDIT: Michael G, the elasticity was offset in my case by adjusting the effective bender wheel radius or pipe diameter. In the example, I used 1.9 inches for the diameter of a 2" pipe, which from several trial bends resulted in the correct rise and run distances.

Pipe Bender Picture.jpg
 

Attachments

  • Pipe Bender.xls
    22 KB · Views: 7
Last edited:
OK, that simplifies things. It would have been more complicated if the actuator moved up at an angle. Hopefully this is just a matter of solving some simultaneous equations.
Starting. After looking at this a few minutes the center of the coil must change positions and move away from the rollers because the circumference of the coil gets bigger. The current circumference of the coil must touch a0,b0 a1,b1 and a2,b2. I am assuming the coil is being wound tight as possible.

I am calling the roller on the bottom left roller 0, the top roller 1 and the bottom right roller 2. Their center points are x0, y0 etc. Their contact points with the steel are a0, b0 etc. However, it looks like the contact points for rolls change as the circumference changes. That is what make this tricky.


Peter why are you basing your equations on 3 points for the circumference - based on rolls 0,1,2

I see a straight pipe entering via fixed rollers 1, 2 and roller 0 causing the circumference change around roller 1, Roller 2 would have the same contact point all the time and roller 1 has a changing contact length with the pipe.


If roller 1 was the moving roller then I understand the 3 points circumference.
I think that the video on this web site shows that the bending occurs mostly when roller 0 is in contact with the pipe - near minute 1:03 http://www.glaser.de/en/machines/tube-bending-machines/
 

Similar Topics

Hi all, Related to my other post, I also need to measure some quite low temperatures (down to -50°C) in pipes. For the most part this is fine -...
Replies
4
Views
1,535
Good morning, Curious what the function is of this piece of steel pipe that a motor wire run through. The same thing is installed in the encoder...
Replies
2
Views
2,656
This machine we are dealing with has a bunch of these, and we haven't been able to ID them. The thread is straight metric 1.5M, but that's about...
Replies
6
Views
4,449
Hi Guys, I'm a beginner in the PID World, so right now I'm trying to program one controller to do the following: I have a Burst Machine to test...
Replies
4
Views
2,272
I have a customer with a tank farm in which each of the 50 or so tanks has a pipe that connects to a manifold in a blend room. In the blend...
Replies
17
Views
6,138
Back
Top Bottom