Sunteți pe pagina 1din 26

CAPITOLUL 13

SIMULAREA I CONTROLUL UNUI


CUPTOR CU ARC ELECTRIC
Sistemul de poziionare a electrozilor unui cuptor cu arc electric
reprezint un alt exemplu n care abordarea mecatronic poate conduce la
obinerea unor rezultate superioare. Principalele obiectivele urmrite n
cadrul acestui capitol sunt:
-modelarea i simularea unui cuptor cu arc electric;
-implementarea modelului utiliznd mediul Delphi;
-implementarea algoritmilor de control bipoziional, PID, adaptivpredictiv bazat pe model;
-prezentarea unor metode prin care pot fi simulate perturbaiile.
13.1 Punerea problemei, modelarea sistemului, soluii de control
n industria metalurgic, pentru topirea fierului vechi sau a altor
metale, se utilizeaz cuptoare cu arc electric (CAE). Arcul electric este
utilizat pentru obinerea temperaturilor nalte necesare topirii sau/i
realizrii unor reacii chimice dorite. Pentru obinerea arcului electric se
utilizeaz de obicei trei electrozi de grafit ce sunt alimentai la cele trei
faze ale reelei de alimentare electric (fig.13.1).

TRANSFORMER

Hydraulic
control
unit

Fig. 13.1: Cuptor cu arc electric


52

Se utilizeaz un transformator trifazic ce are n primar o tensiune


de 20-30 KV respectiv 100-800V n secundar. Circuitul se nchide prin
intermediul masei de metal ce urmeaz a fi topit. Procedeul presupune
ns un mare consum energetic ceea ce impune realizarea unui sistem de
control eficient pentru a reduce pe ct posibil acest consum. Puterea
electric ce se consum (10100 MW) depinde de lungimea arcului
electric, lungime ce poate fi controlat prin intermediul unui sistem
hidraulic de poziionare a electrozilor. De multe ori, masa acestor
electrozi este foarte mare, putnd ajunge la zeci de tone.
Controlul sistemului hidraulic devine complex. Acceleraiile i
deceleraiile impuse acestor electrozi necesit asigurarea unor viteze
variabile de ctre sistemul de control hidraulic, cu scopul evitrii
distrugerii structurii de rezisten. Utilizarea unui sistem de calcul devine
o necesitate. Motive:
-posibiliti extinse de urmrire i control a aplicaiei;
-optimizarea unor parametri (de exemplu puterea electric);
-optimizarea funcionrii prii de control;
-memorarea datelor n fiiere, calculul unor mrimi derivate;
-prin prelucrarea datelor se pot face aprecieri asupra funcionrii
n timp a sistemului i se pot obine soluii pentru o mai bun funcionare
a cuptorului;
-msurarea precis a curenilor, tensiunilor, puterilor, factorului
de putere; ca urmare se poate respecta curba de putere convenit cu
furnizorul de energie electric;
-sistemul de control devine inteligent; se pot utiliza algoritmi de
control de tip PID, PID adaptiv, adaptiv bazat pe model sau alte variante;
-utiliznd un algoritm de control evoluat, variaia mrimilor din
proces (cureni, tensiuni, etc.) poate fi redus. Acest lucru este benefic
inclusiv din punct de vedere a consumului energetic;
-supravegherea pe calculator permite predicia unor mrimi din
proces, detectarea funcionrii necorespunztoare a unor echipamente
hidraulice, mecanice, electrice pe baza informaiei obinute din
funcionarea normal a procesului iar ulterior se pot lua decizii privind
mbuntirea funcionrii sistemului. De exemplu, este posibil ca
analiznd datele culese pe un interval lung de timp, sistemul de control s
poat fi sensibil mbuntit printr-un efort financiar redus;
-se pot bloca anumite aciuni. De exemplu, dac se depete
puterea electric convenit cu furnizorul, aceasta este limitat. Depirea
poate fi acceptat doar prin intervenia unei persoane autorizate.
53

Nu se poate vorbi de o optimizare a consumului energetic fr ca


partea mecanic i hidraulic s nu funcioneze la parametrii optimi. Prin
urmare, se poate vorbi nc din faza de proiectare de necesitatea
proiectrii pentru control [18]. Pe plan mondial, exist tendina de
utilizare a unor algoritmi inteligeni de control. Un exemplu este
compania Siemens a crui produs utilizeaz reelele neuronale pentru
optimizarea sistemului de control a deplasrii electrozilor [36]. Utilizarea
unui asemenea sistem permite reducerea sensibil a consumului de
energie i implicit reducerea costurilor. Prin proiectare, pe baza
controlului poziiei electrozilor, trebuie s se asigur o putere uniform.
Controlul n limite strnse a puterii consumate i realizarea unei
temperaturi uniforme n masa de metal topit prezint avantaje majore.
Arcul electric apare n momentul n care electrozii se apropie de
masa de metal (sau metal i zgur n anumite situaii). Pentru a se nchide
circuitul electric este necesar ca arcul s apar ntre cel puin doi electrozi
i masa de metal. Uzual, la apariia arcului electric, distana ntre electrod
i masa de metal este de 5-15 cm. Curentul rezultat este iniial foarte
mare i este rolul sistemului de control s deplaseze electrozii astfel nct
acest curent s fie adus n limitele dorite.
Valoarea curentului electric ce ia natere la un moment dat
depinde de lungimea arcului dar i de o multitudine de factori de natur
fizic, muli dintre ei insuficient cunoscui. Dac lungimea arcului
depete o anumit valoare, arcul se stinge. Stingerea arcului se poate
produce i din alte motive greu controlabile. Dac arcul electric se stinge
sistemul de control trebuie s poziioneze corespunztor electrodul (sau
electrozii) astfel nct arcul s reapar.
Trebuie avute n vedere i o serie de fenomene ce au loc n
interiorul cuptorului, de exemplu prbuirea masei de metal n
vecintatea electrozilor ceea ce conduce la realizarea unui scurtcircuit
(arcul dispare n aceste condiii) sau la modificarea semnificativ a
lungimii arcului. Un alt exemplu este fenomenul de fierbere a masei de
metal topit ceea ce conduce la o lungime variabil a arcului electric sau
chiar la stingerea lui. Aceste fenomene au un caracter aleator.
Modelarea fenomenelor este destul de dificil de realizat [37],
[38]. Uzual se utilizeaz modele n curent alternativ. n continuare vom
utiliza un model foarte simplu considernd valorii medii ale curenilor
ceea ce conduce la un model n curent continuu. Utilizarea acestui model
va conduce ns la reducerea complexitii aplicaiei dar n acelai timp
permite simularea fenomenelor i a utilizrii algoritmilor de control.
54

