Wrinkle Predictor

Quick Start

A wrinkle in your web can ruin your day. The root-cause cure is to avoid roller misalignment. But the existence and severity of the wrinkle depends on a range of factors that you can explore in the app. The outcomes are colour-coded to make it easier to spot and fix problems.

Credits

This is taken from the old AbbottApps which are based on inputs from web-handling experts Dr David Roisum, Dr Dilwyn Jones and Tim Walker.

Wrinkle Predictor

Tension N
Misalignment μm
Width mm
Span mm
Diameter mm
Wrap °
Frict. Coef.
Thickness μm
Modulus GPa
Slack Edge
TD Offset μm
Wrinkles?
//One universal basic required here to get things going once loaded
window.onload = function () {
    //restoreDefaultValues(); //Un-comment this if you want to start with defaults
    Main();
};

//Main() is hard wired as THE place to start calculating when inputs change
//It does no calculations itself, it merely sets them up, sends off variables, gets results and, if necessary, plots them.
function Main() {
    //Save settings every time you calculate, so they're always ready on a reload
    saveSettings();

    //Send all the inputs as a structured object
    //If you need to convert to, say, SI units, do it here!
    const inputs = {//Convert them later
        T: sliders.SlideT.value,
        Mis: sliders.SlideMis.value,
        Width: sliders.SlideWidth.value,
        Span: sliders.SlideSpan.value,
        D: sliders.SlideD.value,
        Wrap: sliders.SlideWrap.value,
        mu: sliders.Slidemu.value,
        h: sliders.Slideh.value,
        E: sliders.SlideE.value,
    };

    //Send inputs off to CalcIt where the names are instantly available
    //Get all the resonses as an object, result
    const result = CalcIt(inputs);

    document.getElementById('Slack').value = result.Slack;
    document.getElementById('TDO').value = result.TDO;
    document.getElementById('Wrinkles').value = result.Wrinkles;
    if (result.plots) {
        for (let i = 0; i < result.plots.length; i++) {
            plotIt(result.plots[i], result.canvas[i]);
        }
    }

    //You might have some other stuff to do here, but for most apps that's it for Main!
}

//Here's the app calculation
//The inputs are just the names provided - their order in the curly brackets is unimportant!
//By convention the input values are provided with the correct units within Main
function CalcIt({ T, Mis, Width, Span, D, Wrap, mu, h, E }) {
    const Tension = T
    const Modulus = E * 1000000000 // from GPa
    const Thick = h / 1000000 //from μm
    const WebWidth = Width / 1000 //from mm
    Span /= 1000 //from mm
    const Misalign = Mis / 1000000 //Micron to metres
    const ui = mu
    const s = Tension / (Modulus * Thick)
    const q = Misalign / WebWidth
    Wrap *= Math.PI / 180
    let Slack = "No"
    if (q > s * Span) {
        Slack = "Yes"
        document.getElementById("Slack").backgroundColor = "pink"
    }
    else {
        document.getElementById("Slack").style.backgroundColor = "lightgreen"
    }
    const rforce = ui * Tension * WebWidth * Wrap
    let TL = 2 * Span * q / 3
    const cplx = 0.1667 * (WebWidth * WebWidth * WebWidth * Modulus * Thick - 6 * Tension * Span * Span) / (Span * Span)
    const qmax = rforce / cplx
    const tdforce = q * cplx
    const TLMax = 2 * Span * qmax / 3
    TL = Math.min(TL, TLMax)
    const TDO = TL * 1000000

    //Wrinkle stuff
    let Tcr, WrinkleF, Wangle
    Tcr = Math.atan(Misalign / WebWidth)
    let Mx, Ey, Vxy, Vyx
    Mx = Modulus; Vxy = 0.3
    Ey = Mx; Vyx = Vxy
    //Go to Good's nomenclature
    const b = WebWidth
    const a = Span
    const H = Thick
    const Mint = H * b * b * b / 12
    const G = Math.sqrt(Mx * Ey) / (2 * (1 + Math.sqrt(Vxy * Vyx)))
    const Ax = 5 * b * H / 6
    const Phi = 12 * Mx * Mint / (G * Ax * a * a)
    T = Tension * b //Total tension, rather than N/m
    const Smd = Tension / H
    WrinkleF = 2 / (5 * G * a)
    WrinkleF *= 5 * Mx * Mx * H * H * Math.pow(b, 6) + T * Math.pow(a, 4) * (3 * T + 5 * G * H * b) * (1 + Phi) + Mx * H * a * a * b * b * b * (25 * G * H * b + T * (6 * Phi - 4))
    WrinkleF /= 5 * Mx * Mx * H * H * Math.pow(b, 6) + 9 * T * T * Math.pow(a, 4) * (1 + Phi) + 2 * Mx * H * T * a * a * b * b * b * (3 * Phi + 13)
    WrinkleF *= Math.sqrt((3 * Math.sqrt(3) * Math.PI * H * a * Math.sqrt(Ey) * Math.pow(Smd, 1.5)) / Math.sqrt(1 - Vxy * Vyx) - (3 * Math.PI * Math.PI * H * H * Ey * Smd) / (1 - Vxy * Vyx))
    let Wrinkles = "None"
    if (WrinkleF > Tcr) {
        document.getElementById("Wrinkles").style.backgroundColor = "lightgreen"
    }
    else {
        Wangle = 0.5 * Math.atan(Misalign * Modulus * H * WebWidth * WebWidth / (6 * Tension * Span * Span))
        Wangle *= 180 / Math.PI
        const Radius = D / 2000
        if (Tension * ui / (2 * Radius) * WebWidth / H > Modulus * (H / Radius) / Math.sqrt(3 * (1 - 0.3 * 0.3))) {
            Wrinkles = "Hard: " + Wangle.toFixed(1) + "°"
            document.getElementById("Wrinkles").style.backgroundColor = "red"
        }
        else {
            Wrinkles = "Soft: " + Wangle.toFixed(1) + "°"
            document.getElementById("Wrinkles").style.backgroundColor = "pink"
        }
    }
    //Now we return everything - text boxes, plot and the name of the canvas, which is 'canvas' for a single plot
    return {
        Slack: Slack,
        TDO: TDO.toFixed(2),
        Wrinkles: Wrinkles,
    };
}

                        

