Wound Roll Sizer
Quick Start
The weight, diameter, length or your roll are inter-related and parameters such as density, width, Core ID influence the outcomes. The inter-dependence makes calculations a bit tricky, but you'll quickly get the hang of it.
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.
Wound Roll Sizer
//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();
};
let AmChanging = false
//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(theID) {
//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
L: SlideL.value,
Width: SlideWidth.value,
h: Slideh.value,
COD: SlideCOD.value,
kg: Slidekg.value,
mpm: Slidempm.value,
Basis: SlideBasis.value,
rho: Sliderho.value,
CF: SlideCF.value,
D: SlideD.value,
ID:theID,
};
//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('Inertia').value = result.Inertia;
document.getElementById('Time').value = result.Time;
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({L,Width,h,COD,kg,mpm,Basis,rho,CF,D,ID }) {
if (ID) ID=ID.target.id
if (AmChanging) return {}
let weight
let WebLength = L
const Density = 1000 * rho
const WebWidth = Width/ 1000;
const RWeight = kg;
const RCore = COD;
const RDiameter = D
let H = h / 1000000;
const Speed = mpm
H *= CF;
if (Math.abs(CF-1)>0.1)
{
document.getElementById("SlideCF").style.backgroundColor = "pink"
}
else
{
document.getElementById("SlideCF").style.backgroundColor = "skyblue"
}
if (ID== "SlideWidth")
{
weight = WebLength * WebWidth * Density * H/CF
document.getElementById("Slidekg").value=weight.toFixed(0)
}
if (ID!="SlideBasis")
{ AmChanging=true
document.getElementById("SlideBasis").value=(1000 * Density * H/CF).toFixed(0)
}
else
{
H = 0.001 * Basis / Density;
Thick = (H * 1000000.0)
H *= CF;
document.getElementById("Slideh").value=H.toFixed(0)
}
if (ID== "Slideh")
{
D = Math.sqrt(4000000 * H * WebLength / Math.PI + RCore * RCore);
document.getElementById("SlideD").value=D.toFixed(0)
weight = WebLength * WebWidth * Density * H/CF
document.getElementById("Slidekg").value=weight.toFixed(0)
}
if (ID== "SlideL" || (ID!= "SlideL" && ID!= "Slidekg" && ID!= "SlideD" && ID!= "Slideh" && ID!= "SlideWidth"))
{
weight = WebLength * WebWidth * Density * H/CF;
document.getElementById("Slidekg").value=weight.toFixed(0)
D= Math.sqrt(4000000 * H * WebLength / Math.PI + RCore * RCore);
document.getElementById("SlideD").value=D.toFixed(0)
}
if (ID== "Slidekg")
{
WebLength = RWeight / (Density * H * WebWidth);
document.getElementById("SlideL").value=WebLength.toFixed(0)
D= Math.sqrt(4000000 * H * WebLength / Math.PI + RCore * RCore)
document.getElementById("SlideD").value=D.toFixed(0)
}
if (ID== "SlideD")
{
WebLength = Math.PI / (4000000 * H) * (RDiameter * RDiameter - RCore * RCore)
document.getElementById("SlideL").value=WebLength.toFixed(0)
weight = WebLength * WebWidth * Density * H/CF
document.getElementById("Slidekg").value=weight.toFixed(0)
}
if (ID!= "Slidekg")
{
document.getElementById("Slidekg").value=weight.toFixed(0)
}
const Time = WebLength/Speed
const Inertia=Density * WebWidth * Math.PI / 32 * (Math.pow(D / 1000, 4) - Math.pow(RCore / 1000, 4))
//Now we return everything - text boxes, plot and the name of the canvas, which is 'canvas' for a single plot
AmChanging=false
return {
Inertia: Inertia.toFixed(2),
Time: Time.toFixed(1),
};
}
Background
The wound roll has three important properties: web thickness, web length and wound roll outside diameter. If you know two of these, the third can be calculated. With other information, such as web width, many other parameters such as weight and inertia can be calculated. What makes this calculator useful and also possibly a bit confusing is that you could change roll weight, for example, and note that many other fields are recalculated. The reason is that changing the roll weight assumes that the length is what was changed rather than the basis weight, width or other factor. Many other similar relationships are also employed in the calculator. Another point of confusion might be when you enter only some parameters such as length and thickness and note that the predicted roll weight is not what you measured ... because you forgot to enter your particular width and the default value remained. The simple way to avoid confusion is to enter what you know field by field until all fields that you (easily) know are entered. Then re-check your inputs to see that they have not been overwritten by an automatic recalculation.
Thickness Compressibility Factor
A final small complication awaits the sophisticated user. That is the predicted roll dimensions will be different than the real world by a few percent. The reason is that rolls of film, for example, will also include some air so that the effective or average or in-roll thickness is slightly greater than the test lab measured thickness. Its thickness compressibility factor is greater than one in this situation and essentially is a measure of both how tight the roll is wound as well as how much (percent) air that is inside the wound roll.
In contrast, compressible or spongy materials such as foam, nonwovens, tissue and textiles may have in-roll thickness less than test lab measured thickness. This is because the pressure in which the test lab measures thickness is different than the average pressure between the layers in the wound roll. Again, the difference between calculated and real dimensions is sensitive to how tightly the roll is wound as well as other factors.
In order to improve the performance of the calculator, you need to have a wound roll of known dimensions already. Simply adjust, trial-and-error if need be, the compressibility factor until the calculations match the known roll. Then use the same compressibility factor for subsequent calculations. Caution, the factor will change if you change roll size a lot, but especially if you change 'grades' or winding tightness.
Because an accidental setting of this factor might mislead you, if the value is <0.9 or >1.1 then it is highlighted in pink as a reminder.