• No results found

Control for Cold Rolling Mills

N/A
N/A
Protected

Academic year: 2021

Share "Control for Cold Rolling Mills"

Copied!
89
0
0

Loading.... (view fulltext now)

Full text

(1)

C-uppsats

LITH-ITN-EX--05/039--SE

Kallvalsverksreglering

Antoni Morad

Faruk Travancic

2005-12-16

(2)

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

(3)

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.

(4)

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

(5)

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.

(6)

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.

(7)

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 ... 9

4.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

(8)

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

(9)

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

(10)

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.

(11)

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.

(12)

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.

(13)

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.

(14)
(15)

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.

(16)

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.

(17)

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.

(18)

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.

(19)

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.

(20)

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

(21)

Figur 10 visar det första bandet, M7433, där den övre grafen är startvalskraften och den undre är böjningen.

(22)

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.

(23)

Figur 12 visar band 2, M6933. Den övre grafen är startvalskraften och den undre är böjningen.

(24)

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

(25)

Figur 14 visar band 3, M6995. Den övre grafen är startvalskraften och den undre är böjningen.

(26)

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.

(27)

Figur 16 visar band 4, M7288.

Figur 16 Band M7288 har startvalskraft på ca 6800 kN och böjningskraft på ca 175 kN.

(28)

Figur 17 visar utgående tjocklek för alla band.

(29)

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

(30)

• 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:

(31)

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.

(32)

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.

(33)

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.

(34)

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.

(35)

Figur 22 visar 3D för tre band.

(36)

Figur 23 visar 2D för tre band.

(37)

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.

(38)

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);

(39)

Ä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

(40)

Fortsättning på flödesschema 8HA4

En annan legering

(41)

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.

(42)

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.

(43)

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.

(44)

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.

(45)

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å

(46)

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.

(47)

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.

(48)

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.

(49)

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.

(50)

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.

(51)

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.

(52)

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.

(53)

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:

(54)

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.

(55)

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

(56)

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

(57)

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

(58)

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ö

(59)

Ö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?

(60)

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 …..

(61)

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

(62)

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

(63)

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

(64)

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)

(65)

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

(66)

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;

(67)

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");

(68)

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);

(69)

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";

(70)

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

(71)

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

(72)

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

(73)

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;

(74)

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";

(75)

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"));

(76)

// 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;

(77)

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");

(78)

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"));

(79)

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);

(80)

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

(81)

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+"'");

(82)

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

(83)

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)

(84)

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

(85)

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)

References

Related documents

gång framtidsstaten förverkligas —- som den naturligtvis blir för våra barn skola väl ha något att trassla med — hoppas jag att varenda kotte i tur och ordning paketeras

^di ^msialläkarna, vars pressande arbetsförhållanden v^r^are behandlats i dessa spalter. Tydligt är att social- Riä T*5 eXpansion °ver hela linjen frestar hårt på de Sa ,

Det är rektor som enligt styrdokumenten ansvarar för att leda och utveckla arbetet på skolorna men i detta arbete ser vi att det är först när det uppstår konflikter eller svåra

Intäkter för Sigma utgör under perioden 0,3 mkr från Epsilon och 0,2 mkr från Danir och kostnad för Sigma utgör 0,5 mkr till Epsilon och inget till Danir. Föregående år

Under 2021 kommer föreningen Aktivt Baggetorp i samarbete med vIngåkers kommun ansvara för att uppföra en skateboardramp samt en grillplats med tak i anslutning till lekparken

This is a License Agreement between Miriam S Ramliden (&#34;You&#34;) and Nature Publishing Group (&#34;Nature Publishing Group&#34;) provided by Copyright Clearance

En betesmark (2/800) med påtagligt naturvärde (objekt 40, NVI 2018) kopplat till flera äldre och grova ekar samt riklig förekomst av stenrösen påverkas av ny enskild väg� Den

Samma källa uppger också att det spelar en viss roll för bland annat vilket anaforiskt pronomen man väljer huru- vida substantivet i korrelatet i grunden har animat betydelse eller