Background

A web will tend to bend to enter the next roller at a right angle. This is known as the Normal Entry Law because it is the normal way webs and rollers interact and because normal is a synonym for right angle. This bending will always result in four risks: slackness on the inside of the curve, over-tensioning on the outside of the curve, an offset in the path and a diagonal wrinkle pointing to the narrow side of the pair of rollers that are not parallel. The challenge is not to predict risks; those are already known and listed above. Instead, it is to predict the actual occurrence of a slack edge and wrinkle and the amount of change in web path called TD offset. Note that this app focuses on in-plane (parallel or tram) misalignment that is at least one order of magnitude more critical than out-of-plane (skew or twist) misalignment. The occurrence and prediction of wrinkles, and their cures, are fully covered in The Web Handling Handbook by Roisum, Walker and Jones.

What to Do With The Calculations

The first thing any good web handler will try for many problems is to see if tension makes a difference. If tension is low enough, you might get a slack edge (considered by some as a fail), but no hard wrinkles crossing the rollers (considered a fail on most every product). If the tension is high enough, you might be able to muscle your way through a problem. However, using tension to solve misalignment wrinkle problems is a very risky and limiting strategy in the long run. Instead, the maintenance department should find the threshold of in-plane roller misalignment that will cause wrinkling at any tension (from either trials or this app) and then set maintenance standards accordingly. A safety factor of 2-4 might be applied to allow for other troubles, such as baggy webs, and the inevitable degradation of alignment with time. It is quite possible that the required alignment tolerances might be beyond what can be done with hand tools (attempts with simple tape-measures are likely to make matters worse) so that optical, laser or the gyroscopic tooling that is specialized for roller alignment might need to be employed. The gyroscopic technique is especially attractive as it can be done with much less down-time.

Hard and Soft wrinkles

Sometimes when you play with settings nothing happens to the prediction about Soft wrinkles (those that pass over the roller doing no real harm). For example, friction coefficient and roller diameter are both important factors influencing whether a hard wrinkle (which permanently creases the web) will form, but sometimes you can alter them over a wide range and nothing seems to happen. That's because large areas of "wrinkle space" are relatively safe. But you might be close to the transition between soft and hard and be unaware of the danger. So when you have your current parameters set up to your satisfaction, deliberately change some of them within the range that is likely to occur from time to time in production to check whether you remain safe or if it really is possible to get into trouble.