Se consider modelul circuitului electric reprezentat n fig. 13.2.


Se consider c n condiiile n care arcul este amorsat, rezistena arcului
este proporional cu lungimea arcului electric:
R1=k1x1 R2=k2x2 R3=k3x3

(13.1)

Cu R0 s-a notat impedana primarului transformatorului iar cu R4


s-a notat impedana secundarului transformatorului pe fiecare faz
(inclusiv firele de legtur).

R0

R4

R1=k1x1

R4

R2=k2x2

R4

R3=k3x3

Fig. 13.2: Modelul simplificat al circuitului electric


Prin urmare putem scrie:

U I1 I 2 I 3 R0 I1 R4 I1 k1 x1

U I1 I 2 I 3 R0 I 2 R4 I 2 k 2 x2
U I I I R I R I k x
1 2 3 0 3 4 3 3 3

Rezolvnd acest sistem obinem:

55

(13.2)

I
1

1
1

R 4 k 2 x 2 R4 k 3 x 3

R0 R4 k1 x1 R0 R4 k1 x1

I1

1
1

R0 R4 k 2 x2 R0 R4 k 2 x2

x
R

x
4
3
3
4 1 1
U
I1

1
1

R0 R4 k 3 x3 R0 R4 k 3 x3

R4 k 2 x 2 R4 k1 x1

(13.3)

Schema bloc a sistemului de control este prezentat n fig. 13.3.


I1
MODEL1

SETPOINT PROGRAMMER

MBPC1

MBPC2

ARC1
U1
U2

HS1

HS2

x1

x2

ARC2

MODEL2
I2

MBPC3

U3

HS3

x3

ARC3

MODEL3
I3
COMPUTER

PHYSICAL PROCESS

Fig. 13.3: Schema bloc de control adaptiv-predictiv a sistemului


Putem face urmtoarele precizri:
-de obicei se poate consider k1=k2=k3; s-au utilizat coeficieni diferii
pentru a studia ce se ntmpl cnd condiiile de formare a arcelor
56

electrice pe cei trei electrozi difer datorit unor motive cunoscute sau
necunoscute;
-pentru partea de sistem hidraulic se va considera un model liniar. ntr-o
implementare real, ieirile sistemului hidraulic respectiv distanele ntre
capetele electrozilor i topitur nu sunt cunoscute. Semnalele de ieire
din proces sunt curenii i tensiunile arcului electric i acestea pot fi
msurate. n simulare evident c distanele respective se vor avea n
vedere.
-pentru simplificarea aplicaiei, vom considera ca i semnale de ieire din
proces ce vor fi controlate, curenii electrici ai arcelor electrice. Trebuie
precizat ns, c uzual sunt controlate impedanele pe fiecare canal sau
puterile consumate pe fiecare canal [9], [22], [37], [38] ;
-datele privitoare la parametrii procesului sunt orientative, multe din
aceste date sunt dificil de determinat. n plus sistemul este supus la
perturbaii variate ca tip, frecven, intensitate etc. Din acest motiv
implementarea unui algoritm adaptiv de control este justificat.
-dei simplu, modelul propus este neliniar. n plus, datorit modului n
care se formeaz sau se sting arcele electrice, algoritmii de control
trebuie s utilizeze i un set de reguli ce implementeaz diversele
condiionri.
-schema prezentat n figura 13.3 implic utilizarea unui model liniar pe
fiecare canal, identificarea on-line a parametrilor modelului i utilizarea
controlului adaptiv-predictiv bazat pe model. Aa cum reiese din
ecuaiile (13.3), procesul este neliniar iar prin abordarea propus se
ncearc aproximarea unui proces neliniar cu un model liniar a crui
parametrii se identific on-line. Desigur c o asemenea abordare prezint
unele riscuri; din acest motiv simulrile realizate sunt extrem de
importante i trebuie luate n considerare diferite variante de modele ale
procesului pentru a putea urmri modul de comportare a algoritmilor de
control propui.
13.2 Implementarea modelului i a algoritmilor de control utiliznd
mediul Delphi
Se denumete formularul principal (proprietatea Caption): Studiul
cuptorului cu arc electric (CAE). Pe formular se depune o component
MainMenu i un timer. Cu ajutorul editorului de meniu (dublu clic pe
componenta MainMenu) se introduc urmtoarele elemente de meniu:
Algoritm (Activare, Dezactivare, Experiment nou, Alege tip algoritm),
57

