Aplicatii SCADA care contin sisteme de reglare automata
  • Obiective
  • Organizarea sarcinilor de lucru

    1. Prezentarea unui sistem de reglare automata


        SRA - Sistemele de Reglre Automata sunt sisteme cu bucla de reactie (loop control) care functioneaza pe baza analizei in permanenta a valorii de iesire (marimii reglate), preluata prin intermediul reactiei negative. Diferenta dintre valoarea de iesire si valoarea de referinta, numita "eroare", este folosita de SRA pentru eliminarea acesteia sau mentinerea ei in anumite intervale prestabilite.


         Un SRA se compune din urmatoarele elemente:
        Marimile definite:
        Daca definim Hr(s) functia de transfer a regulatorului si Hf(s) functia de transfer a partii fixate, Schema unui SRA devine:


        
        Partea fixata(PF) contine procesul tehnologic(PT) asupra caruia actioneaza regulatorul automat(RA).
        Procesul tehnologic(PT) este comandat de catre regulatorul automat(RA) prin intermediul elementelor de executie(EE). Citirea marimii reglate(y - variabila de proces) se face prin intermediul traductorilor(T) care ofera marimea x proportionla cu marimea y adica x=k*y.
        Putem deci reprezenta un SRA sub forma:


         Unde:
        Marimile definite:
        Mult mai fireasca ar fi reprezentarea in care procesul tehnologic(PT) ar fi reprezentat separat, la care se adauga in mod firesc dispozitivul de automatizare. Aceasta reprezentare ar corespunde dezvoltarii firesti a sistemelor tehnologice in care initial se realizeaza un proces tehnologic dupa care se automatizeaza.



    2. Aplicatii SCADA care contin un sisteme de reglare automata

         Un SRA de ti PID mentine valoarea iesirii y in jurul valorii de referinta r prin intermediul comenzii u. Comanda u este generata de SRA prin intermedul unei functii de transfer caracterizata de trei constante: kp,ki,kd si Ti.     In imaginea de jos este reprezentata comanda u (cu rosu) si iesirea y(cu verde).

    Sistem de Reglare Automata PID
    Your browser does not support the HTML5 canvas tag.
    r: kp:
    ki: kd:

        Pentru implementarea regulatorului PID se va folosi metoda "Velocity". Conform acesti metode, comanda u din momentul k depinde de referinta r, de iesirea y si de e_v (e, din momentul k-1). Intervalul de timp dintre momentul k si momentul k-1 este Te(Timpul de esantionare).
        Comanda u se obtine prin insumarea elementului proportional, integrativ (inte) si derivativ(deriv) astfel:

        e = r - y;
        inte = inte + e * Te;
        deriv = (e - e_v) / Te;
        u = kp * e + ki * inte + kd * deriv;
        e_v = e;
    
    

        In care:
        Variabila de proces adica iesirea y reprezentand totodata marimea reglata ar trebui sa provina din procesul tehnologic(PT) prin plasarea unui traductor. Folosind de exemplu functia de transfer a unui sistem de ordinul 5 si anume: Hf(s)=1/(5s+1). Dupa discretizare obtinem relatia:

    y = (u*Te + 5 * y_v) / (5 + Te);

        In care:     Dupa cum se observa ea depinde de de y_v(y din pasul anterior), comanda u din pasul curent si de timpul de esantionare Te.


         Trending marimi SRA

        Pe baza ecuatiilor descrise mai sus, folosind obiectul "Trend" vom realiza proiectul SCADA Sist_regl pagina grafica sra_pid unde vom afisa grafic evolutia in timp a marimilor u,y,r.
        


        Pentru realizarea aplicatiei, avem nevoie deci de urmatoarele TAG-uri:

    Tag-uri aferente
    Nume Tip Domeniu Um Array Size Comentariu
    init_sra DIGITAL - - - Variabila pentu initializare
    y REAL 250 - - RA- y - Iesirea, Process variable
    y_v REAL 250 - - RA- y_v - Iesirea_v, Process variable_v
    u REAL 250 - - RA - u - Comanda Output
    r REAL 250 - - RA - r - Referinta, Set Point
    e REAL -250 + 250 - - RA - e - Eroarea Error
    e_v REAL 250 - - RA - e_v - Eroarea_v Error_v
    v REAL 250 - - RA - v - Perturbatia
    kp REAL 10 - - RA - kp - coeficient roportional
    ki REAL 5 - - RA - ki - coeficient integrativ
    kd REAL 2 - - RA - kd - coeficient derivativ
    Te REAL 5 - - RA - Te - Timp de esantionare
    inte REAL 5 - - RA - inte - Element integrativ
    deriv REAL 5 - - RA - deriv - Element derivativ


        Pentru a afisa graficele, de pe HMI s-a plasat pe ecran functia ini_sra(); Plot_pid():

    FUNCTION ini_sra()
      IF init_sra=0 THEN 
    	kp=0.5;
      	ki=2.5;
      	kd=0.01;
      	r=125;
      	y=50;
      	Te=0.250;
      	init_sra=1;
      END
    END
    
    
    REAL Buf3[100];
    REAL Buf4[100];
    REAL Buf5[100];
    INT hPlot;
    FUNCTION Plot_pid(INT hAn,INT iGridCol= Yellow,INT iFrameCol= Black,INT iFillCol=Black)
    	INT i=1;
    	e=0;
    	e_v=0;
    	y=0;
    	y_v=0;
    	inte=0;
    	deriv=0;
    	u=0;
    	FOR i=0 TO 99 DO
    		e=r-y;
    		inte = inte + e * Te;
            	deriv = (e - e_v) / Te;
            	u = kp * e + ki * inte + kd * deriv;
       		y = (u * Te + 5 * y_v) / (5 + Te);
    		e_v = e;
    		y_v = y;
    		Buf3[i] = y;
    		Buf4[i] = u;
    		Buf5[i] = r;
    	END
    	INT FrameWidth=10;
    	hPlot=PlotOpen(hAn,"Display",65);
    	PlotGrid(hPlot,100,0,0,400,220,5,iGridCol,9,iGridCol,FrameWidth,iFrameCol,iFillCol,0);
    	PlotScaleMarker(hPlot,-10,210, 6, 1, Black, 1);
    	PlotLine(hPlot, 0, Light_Green, 2, 0, Light_Red , 1, 100, Buf3[0], -400,900,1);
    	PlotLine(hPlot, 0, Light_Red, 2, 0, Light_Red , 1, 100, Buf4[0], -400,900,1);
    	PlotLine(hPlot, 0, Light_Blue, 2, 0, Light_Red , 1, 100, Buf5[0], -400,900,1);
    	PlotClose(hPlot);
    END
    
    



         Aplicatie SCADA care contine un sistem de reglare automata PID

         Pagina grafica loop_ctrl_00 din cadrul proiectului SCADA Sist_regl contine un SRA (sistem de reglare automata) de tip PID (proportional-integrativ-derivativ) discret.


        Avem nevoie de asemenea de doua variabile de tip Trand TAG pentru a afisa evolutia in timp a comenzii si a iesirii(valorii reglate).


        Pentru realizarea aplicatiei, trebuie sa mai adaugam urmatoarele TAG-uri:

    Tag-uri aferente
    Nume Tip Domeniu Um Array Size Comentariu
    init_00 DIGITAL - - - Variabila pentu initializare
    mod_f DIGITAL - - - RA Mod de functionare(Automat/Manual)


        Pentru a actualiza elementele grafice de pe HMI s-a plasat pe ecran functia ini_00(); reglare_00():

    FUNCTION ini_00()
      IF init_00=0 THEN 
    	kp=0.5;
      	ki=2.5;
      	kd=0.2;
      	r=100;
      	y=50;
      	Te=0.250;
      	mod_f=1;
      	init_00=1;
      END
    END
    FUNCTION reglare_00()
    	IF mod_f=1 THEN
    		IF v>0 THEN 
      			y=r-v;
      			IF y<0 THEN 
      				y=0;
      			END
      			y_v=y;
       			v=0;
    		END
    		e=r-y;
    		inte = inte + e * Te;
            deriv = (e - e_v) / Te;
            u = kp * e + ki * inte + kd * deriv;
    		y = (u * Te + 5 * y_v) / (5 + Te);
    		e_v = e;
    		y_v = y;
    	END		
    END
    


         Pentru a introduce un element perturbativ in sistem, s-a introdus un slider cu care se poate seta valoarea v.
         In functia reglare_00() se forteaza iesirea y la valoarea y-v daca v>0;

         Utilizare Genie Faceplate intr-un sistem de reglare automata PID

        Putem adauga aplicatiei un Genie Faceplate realizand astfel pagina grafica loop_ctrl_01 .


        Genie Faceplate necesita o serie de TAG-uri cu nume predefinite pentru a putea fi folosit cum ar fi: LOOP_1_OPM, LOOP_1_PV, LOOP_1_OP, LOOP_1_SP.
        Nu vom folosi deci variabilele consacrate unui SRA (mod_f,r,u,y), vom defini:
        Pentru realizarea aplicatiei, adaugam urmatoarele TAG-uri:

    Tag-uri aferente
    Nume Tip Domeniu Um Array Size Comentariu
    init_01 DIGITAL - - - Variabila pentu initializare
    LOOP_1_OPM DIGITAL - - - RA Output mode
    LOOP_1_PV REAL 250 - - RA- y - Process variable
    LOOP_1_OP REAL 250 - - RA - u - comanda Output
    LOOP_1_SP REAL 250 - - RA - r - Set Point

        Avem nevoie de asemenea de doua variabile de tip Trand TAG pentru a afisa evolutia in timp a comenzii si a iesirii(valorii reglate).



        Pentru a actualiza elementele grafice de pe HMI s-a plasat pe ecran functia ini_01(); reglare_01():

    FUNCTION ini_01()
      IF init_01=0 THEN 
    	kp=0.5;
      	ki=2.5;
      	kd=0.2;
      	LOOP_1_SP=75;
      	LOOP_1_PV=50;
      	Te=0.250;
      	LOOP_1_OPM=1
      	init_01=1;
      END
    END
    FUNCTION reglare_01()
    	IF LOOP_1_OPM=1 THEN
    		IF v>0 THEN 
      			LOOP_1_PV=r-v;
      			IF LOOP_1_PV<0 THEN 
      				LOOP_1_PV=0;
      			END
      			y_v=LOOP_1_PV;
       			v=0;
    		END
    		// e=r-y
    		e = LOOP_1_SP -	LOOP_1_PV
    		inte = inte + e * Te;
            deriv = (e - e_v) / Te;
            //u = kp * e + ki * inte + kd * deriv;
            LOOP_1_OP = kp * e + ki * inte + kd * deriv;
            // y = (u*Te + 5 * y_v) / (5 + Te);
    		LOOP_1_PV = (LOOP_1_OP*Te + 5 * y_v) / (5 + Te);
    		e_v=e;
    		// y_v = y;
    		y_v=LOOP_1_PV
    	END		
    END
    


         Sistem de reglare automata PI

        Urmatoarea pagina grafica loop_ctrl_03 face parte din proiectul SCADA Sist_regl contine un sistem de reglare automata SRA generic de tip PI (proportional-integrativ) discret.
        Se foloseste metoda “Velocity PI” sau “incrementala” pentru un sistem avand functia de transfer Hf(s)=1/(5s+1)
        Dupa discretizare, se obtine relatia pentru comanda u:

    u = u_v + e*(kp+ (ki*(Te/2))) + e_v*((ki*(Te / 2)) - kp);

        In care:
        Variabila de proces adica iesirea y reprezentand totodata marimea reglata ar trebui sa provina din procesul tehnologic(PT) prin plasarea unui traductor. Aplicatia fiind o simulare, vom simula y cu relatia:

    y = (u*Te + 5 * y_v) / (5 + Te);

        In care:
        Dupa cum se observa ea depinde de de y_v(y din pasul anterior), comanda u din pasul curent si de timpul de esantionare Te


        Pentru realizarea aplicatiei, avem nevoie deci de urmatoarele TAG-uri:

    Tag-uri aferente
    Nume Tip Domeniu Um Array Size Comentariu
    init_03 DIGITAL - - - Variabila pentu initializare
    mod_f DIGITAL - - - RA Mod de functionare(Automat/Manual)
    y REAL 250 - - RA- y - Iesirea, Process variable
    y_v REAL 250 - - RA- y_v - Iesirea_v, Process variable_v
    u REAL 250 - - RA - u - Comanda Output
    r REAL 250 - - RA - r - Referinta, Set Point
    e REAL -250 +250 - - RA - e - Eroarea Error
    e_v REAL -250 +250 - - RA - e_v - Eroarea_v Error_v
    v REAL 250 - - RA - v - Perturbatia
    kp REAL 10 - - RA - kp - coeficient roportional
    ki REAL 5 - - RA - ki - coeficient integrativ
    Te REAL 5 - - RA - Te - Timp de esantionare
    inte REAL 5 - - RA - inte - Element integrativ

        Avem nevoie de asemenea de doua variabile de tip Trand TAG pentru a afisa evolutia in timp a comenzii si a iesirii(valorii reglate).



        Pentru a afisa graficele, de pe HMI s-a plasat pe ecran functia ini_03(); regl_03():

    FUNCTION ini_03()
      IF init_03=0 THEN 
    	kp=0.5;
      	ki=2.5;
      	r=125;
      	y=50;
      	Te=0.250;
      	mod_f=1;
      	init_03=1;
      END
    END
    FUNCTION reglare_03()
    	IF mod_f=1 THEN
    			IF v>0 THEN 
      			y=r-v;
      			IF y<0 THEN 
      				y=0;
      			END
      			y_v=y;
       			v=0;
    		END
    		e=r-y;
    		u = u_v + e*(kp+ (ki*(Te/2))) + e_v*((ki*(Te / 2)) - kp);
    		y = (u*Te + 5 * y_v) / (5 + Te);
    		e_v = e;
    		y_v = y;
    		u_v = u;
    	END
    END
    


         Utilizare Genie Faceplate intr-un sistem de reglare automata PI

        Urmatoarea pagina grafica loop_ctrl_02 face parte din proiectul SCADA Sist_regl contine un sistem de reglare automata SRA generic de tip PI (proportional-integrativ) discret.


        Pentru realizarea aplicatiei, avem nevoie deci de urmatoarele TAG-uri:

    Tag-uri aferente
    Nume Tip Domeniu Um Array Size Comentariu
    init_02 DIGITAL - - - Variabila pentu initializare
    LOOP_1_OPM DIGITAL - - - RA Output mode
    LOOP_1_PV REAL 250 - - RA- y - Ierirea, Process variable
    y_v REAL 250 - - RA- y_v - Process variable_v
    LOOP_1_OP REAL 250 - - RA - u - Comanda, Output
    u_v REAL 250 - - RA - u_v - Comanda_v, Output_v
    LOOP_1_SP REAL 250 - - RA - r - Refereinta, Set Point
    e REAL -250 +250 - - RA - e -Eroarea, Error
    e_v REAL -250 +250 - - RA - e_v - Error_v
    v REAL 250 - - RA - v - Perturbatia
    kp REAL 10 - - RA - kp - Coeficient Proportional
    ki REAL 5 - - RA - ki - Coeficient Integrativ
    Te REAL 5 - - RA - Te - Timp de esantionare

        Avem nevoie de asemenea de doua variabile de tip Trand TAG pentru a afisa evolutia in timp a comenzii si a iesirii(valorii reglate).



        Pentru a actualiza elementele grafice de pe HMI s-a plasat pe ecran functia ini_02; reglare_02:

    FUNCTION ini_02()
      IF init_02=0 THEN 
    	kp=0.5;
      	ki=2.5;
      	LOOP_1_SP=175;
      	LOOP_1_PV=50;
      	Te=0.250;
      	LOOP_1_OPM=1
      	init_02=1;
      END
    END
    FUNCTION reglare_02()
    	IF LOOP_1_OPM=1 THEN
    		IF v>0 THEN 
      			LOOP_1_PV=r-v;
      			IF LOOP_1_PV<0 THEN 
      				LOOP_1_PV=0;
      			END
      			y_v=LOOP_1_PV;
       			v=0;
    		END	
    		// e=r-y
    		e = LOOP_1_SP -	LOOP_1_PV
    		// u = u_v + e*(kp+ (ki*(Te/2))) + e_v*((ki*(Te / 2)) - kp);
    		LOOP_1_OP=u_v+e*(kp+(ki*(Te/2)))+e_v*((ki*(Te/2))-kp);
    		// y = (u*Te + 5 * y_v) / (5 + Te);
    		LOOP_1_PV=(LOOP_1_OP*Te+5*y_v)/(5+Te);
    		e_v = e;
    		//e_v=LOOP_1_E;
    		// y_v = y;
    		y_v=LOOP_1_PV
    		// u_v = u;
    		u_v=LOOP_1_OP;
    	END		
    END
    


         Sistem SCADA pentru controlul nivelului unui lichid intr-un rezervor

         Vom realiza o noua pagina grafica numita "sra_niv" in cadrul proiectului Sist_regl.


        Pentru realizarea aplicatiei, avem nevoie deci de urmatoarele TAG-uri:

    Tag-uri aferente
    Nume Tip Domeniu Um Array Size Comentariu
    init_04 DIGITAL - - - Variabila pentu initializare
    mod_f DIGITAL - - - RA Mod de functionare(Automat/Manual)
    y REAL 250 - - RA- y - Iesirea, Process variable
    y_v REAL 250 - - RA- y_v - Iesirea_v, Process variable_v
    u REAL 250 - - RA - u - Comanda Output
    r REAL 250 - - RA - r - Referinta, Set Point
    e REAL -250 +250 - - RA - e - Eroarea Error
    e_v REAL -250 +250 - - RA - e_v - Eroarea_v Error_v
    v REAL 250 - - RA - v - Perturbatia
    kp REAL 10 - - RA - kp - coeficient roportional
    ki REAL 5 - - RA - ki - coeficient integrativ
    Te REAL 5 - - RA - Te - Timp de esantionare
    inte REAL 5 - - RA - inte - Element integrativ
    depl_d INT 10 - - Deplasare sageti alimentare
    depl_c INT 10 - - Deplasare sageti consum
    pmp DIGITAL - - - Comanda pompa

        Avem nevoie de asemenea de doua variabile de tip Trand TAG pentru a afisa evolutia in timp a comenzii si a iesirii(valorii reglate).


        

    FUNCTION ini_04()
      IF init_04=0 THEN 
    	kp=1.25;
      	ki=2.5;
      	r=75;
      	Te=0.250;
      	mod_f=1;
      	init_04=1;
      END
    END
    FUNCTION reglare_04()
    	IF mod_f=1 THEN
    		IF v>0 THEN 
      			y=r-v;
      			IF y<0 THEN 
      				y=0;
      			END
      			y_v=y;
       			v=0;
    		END
    		e=r-y
    		u = u_v + e*(kp+ (ki*(Te/2))) + e_v*((ki*(Te / 2)) - kp);
    		y = (u*Te + 5 * y_v) / (5 + Te);
    		e_v = e;
    		y_v = y;
    		u_v = u;
    	END
    	IF u>0 THEN 
    		pmp=1;
    	ELSE
    		pmp=0;
    	END
    	IF pmp=1 THEN
    		depl_d=depl_d+1
    	END
    	IF depl_d>10 THEN
    		depl_d=0
    	END
    	depl_c=depl_c+1
    	IF depl_c>10 THEN
    		depl_c=0
    	END
    END