Labels are pressed into the record, not applied at finishing
The docs and the plant page had labelling as a finishing step after the press. On a record press the bottom label, the cake and the top label go in between the stampers every cycle and the mold bonds the paper into the vinyl; the oven only pre-dries them. Corrected everywhere the process is described: - process-flow.md: labels are a parallel input to pressing with their own row (print inspection, oven, lot per cycle); stage 6 loads label, cake, label; stage 7 is trim, sleeve, shrink - process-flow.drawio (+ regenerated png/pdf): label input now feeds stage 6, not stage 7 - README vision list and the business plan source (regenerated docx/pdf): pressing paragraph explains the pressed-in label, finishing no longer claims to label - plant-operation.html: label dry oven station feeds two label discs into the press with every cake, the cake in the mold shows its labels, the cycle log records the label lot, finishing is sleeve + shrink
This commit is contained in:
1 parent
c8482b7a76
commit
122d908862
9 files changed
+37
-26
No files matched your search
@@ -184,7 +184,7 @@ const S={
|
||||
galv:{active:null,cur:0,temp:55,ni:0.25},
|
||||
press:{state:'IDLE',idx:0,tIn:0,cycle:0,cycleStart:0,lastCycle:0,force:0,moldT:58,job:null,run:0,runQty:0,tpLeft:0,waiting:false,changeT:0,rack:[],topY:300},
|
||||
jobN:41, stamperN:2261, gates:{g1:false,g2:false,g3:false},
|
||||
opticalLast:'-', audioLast:'-', lastMoldT:58,
|
||||
opticalLast:'-', audioLast:'-', lastMoldT:58, labelPairs:480,
|
||||
};
|
||||
const PALETTE=['#e0552f','#3aa0ff','#ffbf1f','#3ddc84','#c86bff','#ff7ab6','#59d9c9'];
|
||||
|
||||
@@ -199,6 +199,7 @@ const MACH=[
|
||||
{id:'prep',x:1150,y:70,w:140,h:90,t:'Stamper prep',s:'punch · back-finish · coin',tags:[()=>'concentr. '+f0(jit(18,4))+' µm',()=>'rack '+S.press.rack.length+' ready']},
|
||||
{id:'archive',x:1330,y:70,w:140,h:90,t:'Mother archive',s:'repress path, no gates',tags:[()=>'mothers 128 stored',()=>'repress 7 to 11 days']},
|
||||
// side boxes
|
||||
{id:'labels',x:560,y:195,w:150,h:60,t:'Label dry oven',s:'print inspected · pre-dried',tags:[()=>'60 °C · L-77 · '+S.labelPairs+' pr']},
|
||||
{id:'audioqc',x:1050,y:195,w:130,h:60,t:'Audio compare',s:'needle-drop · 1 in 50',tags:[()=>'n '+S.samples+' · last '+S.audioLast]},
|
||||
{id:'carton',x:1390,y:195,w:150,h:60,t:'Carton partner',s:'incoming QC per delivery',tags:[()=>'lot CP-0311 · ΔE 0.8 OK']},
|
||||
// material + record path, row 2
|
||||
@@ -209,7 +210,7 @@ const MACH=[
|
||||
{id:'press',x:720,y:270,w:140,h:210,t:'',custom:'press'},
|
||||
{id:'trim',x:900,y:345,w:110,h:100,t:'Trimmer',s:'Vario 12" · flash cut',tags:[()=>'trimmed '+S.trimmed,()=>'scrap '+f1(S.scrapKg)+' kg',()=>'to grinder']},
|
||||
{id:'optical',x:1050,y:345,w:130,h:100,t:'Optical inspection',s:'100 % · darkfield line-scan',tags:[()=>'pass '+yieldStr(),()=>'rejects '+S.rej,()=>'last '+S.opticalLast]},
|
||||
{id:'label',x:1220,y:345,w:130,h:100,t:'Finishing',s:'label oven · shrink wrap',tags:[()=>'oven '+f0(jit(60,1))+' °C',()=>'labels lot L-77',()=>'shrink sampled QC']},
|
||||
{id:'label',x:1220,y:345,w:130,h:100,t:'Finishing',s:'inner sleeve · shrink wrap',tags:[()=>'sleeved '+S.assembled,()=>'sleeve lot IS-204',()=>'shrink sampled QC']},
|
||||
{id:'pack',x:1390,y:345,w:150,h:100,t:'Packaging',s:'matrix code vs jacket barcode',tags:[()=>'assembled '+S.assembled,()=>'mismatch '+S.mismatches,()=>'barcode 100 % verified']},
|
||||
{id:'ship',x:1580,y:345,w:180,h:100,t:'Fulfillment',s:'bulk pallet · dropship',tags:[()=>'pallet '+S.pallet+' / 300',()=>'dropship '+S.parcels+' parcels',()=>'tracking per shipment']},
|
||||
// utilities, row 3
|
||||
@@ -304,7 +305,7 @@ function drawPress(m){
|
||||
// top platen moving
|
||||
m.topPl=el('rect',{x:738,y:300,width:104,height:18,class:'platen'},g);
|
||||
m.topSt=el('rect',{x:748,y:318,width:84,height:3,fill:'#b9c2cc'},g); // stamper A
|
||||
m.cake=el('circle',{cx:790,cy:395,r:9,fill:'#3d3a33',stroke:'#8a7a55',visibility:'hidden'},g);
|
||||
m.cake=el('g',{visibility:'hidden'},g);el('circle',{cx:790,cy:395,r:9,fill:'#3d3a33',stroke:'#8a7a55'},m.cake);m.cakeLbl=[el('rect',{x:781,y:383,width:18,height:2.5,rx:1,fill:'#e6ecf7'},m.cake),el('rect',{x:781,y:404,width:18,height:2.5,rx:1,fill:'#e6ecf7'},m.cake)];
|
||||
m.stateEl=el('text',{x:790,y:440,class:'mtag','text-anchor':'middle',style:'font-weight:700;fill:#e6ecf7'},g,'IDLE');
|
||||
m.tagEls=[el('text',{x:727,y:456,class:'mtag'},g,''),el('text',{x:727,y:469,class:'mtag'},g,'')];
|
||||
m.tags=[()=>'F '+f0(S.press.force)+' t · mold '+f0(S.press.moldT)+' °C',()=>S.press.job?('run '+S.press.run+'/'+S.press.runQty+' · '+S.press.job.stamper):'no stamper mounted'];
|
||||
@@ -356,6 +357,7 @@ route('cake','M648,392 H790','mat thin');
|
||||
route('scrap','M955,445 V470 H925 V560','scrap thin');
|
||||
route('reject','M1115,445 V470 H925 V560','scrap thin');
|
||||
route('sample','M1115,345 V255','route thin');
|
||||
route('labels','M690,255 V262 H760 V300','mat thin');
|
||||
route('carton','M1465,255 V345','route thin');
|
||||
route('regrind','M925,680 V715 H20 V262 H165 V280','reg thin');
|
||||
PATHS.route=el('path',{d:'M860,395 H1700',fill:'none',stroke:'none'},L.pipes);PATHS.route.len=PATHS.route.getTotalLength();
|
||||
@@ -375,6 +377,7 @@ el('text',{x:1122,y:300,class:'small'},L.top,'1 in 50 + all TPs');
|
||||
el('text',{x:1472,y:300,class:'small'},L.top,'jackets · sleeves');
|
||||
el('text',{x:1520,y:395,class:'small'},L.top,'');
|
||||
el('text',{x:660,y:378,class:'small'},L.top,'cake');
|
||||
el('text',{x:700,y:268,class:'small'},L.top,'labels');
|
||||
el('text',{x:1265,y:178,class:'small'},L.top,'stamper to press');
|
||||
|
||||
/* ------------------------------------------------------------------ tokens */
|
||||
@@ -473,8 +476,10 @@ function pressEnter(state){
|
||||
const P=S.press;P.state=state;P.tIn=0;
|
||||
if(state==='LOAD'){
|
||||
P.cake.node=dot('',9);P.cake.node.setAttribute('fill','#3d3a33');P.cake.node.setAttribute('stroke','#8a7a55');
|
||||
mover('cake',P.cake.node,142/2.6,m=>{m.node.remove();M.press.cake.setAttribute('visibility','visible');});
|
||||
mover('cake',P.cake.node,142/2.6,m=>{m.node.remove();M.press.cake.setAttribute('visibility','visible');M.press.cakeLbl.forEach(r=>r.setAttribute('fill',P.job?P.job.color:'#e6ecf7'));});
|
||||
S.ext.cake=jit(163,4);
|
||||
for(let k=0;k<2;k++){const lb=el('circle',{r:3.2,fill:P.job?P.job.color:'#fff',stroke:'#e6ecf7','stroke-width':1},L.tok);mover('labels',lb,60,m=>{m.node.remove();});}
|
||||
S.labelPairs--;if(S.labelPairs<=0){S.labelPairs=480;log('Labels: new pre-dried stack loaded at P1, lot L-77','info');}
|
||||
}
|
||||
if(state==='CLOSE'){}
|
||||
if(state==='STEAM'){M.press.cake.setAttribute('visibility','hidden');}
|
||||
@@ -485,7 +490,7 @@ function pressEnter(state){
|
||||
P.lastCycle=S.t-P.cycleStart;P.cycleStart=S.t;
|
||||
const r=mkRecord(P.job,tp);
|
||||
S.logged++;
|
||||
const msg='P1 cycle #'+P.cycle+(tp?' TEST PRESSING':'')+' · '+f1(P.lastCycle)+' s · cake '+f0(S.ext.cake)+' g · mold '+f0(S.lastMoldT)+' °C';
|
||||
const msg='P1 cycle #'+P.cycle+(tp?' TEST PRESSING':'')+' · '+f1(P.lastCycle)+' s · cake '+f0(S.ext.cake)+' g · labels L-77 · mold '+f0(S.lastMoldT)+' °C';
|
||||
log(msg,tp?'warn':'info');
|
||||
}
|
||||
}
|
||||
@@ -655,7 +660,7 @@ function render(dt){
|
||||
lamp('boiler',S.boiler.p<9.5?'alarm':S.boiler.p<9.8?'warn':'run');
|
||||
lamp('chiller','run');lamp('comp','run');lamp('hyd',running?'run':'idle');lamp('grind','run');lamp('energy','run');lamp('trace','run');lamp('hvac','run');
|
||||
lamp('lab',S.t<S.lab.testingUntil?'warn':'run');
|
||||
lamp('audioqc',movers.some(mv=>mv.p===PATHS.sample)?'run':'idle');lamp('carton','run');
|
||||
lamp('audioqc',movers.some(mv=>mv.p===PATHS.sample)?'run':'idle');lamp('labels',running?'run':'idle');lamp('carton','run');
|
||||
const js=job?MSTAGES[job.stage]&&MSTAGES[job.stage].id:null;
|
||||
['audio','master','cut','silver','prep'].forEach(id=>lamp(id,js===id?'run':'idle'));
|
||||
lamp('galv',S.galv.active?'run':'idle');lamp('archive','idle');
|
||||
@@ -693,11 +698,12 @@ const DETAILS={
|
||||
silo_v:{t:'Virgin PVC compound',w:'Record-grade compound, classically a vinyl chloride / vinyl acetate copolymer, makes up 80 % of the mix. Every lot is released through the material lab before it reaches the extruder and its ID attaches to every record pressed from it.',c:['Certificate of analysis per lot','Retained sample archived per lot'],f:['Qualifying Thai and regional compound against European references is an explicit goal']},
|
||||
silo_r:{t:'Regrind stream',w:'Trims and rejected records are ground in-house and fed back as roughly 20 % of the feedstock. It is a material source in its own right and gets its own gate.',c:['No labels, paper or foreign material into the grinder','Contamination check per regrind batch','Virgin/regrind ratio verified at the extruder','Regrind batch IDs logged like any other lot'],f:['Newbilt process schematic: 80 % new granulate, 20 % recycled']},
|
||||
lab:{t:'M · Material lab gate',w:'Every incoming compound lot passes a benchtop gate before release. New lots, and especially new suppliers, are released only after test pressings from that lot pass optical and audio QC.',c:['Moisture (halogen analyzer or Karl Fischer): the most common cause of noisy surfaces','Heat stability (oven strips, ISO 182): PVC degradation releases HCl','Density, color L*a*b* and gloss, granulate sieve analysis, ash','Release by test pressing'],f:['Later: torque rheometry, DSC (degree of gelation), FTIR','External per supplier: K-value, XRF stabilizer system, TGA, resistivity']},
|
||||
ext:{t:'6a · Extruder VEX 50',w:'Granulate from the hopper is melted through three electrically heated zones and extruded as a cake (puck) of about 160 g for a 140 g record, the surplus becoming flash. The cake is placed between the two labels and loaded into the press.',c:['Zone temperatures and screw speed logged per cycle','Cake weight per cycle (press telemetry)','Regrind ratio verified here'],f:['15 kVA connected, 8 kW average','660 kg on ~0.5 m²','Cooling water ~4 l/min, air 2 m³/h']},
|
||||
press:{t:'6b · Hydraulic press HRP 12',w:'The stamper pair is mounted on the platens. Each cycle: load cake and labels, close, steam at 10 bar / 180 °C heats the molds and the ~150 t force flows the vinyl into the grooves, cooling water sets it, open, eject. About 28 to 30 s per record. Telemetry is logged every cycle, and the artist approves the test pressing (gate 3) before the production run.',c:['Per cycle: nozzle pressure, mold temperatures, cycle time, cake weight, yields, drift alerts','Artist gate 3: test pressing approved','Record identity = stamper ID + press ID + cycle timestamp + side'],f:['1,350 kg on 0.9 m²: slab loading is a building criterion','Steam 150 to 180 kg/h at 9.5 to 10.5 bar','Cooling up to 100 l/min, up to 125 kW','Fleet plan: 50/50 automated (Pheenix Alpha class) and semi-automatic (Newbilt) presses']},
|
||||
ext:{t:'6a · Extruder VEX 50',w:'Granulate from the hopper is melted through three electrically heated zones and extruded as a cake (puck) of about 160 g for a 140 g record, the surplus becoming flash. The cake is sandwiched between the bottom and top label and loaded into the press.',c:['Zone temperatures and screw speed logged per cycle','Cake weight per cycle (press telemetry)','Regrind ratio verified here'],f:['15 kVA connected, 8 kW average','660 kg on ~0.5 m²','Cooling water ~4 l/min, air 2 m³/h']},
|
||||
press:{t:'6b · Hydraulic press HRP 12',w:'The stamper pair is mounted on the platens. Each cycle: bottom label, cake and top label go in between the stampers, close, steam at 10 bar / 180 °C heats the molds and the ~150 t force flows the vinyl into the grooves, cooling water sets it, open, eject. About 28 to 30 s per record. Telemetry is logged every cycle, and the artist approves the test pressing (gate 3) before the production run.',c:['Per cycle: nozzle pressure, mold temperatures, cycle time, cake weight, label lot, yields, drift alerts','Artist gate 3: test pressing approved','Record identity = stamper ID + press ID + cycle timestamp + side'],f:['1,350 kg on 0.9 m²: slab loading is a building criterion','Steam 150 to 180 kg/h at 9.5 to 10.5 bar','Cooling up to 100 l/min, up to 125 kW','Fleet plan: 50/50 automated (Pheenix Alpha class) and semi-automatic (Newbilt) presses']},
|
||||
trim:{t:'7a · Trimmer',w:'The Vario trimmer cuts the flash from the pressed record. Trimmings go straight to the grinder and back into the regrind stream.',c:['Trim quality on every record'],f:['12" now, 7"/10" upgrade path']},
|
||||
optical:{t:'QC layer 1 · 100 % optical inspection, inline',w:'Machine vision at line speed inspects every record with darkfield lighting and line-scan cameras. Non-fill and stitching correlate with audible defects, so this is a strong proxy for audio quality without playing the record. No vinyl-specific product exists; this is a custom Keyence/Cognex-class integration.',c:['Non-fill (dull patches), stitching and flow lines','Warp via structured light','Off-centre spindle hole vs groove spiral','Surface debris, label errors'],f:['Rejects go to the grinder; the cycle stays in the traceability record','The dead-wax fiducial gives the camera a fixed angular anchor']},
|
||||
label:{t:'7b · Finishing',w:'Labels are pre-dried in the oven before pressing so they do not blister; finished records are sleeved and shrink-wrapped.',c:['Label print inspection','Shrink wrap on a sampling basis'],f:['Label dry oven, shrink wrapper and buffer spindles in the Newbilt scope']},
|
||||
label:{t:'7b · Finishing',w:'The trimmed record goes into its inner sleeve and, once assembled, through the shrink wrapper. The labels are already on: they were pressed into the record in the mold, not applied here.',c:['Inner sleeve scuff check per sleeve lot','Shrink wrap on a sampling basis'],f:['Shrink wrapper and buffer spindles in the Newbilt scope']},
|
||||
labels:{t:'L · Labels',w:'Center labels are pressed into the record, not glued on afterwards. Each cycle the operator (or the automatic label feed on an automated press) places the bottom label, the cake and the top label between the stampers; the steam-heated mold bonds the paper into the vinyl. Labels are pre-dried in the oven before they reach the press because moisture in the paper causes bubbles, and the label lot is logged per press cycle.',c:['Print inspection of each label lot against the approved proof','Pre-dried in the oven (Newbilt quotes a France Etuves XU 112 class oven)','Label identity and centering checked by the optical inspection on every record'],f:['Label dry oven and 7" center label punch in the Newbilt scope','Vision-guided label rotation at the press is feasible but deprioritized; the dead-wax fiducial keeps it measurable']},
|
||||
pack:{t:'8 · Packaging and assembly',w:'The highest-value check in the plant: the runout matrix code is scanned against the jacket barcode at the packing station, so the wrong record in the right jacket is systematically caught. Inserts and extras are checked against the order bill of materials.',c:['Matrix code vs jacket barcode on every unit','Barcode verification (a misprinted barcode is a rejected delivery at the distributor)','Inserts per bill of materials','Final visual on a sampling basis'],f:['Packaging + finished goods ~300 to 500 m²']},
|
||||
ship:{t:'9 · Fulfillment',w:'Consignments are assembled against the order, shipped as bulk pallets or dropshipped parcel by parcel to end customers on behalf of the label. Carrier tracking is recorded per shipment or per end customer and joins the traceability record.',c:['Consignment vs bill of materials','Tracking per shipment or per dropshipped customer'],f:['Quoted lead time: 7 to 9 weeks mature, 2 to 3 weeks repress, from test-pressing approval']},
|
||||
boiler:{t:'Steam boiler',w:'Saturated steam at 10 bar / 180 °C heats the press molds. Sized at 400 kg/h (~300 kW thermal) for the Duplex path; one press draws 150 to 180 kg/h. Sourced and installed locally with water treatment, in a detached boiler hall with a 14 m flue.',c:['Pressure held between 9.5 and 10.5 bar at the press','Feedwater treatment, condensate return'],f:['Fuel decision open: biomass (own 60 rai coppice + northern agricultural waste), LPG, or electric (~300 kW)','Boiler hall 66 m², fuel store 42 m²']},
|
||||
|
||||
Reference in new issue
Block a user