Parametri (Dimensiune Model/Proces, Parametri CMMP, Caracteristici


proces, Simulare perturbatii), Ferestre (AranjareOrizontala, Curenti
electrici arc, Tensiuni electrice arc, Semnal de control, Animatie CAE),
Help. Pentru elementul de meniu Algoritm/Dezactivare se alege
proprietatea Enabled=False. De asemenea alegei proprietatea
FormStyle= fsMDIForm precum i WindowState=wsMaximized
(formularul va ocupa tot ecranul).
Vom declara variabilele pe care le vom utiliza n aplicaie (datele
ce privesc procesul i modelul procesului):
const
nmem = 400;
{numar puncte memorate pentru grafice}
npuncte =200; {numar puncte afisate pentru grafice}
dimp = 20; {dimensiune vectori ieire, control}
type
vector=array[0..dimp] of real;
vector1=array[0..nmem] of real;
{cod introdus de mediu}
var
{cod existent}
Form1: TForm1; {cod existent}
np,mp,dp:integer; // dimensiuni ecuatie proces hidraulic
y1,y2,y3,u1,u2,u3:vector;//pozitie electrozi(y1..),control(u1..)
yc1,yc2,yc3: vector; //memoreaza valori cureni;
{vector date memorate iesire(curent) si tensiuni arc pentru grafice}
date_y1,date_y2,date_y3,date_uarc1,date_uarc2,date_uarc3:
vector1;
{vectori date memorare referinta, vectori referine pentru grafice}
date_yr1,date_yr2,date_yr3, yr1,yr2,yr3 : vector1;
{vector date memorate semnale de control}
date_u1,date_u2,date_u3: vector1;
indm :integer; {numarul punctului de esantionare ce se va adauga}
{ variabile pentru validare timere formulare}
ceas2,ceas3,ceas4, ceas5:boolean;
alg_on : boolean; { validare/invalidare algoritm conducere}
{coeficienti ecuatie proces hidraulic}
ap1,bp1,ap2,bp2,ap3,bp3: vector;
{valorile minima si maxima ale semnalului de control}
umin1,umax1,umin2,umax2,umin3,umax3:integer;
kp1,kp2,kp3,ki1,ki2,ki3,kd1,kd2,kd3:real; {parametri PID }
58

{ date cu privire la modelul circuitului electric}


i1,i2,i3:real; {curenti masurati pe electrozi}
k1,k2,k3:real; {constante arc electric}
r1,r2,r3,r4,r0,ua:real;{rezistene electrice, tensiune alimentare}
maxarc:real; {lungime maxima arc electric}
{variabile utilizate pentru descrierea volumului de material}
h_random:integer; {permite obtinerea suprafetei aleatoare}
grad_umplere:integer; {procent volum_material/volum_total}
h_vect:array[0..40] of real; {modeleaza suprafata materialului}
{ariile ce reprezinta grafic volumul initial, final, topit de material}
ariainitiala,ariafinala,ariatopita:real; {volume material}
ctopire:real; {coeficient de topire}
{regim: 0 nu avem arc; 1- contact fara arc; 2- avem arc electric }
regim1,regim2,regim3:integer; {regimuri de lucru pe cele 3 canale}
uarc1,uarc2,uarc3:real; {tensiuni arc electric pe cele 3 canale}
tipalg1,tipalg2,tipalg3:integer;{tip algoritm utilizat pe cele 3 canale}
hist1,hist2,hist3:real; {valori histerez control on/off}
n procedura asociat evenimentului OnActivate (formularul
principal) se fac iniializrile necesare.
procedure TForm1.FormActivate(Sender: TObject);
var i:integer;
begin
indm:=-1; {inializare indice in memoria date de afisare}
{initializare variabile pentru validare timere formular}
ceas2:=false; ceas3:=false;ceas4:=false;ceas5:=false;
alg_on:=False; {initial invalidam algoritm conducere}
randomize; {pornire generator numere aleatoare}
np:=4; mp:=3;dp:=1; {dimensiuni proces hidraulic}
//coeficienti ecuatie proces hidraulic
ap1[1]:=-0.78901; ap1[2]:=-0.2886499; ap1[3]:=0.07765991;
bp1[0]:=-0.005; bp1[1]:=+0.0013061; bp1[2]:=-0.005125375;
ap2[1]:=-0.78901; ap2[2]:=-0.2886499; ap2[3]:=0.07765991;
bp2[0]:=-0.005; bp2[1]:=+0.0013061; bp2[2]:=-0.005125375;
ap3[1]:=-0.78901; ap3[2]:=-0.2886499; ap3[3]:=0.07765991;
bp3[0]:=-0.005; bp3[1]:=0.0013061; bp3[2]:=-0.005125375;
umin1:=-250;umax1:=250;umin2:=-250;umax2:=250;
umin3:=-250;umax3:=250;
59

//parametri controler PID


kp1:=0.07;ki1:=0.01;kd1:=0.01; kp2:=kp1;kp3:=kp1;
ki2:=ki1;ki3:=ki1; kd2:=kd1;kd3:=kd1;
//initializare memorie semnale iesire, referinte, tensiuni arc etc.
for i:=0 to nmem do
begin
date_y1[i]:=0;date_y2[i]:=0;date_y3[i]:=0;
date_uarc1[i]:=0;date_uarc2[i]:=0;date_uarc3[i]:=0;
date_yr1[i]:=0;date_yr2[i]:=0;date_yr3[i]:=0;
date_u1[i]:=0;date_u2[i]:=0;date_u3[i]:=0;
end;
//referinte curenti
yr1[0]:=10000;yr2[0]:=10000;yr3[0]:=10000; //
u1[0]:=0;u2[0]:=0;u3[0]:=0; //semnale initiale de control
for i:=0 to 5 do
begin
y1[i]:=25;y2[i]:=25;y3[i]:=25; //pozitii intiale electrozi
end;
for i:=1 to nmem do //referine curent (memorie)
begin
yr1[i]:=yr1[0]; yr2[i]:=yr2[0];yr3[i]:=yr3[0];
end;
//tensiune alimentare, rezistente,
ua:=220;r0:=0.001;r1:=0.001;r2:=0.001;r3:=0.001; r4:=0.0002;
k1:=0.0005;k2:=0.0005;k3:=0.0005; //constante arc electric
maxarc:=100; //lungime maxima arc
h_random:=100; //var. ce permite modificare profil material de topit
grad_umplere:=25;//exista spatii intre obiectele de metal
ariainitiala:=0; //se refera la reprezentarea in 2D a materialului
ctopire:=0.00001; //coeficient de topire
ariatopita:=0; //initial nu avem material topit
//obtinerea unui profil variat a suprafetei materialului
for i:=0 to 20 do begin h_vect[i]:=random(h_random);
ariainitiala:=ariainitiala+300-h_vect[i];end;
{In reprezentare, materialul netopit este reprezentat in 2D, sub
forma a 20 de dreptunghiuri de latimi egale dar de inaltimi
aleatoare; initial inaltimea acestor dreptunghiuri are valoarea
300-h_vect[i]. Ulterior, prin procesul de topire aceast inaltime va
scadea si se va forma la baza cuptorului topitura.}
60

