C-uppsats
LITH-ITN-EX--05/039--SE
Kallvalsverksreglering
Antoni Morad
Faruk Travancic
2005-12-16
LITH-ITN-EX--05/039--SE
Kallvalsverksreglering
Examensarbete utfört i reglerteknik
vid Linköpings Tekniska Högskola, Campus
Norrköping
Antoni Morad
Faruk Travancic
Handledare Tobias Jansson
Handledare Niclas Gustavsson
Examinator Lars Backström
Norrköping 2005-12-16
Rapporttyp Report category Examensarbete B-uppsats C-uppsats D-uppsats _ ________________ Språk Language Svenska/Swedish Engelska/English _ ________________ Titel Title Författare Author Sammanfattning Abstract ISBN _____________________________________________________ ISRN _________________________________________________________________
Serietitel och serienummer ISSN
Title of series, numbering ___________________________________
Datum
Date
URL för elektronisk version
Avdelning, Institution
Division, Department
Institutionen för teknik och naturvetenskap Department of Science and Technology
2005-12-16
x
x
LITH-ITN-EX--05/039--SE
Kallvalsverksreglering
Antoni Morad, Faruk Travancic
Den här rapporten avser ett examensarbete som har utförts inom valsteknik. Examensarbetet genomfördes på Sapa Finspång Heat Transfer. Syftet med arbetet var att utvärdera
tjockleksdata och planhetsdata, dvs. att ge högsta optimala startvärdet för valskraften för att komma fort i rätt tjocklek och ge bästa möjliga planhet.
Upphovsrätt
Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare –
under en längre tid från publiceringsdatum under förutsättning att inga
extra-ordinära omständigheter uppstår.
Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner,
skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för
ickekommersiell forskning och för undervisning. Överföring av upphovsrätten
vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av
dokumentet kräver upphovsmannens medgivande. För att garantera äktheten,
säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ
art.
Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i
den omfattning som god sed kräver vid användning av dokumentet på ovan
beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan
form eller i sådant sammanhang som är kränkande för upphovsmannens litterära
eller konstnärliga anseende eller egenart.
För ytterligare information om Linköping University Electronic Press se
förlagets hemsida
http://www.ep.liu.se/Copyright
The publishers will keep this document online on the Internet - or its possible
replacement - for a considerable time from the date of publication barring
exceptional circumstances.
The online availability of the document implies a permanent permission for
anyone to read, to download, to print out single copies for your own use and to
use it unchanged for any non-commercial research and educational purpose.
Subsequent transfers of copyright cannot revoke this permission. All other uses
of the document are conditional on the consent of the copyright owner. The
publisher has taken technical and administrative measures to assure authenticity,
security and accessibility.
According to intellectual property law the author has the right to be
mentioned when his/her work is accessed as described above and to be protected
Förord
Den här rapporten är ett examensarbete som omfattar 10 poäng och ingår i utbildningen till högskoleingenjör 120 poäng inom data- och elektroteknik med inriktning mot data- och elsystem. Utbildningen är genomförd på Institutionen för Teknik och Naturvetenskap, Campus Norrköping.
Vi vill här med tacka Sapa Finspång Heat Transfer som gav oss möjligheten att utföra
examensarbetet. Genomförandet har underlättats av att ett flertal personer svarat på frågor och bidragit med fakta till rapporten. Ett extra tack till våra handledare Niclas Gustafsson, Tobias Jansson och Mattias Andersson för den hjälp vi fått.
Sammanfattning
Den här rapporten avser ett examensarbete som har utförts inom valsteknik. Examensarbetet genomfördes på Sapa Finspång Heat Transfer. Syftet med arbetet var att utvärdera
tjockleksdata och planhetsdata, dvs. att ge högsta optimala startvärdet för valskraften för att komma fort i rätt tjocklek och ge bästa möjliga planhet.
Tjockleken, startvalskraften, startkraft valsböjningen är de set up-värden som skickas ner till reglersystemet.
Rapporten inleds med en teoridel som beskriver varm- och kallvalsning av aluminium och en praktisk del som bygger på olika valsningsförsök.
Exsamensarbetet visar att det går att öka kvaliteten på valsämnet vid valsning inom
aluminiumindustrin genom att utföra bandtester och analysera grafer som 3-sigma, utgående tjocklek samt 3D-grafer och dess planhet.
Abstract
This report contains the details in a final research thesis work done rolling mill technology. The work is carried out at Heat Transfer located at Finspång. The main objective of this work is to evaluate thickness and flatness data from the profile to give an optimal start value for the pressure and force applied on the machine and the speed as well, so that the profiles produced, have the right thickness and best possible flatness.
Thickness, start value for power, the degree of bending the profiles are set up and sent down to the control system.
The report starts with a theory part describing the heating and cooling during process for aluminium profiles. A practical part describes experiments conducted on the rolling mill process under various conditions.
The thesis work shows that the quality can be improved by rolling the slab in Aluminium industry by executing band tests and analysing graphs as 3-sigma, outward thickness and 3D-graphs and its flatness.
Innehållsförteckning
1 Inledning 1.1 Bakgrund ... 1 1.2 Syfte ... 1 2 Teori ... 2 2.1 Arbetsvalsar... 2 2.2 Valsprocessens beskrivning ... 3 2.2.1 Varmvalsverken ... 3 2.2.2 Beskrivning av varmvalslinjen... 3 2.2.3 Kallvalsverken... 4 3 Definition av planhet ... 7 3.1 Beräkning av planhet... 8 3.2 Stressometer ... 8 3.3 Utvärdering... 8 4 Valsprocessen... 9 4.1 Legering ... 94.2 Vikiga faktorer vid valsningen ... 10
5 Tjockleksavvikelse ... 10
5.1 Excentricitet vid valsning... 10
6 Praktisk del ... 11 6.1 Metoder ... 11 6.2 Försök 1... 11 6.3 Sammanfattning av resultat ... 20 6.4 Försök 2... 21 6.5 Beräkningar för försök 2 ... 21 6.6 Sammanfattning av resultat ... 28 7 Försök 3... 28
7.1 Utan adaptiva delen ... 28
7.2 Med adaptiva delen ... 28
7.3 Programkod ... 29
7.4 Flödesschema för 8HA4... 30
7.5 Grafer utan adaptiva delen ... 32
8 Grafer för adaptiva delen... 36
9 Sammanfattning av resultat ... 44
10 Diskussion ... 45
Figurförteckning
Figur 1 Visar valsar utan kraft... 2
Figur 2 Valsar med kraft ... 2
Figur 3 Varmvalslinjen ... 3
Figur 4 Valsverksprincipen för de tre olika kallvalsverken ... 4
Figur 5 Sapas kallvalsverk 2751 ... 5
Figur 6 Kallvalsverk... 6
Figur 7 Planhet i samband med töjning... 7
Figur 8 Stressometermätrulle ... 8
Figur 9 Valsämnet introduceras mellan valsarna... 9
Figur 10 Visar Band M7433... 12
Figur 11 Visar 2D och 3D grafer ... 13
Figur 12 Visar band M6933 ... 14
Figur 13 Visar 2D och 3D grafer ... 15
Figur 14 Band M6995 ... 16
Figur 15 2D och 3D grafer ... 17
Figur 16 Band M7288 ... 18
Figur 17 Visar utgående tjocklek för alla band ... 19
Figur 18 Visar 3-sigma för alla band... 20
Figur 19 Band M8086 ... 23
Figur 20 Band M8089 ... 24
Figur 21 Band M8090 ... 25
Figur 22 Visar 3D för tre band ... 26
Figur 23 Visar 2D för tre band ... 27
Figur 24 Utan den adaptiva delen ... 32
Figur 25 Band M8698 ... 33 Figur 26 Band M6771 ... 34 Figur 27 Band M6771 ... 35 Figur 28 Band M8842 ... 36 Figur 29 Band M8842 ... 37 Figur 30 Band M8841 ... 38 Figur 31 Band M8841 ... 39 Figur 32 Band M8839 ... 40 Figur 33 Band M8839 ... 41 Figur 34 Band M8836 ... 42 Figur 35 Band M8836 ... 43
Bilagor
Bilaga 1, 2, 3 och 4 Band-och MSU-data till valskö.
Bilaga 5, 6 och 7 Överföring av band till ABB från valskö.
Bilaga 8 Adapteringskurva.
Bilaga 9 Källkod till MSU.
Ordförklaringar
1 I-enhet: motsvarar en relativ töjning av bandet på 10-5
.
Ett stick: urval ur ett material som ska undersökas.
Bombering: är valsslipning, vals som är slipad från början behöver inte mycket bombering.
Reduktion: hur mycket material som ska tas bort
1 Inledning
1.1 Bakgrund
För Finspång blev satsningen på aluminiumprodukter av mycket stor betydelse.
Det hela började med valsning av aluminiumfolie 1936, men snart kom också plåt och profiler till flygplan in i programmet. SAAB i Linköping hade börjat sin dynamiska utveckling och var i behov av aluminiumprodukter.
1942 köptes Finspångs Metallverk AB av konkurrenten AB Svenska Metallverken och en genomgripande strukturering av produktionen kunde göras. Huvuddelen av
aluminiumtillverkningen förlades till Finspång och till Västerås huvuddelen av koppar- och mässingstillverkningen.
Under 40-talet valsades aluminium i band och plåt i ett kvartovalsverk levererat 1940 av Sack. Verket byggdes för valsning av band och var försett med hasplar. Senare flyttades valsparet för att möjliggöra plåtvalsning. Valsverket var inte reversibelt, utan valsning skedde satsvis av ett antal ämnen, på vilka togs ett stick, och därefter transporterades ämnena åter till
inmatningssidan för ett ytterligare stick osv.
Detta kvartoverk visar att aluminiumindustrin höll sig väl framme när det gällde modern valsningsutrustning. Verket kom igång efter det att Domnarvet körde igång sitt kvartoverk för grovplåt, det första i Sverige. Kvartoverket används fortfarande för valsning för speciella ändamål men i liten omfattning och för kallvalsning i s.k. kalibreringsvalsning. I början av 90-talet valsades ”lodplåt” i verket, dvs. plåt av en kvalitet för sammansvetsning med en plåt av annan kvalitet för fortsatt hopvalsning till pläterad plåt.
Sapa fyllde 40 år under 2003. Det är i och för sig ingen anmärkningsvärd ålder för ett
industriföretag. Sapa är snarare undantaget från den svenska industritraditionen. Sapa är ett av få företag som etablerats i Sverige efter andra världskriget och haft den inneboende styrkan att växa till ett världsföretag.
Idag är Sapa världens tredje största tillverkare av aluminiumprofiler med fokus på att utveckla kreativa lösningar baserade på aluminium som skapar ett mervärde för kunderna.
Sapa är ett av världens ledande företag inom tillverkning av värmeväxlarband av aluminium för fordonsindustrin. Produkterna är anpassade för olika typer av värmeväxlare, vattenkylare, oljekylare, laddluftkylare, luftkonditioneringsanläggningar och värmare.
Produktionen sker vid anläggningar i Sverige och Kina.
Hela Heat Transfers organisation, företagsledning, produktion, forskning och utveckling, teknisk support, marknad och logistik, koncentrerar sig på ett enda område – band för värmeväxlare.
2 Teori
2.1 Arbetsvalsar
Arbetsvalsar kan vara antingen helt cylindriska eller bomberade. Bomberade valsar används vid valsning med höga valskrafter, eftersom den valsutböjningen som då sker påverkar valspalten och bandformen. Med bomberade valsar kompenseras valsutböjningen så att valsspalten hålls rak och därigenom bandet plant. Se figur 1 och 2.
2.2 Valsprocessens beskrivning
Band kan tillverkas av valsgöt genom varmvalsning och påföljande kallvalsning.
2.2.1 Varmvalsverken
I varmvalsverk (se figur 3) bearbetas aluminium mellan valsar. En vals kan ungefär liknas vid en jättelik mangel eller brödkavel. Aluminium bearbetas till önskad form och tjocklek. De produkter som tillverkas av aluminium är t ex plåt, kylare, rör, balk och band.
Vid varmvalsning håller banden en temperatur på ca 400 grader C. Finspång Heat Transfer har två varmvalsverk.
Varmvalsverket 2051
• tjockleksreduktioner på materialet.
• ingen mätning av tjockleksavvikelse eller planhet i detta verk.
Varmvalsverket 2071
• tjocklekstoleranserna är snävare.
• mätning av tjockleksavvikelsen sker i det här verket.
2.2.2 Beskrivning av varmvalslinjen
Figur 3 visar hur de två varmvalsverken 2051 och 2071 bildar en varmvalslinje.
Parameter 2051 2071
Motoreffekt 4000 kW 2200 kW
Maximal ingångstjocklek 400 mm 22 mm
Minimal ingångstjocklek 8 mm 2 mm
Maximal hastighet 100 m/min 150 m/min
Tabell 1 Valsverksdata.
Tabell 1 visar fakta om de två varmvalsverken med maskinnummer 2071 och 2051.
2.2.3 Kallvalsverken
Vid varmvalsning får man en kraftig minskning av tjockleken. Efter varmvalsningen följer vanligen kallvalsning, som ger en fortsatt minskning av tjockleken, förbättrade ytegenskaper, dimensionsnoggrannhet och den önskade hållfastheten.
Valsning i ett kallvalsverk kan ske efter att banden har svalnat till en temperatur under 100 grader C.
Vid kallvalsning (se figur 4, 5 och 6) är friktion nödvändig för att överföra
deformationsenergi från valsarna till band. Dock önskas att friktionen hålls på låg nivå, vilket underlättar bandets plastiska flytning och minskar behovet av valskrafter för att deformera bandet. Blir friktionen däremot för låg kommer valsarna att slira på bandet.
Figur 6 Visar kallvalsverk.
Parameter
2751 2731 2762
Motoreffekt 1100 kW 2500 kW 880 kW
Maximal hastighet 300 m/min 720 m/min 1000 m/min
Maximal ingångstjocklek 6 mm 7 mm 2 mm
Minimal utgångstjocklek 0.3 mm 0.15 mm 0.05 mm
Tabell 2 Data för kallvalsverken.
Valsverk 2751
• Ingen planhetsreglering.
• Mätning av tjockleksavvikelser på utgående material.
Valsverk 2751
• Mätning av både tjockleksavvikelsen och planhet.
Valsverk 2762
• Mätning av både tjockleksavvikelsen och planhet.
3 Definition av planhet
Med planhet menas ett bands förmåga att ligga plant då det placeras på ett fullständigt plant underlag.
För att få bättre kvalitet på planhet måste ett bands planhet definieras med en I-enhet som är relaterad till någon praktiskt möjligt mätbar storhet.
Varje aluminiumband utsätts vid valsning för variation av tjockleken hos valsämnet. Om valsgapet i valsverket inte passar exakt ihop med det inkommande aluminiumbandets profil kommer dess förlängning att bli ojämn.
Den ojämna förlängningen kommer att synas på aluminiumbandet som en dålig planhet. Detta resulterar i att valsämnet blir synligt buckligt som figur 7 visar.
3.1 Beräkning av planhet
För att beräkna planhet bestämmer man den relativa töjningen med hjälp av Hooke’s lag. E = σ/ε [N/m2
] E = materialets hårdhet ( Elasticitetsmodul )
σ = spänning [N/m2
] ε = ΔL / L = Töjning
Detta innebär att töjningen för varje sektion är εi = σi / E [ dimensionslös ].
Den relativa töjningen av värdet 10-5 motsvarar en I-enhet på planhet och då kan planheten (p) för varje sektion definieras:
pi = (Δσ/E)*105 [I-enheter] där Δσ = avvikelsen från medelbandspänningen.
3.2 Stressometer
En stressometer är en planhetsmätare som man finner i de flesta kallvalsverk i världen.
Den mäter spänningen i bandet och kan med den informationen justera valsverket för att uppnå optimal planhet. Vid valsningen körs ett aluminiumband över en stressometerrulle som är indelad i 27 zoner och som omvandlar de mekaniska krafterna till elektriska signaler. Se figur 8.
Figur 8 Stressometermätrulle.
3.3 Utvärdering
Programvara som används för mätning av olika aluminiumband vid valsning heter ibaAnalizer.
4 Valsprocessen
I valsprocessen sker en reduktion av tjockleken och en förbättring av bandets struktur och hårdhet.
Arbetsvalsar pressar ihop bandet (se figur 9), vilket gör att det blir tunnare, längre medan bredden hålls konstant.
Arbetsvals
Arbetsvals
Figur 9 Valsämnet introduceras mellan valsarna.
4.1 Legering
En legering är en blandning av två eller flera metaller eller icke-metaller. Genom att legera flera olika komponenter (ämnen) med varandra kan legeringen erhålla egenskaper som överträffar de ingående metallernas. Vanligen eftersträvas ökad hållfasthet,
korrosionsbeständighet eller temperaturbeständighet.
4.2 Vikiga faktorer vid valsningen
Viktiga faktorer som påverkar valsningen och som vi har stött på under våra försök vid valsningen var:
1. Om verket har stått stilla en viss tid innan man börjat valsa. 2. Hur lång tid efter valsbyte en mätning utfördes.
Dessa faktorer påverkar valsarnas termiska egenskaper i stor utsträckning. Valsarna är gjorda av stål och deras egenskaper vad det gäller rundhet är mycket temperaturberoende, även kallat termisk bombering. Om verket står stilla med valsarna ihop kommer de att svalna olika snabbt runt valsens omkrets och det gör att valsen inte kommer att vara helt rund när man sedan börjar valsa. Detta kommer att lämna periodiska intryck i bandet, framförallt om materialet är en mjuk legering.
Tre av fyra valsverk har ett antal olika reglerprinciper att reglera tjockleksavvikelsen efter. Vilken reglerprincip som används beror på material och tjocklek. Dessa principer klarar av att reglera bort olika typer av fel, därefter är det mycket viktigt att veta vilken reglerprincip som använts då mätning av tjockleksavvikelsen utförs. Annars går det inte att säga om eventuella avvikelser beror på fel reglering eller om reglerprincipen helt enkelt inte klarar av att reglera bort typen av tjockleksfel.
5 Tjockleksavvikelse
5.1 Excentricitet vid valsning
Spänningar introducerade i bandet när det rullas och excentriska valsar orsakar den primära delen av tjockleksavvikelsen. Excentriska valsar beror på olika faktorer bland annat termisk bombering, felslipning och lagerfel. Om excentriciteten är konstant genom hela bandet beror det på felslipning eller lagerfel och ifall amplituden på tjockleksavvikelsen avtar är det termisk bombering.
Olikheter på stödvalsarnas diametrar medför att tjockleksavvikelsen orsakad av excentricitet kommer att svänga upp och ner i amplitud. Orsaken att den mindre valsen snurrar fortare än den större och då kommer fasvinkeln mellan excentriciteten i den övre respektive den undre stödvalsen att variera. Här nedan beskrivs hur många varv (n) den större av de två valsarna måste snurra mellan de tillfällen då valsarna möts på samma punkt:
D = Diametern för den större stödvalsen d = Diametern för den mindre stödvalsen.
6 Praktisk del
6.1 Metoder
Målet med detta arbete är att minska kostnader genom att hitta en metod att direkt kallvalsa med den optimala startvalskraften som ger den bästa planheten utan att krossa sönder materialet. För att hitta denna metod gjordes tre försök som beskrivs i 6.2, 6.4 och 7.
6.2 Försök 1
På detta försök utfördes analys med hjälp av 3-sigma som är ett mått på hur mycket planheten avviker. Planhetsavvikelsen är skillnaden mellan den uppmätta planheten och en optimal planhetsprofilkurva som beskriver bandets planhet och den styr planhetsreglering.
Den praktiska delen utfördes med fyra olika tester på fyra band av samma legering med olika bandlängd.
På alla tester sattes böjningskraften fast till 150 kN medan startvalskraften ökades från 4500 kN till 6500 kN. Se tabell 3. Valskraft (kN) Böjningskraft (kN) Band 1: M7433 4500 150 Band 2: M6933 5200 150 Band 3: M6995 5700 150 Band 4: M7288 6500 150
Tabell 3 Resultat för fyra band.
Viktiga inställda bandparametrar vid legering 8HA4 är: • Hastighet på valsmotor: 0-650 m/min.
• Kylningen varierar för att hålla planheten. • Skevning: runt 0 (0.062) mm. • Bombering: 0.05 mm. • Tjocklek in: 0.8 mm. • Tjocklek ut: 0.5 mm. • Skärning in: 14.40 mm • Skärning ut: 13.90 mm
Figur 10 visar det första bandet, M7433, där den övre grafen är startvalskraften och den undre är böjningen.
För att få planhet i I-enheter delades alla värden av 27 zoner på stressometern med hundra och färgerna beskriver olika nivåer på planheten. Figur 11 visar 2D-och 3D-grafer.
Figur 12 visar band 2, M6933. Den övre grafen är startvalskraften och den undre är böjningen.
Figur 13 visar 2D-och 3D-grafer.
Figur 13 Färgnivåskala visar att 2D-och 3D-grafer som har ganska bra planhet och domineras
Figur 14 visar band 3, M6995. Den övre grafen är startvalskraften och den undre är böjningen.
Figur 15 visar 2D-och 3D-grafer.
Figur 15Färgnivåskala visar 2D-och 3D-grafer har ganska bra planhet och domineras av en färg.
Figur 16 visar band 4, M7288.
Figur 16 Band M7288 har startvalskraft på ca 6800 kN och böjningskraft på ca 175 kN.
Figur 17 visar utgående tjocklek för alla band.
Figur 18 visar 3-sigma för alla band.
Figur 18 3-sigma för alla band. Det tredje bandet har den minsta amplituden på 50 I-enheter.
6.3 Sammanfattning av försöksresultaten
• Det tog mindre tid för att komma i rätt tjocklek för band 3, som visas i figur 18, än för de andra banden.
6.4 Försök 2
För att utveckla en ännu bättre metod än i försök1 utfördes analys på följande sätt: • Noggrann undersökning på alla band och deras respektive grafer i försök1.
• På alla grafer klockades in startvalskrafter och böjningskrafter vid olika sluthastigheter på varje band.
• Beräkning av statiska medelvärden av både startvalskrafter och böjningskrafter. • Statiska medelvärden användes som startkrafter i försök 2.
6.5 Beräkningar för försök 2
Band 1:
Hastighet [m/s] Hastighet [m/min] Valskraft [kN] Böjningskraft [kN]
0,25 15 7782,66 308,9 0,75 45 7288,50 292,29 1 60 7047.88 288.78 2 120 6355,46 265,55 4 240 5615.28 207.66 Beräkning: Hastighet i [m/s] = 15 [m/min]/60 = 0,25 [m/s] Valskraft medelvärde = (7782,66+7288,50+6355,46+7047.88+5615.28)/5= 6817.96 kN. Böjningskraft medelvärde = (308,9 + 292,29 + 265,55+288.78+207.66) /5= 272.64 kN. Band 2:
Böjningskraft medelvärde = (293,97+280.60+281.04+283.57+198.90)/5 = 267.61 kN.
Band 3:
Hastighet [m/s] Hastighet [m/min] Valskraft [kN] Böjningskraft [kN]
0,25 15 7788,29 347,10 0,75 45 7319,77 345,53 1 60 7038.79 337.78 2 120 6055,15 265,51 4 240 5136.17 221.84 Valskraft medelvärde = (7788,29+7319,77+6055,15+7038.79+5136.17)/5 = 6667.63 kN. Böjningskraft medelvärde = (347,10 + 345,53 + 265,51+337.78+221.84)/5 = 303.55 kN.
Figur 19 visar band 1, M8086, där den övre grafen är utgående tjocklek, den mellersta är startvalskraften och den undre är böjningen och den sista är 3-sigma.
Figur 20 visar bandet M8089 där den övre grafen är utgående tjocklek, den mellersta är startvalskraften och den undre är böjningen och den sista är 3-sigma.
Figur 21 visar bandet M8090 där den övre grafen är utgående tjocklek, den mellersta är startvalskraften och den undre är böjningen och den sista är 3-sigma.
Figur 22 visar 3D för tre band.
Figur 23 visar 2D för tre band.
6.6 Sammanfattning av försöksresultaten
P.g.a. att utgående tjockleken såg nästan likadan ut på alla tre band, utgick analysen från 3D och 2D på planheten, som representerar den radiella kraften på varje zon av
stressometerrullen, och analysen av mätresultaten gav då följande:
• Det första bandet var relativt plant vid startvalskraft 6817kN eftersom figuren 2D dominerades av en färg.
• Det andra bandet hade korta kanter vid uppstarten av valsningen, skälet kan vara för liten kantreduktion.
• Det tredje bandet uppvisade både revbensmönster samt kantlånghet.
7 Försök 3
7.1 Utan adaptiva delen
Med adaptiva delen skapas ett receptprogram för legering 8HA4 medan utan adaptiva delen har inga förprogrammerade parametrar och då sätts standardvärden, som kallas ”default”-parametrar. Det vanliga standardvärdet på valskraft är 5000 kN och 0 i böjningen.
7.2 Med adaptiva delen
Här hämtas nyckelparametrarna (utgående tjocklek, hastighet, bredd in, bredd ut,
startvalskraft och böjningskraft) från en Oracle databas för legering 8HA4 vid valsning. Programkod och flödesschema för legering 8HA4 visas på nästa sida.
Principschema för band och MSU-data till valskö finns som bilaga 1- 4 och överföring av band till ABB från valskö finns som bilaga 5- 8.
Programkod
// Ny logik för val av valskraft och böjning. 2003-06-02. // Reduktion tjin=StrToReal(sNewTjIn_P); tjut=StrToReal(sNewTjUt_P); sNewReduction=Round((tjin-tjut)/tjin*100,0); // Valskraft Legering=StrTrim(sNewAlloy_P);
IF Legering <> "8HA4" AND tjin >=0.8 THEN SELECT CASE tjut
CASE IS >=0.9 sNewLoad_P=5500; CASE IS >= 0.50, IS < 0.90 sNewLoad_P=5000; CASE IS >= 0.27, IS < 0.50 sNewLoad_P=4800; CASE IS <0.27 sNewLoad_P=4500; END SELECT IF (tjin=StrToReal(sNewAnnealedTj_P)) THEN sNewLoad_P=(Round(7.9527*StrToReal(sNewReduction) + 10.728,0))*10*1.19; END // Böjningsbörvärde sNewBend_P = 0;
IF (tjin=StrToReal(sNewAnnealedTj_P)) OR sNewAlloy_P="6514" THEN sNewBend_P = -150;
END
sNewBend_P=RealToStr(Round(StrToReal(sNewBend_P),0),5,0); sNewBend_P=StrTrim(sNewBend_P);
Är det 8HA4 och > =0,8 Är värdet >=0,9 >=0,5 >=0,27 < 0,27 Sök vidare
efter adaptiv Slut inget funnen Utan adaptiv P= 5500 P=5000 P=4800 P=4500 TjIn=sNe wAnneale d_P sNewload_P Tjocklek in= Eller Alloy P=6514
Fortsättning på flödesschema 8HA4
En annan legering
7.5 Grafer utan adaptiva delen
Figur 24 visar bandet M8698. Där den övre grafen är utgående tjocklek, den mellersta är startvalskraften och den undre är böjningen.
Figur 25 visar M8698 där den övre grafen är 3-sigma planhetsavvikelsen, den mellersta är 2D ”top view” på planhet och den undre är 3D på planheten.
Figur 26 visar bandet M6771 utan den adaptiva delen. Den övre grafen är utgående tjocklek, den mellersta är startvalskraften och den undre är böjningen.
Figur 27 visar bandet. M6771 där den övre grafen är 3-sigma planhetsavvikelsen, den mellersta är 3D på planheten och den undre är 2D ”top view” på planhet.
8 Grafer för adaptiva delen
Figur 28 visar bandet M8842 med den adaptiva delen: där den övre grafen är utgåendet tjockleken, den mellersta är startvalskraften och den undre är böjningen.
Figur 28 Det tog 11 um för band M8842 att komma i rätt tjocklek och böjningskraft är på
Figur 29 visar bandet. M8842 där den övre grafen är 3-sigma planhetsavvikelsen, den mellersta är 2D ”top view” på planhet och den undre är 3D på planheten.
Figur 30 visar bandet M8841 med den adaptiva delen. Den övre grafen är utgående tjocklek, den mellersta är startvalskraften och den undre är böjningen.
Figur 31 visar bandet. M8841 där den övre grafen är 3-sigma planhetsavvikelsen, den mellersta är 2D ”top view” på planhet och den undre är 3D på planheten.
Figur 32 visar bandet M8839 med den adaptiva delen. Den övre grafen är utgående tjocklek, den mellersta är startvalskraften och den undre är böjningen.
Figur 33 visar bandet. M8839 där den övre grafen är 3-sigma planhetsavvikelsen, den mellersta är 2D ”top view” på planhet och den undre är 3D på planheten.
Figur 34 visar bandet M8836 med den adaptiva delen. Den övre grafen är utgående tjocklek, den mellersta är startvalskraften och den undre är böjningen.
Figur 35 visar bandet. M8836 där den övre grafen är 3-sigma planhetsavvikelsen, den mellersta är 2D ”top view” på planhet och den undre är 3D på planheten.
9 Sammanfattning av resultat
Efter försök 3 kom vi fram till följande:
• De värden som erhölls då adaptiva delen användes visade sig vara bättre än utan adaptiva delen p.g.a. att de är mer anpassade till materialet som i sin tur gör att det sparas material.
• 3- sigma analysen på bandet M8841 visade sig vara det bästa alternativet eftersom planhetsavvikelsen var runt 0 vid en valskraft på ca 7700 kN.
• Med hjälp av 3D-grafer konstaterades att bandet M8841 visade jämnare planhet än de andra banden.
• Jämförelse mellan utgående tjockleks grafer visade att banden M8841 och M8836 var bästa alternativ medan band M8839 var det sämsta.
Slutsats av försök 3:
10 Diskussion
Efter de genomförda mätningarna kan vi konstatera att de värden som erhölls med adaptiva delen kan tillämpas vid förbättringsarbete av valstekniken.
Vi tycker att det finns ett intresse av resultatet av detta examensarbete ute i industrin, vilket känns väldigt spännande. Erfarenheten från det här arbetet är framförallt att det krävs en hel del förståelse och kunskap om valsteknik.
Den första delen av arbetet var att hitta den optimala startvalskraften som är anpassad för legering 8HA4 och den låg inom marginalen [6000 - 7000 kN].
En annan viktig del av vårt arbete var att implementera adaptiva delen så att den fungerar för just legering 8HA4 vilket i sin tur minskar kostnader och sparar tid.
Det svåra med det här examensarbetet har varit att analysera grafer som 3-sigma, utgående tjocklek samt 3D-grafer och planhet.
Vi tycker att arbetet har varit mycket givande och det har dessutom givit en inblick i hur det ser ut i arbetslivet. Vi rekommenderar andra att utföra examensarbeten på arbetsplatser av det här slaget då vi tror att det är en bra merit att ha med sig när man ska ge sig ut i arbetslivet.
Litteraturreferenser
Sapas egna kurslitteratur (pärmar) inom valsteknik.
http://www.sapa.se > 2005-09-26 http://www.abb.se >2005-09-26 http://www.steel.org > 2005-09-26 http://www.andritz.com > 2005-09-26 http://www.world-aluminium.org >2005-09-26 http://www.powerconv.alstom.com >2005-09-26 http://www.alufoil.org/media/achenbach_extract.pdf >2005-09-26 http://www.alfed.org.uk >2005-09-26
Bilaga 1 Band och MSU-data till valskö Px_gettoinfo (2731, TO) Px_get 1 band (2731, TO) Citect anropar procedur
Oracle vy: V_Band2751
Resultat i vy
Band knutna till TO visas i lista i applikationen Event: Operatör väljer
ny TO i applikation
Event: Operatör väljer ett bandi applikation
Finns recept?
Sätt/beräkna Receptdata
GetMSUDefaut()
Hämta data ur tabell MSU_RECIPE
GetMSURecipe()
Hämta data ur tabell MSU_CONSTANT GetMSUConstant() Övriga beräkning GetMSUCalc() Planhetsprofilberäkningar GetMSUShape()
MSU data visas för operatör MSU data OK? Operatör justerar MSU-data. Keys: Maskinnr Legering TjUt TjLn TjAnneal ed Bredd In Bredd Ut Keys: Maskinnr Operation Legering TjUt
Operatör överför band
Tills valskö
Insert sNew.. into… 2731_RollQueue Tabell i Oracle RollQueue Select from…RollQueue Tabell i Oracle RollQueue
Band visas i bandkö
Överföring av band till ABB från valskö
Event : Data till ABB
VIPLOGGSendNextMSUdata2ABB=1 MSUData2ABB() Pos 0 Tabell i Oracle RollQueue Valskö i bild VIPMSUData=PosData (select ur RollQueue) VIPMSUNewMSUData Valid=1 Pos1 Pos2 Pos3 Pos4 … … Data i Pos 1? Return(0)
Stega upp data 1 steg i valskö
Event : Data till ABB
VIPLOGGSendNextMSUdata2ABB=0 Data i Pos
0?
Try Connectct to Oracle Citect applikation generar .DAT fil Citect skriver sökväg i .INI fil Vilkor =1 ? Event: Ny rapport tillgänglig
Citect anropar export funktion
Error=0
Px_GetReport läser data ur filerna som finns i Reroport.INI in till DB
PX_GetReport tar bort (delete) Raport.INI samt filer i Report.INI Oracle DB Rappnr exist? Skapa Rappnr. Defaulft förklaring=Nytt rapportnr Tabell i Oracle RollQueue [Item] [value] Maskinnr 2731 Rapptyp 2731_ 1 Taggnamn1 Filename.DAT Filename.DAT …..
Bilaga 6 Återrapportering av data till Oracle från Citect Keys: Maskinnr Legering TjUt TjIn TjAnnealed Bredd In Bredd Ut PV_RAPP..=VIPRAPP.. Vilkor=1? MSURecipeUpdate() Finns recept i MSU_Recipe? Lägg till recept i tabell MSU_RECIPE AddMSURecip Hämta MSUdata från RollQueue för RAPPId Select from.VY_2731_Roll Queue Tabell i Oracle RollQueue Jämför MSUData för RAPPID med RAPPData
MSURecipeComp()
Tabell i Oracle MSU_Recipe
Bilaga 7 Återrapportering av data till Oracle från Citect
Beräkna procentuell skillnad mellan SP_Data och RAPP_Data parametrar %-Skillnad > Lowlimit? %-Skillnad > Highlimit? Hämta adapteringsräknare från recept MSU RECIPE
Räknare< max(counter)
Counter=max(counter)
Hämta kompenseringskoefficienter från tabell MSU_ADAPT enligt counter
Beräkna nya receptdata enligt kompenseringskurva Uppdatera adapteringsräknare counter=1 SP_Bend SP_load SP_Hårdhet Tabell i Oracle MSU_ADAPTLIMITS
Bilaga 8 Återrapportering av data till Oracle från Citect
Adapteringskurva visas nedan
0 10 20 30 40 50 60 70 80 1 2 3 4 5 6 7 8
Adapteringskurva
Bilaga 9Källkod till MSU
Källkod till MSU
STRING RecipeNr INT
FUNCTION test() // ******* TEST ******
// Funktionen används för att sätta ett antal nyckelparametrar för beräkning av MSU data sNewAlloy_P="8816"; sNewTjIn_P="0.9" sNewTjUt_P="0.5"; sNewAnnealedTj_P="0.4"; sNewWidthIn_P="1440"; sNewWidthOut_P="1390"; sNewWorkOP_P="27317"; RETURN(0) END //--- // Beräkning av MSU parametrar
INT FUNCTION GetMSUParameters() INT error sNewRecipeNr_P="0"; REAL tjin; REAL tjut; STRING Legering ReRead(1)
AND TJANNEALED='"+CommaToPoint(sNewAnnealedTj_P)+"' AND WIDTHIN='"+CommaToPoint(sOrderWidthin_P)+"' AND
WIDTHOUT='"+CommaToPoint(sNewWidthOut_P)+"'"); IF (error=0) AND (SQLNext(hSQL)=0) THEN
sNewRecipeNr_P=SQLGetField(hSQL,"RECIPENR"); Prompt("GetMSURecipe() anropas"); //Message("Info","Hämta recept",48) GetMSURecipe(); ELSE Prompt("GetMSUDefault() anropas") //Message("Info","Default",48) GetMSUDefault(); END GetMSUConstant(); GetMSUCalc(); GetMSUShape()
// Logik för inval av olika reglersätt
IF (sNewFoil_P="0" AND StrToReal(sNewTjIn_P) >= 0.05 AND StrToReal(sNewTjIn_P) <= 1) THEN
sNewFB_P="1"; sNewFF_P="0"; sNewMF_P="1"; END
IF (sNewFoil_P="0" AND StrToReal(sNewTjIn_P)>1) THEN sNewFB_P="1";
sNewFF_P="0"; sNewMF_P="0"; END
IF (sNewFoil_P="0" AND StrToReal(sNewTjUt_P)<0.25) THEN sNewMF_P="0";
END
// obs se sista rad
//sNewMF_P="0";//031204 Niclas vet varför //byggis
//__________________________________________________________________________ ______
//__________________________________________________________________________ ______
// Ny logik för val av valskraft och böjning. 2003-06-02. // Reduktion
sNewReduction=Round((tjin-tjut)/tjin*100,0); // Valskraft
Legering=StrTrim(sNewAlloy_P);
IF Legering <> "8HA4" AND tjin >=0.8 THEN SELECT CASE tjut
CASE IS >=0.9 sNewLoad_P=5500; CASE IS >= 0.50, IS < 0.90 sNewLoad_P=5000; CASE IS >= 0.27, IS < 0.50 sNewLoad_P=4800; CASE IS <0.27 sNewLoad_P=4500; END SELECT IF (tjin=StrToReal(sNewAnnealedTj_P)) THEN sNewLoad_P=(Round(7.9527*StrToReal(sNewReduction) + 10.728,0))*10*1.19; END // Böjningsbörvärde sNewBend_P = 0;
IF (tjin=StrToReal(sNewAnnealedTj_P)) OR sNewAlloy_P="6514" THEN sNewBend_P = -150; END sNewBend_P=RealToStr(Round(StrToReal(sNewBend_P),0),5,0); sNewBend_P=StrTrim(sNewBend_P); END //__________________________________________________________________________ ________ //__________________________________________________________________________ ________
// Indikering att beräkning av MSU parametrar är slutförd dMSUCalculating_P=0;
INT error; REAL tjin; REAL tjut; STRING Bend50; STRING Bend100; STRING BendOther; STRING SP_SPFFGainFB STRING SP_SPFFSlopeFB STRING SP_SPFFCOMPFB STRING SP_SPFFGainMF STRING SP_SPFFSlopeMF STRING SP_SPFFCOMPMF STRING RecipeLoad STRING CalcLoad
// Hämtning av receptdata från DB MILLDATA.MSU_RECIPE error=SQLExec(hSQL,"select
LOADCON,POSCON,FOILCON,FB,FF,MF,FOILDTDH,FOILTENSION,AHSLIP,PHSLIP, HARDNESS,BEND50,BEND100,BENDOTHER,LOAD,BRIDLE,SPFFGAIN,SPFFSLOPE, SPFFCOMP,SPFFGAINMF,SPFFSLOPEMF,SPFFCOMPMF from
MILLDATA.MSU_RECIPE where MASKINNR='"+maskinnr+"' and RECIPENR='"+sNewRecipeNr_P+"'")
IF (error=0) AND (SQLNext(hSQL)=0) THEN
sNewLoadCon_P=SQLGetField(hSQL,"LOADCON"); sNewPosCon_P=SQLGetField(hSQL,"POSCON"); sNewFoil_P=SQLGetField(hSQL,"FOILCON"); sNewFB_P=SQLGetField(hSQL,"FB"); sNewFF_P=SQLGetField(hSQL,"FF"); sNewMF_P=SQLGetField(hSQL,"MF"); sNewFoilDtDh_P=SQLGetField(hSQL,"FOILDTDH"); sNewFoilTen_P=SQLGetField(hSQL,"FOILTENSION"); sNewAHSLIP_P=SQLGetField(hSQL,"AHSLIP"); sNewPHSLIP_P=SQLGetField(hSQL,"PHSLIP"); sNewHard_P=SQLGetField(hSQL,"HARDNESS"); Bend50=SQLGetField(hSQL,"BEND50"); Bend100=SQLGetField(hSQL,"BEND100"); BendOther=SQLGetField(hSQL,"BENDOTHER"); RecipeLoad=SQLGetField(hSQL,"LOAD"); sNewBridle_P=IntToStr(StrToInt(SQLGetField(hSQL,"BRIDLE"))); SP_SPFFGainFB=SQLGetField(hSQL,"SPFFGAIN"); SP_SPFFSlopeFB=SQLGetField(hSQL,"SPFFSLOPE"); SP_SPFFCOMPFB=SQLGetField(hSQL,"SPFFCOMP"); SP_SPFFGainMF=SQLGetField(hSQL,"SPFFGAINMF"); SP_SPFFSlopeMF=SQLGetField(hSQL,"SPFFSLOPEMF"); SP_SPFFCOMPMF=SQLGetField(hSQL,"SPFFCOMPMF");
sNewSPFFGain_P=SP_SPFFGainMF; sNewSPFFSlope_P=SP_SPFFSlopeMF; sNewSPFFCOMP_P=SP_SPFFCOMPMF; ELSE sNewSPFFGain_P=SP_SPFFGainFB; sNewSPFFSlope_P=SP_SPFFSlopeFB; sNewSPFFCOMP_P=SP_SPFFCOMPFB; END ELSE GetMSUDefault();
Message("Fel med anslutning till databas.",error,48) END
// Beräkning av reduktion tjin=StrToReal(sNewTjIn_P); tjut=StrToReal(sNewTjUt_P);
sNewReduction=Round((tjin-tjut)/tjin*100,0); // Minväljare för valskraft. Recept vs. default beräkning
CalcLoad=(Round(7.9527*StrToReal(sNewReduction) + 10.728,0))*10*1.19; sNewLoad_P=Min(CalcLoad,RecipeLoad);
Prompt("CalcLoad="+CalcLoad+"RecipeLoad="+RecipeLoad+"") // Val av böjningsbörvärde beroende på aktuell arbetsvalsbombering SELECT CASE ActWorkRollBomb
CASE "0,05" // Arbetsvalsbombering=0.05 mm
sNewBend_P = Bend50;
CASE "0,10" // Arbetsvalsbombering=0.10 mm
sNewBend_P = Bend100;
CASE ELSE // Arbetsvalsbombering= någonting annat
sNewBend_P = BendOther; END SELECT
sNewBend_P=RealToStr(Round(StrToReal(sNewBend_P),0),5,0); sNewBend_P=StrTrim(sNewBend_P);
INT error; REAL tjin REAL tjut REAL red INT iFound=0 tjin=StrToReal(sNewTjIn_P); tjut=StrToReal(sNewTjUt_P);
error=SQLExec(hSQL,"select * from MILLDATA.MSU_DEFAULT where MASKINNR='"+maskinnr+"'")
IF error=0 THEN
WHILE (SQLNext(hSQL)=0) AND (IFound=0) DO
IF (tjut>= StrToReal(SQLGetField(hSQL,"TJUTMIN")) AND tjut<StrToReal(SQLGetField(hSQL,"TJUTMAX"))) THEN iFound=1 sNewLoadCon_P=SQLGetField(hSQL,"LOADCON"); sNewPosCon_P=SQLGetField(hSQL,"POSCON"); sNewFoil_P=SQLGetField(hSQL,"FOILCON"); sNewFB_P=SQLGetField(hSQL,"FB"); sNewFF_P=SQLGetField(hSQL,"FF"); sNewMF_P=SQLGetField(hSQL,"MF"); sNewFoilDtDh_P=SQLGetField(hSQL,"FOILDTDH"); sNewPHSLIP_P=SQLGetField(hSQL,"PHSLIP"); sNewSPFFGain_P=SQLGetField(hSQL,"SPFFGAIN"); sNewSPFFSlope_P=SQLGetField(hSQL,"SPFFSLOPE"); sNewSPFFCOMP_P=SQLGetField(hSQL,"SPFFCOMP"); sNewHard_P=SQLGetField(hSQL,"HARDNESS"); sNewBend_P=SQLGetField(hSQL,"BEND"); END END END IF IFound=0 THEN sNewLoadCon_P="0"; sNewPosCon_P="1"; sNewFoil_P="0"; sNewFB_P="1"; sNewFF_P="0"; sNewMF_P="0"; sNewFoilDtDh_P="0";
sNewSPFFSlope_P="0"; sNewSPFFCOMP_P="0"; sNewHard_P="5"; sNewBend_P="200"; END // Beräkning av reduktion sNewReduction=Round((tjin-tjut)/tjin*100,0); // Beräkning av valskraft sNewLoad_P = (Round(7.9527*StrToReal(sNewReduction) + 10.728,0))*10*1.19;
// Beräkning av avhaspel eftersläpning
sNewAHSLIP_P=Round((tjin-tjut)/tjut*100,0) // Beräkning av inställning för bromsverk
sNewBridle_P=IntToStr(StrToInt("30")); RETURN(0) END //--- INT FUNCTION GetMSUConstant()
//Hämtning av default parametrar från DB MILLDATA.MSU_Constant INT error;
error=SQLExec(hSQL,"select
ALLOYCOMP,AHSPOOLDIA,PHSPOOLDIA,EMODULUS,TEMPERATUR,FOILTENCO MP from MILLDATA.MSU_CONSTANT where MASKINNR='"+maskinnr+"'");
IF (error=0) AND (SQLNext(hSQL)=0) THEN Prompt("GetMSUConstants från DB") sNewAlloyComp_P=SQLGetField(hSQL,"ALLOYCOMP"); sNewAHInDia_P=SQLGetField(hSQL,"AHSPOOLDIA"); sNewPHInDia_P=SQLGetField(hSQL,"PHSPOOLDIA"); sNewEmod_P=SQLGetField(hSQL,"EMODULUS"); sNewTemp_P=SQLGetField(hSQL,"TEMPERATUR"); sNewFoilTenComp_P=SQLGetField(hSQL,"FOILTENCOMP"); ELSE
RETURN(0) END //--- INT FUNCTION GetMSUCalc() REAL tjin; REAL tjut; REAL foilcomp; REAL z REAL n REAL marginal=0.98; REAL Speed_Tab; REAL Speed_Calc; INT FirstChar; INT error;
// Beräkning av AH-drag, PH-drag samt optimalt foiledrag om folieAGC används tjin=StrToReal(sNewTjIn_P);
tjut=StrToReal(sNewTjUt_P);
foilcomp=StrToReal(sNewFoilTenComp_P); IF (tjin=StrToReal(sNewAnnealedTj_P)) THEN
sNewAHTension_P = Round(-0.3768*tjin*tjin*tjin + 3.2746*tjin*tjin - 11.106*tjin + 27.15,0);
ELSE
sNewAHTension_P = Round(-0.4673*tjin*tjin*tjin + 4.104*tjin*tjin - 14.163*tjin + 35.799,0);
END
sNewPHTension_P = Round(-0.4039*tjut*tjut*tjut + 3.6377*tjut*tjut - 13.236*tjut + 41.514,0);
IF (StrToInt(sNewFoil_P)=1 AND (tjin=StrToReal(sNewAnnealedTj_P))) THEN sNewFoilTen_P =Round(foilcomp*(-0.3768*tjin*tjin*tjin + 3.2746*tjin*tjin - 11.106*tjin + 27.15),0);
ELSE
IF (StrToInt(sNewFoil_P)=1) THEN
sNewFoilTen_P = Round(foilcomp*(-0.4673*tjin*tjin*tjin + 4.104*tjin*tjin - 14.163*tjin + 35.799),0)
END END
END
// Bestämning om legeringen är pläterad. FirstChar=StrTrim(sNewAlloy_P); FirstChar=StrGetChar(sNewAlloy_P,0);
IF (FirstChar=65 OR FirstChar=97 OR FirstChar=56 OR FirstChar=57) THEN sNewClad_P=1; ELSE sNewClad_P=0; END // Bestämning av valshastighet
error=SQLExec(hSQL,"select SPEED from MILLDATA.MSU_SPEED where MASKINNR='"+maskinnr+"' and OPNR='"+sNewWorkOP_P+"'");
IF (error=0) AND (SQLNext(hSQL)=0) THEN sNewSpeed_P=SQLGetField(hSQL, "SPEED"); ELSE
SELECT CASE sNewWorkOP_P
CASE "0" // Märkvalsning
sNewSpeed_P = "90";
CASE "27311" // Förvalsning
sNewSpeed_P = "1000";
CASE "27312" // Förvalsning + spolning
sNewSpeed_P = "90";
CASE "27313" // Förvalsning + skärning
sNewSpeed_P = "550";
CASE "27314" // Förvalsning + spolning + skärning
sNewSpeed_P = "90";
CASE "27315" // Färdigvalsning
sNewSpeed_P = "1000";
CASE "27316" // Färdigvalsning + spolning
sNewSpeed_P = "90";
CASE "27317" // Färdigvalsning + skärning
sNewSpeed_P = "550";
CASE "27318" // Färdigvalsning + spolning + skärning
sNewSpeed_P = "450";
CASE "27319" // Lågreduktionsvalsning
IF StrToInt(sNewWidthin_P)>1539 THEN
sNewSpeed_P = "180"
END END
// Beräkning av maximal hastighet beroende på växel och aktuell arbetsvalsdiameter. // IF (StrToReal(sNewTjUt_P)>1.0 AND StrToReal(sNewAnnealedTj_P)>3) THEN // z=1.4957; // ELSE // z=3.9157; // END // Speed_Calc=(n*Pi*ActWorkRollDia*marginal)/(z*60); // Minväljare för hastigheten. // sNewSpeed_P=Round(Min(Speed_Tab,Speed_Calc),0); RETURN(0) END //--- INT FUNCTION GetMSUShape() INT error INT IFound=0; REAL tjut INT opclass tjut=StrToReal(sNewTjUt_P);
// Bestämning av OPCLASS. 0=Märkvalsning. 1=Förvaslning. 2=Färdigvalsning error=SQLExec(hSQL,"select * from MILLDATA.MSU_SHAPE where
MASKINNR='"+maskinnr+"'")
IF error=0 THEN
SELECT CASE sNewWorkOP_P
CASE "0" // Märkvalsning
opclass = 0;
CASE "27311" // Förvalsning
opclass = 1;
CASE "27312" // Förvalsning + spolning
opclass = 1;
opclass = 1;
CASE "27315" // Färdigvalsning
opclass = 2;
CASE "27316" // Färdigvalsning + spolning
opclass = 2;
CASE "27317" // Färdigvalsning + skärning
opclass = 2;
CASE "27318" // Färdigvalsning + spolning + skärning
opclass = 2;
CASE "27319" // Lågreduktionsvalsning
opclass = 2;
CASE ELSE // Eventuellt nya operationsnummer
opclass = 99; END SELECT
END
// bestämning av planhetsprofilnr, skalning samt planhetskoefficienter X2, X4 samt X8
IF error=0 THEN
WHILE (SQLNext(hSQL)=0) AND (IFound=0) DO
IF (tjut>= StrToReal(SQLGetField(hSQL,"TJUTMIN")) AND tjut<StrToReal(SQLGetField(hSQL,"TJUTMAX")) AND opclass=StrToInt(SQLGetField(hSQL,"OPCLASS"))) THEN iFound=1 sNewShapeNr_P=SQLGetField(hSQL,"SHAPENR"); sNewShapeScale_P=SQLGetField(hSQL,"SHAPESCALE"); sNewShapeX2_P=0.7*StrToReal(SQLGetField(hSQL,"SHAPEX2")); // Enhet=[N/mm2]. N/mm2=I*E*0.0001 sNewShapeX4_P=0.7*StrToReal(SQLGetField(hSQL,"SHAPEX4")); sNewShapeX8_P=0.7*StrToReal(SQLGetField(hSQL,"SHAPEX8")); END END END IF IFound=0 THEN sNewShapeNr_P="52"; sNewShapeScale_P="100"; sNewShapeX2_P="-6"; sNewShapeX4_P="0";
IF (error=0 AND SQLNext(hSQL)=0) THEN
sNewProfileX1_P=1*StrToReal(SQLGetField(hSQL,"PROFILEX1")); // Enhet=[N/mm2]. N/mm2=I*E*0.0001 => 0.7*värde sNewProfileX2_P=1*StrToReal(SQLGetField(hSQL,"PROFILEX2")); sNewProfileX4_P=1*StrToReal(SQLGetField(hSQL,"PROFILEX4")); ELSE sNewProfileX1_P="0"; sNewProfileX2_P="0"; sNewProfileX4_P="0"; END RETURN(0) END //---
//- Hantering av nya recept samt uppdatering av gamla recept - //---
INT
FUNCTION MSURecipeUpdate() INT error
// Indikering att uppdatering av recept pågår dMSURecipeUpdating_P=1;
// Hämtning av parametrar för RAPPID i Tabell ROLLQUEUE_2731 //Message("Info","Ska hämta data ur ROLL_QUEUE",48)
error=SQLExec(hSQLT,"SELECT
ALLOYNUMBERSP,GAUGEINSP,GAUGEOUTSP,ANNEALEDGAUGESP,ORDERWIDT HSP,SLITWIDTHSP from ROLLQUEUE_2731 where MASKINNRSP='"+maskinnr+"' AND IDNUMBERSP='"+PV_RAPPID+"'");
IF (error=0 AND SQLNext(hSQLT)=0) THEN
PV_RAPPAlloy=CommaToPoint(SQLGetField(hSQLT,"ALLOYNUMBERSP")); PV_RAPPTjIn=CommaToPoint(SQLGetField(hSQLT,"GAUGEINSP")); PV_RAPPTjUt=CommaToPoint(SQLGetField(hSQLT,"GAUGEOUTSP")); PV_RAPPAnnealedTj=CommaToPoint(SQLGetField(hSQLT,"ANNEALEDGAUGESP")); PV_RAPPWidthIn=CommaToPoint(SQLGetField(hSQLT,"ORDERWIDTHSP")); PV_RAPPWidthOut=CommaToPoint(SQLGetField(hSQLT,"SLITWIDTHSP"));
// Kontroll om recept finns i MILLDATA.MSU_RECIPE
error=SQLExec(hSQL,"select RECIPENR from MILLDATA.MSU_RECIPE where MASKINNR='"+maskinnr+"' AND ALLOY='"+PV_RAPPAlloy+"' AND
TJIN='"+PV_RAPPTjIn+"' AND TJUT='"+PV_RAPPTjUt+"' AND
TJANNEALED='"+PV_RAPPAnnealedTj+"' AND WIDTHIN='"+PV_RAPPWidthIn+"' AND WIDTHOUT='"+PV_RAPPWidthOut+"'");
//Message("Info",SQLInfo(hSQL,1),48)
IF ((error=0) AND SQLNext(hSQL)=0) THEN Prompt("MSURecipeComp()")
RecipeNr =SQLGetField(hSQL, "RECIPENR"); //Message("Info",RecipeNr,48); //Message("Info","MSURecipeComp() anropas",48) MSURecipeComp() ELSE Prompt("AddMSURecipe() anropas") //Message("Info","AddMSURecipe() anropas",48) AddMSURecipe(); END
// Indikation till ABB att bandrapportdata har lästs. VIPMsuHaveReadCoilReport = 1; dMSURecipeUpdating_P=0; RETURN(0) END //--- INT FUNCTION AddMSURecipe() INT error
STRING Counter="1"; // Sätts till 1 för det första receptet STRING PV_Bend50;
STRING PV_Bend100; STRING PV_BendOther;
STRING Alloy STRING TjIn STRING TjUt STRING AnnealedTj STRING WidthIn STRING WidthOut STRING SP_SPFFGain STRING SP_SPFFSlope STRING SP_SPFFcomp STRING PV_SPFFGain_FB="300"; STRING PV_SPFFSlope_FB="0.88"; STRING PV_SPFFcomp_FB="0.98"; STRING PV_SPFFGain_MF="80"; STRING PV_SPFFSlope_MF="0.88"; STRING PV_SPFFcomp_MF="0.98"; // Garanti att Feedback alltid används PV_RAPPAGCModeFB="1";
// Bestämning av vilket böjningsfält som ska uppdateras SELECT CASE ActWorkRollBomb
CASE "0,05" // Arbetsvalsbombering=0.05 mm PV_Bend50 = PV_RAPPBend; PV_Bend100 = "0"; PV_BendOther = "0"; CASE "0,10" // Arbetsvalsbombering=0.10 mm PV_Bend50 = "0"; PV_Bend100 = PV_RAPPBend; PV_BendOther = "0";
CASE ELSE // Arbetsvalsbombering= någonting annat
PV_Bend50 = "0"; PV_Bend100 = "0";
PV_BendOther = PV_RAPPBend; END SELECT
// Bestämning av vilka SPFF parametrar som ska sättas med rapportvärden beroende på reglermode Foil,FB,FF och MF
error=SQLExec(hSQLT,"Select GAINSPFFSP,SLOPESPFFSP,COMPSPFFSP from ROLLQUEUE_2731 where IDNUMBERSP='"+PV_RAPPID+"'");
IF ((error=0) AND (SQLNext(hSQLT)=0)) THEN SP_SPFFGain=SQLGetField(hSQLT,"GAINSPFFSP"); SP_SPFFSlope=SQLGetField(hSQLT,"SLOPESPFFSP"); SP_SPFFcomp=SQLGetField(hSQLT,"COMPSPFFSP");
IF (PV_RAPPAGCModeFB="1" AND PV_RAPPAGCModeMF="1") THEN PV_SPFFGain_FB=SP_SPFFGain; PV_SPFFSlope_FB=SP_SPFFSlope; PV_SPFFcomp_FB=SP_SPFFcomp; PV_SPFFGain_MF=PV_RAPPSpFFGain; PV_SPFFSlope_MF=PV_RAPPSpFFSlope; PV_SPFFcomp_MF=PV_RAPPSpFFComp; ELSE PV_SPFFGain_FB=PV_RAPPSpFFGain; PV_SPFFSlope_FB=PV_RAPPSpFFSlope; PV_SPFFcomp_FB=PV_RAPPSpFFComp; PV_SPFFGain_MF=SP_SPFFGain; PV_SPFFSlope_MF=SP_SPFFSlope; PV_SPFFcomp_MF=SP_SPFFcomp; END
// Hämtning av nytt receptnummer från DB RecipeNr="0";
IF SQLExec(hSQL,"select MILLDATA.SEQ_RECIPENR_2731.NEXTVAL From dual")=0 THEN
IF (SQLNext(hSQL)=0) THEN
RecipeNr =SQLGetField(hSQL, "NEXTVAL");
//Message("RecipeNr",RecipeNr,48); END
END IF RecipeNr="0" THEN
Message("Felmeddelande","Fel med ansluting till Oracle. Ingen sekvensnummer tilldelat",48);
RETURN(0) END
error=SQLExec(hSQLT,"SELECT
MASKINNRSP,IDNUMBERSP,ALLOYNUMBERSP,GAUGEINSP,GAUGEOUTSP,ANNE ALEDGAUGESP,ORDERWIDTHSP,SLITWIDTHSP from ROLLQUEUE_2731 where IDNUMBERSP='"+PV_RAPPID+"'");
IF (error=0 AND SQLNext(hSQLT)=0) THEN
IdNr=CommaToPoint(SQLGetField(hSQLT,"IDNUMBERSP")); Alloy=CommaToPoint(SQLGetField(hSQLT,"ALLOYNUMBERSP"));
error=SQLExec(hSQL,"insert into MILLDATA.MSU_RECIPE (MASKINNR,RECIPENR,ALLOY,TJIN,TJUT,TJANNEALED,WIDTHIN,WIDTHOUT,ID NUMBER) values ('"+maskinnr+"','"+RecipeNr+"','"+Alloy+"','"+TjIn+"','"+TjUt+"','"+AnnealedTj+"','"+WidthI n+"','"+WidthOut+"','"+IdNr+"')"); IF (error=0) THEN PV_RAPPBend PV_RAPPLoad
//error=SQLExec(hSQL,"insert into MILLDATA.MSU_RECIPE
(MASKINNR,RECIPENR,IDNUMBER,ALLOY,TJIN,TJUT,TJANNEALED,WIDTHIN,WI DTHOUT) SELECT
MASKINNRSP,SCRAPNRSP,IDNUMBERSP,ALLOYNUMBERSP,GAUGEINSP,GAUGE OUTSP,ANNEALEDGAUGESP,WIDTHSP,SLITWIDTHSP from ROLLQUEUE_2731 where IDNUMBERSP='"+PV_RAPPID+"'");
IF (error=0) THEN SQLBeginTran(hSQL);
SQLSet(hSQL, "update MILLDATA.MSU_RECIPE set RECIPENR='"+RecipeNr+"', ADAPT50='"+Adapt50+"', ADAPT100='"+Adapt100+"', ADAPTOTHER='"+AdaptOther+"', ADAPTHARDNESS='"+AdaptHArdness+"', ADAPTLOAD='"+AdaptLoad+"', COUNTER='"+Counter+"', LOADCON='"+PV_RAPPGapModeLoad+"', POSCON='"+PV_RAPPGapModePos+"', "); SQLAppend(hSQL,"FOILCON='"+PV_RAPPAGCModeFoil+"', FB='"+PV_RAPPAGCModeFB+"', FF='"+PV_RAPPAGCModeFF+"', MF='"+PV_RAPPAGCModeMF+"', "); SQLAppend(hSQL, "FOILDTDH='"+PV_RAPPFoilDtDh+"', FOILTENSION='"+PV_RAPPFoiltension+"', AHSLIP='"+PV_RAPPAHSlip+"', PHSLIP='"+PV_RAPPPHSlip+"', "); //SQLAppend(hSQL, "HARDNESS='"+PV_RAPPHardness+"', BEND50='"+PV_Bend50+"', BEND100='"+PV_Bend100+"', BENDOTHER='"+PV_BendOther+"', LOAD='"+PV_RAPPLoad+"', BRIDLE='"+PV_RAPPBridle+"', "); SQLAppend(hSQL, "HARDNESS='"+PV_RAPPHardness+"', BEND50='"+PV_RAPPBend+"', BEND100='"+PV_RAPPBend+"', BENDOTHER='"+PV_RAPPBend+"', LOAD='"+PV_RAPPLoad+"', BRIDLE='"+PV_RAPPBridle+"', "); SQLAppend(hSQL,"SPFFGAIN='"+PV_SPFFGain_FB+"', SPFFSLOPE='"+PV_SPFFSlope_FB+"', SPFFCOMP='"+PV_SPFFComp_FB+"', ADAPTPHSLIP='"+AdaptPHslip+"', SPFFGAINMF='"+PV_SPFFGain_MF+"', SPFFSLOPEMF='"+PV_SPFFSlope_MF+"', SPFFCOMPMF='"+PV_SPFFComp_MF+"' where "); SQLAppend(hSQL,"IDNUMBER='"+PV_RAPPID+"'"); error=SQLExec(hSQL,""); //Message("",SQLInfo(hSQL,1),48) IF (error=0) THEN SQLCommit(hSQL);
SQLRollBack(hSQL);
Message("Felmeddelande","Fel vid överföring av data till MILLDATA.MSU_RECIPE",48);
END ELSE
Message("Felmeddelande","Fel med anslutning till MILLDATA.MSU_RECIPE",48); END END RETURN(0) END //--- INT FUNCTION MSURecipeComp() INT error REAL SP_Hardness REAL SP_Bend REAL SP_Load REAL SP_PHSlip STRING Adapt50 STRING Adapt100 STRING AdaptOther STRING Counter STRING AdaptHardness STRING AdaptLoad STRING AdaptBend STRING AdaptPHSlip STRING Bend50 STRING Bend100 STRING BendOther STRING BendCounter STRING PHSlipCounter STRING Hardness STRING Load STRING Bend STRING PHslip STRING Kolumn REAL HardnessComp REAL LoadComp REAL BendComp
INT BendHighLimit INT LoadLowLimit INT LoadHighLimit INT PHSlipLowLimit INT PHSlipHighLimit STRING SP_SPFFGain STRING SP_SPFFSlope STRING SP_SPFFComp STRING R_SPFFGainFB STRING R_SPFFSlopeFB STRING R_SPFFCompFB STRING R_SPFFGainMF STRING R_SPFFSlopeMF STRING R_SPFFCompMF STRING PV_SPFFGainFB STRING PV_SPFFSlopeFB STRING PV_SPFFcompFB STRING PV_SPFFGainMF STRING PV_SPFFSlopeMF STRING PV_SPFFcompMF
// Garanti att Feedback alltid används PV_RAPPAGCModeFB="1";
// Hämtning av data från ROLLQUEUE_2731
error=SQLExec(hSQLT,"Select HARDNESSSP,BENDSP,LOADSP,COILERSLIPSP from ROLLQUEUE_2731 where IDNUMBERSP='"+PV_RAPPID+"'");
IF ((error=0) AND (SQLNext(hSQLT)=0)) THEN
SP_Hardness=StrToReal(SQLGetField(hSQLT,"HARDNESSSP")); SP_Bend=StrToInt(SQLGetField(hSQLT,"BENDSP"));
SP_Load=StrToReal(SQLGetField(hSQLT,"LOADSP"));
SP_PHSlip=StrToReal(SQLGetField(hSQLT,"COILERSLIPSP")); END
// Hämtning av räknare, böjningsvärdena, samt SPFF-värden från tabell MILLDATA.MSU_RECIPE
error=SQLExec(hSQL,"select * from MILLDATA.MSU_RECIPE where MASKINNR='"+maskinnr+"' and RECIPENR='"+RecipeNr+"'");
AdaptOther=StrToInt(SQLGetField(hSQL,"ADAPTOTHER")); AdaptHardness=SQLGetField(hSQL,"ADAPTHARDNESS"); AdaptLoad=SQLGetField(hSQL,"ADAPTLOAD"); Counter=StrToInt(SQLGetField(hSQL,"COUNTER")); Bend50=StrToInt(SQLGetField(hSQL,"BEND50")); Bend100=StrToInt(SQLGetField(hSQL,"BEND100")); BendOther=StrToInt(SQLGetField(hSQL,"BENDOTHER")); AdaptPHSlip=StrToInt(SQLGetField(hSQL,"ADAPTPHSLIP")); R_SPFFGainFB=SQLGetField(hSQL,"SPFFGAIN"); R_SPFFSlopeFB=SQLGetField(hSQL,"SPFFSLOPE"); R_SPFFcompFB=SQLGetField(hSQL,"SPFFCOMP"); R_SPFFGainMF=SQLGetField(hSQL,"SPFFCOMPMF"); R_SPFFSlopeMF=SQLGetField(hSQL,"SPFFSLOPEMF"); R_SPFFcompMF=SQLGetField(hSQL,"SPFFCOMPMF");
//Message("Info","Räknare hämtat ur MILLDATA.MSU_RECIPE",48) END
// Hämtning av gränser för receptadaptering från tabell MILLDATA.MSU_ADAPTLIMITS error=SQLExec(hSQL,"select * from MILLDATA.MSU_ADAPTLIMITS where
MASKINNR='"+maskinnr+"'")
IF (error=0) AND (SQLNext(hSQL)=0) THEN
HardnessLowLimit=StrToInt(SQLGetField(hSQL,"HARDNESSLOWLIMIT")); HardnessHighLimit=StrToInt(SQLGetField(hSQL,"HARDNESSHIGHLIMIT")); BendLowLimit=StrToInt(SQLGetField(hSQL,"BENDLOWLIMIT")); BendHighLimit=StrToInt(SQLGetField(hSQL,"BENDHIGHLIMIT")); LoadLowLimit=StrToInt(SQLGetField(hSQL,"LOADLOWLIMIT")); LoadHighLimit=StrToInt(SQLGetField(hSQL,"LOADHIGHLIMIT")); PHSlipLowLimit=StrToInt(SQLGetField(hSQL,"PHSLIPLOWLIMIT")); PHSlipHighLimit=StrToInt(SQLGetField(hSQL,"PHSLIPHIGHLIMIT")); //Message("Info","Limits hämtat ur MILLDATA.MSU_ADAPTLIMITS",48) END
// Bestämning av vilka SPFF parametrar som ska uppdateras med rapportvärden beroende på reglermode Foil,FB,FF och MF
PV_SPFFSlopeFB=PV_RAPPSpFFSlope; PV_SPFFcompFB=PV_RAPPSpFFComp; PV_SPFFGainMF=R_SPFFGainMF; PV_SPFFSlopeMF=R_SPFFSlopeMF; PV_SPFFcompMF=R_SPFFcompMF; END
// Bestämning av vilken adapteringsräknare som ska användas för beräkning av nytt böjningsbörvärde.
//Message("ActWorkRollBomb",ActWorkRollBomb,48)
SELECT CASE ActWorkRollBomb
CASE "0,05" // Arbetsvalsbombering =0.05 mm BendCounter=Adapt50; kolumn="ADAPT50"; CASE "0,10" // Arbetsvalsbombering =0.10 mm BendCounter=Adapt100; kolumn="ADAPT100";
CASE ELSE // Arbetsvalsbombering = någonting annat
BendCounter=AdaptOther; kolumn="ADAPTOTHER"; END SELECT
// Beräkning av nytt böjbörvärde //Message("SP_Bend",SP_Bend,48) IF (SP_Bend=0) THEN
//Message("Nu är jag här",SP_Bend,48) SELECT CASE ActWorkRollBomb
CASE "0,05" // Arbetsvalsbombering =0.05 mm
Bend50=CommaToPoint(StrTrim(RealToStr(PV_RAPPBend,6,1)));
CASE "0,10" // Arbetsvalsbombering =0.10 mm
Bend100=CommaToPoint(StrTrim(RealToStr(PV_RAPPBend,6,1)));
CASE ELSE // Arbetsvalsbombering = någonting annat
bendOther=CommaToPoint(StrTrim(RealToStr(PV_RAPPBend,6,1))); END SELECT ELSE deltaB=((SP_Bend-StrToReal(PV_RAPPBend))/SP_Bend)*100; //Message("Nytt Böjningsvärde",deltaB,48) //Message("Bendlowlimit",Bendlowlimit,48)
Bend=StrTrim(CommaToPoint(RealToStr(SP_Bend,4,1))); //Message("Nytt böjvärde ska beräknas",Bend,48)
ELSE
IF (Abs(deltaB) > BendHighLimit) THEN BendCounter="1";
END
error=SQLExec(hSQL,"select BENDCOMP from MILLDATA.MSU_ADAPT where MASKINNR='"+maskinnr+"' and "+kolumn+"='"+BendCounter+"'");
IF (error=0) AND (SQLNext(hSQL)=0) THEN
BendComp=StrToReal(SQLGetField(hSQL,"BENDCOMP")); Bend=RealToStr(Sp_Bend-((Sp_Bend-StrToReal(PV_RAPPBend))*(BendComp/100)),10,1); Bend=CommaToPoint(StrTrim(Bend)); //Message("Nytt Böjningsvärde",Load,48) IF (StrToInt(BendCounter)<5) THEN BendCounter=StrToInt(BendCounter)+1; END END // Min/Max begränsning IF StrToReal(Bend)<-360 THEN Bend="-360"; END IF StrToReal(Bend)>360 THEN Bend="360"; END
SELECT CASE ActWorkRollBomb
CASE "0,05" // Arbetsvalsbombering =0.05 mm Bend50=Bend; Adapt50=BendCounter; CASE "0,10" // Arbetsvalsbombering =0.10 mm Bend100=Bend; Adapt100=BendCounter;
CASE ELSE // Arbetsvalsbombering = någonting annat
bendOther=Bend;
AdaptOther=BendCounter; END SELECT
END END
deltaH=((SP_Hardness-StrToReal(PV_RAPPHardness))/SP_Hardness)*100; //Message("Nytt Hårhetsvärde",deltaH,48)
//Message("Hardnesslowlimit",Hardnesslowlimit,48) IF (Abs(deltaH) < HardnessLowLimit) THEN
Hardness=StrTrim(CommaToPoint(RealToStr(PV_RAPPHardness,4,1))); //Message("Nytt Hårhetsvärde ska beräknas",Hardness,48)
ELSE
IF (Abs(deltaH) > HardnessHighLimit) THEN AdaptHardness="1";
END
error=SQLExec(hSQL,"select HARDNESSCOMP from MILLDATA.MSU_ADAPT where MASKINNR='"+maskinnr+"' and ADAPTHARDNESS='"+AdaptHardness+"'"); IF (error=0) AND (SQLNext(hSQL)=0) THEN
HardnessComp=StrToReal(SQLGetField(hSQL,"HARDNESSCOMP")); Hardness=RealToStr(SP_Hardness-((Sp_Hardness-StrToReal(PV_RAPPHardness))*(HardnessComp/100)),10,1); Hardness=CommaToPoint(StrTrim(Hardness)); //Message("Nytt Hårdhetsvärde",Hardness,48) IF (StrToInt(AdaptHardness)<5) THEN AdaptHardness=StrToInt(AdaptHardness)+1; END END END END // Min/Max begränsning IF StrToReal(Hardness)<1 THEN Hardness="1"; END IF StrToReal(Hardness)>75 THEN Hardness="75"; END
// Beräkning av nytt valskraftsbörvärde IF (SP_Load=0) THEN Load=StrTrim(CommaToPoint(RealToStr(PV_RAPPload,10,1))); ELSE deltaL=((SP_Load-StrToReal(PV_RAPPload))/SP_Load)*100; //Message("Nytt Valskraftvärde",deltaL,48) //Message("Loadlowlimit",Loadlowlimit,48)