ariafinala:=grad_umplere*ariainitiala/100;
{regim: 0 nu avem arc; 1- contact fara arc; 2- avem arc electric }
regim1:=0; regim2:=0;regim3:=0;//toti electrozii sunt sus
hist1:=100;hist2:=100;hist3:=100; //histereza control on/off
tipalg1:=1;tipalg2:=1;tipalg1:=1; //tip algoritm:on/off
Semnaldecontrol1Click(Self); //se deschid automat ferestrele
AnimatieCae1Click(Self);
Iesiresireferinta1Click(Self);
Ensiunielectricearc1Click(Self);
AranjareOrizontala1Click(Self);
Activare1Click(Self);
end;
Vom deschide alte patru formulare pe care le vom denumi
(proprietatea Caption) astfel: Animatie cuptor cu arc electric (formular
2), Semnale de control (maron-E1, negru-E2, verde-E3) (formular 3),
Curenti (maron-E1, negru-E2, verde-E3) si referinte (albastru) (formular
4), Tensiuni arc electric (maron-E1, negru-E2, verde-E3) (formular 5).
Utiliznd Project/Options trecem aceste formulare n lista formularelor
accesibile. Proprietatea FormStyle a acestor formulare va avea valoarea
fsMDIChild. Se vor face legturile necesare astfel:
{in formularul 1}
Implementation
{cod existent}
uses unit2,unit3,unit4,unit5;
{in formularele 2..5}
Implementation {cod existent}
uses unit1;
Depunem pe formularele 2..5 urmtoarele componente: Timer,
MainMenu, Chart. Pentru Chart alegei urmtoarele proprieti:
Align=alClient; Title/Visible=False; View3D= False; LeftAxis
(Automatic=False), BottomAxis(Automatic=False),Legend/Visible=False.
Alte proprieti cu referire la chart-uri sunt:
- pentru formularul 2: LeftAxis (Maximum=210, Minimum=-310);
BottomAxis (Maximum=4, Minimum=0, Title/Caption= Pozitia
electrozilor, LabelsOnAxis=False); Introducei 8 serii astfel: trei serii de
tip Line cu proprietatea Border/Width=6 (pentru reprezentarea
electrozilor), dou serii de tip Area (pentru reprezentarea masei de metal
61

netopit respectiv metal topit) i nc trei de tip Line cu proprietatea


Border/Width=3 (pentru reprezentarea celor trei arce electrice). Pentru
seria 4 (ce reprezint metalul netopit) debifai: Format/Area
Lines/Visible.
- pentru formularul 3: LeftAxis (Maximum=260, Minimum=-260);
BottomAxis (Maximum=200, Minimum=0); Pe chart introducei trei serii
de tip Line ce vor reprezenta semnalele de control pe cele trei canale.
- pentru formularul 4: LeftAxis (Maximum=20000, Minimum=-500);
BottomAxis (Maximum=200, Minimum=0); Pe chart introducei ase serii
de tip Line ce vor reprezenta semnalele de ieire i referinele pe cele trei
canale.
- pentru formularul 5: LeftAxis (Maximum=260, Minimum=-10);
BottomAxis (Maximum=200, Minimum=0); Pe chart introducei trei serii
de tip Line ce vor reprezenta semnalele msurate (tensiuni arc electric) pe
cele trei canale.
Pentru aceste formulare se completeaz meniurile principale cu
cte un singur element de meniu: Animatie (formularul 2), Semnale de
control (formularul 3), Iesiri si referinte (formularul 4), Tensiuni arc
electric (formularul 5) i n procedurile asociate evenimentelor
OnActivate se stabilete valoarea proprietii GroupIndex a elementului
de meniu (sau se poate face direct utiliznd inspectorul de obiecte):
procedure TForm2.FormActivate(Sender: TObject);
begin
Animatie1.GroupIndex:=1; {similar pentru formularele 3,4,5}
end;
Introducem i procedurile asociate evenimentului OnClick ale
elementelor de meniu Animatie CAE respectiv Activare i Dezactivare:
procedure TForm1.AnimatieCAE1Click(Sender: TObject);
var Copil:TForm2;
begin
Copil:=TForm2.Create(Self);
Copil.Show;
end;
procedure TForm1.Activare1Click(Sender: TObject);
begin
62

Activare1.Enabled:=False;Dezactivare1.Enabled:=True;
alg_on := True;
end;
procedure TForm1.Dezactivare1Click(Sender: TObject);
begin
Dezactivare1.Enabled:=False;Activare1.Enabled:=True;
alg_on:=False;
end;
n mod similar, asociem proceduri corespunztoare pentru
evenimentele OnClick ale elementelor de meniu: Curenti electrici arc,
Tensiuni electrice arc, Semnal de control ; pentru elementul de meniu
Aranjare Orizontala procedura este:
procedure TForm1.AranjareOrizontala1Click(Sender: TObject);
begin
TileMode:=tbHorizontal;
Tile;
end;
Se completeaz procedurile asociate evenimentelor OnClose ale
formularelor astfel:
procedure TForm1.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
if MessageDlg('Terminare program ?', mtConfirmation, [mbYes,
mbNo], 0) = mrYes then Action := caFree else Action := caNone;
end; {pentru formularul principal}
procedure TForm2.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
if (MessageDlg('Se inchide fereastra?',mtConfirmation, [mbYes,
mbNo],0) = mrYes) then Action := caFree else Action := caNone;
end; {similar pentru formularele 3,4,5}
Se alege proprietatea Timer1.Interval =10 (pentru formularele
2..5) i Timer1.Interval=100 (formularul 1). Pentru formularele 1..5 ct i
pentru Chart-uri alegei proprietatea Color=clWhite.
63

Completm procedura asociat evenimentului OnTimer pentru


timer-ul din formularul 1:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if alg_on=true then begin
indm:=indm+1; if indm > nmem then indm:=0;
PasConducere();
CalculCurenti(i1,i2,i3,y1[0],y2[0],y3[0]);
//memoram valori curenti pe cele 3 canale
date_y1[indm]:=i1;date_y2[indm]:=i2;date_y3[indm]:=i3;
date_uarc1[indm]:=uarc1;date_uarc2[indm]:=uarc2;
date_uarc3[indm]:=uarc3//memoram tensiune arc pe cele 3 canale
date_yr1[indm]:=yr1[1];date_yr2[indm]:=yr2[1];
date_yr3[indm]:=yr3[1]; //memoram valori referinte pe cele 3 canale
//memoram semnalele de control pe cele trei canale (pentru grafice)
date_u1[indm]:=u1[1];date_u2[indm]:=u2[1];date_u3[indm]:=u3[1];
//validam timere formulare 2..5
Ceas2:=True; Ceas3:=True;Ceas4:=True;Ceas5:=True;
end;
end;
Completm procedurile asociate evenimentelor OnTimer pentru
timer-ele din formularele 2..5 astfel:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
If alg_on and ceas2 then pasgrafic;
ceas2:=False; {similar in formularele 3,4,5 ; variabile: ceas3..ceas5}
end;
Scriem procedurile PasGrafic pentru formularele 2..5. Procedura ce
permite reprezentarea grafic a poziiei electrozilor (se utilizeaz pentru
cele trei faze culorile: maron, negru, verde), a arcelor electrice (culoare
roie) i a evoluiei n timp a metalului netopit (culoare gri) i a topiturii
(culoare roie) este:
procedure TForm2.Pasgrafic;
var i:integer;
64

begin
Series1.Clear;Series2.Clear;Series3.Clear;Series4.Clear;
Series5.Clear;Series6.Clear;Series7.Clear;Series8.Clear;
//reprezentare electrozi
Series1.addxy(1,x1[0],'',clMaroon);
Series1.addxy(1,x1[0]+200,'',clMaroon);
Series2.addxy(2,x2[0],'',clblack);
Series2.addxy(2,x2[0]+200,'',clblack);
Series3.addxy(3,x3[0],'',clgreen);
Series3.addxy(3,x3[0]+200,'',clgreen);
//reprezentare masa metal netopit/topit
for i:=0 to 20 do begin
//metal netopit
if (i=0) or (i=20) then Series4.addxy(i/5,-h_vect[i],'',clGray)
else Series4.addxy(-0.1+i/5,-h_vect[i],'',clGray);
end;
for i:=0 to 20 do begin //metal topit
if (i=0) or (i=20) then Series5.addxy(i/5,-310+ariatopita/20,'',clRed)
else Series5.addxy(-0.1+i/5,-310+ariatopita/20,'',clRed);
end;
//reprezentare arce electrice
if (regim1=2) and (x1[0]>-h_vect[5]) then begin
Series6.addxy(1,x1[0],'',clred);
Series6.addxy(1,-h_vect[5],'',clred);
end;
if (regim2=2) and (x2[0]>-h_vect[10]) then begin
Series7.addxy(2,x2[0],'',clred);
Series7.addxy(2,-h_vect[10],'',clred);
end;
if (regim3=2) and (x3[0]>-h_vect[15]) then begin
Series8.addxy(3,x3[0],'',clred);
Series8.addxy(3,-h_vect[15],'',clred);
end;
end;
Procedurile ce permit reprezentarea semnalelor de control, a referinelor
i a semnalelor de ieire ale celor trei canale sunt:
procedure TForm3.Pasgrafic;
begin
65

if indm=0 then begin {s-a umplut chartul cu date}


series1.Clear;series2.Clear;series3.Clear; end;
Chart1.BottomAxis.Minimum:=npuncte*(indm div npuncte);
Chart1.BottomAxis.Maximum:=npuncte*(1+indm div npuncte);
{afisare semnale de control corespunztoare celor trei electrozi}
series1.addxy(indm,date_u1[indm],'',clMaroon);
series2.addxy(indm,date_u2[indm],'',clblack);
series3.addxy(indm,date_u3[indm],'',clgreen);
end;
procedure TForm4.Pasgrafic;
begin
if indm=0 then begin {s-a umplut chartul cu date}
series1.Clear;series2.Clear;series3.Clear;
series4.Clear;series5.Clear;series6.Clear; end;
Chart1.BottomAxis.Minimum:=npuncte*(indm div npuncte);
Chart1.BottomAxis.Maximum:=npuncte*(1+indm div npuncte);
{afisare semnale de referinta si de iesire pentru cei trei electrozi}
series1.addxy(indm,date_yr1[indm],'',clblue);
series2.addxy(indm,date_y1[indm],'',clMaroon);
series3.addxy(indm,date_yr2[indm],'',clblue);
series4.addxy(indm,date_y2[indm],'',clblack);
series5.addxy(indm,date_yr3[indm],'',clblue);
series6.addxy(indm,date_y3[indm],'',clgreen);
end;
procedure TForm5.Pasgrafic;
begin
if indm=0 then begin {s-a umplut chartul cu date}
series1.Clear;series2.Clear;series3.Clear; end;
Chart1.BottomAxis.Minimum:=npuncte*(indm div npuncte);
Chart1.BottomAxis.Maximum:=npuncte*(1+indm div npuncte);
{afisare tensiuni pe arc pentru cei trei electrozi}
series1.addxy(indm,date_uarc1[indm],'',clMaroon);
series2.addxy(indm,date_uarc2[indm],'',clblack);
series3.addxy(indm,date_uarc3[indm],'',clgreen);
end;
Scriem procedura PasConducere din formularul principal:
66

procedure TForm1.PasConducere();
var i:integer;
temp0:real;
begin // deplasare in timp a semnalelor de ieire (curenti)
for i:=2 downto 0 do begin
yc1[i]:=yc1[i-1]; yc2[i]:=yc2[i-1]; yc3[i]:=yc3[i-1];
end;
yc1[0]:=i1;yc2[0]:=i2;yc3[0]:=i3; //noile valori curenti
CalculComanda(yc1,u1,yr1,0);//calcul comanda electrod 1
CalculComanda(yc2,u2,yr2,1); //calcul comanda electrod 2
CalculComanda(yc3,u3,yr3,2); //calcul comanda electrod 3
//Calculam noile pozitii ale electrozilor
temp0:=0;
for i:=1 to np-1 do temp0:=temp0-ap1[i]*y1[i];
for i:=0 to mp-1 do temp0:=temp0+bp1[i]*u1[i+dp];
for i:=20 downto 1 do y1[i]:=y1[i-1]; y1[0]:=temp0;
temp0:=0;
for i:=1 to np-1 do temp0:=temp0-ap2[i]*y2[i];
for i:=0 to mp-1 do temp0:=temp0+bp2[i]*u2[i+dp];
for i:=20 downto 1 do y2[i]:=y2[i-1]; y2[0]:=temp0;
temp0:=0;
for i:=1 to np-1 do temp0:=temp0-ap3[i]*y3[i];
for i:=0 to mp-1 do temp0:=temp0+bp3[i]*u3[i+dp];
for i:=20 downto 1 do y3[i]:=y3[i-1]; y3[0]:=temp0;
//calculam noile valori ale curentilor pe cele trei canale
CalculCurenti(i1,i2,i3,y1[0],y2[0],y3[0]);
{diverse cazuri particulare pe cele trei canale}
if (i1=0) and (uarc1>=100) then u1[0]:=umax1; //nu avem arc
if (uarc1=0) then u1[0]:=0; //scurt circuit; oprim deplasarea electrod
if (i2=0) and (uarc2>=100) then u2[0]:=umax2;
if (uarc2=0) then u2[0]:=0;
if (i3=0) and (uarc3>=100) then u3[0]:=umax3;
if (uarc3=0) then u3[0]:=0;
// cazul realizarii unui scurt dupa faza initiala
if (uarc1=0) and (i1>10000) and (u1[0]<>umin1 then u1[0]:=umin1;
if (uarc2=0) and (i2>10000) and (u2[0]<>umin2) then u2[0]:=umin2;
if (uarc3=0) and (i3>10000) and (u3[0]<>umin3) then u3[0]:=umin3;
end;
67

Vom prezenta procedura pentru calculul semnalelor de control. Funcie


de variabilele tipalg, se va putea alege control de tip on/off (tipalg=1),
sau PID (tipalg=2). Alegerea poate fi realizat independent pe fiecare
canal.
procedure TForm1.CalculComanda(var y,u:vector; yr:vector1;
nr:integer);
var i,umax,umin:integer;
begin //nr=0, 1, 2 pentru electrozii 1,2,3
if nr=0 then begin umax:=umax1;umin:=umin1;end
else if nr=1 then begin umax:=umax2;umin:=umin2;end
else begin umax:=umax3;umin:=umin3;end;
{deplasare semnal de control in timp}
for i:=dimp downto 1 do u[i]:=u[i-1];
//calculam semnal de control dat de PID pentru electrozi
if (nr=0) and (tipalg1=2) then u[0]:=u[1]+kp1*(yr[0]-y[0]-yr[1]+y[1])
+ki1*(yr[0]-y[0])-kd1*(y[0]-2*y[1]+y[2]);{pid}
if (nr=1) and (tipalg2=2) then u[0]:=u[1]+kp2*(yr[0]-y[0]-yr[1]+y[1])
+ki2*(yr[0]-y[0])-kd2*(y[0]-2*y[1]+y[2]);{pid}
if (nr=2) and (tipalg3=2) then u[0]:=u[1]+kp3*(yr[0]-y[0]-yr[1]+y[1])
+ki3*(yr[0]-y[0])-kd3*(y[0]-2*y[1]+y[2]);{pid}
{limitare semnal de control}
if u[0]>umax then u[0]:=umax; if u[0]<umin then u[0]:=umin;
//calculam semnal dat de controlerul On/Off pentru electrozi
if (nr=0) and (hist1>0) and (tipalg1=1) then
begin
if abs(y[0]-yr[0])<hist1 then u[0]:=0
else if y[0]<yr[0] then u[0]:=umax
else u[0]:=umin;
end;
if (nr=1) and (hist2>0) and (tipalg2=1) then
begin
if abs(y[0]-yr[0])<hist2 then u[0]:=0
else if y[0]<yr[0] then u[0]:=umax
else u[0]:=umin;
end;
if (nr=2) and (hist3>0) and (tipalg3=1) then
begin
68

if abs(y[0]-yr[0])<hist3 then u[0]:=0


else if y[0]<yr[0] then u[0]:=umax
else u[0]:=umin;
end;
end;
Procedura pentru calculul curenilor pe cele trei canale este:
procedure TForm1.CalculCurenti(var i1,i2,i3:real; x1,x2,x3:real);
begin //x1,x2,x3 sunt pozitii capete electrozi (spre topitura)
{calculam n x1,x2,x3 lungimile arcelor electrice}
if h_vect[5]<310-ariatopita/20 then x1:=x1+h_vect[5]
else x1:=x1+310-ariatopita/20;
if h_vect[10]<310-ariatopita/20 then x2:=x2+h_vect[10]
else x2:=x2+310-ariatopita/20;
if h_vect[15]<310-ariatopita/20 then x3:=x3+h_vect[15]
else x3:=x3+310-ariatopita/20;
//calculam curentii (pe baza circuitului electric)
i1:=ua/(r0+r4+k1*x1+r0*(r4+k1*x1)*(1/(r4+k2*x2)+1/(r4+k3*x3)));
i2:=ua/(r0+r4+k2*x2+r0*(r4+k2*x2)*(1/(r4+k1*x1)+1/(r4+k3*x3)));
i3:=ua/(r0+r4+k3*x3+r0*(r4+k3*x3)*(1/(r4+k2*x2)+1/(r4+k1*x1)));
//calculam tensiunile electrice arc electric
//observatie: in practica curentii si tensiunile se masoara!
//aici sunt furnizate de procesul simulat!
uarc1:=i1*k1*x1; uarc2:=i2*k2*x2; uarc3:=i3*k3*x3;
//cazuri particulare
if (regim1=1) and (regim2=0) and (regim3=0) then begin
uarc2:=200;uarc3:=200;i2:=0;i3:=0;end;
if (regim2=1) and (regim1=0) and (regim3=0) then begin
uarc1:=200;uarc3:=200;i1:=0;i3:=0;end;
if (regim3=1) and (regim2=0) and (regim1=0) then begin
uarc2:=200;uarc1:=200;i2:=0;i1:=0;end;
//numai pentru simulare, in practica nu utilizam instructiunile!
if (x1>maxarc) then begin i1:=0;uarc1:=100;end
//lungime arc prea mare ; se detecteaza prin i=~0 si u>>0
else if (x1<=0) then uarc1:=0; // scurt; se detecteaza prin u=0;
if (x2>maxarc) then begin i2:=0;uarc2:=100;end
else if (x2<=0) then uarc2:=0;
if (x3>maxarc) then begin i3:=0;uarc3:=100;end
69

else if (x3<=0) then uarc3:=0;


//numai in simulare
if ((regim1=0) and (regim2=0)) or ((regim1=0) and (regim3=0)) or
((regim2=0) and (regim3=0)) then begin i1:=0;i2:=0;i3:=0;end;
if (i1=0) and (i2=0) then i3:=0;
if (i1=0) and (i3=0) then i2:=0;
if (i3=0) and (i2=0) then i1:=0;
//cazuri particulare (in practica)
if (i1=0) and (uarc1>=100) then regim1:=0; //fara arc sau scurt cc
if uarc1=0 then regim1:=1; //scurt cc
if (i2=0) and (uarc2>=100) then regim2:=0;
if uarc2=0 then regim2:=1;
if (i3=0) and (uarc3>=100) then regim3:=0;
if uarc3=0 then regim3:=1;
if (regim1=1) and (i1>0) then regim1:=2; //avem arc
if (regim2=1) and (i2>0) then regim2:=2;
if (regim3=1) and (i3>0) then regim3:=2;
if (i1>0) and (uarc1>0) then regim1:=2;
if (i2>0) and (uarc2>0) then regim2:=2;
if (i3>0) and (uarc3>0) then regim3:=2;
i1:=abs(i1); i2:=abs(i2); i3:=abs(i3);
if uarc1>0 then uarc1:=ua-(i1+i2+i3)*r0-r1*i1; //tensiuni arc
if uarc2>0 then uarc2:=ua-(i1+i2+i3)*r0-r2*i2;
if uarc3>0 then uarc3:=ua-(i1+i2+i3)*r0-r3*i3;
//calculam nivel material n zona de patrundere a electrozilor
if h_vect[5]<310-ariatopita/20 then h_vect[5]:=h_vect[5]+ctopire*i1;
if h_vect[10]<310-ariatopita/20 then
h_vect[10]:=h_vect[10]+ctopire*i2;
if h_vect[15]<310-ariatopita/20 then
h_vect[15]:=h_vect[15]+ctopire*i3;
//calculam si reprezentam volumul de material topit
ariatopita:=ariatopita+ctopire*(i1+i2+i3)*grad_umplere/100;
end;
Declarm prototipurile procedurilor nou introduse:
procedure CalculCurenti(var i1,i2,i3:real; x1,x2,x3:real);
procedure PasConducere();
procedure CalculComanda(var y,u:vector;yr:vector1;nr:integer);
70

Dac se utilizeaz algoritm de control On/Off cu histerez (pe


toate cele trei canale), atunci un exemplu de comportare n faza iniial a
sistemului se prezint n figura 13.4.
Primul electrod ce atinge masa de metal este electrodul 2. Acest
lucru este sesizat prin faptul c tensiunea pe electrod e nul iar curentul e
nul. La pasul de eantionare 53, electrodul 3 atinge i el masa de metal.
Ca urmare prin cei doi electrozi curentul este foarte mare i sistemul de
control d semnalele necesare pentru ridicarea electrozilor. Ulterior
valorile celor doi cureni scad i se stabilizeaz n jurul referinei.
Dac se utilizeaz algoritm de control PID i iniializrile de mai
sus atunci un exemplu de comportare n faza iniial a sistemului se
prezint n figura 13.5.

Fig. 13.4: Utilizarea controlului on/off

71

Fig. 13.5: Utilizarea controlerului PID, faza iniial.

Fig. 13.5: Utilizarea controlerului PID, regim staionar,exist topitur


72

Proiecte propuse
1. S se implementeze i algoritmii adaptivi bazai pe model ( Cap. 10.5).
Se va avea n vedere i implementarea situaiilor particulare pe baza unui
set de reguli, similar cu setul de reguli utilizat n implementarea
algoritmului de tip PID. Comentai faptul c se utilizeaz algoritmi de
identificare specifici sistemelor liniare n cazul sistemelor neliniare. O
posibil comportare n faza iniial se prezint n figura 13.6.
2.S se scrie procedurile necesare interfeei din fig. 13.7. Aceast
interfa permite alegerea independent a tipului de algoritm pe fiecare
canal (se utilizeaz trei componente GroupBox avnd fiecare trei
componente RadioButton) precum i alegerea parametrilor algoritmilor
de control. Pentru algoritmul de tip PID+reguli se pot introduce
parametrii controlerului Kp, Ki, Kd att prin utilizarea unor componente
Edit ct i prin utilizarea unor componente ScrollBar. Pentru GroupBoxurile Bipozitional+histereza respectiv Adaptiv bazat pe model se va
proiecta i interfaa necesar. Formularul realizat va fi asociat
elementului de meniu Alege tip algoritm din formularul principal.

Fig. 13.6: CAE- utilizarea unui algoritm adaptiv-predictiv de control


73

Fig. 13.7: Fereastra pentru alegerea tipului de algoritm i a parametrilor


3. S se modifice aplicaia astfel nct s poat fi introduse de ctre
utilizator informaiile privitoare la dimensiunile modelului prii
hidraulice a procesului. Aceste informaii vor putea fi introduse utiliznd
procedura asociat elementului de meniu Dimensiune proces al
formularului principal. De asemenea, utiliznd elementul de meniu
Parametri_CMMP vor putea fi introduse i parametri ai algoritmului
de identificare (factorul de uitare etc.).
4. S se scrie procedura asociat elementului de meniu Caracteristici
Proces din formularul principal. Utilizatorul va putea introduce valorile
rezistenelor din modelul prii electrice a procesului, constantele arcului
electric pentru fiecare canal, valorile extreme ale semnalelor de control
umax, umin.
5. S se scrie procedura asociat elementului de meniu Experiment nou
din meniul formularului principal. Se va permite reluarea unui
experiment utiliznd condiiile iniiale dar cu alt form a suprafeei
materialului din cuptor i cu alt alegere a parametrilor de proces sau/i
de control.
6. S se scrie procedura asociat elementului de meniu Simulare
perturbatii din meniul formularului principal. Se vor avea n vedere
perturbaiile prezentate n fig. 13.8 sau alte tipuri de perturbaii pe care le
considerai posibile.
S discutm pe rnd perturbaiile din fig. 13.8. Ruperea frecvent
a arcelor electrice, arc de lungime aleatoare sunt fenomene ce apar
74

aleator datorit modului fizic n care ia natere i se menine arcul


electric.

Fig. 13.8: Simularea perturbaiilor


Aceste fenomene au ns efecte sensibil diferite (ruperea unui arc electric
are evident un efect perturbator mai accentuat). Prbuirea materialului
se poate produce cnd electrozii ptrund adnc n masa de metal iar
materialul din jurul acestor electrozi are tendina natural de a cdea; ca
urmare poate apare scurtcircuitul. Schimbarea formei suprafeei poate
apare cnd mase mari de metal i schimb poziia, n special cnd deja
exist mult material topit. De asemenea pot apare zgomote la msurarea
mrimilor electrice. De exemplu, simularea ruperii arcelor electrice poate
fi realizat prin utilizarea unei secvene de tipul:
if random(500)<10 then
begin
i1:=0;uarc1:=100; //ruperea unui arc
if random(500)<10 then //ruperea simultana a doua arce
begin i2:=0;uarc2:=100; end;
end;
Evident c poate fi realizat o interfa astfel nct utilizatorul s poat
alege i frecvena de rupere a arcelor. Se remarc faptul c se poate rupe
un arc sau (mai rar) dou arce (de fapt dac se rup dou arce automat se
rupe i al treilea arc). n mod similar se mai pot scrie dou secvene
pentru celelalte dou canale.
Prbuirea materialului poate fi simulat astfel pentru materialul
din vecintatea primului electrod (secvenele pentru celelalte doua canale
pot fi similare):
75

{conditii: s existe material netopit sub electrod i coloana de


material de sub el sa fie mai inalta decat coloanele alaturate}
if (h_vect[5]<310-ariatopita/20) and (random(400)=1)
and (h_vect[5]>h_vect[4]) and (h_vect[5]>h_vect[6]) then
begin {secventa pentru canal electrod 1}
medie:=(2*h_vect[5]-h_vect[4]-h_vect[6])/3;
{o strategie simpla de modificare a formei suprafetei; nu e unica}
h_vect[5]:=h_vect[5]-medie/3;
{caz netratat: nu avem material netopit sub capatul electrodului}
h_vect[4]:=h_vect[4]+medie/6;
h_vect[6]:=h_vect[6]+medie/6;
end;
Lungimea variabil a arcului electric poate fi simulat printr-o
instruciune de forma:
if random(20)=1 then x1:=x1*(0.5+random(1000)/1000); {canal 1}
Zgomotul de msur a curentului poate fi modelat astfel:
if random(50)=1 then i1:=i1*(0.95+random(100)/1000); {canal 1}
Pentru ultimul caz Schimbare forma suprafata se alege varianta n care
fenomenul se produce cnd utilizatorul valideaz butonul de validare:
if Form8.CheckBox5.Checked then
begin
for i:=1 to 20 do h_vect[i-1]:=(h_vect[i-1]+h_vect[i])/2;
h_vect[20]:=h_vect[19];
Form8.Checkbox5.Checked:=false;
end;
Utilizatorul va putea alege tipul i numrul perturbaiilor. Se pot folosi
butoane de validare. Secvenele de mai sus pot fi dezvoltate astfel nct
utilizatorul s poat stabili i frecvena i intensitatea perturbaiilor sau s
poat alege diferite strategii de simulare a perturbaiilor.
7. Utilizai mouse-ul pentru a modifica semnalul de referin. Avei n
vedere i c semnalele de referin pot avea valori diferite pe cele trei
canale.
76

8. Modificai aplicaia astfel nct s se controleze puterea consumat.

77

S-ar putea să vă placă și