Aeronautica | Comunicatii | Constructii | Electronica | Navigatie | Pompieri | |
Tehnica mecanica |
Automatizarea unui punct termic din reteaua de termoficare
Optimizare
In aceasta etapa, folosind datele experimentale si cunoscand structura modelului neliniar multivariabil, trebuie gasite valorile optime ale celor trei marimi y1, y2 si y3 (temperatura a.c.m., temperatura apa incalzire, respectiv caderea de presiune), astfel incat sa se asigure o valoarea minima a temperaturii agentului de incalzire la iesirea din sistem (marimea z).
Date experimentale pentru optimizarea regimului de functionare.
Nr. |
Apa calda de consum |
Agent termic secundar de incalzire |
Agent termic secundar de incalzire |
|
Temperatura a.c.m. |
Temperatura apa incalzire |
Caderea de presiune |
Temperatura apa incalzire |
|
Tur |
Tur |
Retur |
||
[ oC] |
[ oC] |
[barr] |
[ oC] |
|
y1 |
y2 |
y3 |
z |
|
| ||||
|
Structura modelului neliniar multivariabil este urmatoarea:
.
Din datele experimentale, se pot deduce restrictiile:
reprezentand intervalele de variatie ale celor trei marimi.
Pentru aflarea parametrilor modelului, am folosit setul de date numerice, pe care le-am normat/liniarizat, astfel:
y1 devine ;
y2 devine;
y3 devine (de la ).
Ecuatia care descrie sistemul este:
=
Codul Matlab care calculeaza vectorul parametrilor (A = ) este urmatorul:
% A - vectorul parametrilor modelului A = [a0, a1, a2, a3]'
function [A] = optimizare(y,z)
% Normarea/liniarizarea vectorului y
y = [y(:,1) y(:,2)/100 10*y(:,3).^-1 y(:,4).^2/100];
Calcularea vectorului parametrilor A
A = z/(y');
Comanda Matlab de rulare a programului:
>> [A] = optimizare([1 65.18 47.62 2.75;1 64.57 47.55 2.74;1 62.63 47.59 2.74;1 58.20 47.48 2.70;
1 58.03 47.45 2.70;1 57.66 47.41 2.71;1 49.91 47.40 2.73;1 49.16 47.33 2.74;
1 47.33 47.33 2.73;1 47.90 47.25 2.73;1 46.95 47.25 2.72;1 44.40 45.80 2.68;
1 42.67 4473 2.67;1 51.13 42.64 3.77;1 56.20 41.85 3.77;1 51.70 41.47 3.85;
1 47.74 41.14 3.81;1 45.84 40.45 3.81;1 45.38 40.24 3.85;1 47.52 39.72 3.84;
1 50.07 39.24 3.83;1 50.86 38.82 3.87;1 48.98 38.25 3.87;1 47.21 37.84 3.81;
1 47.10 37.61 3.84;1 48.48 35.33 3.92;1 48.78 35.00 3.94;1 48.93 34.63 3.97;
1 51.19 34.50 3.98;1 50.29 34.20 3.95],
[42.60 42.60 42.60 42.60 42.60 42.60 42.60 42.56 42.53 42.53 42.53 42.38 42.31 42.30 42.20 41.85 41.52 41.10 40.63 41.11 39.60 39.10 38.62 38.17 37.72 35.33 35.03 34.68 34.35 34.05])
Vectorul rezultat este:
A =
45.9814 5.1360 -16.2143 -38.4110 =
Cunoscand functia ce caracterizeaza modelul, putem determina marimile y1, y2 si y3 optime pentru o valoare minima a functiei, daca impartim functia in mai multe functii si determinam yi optim (i = ), pentru ca fiecare dintre cele trei functii sa fie minima.
f1 = a0 + a1y1, functie ce caracterizeaza o dreapta. Pentru ca f1 sa fie minima (avand in vedere ca a0 si a1 sunt pozitivi), trebuie ca y1 sa fie minim. Cum y1 variaza in intervalul [42.67 , 65.18],
y1minim = 42.67
f2 = . Tinand cont de faptul ca a2 este negativ, f2 minima cand y2 minim, deci cand
y2minim = 34.20
f3 = . A3 este si el negativ, deci f3 minima cand y3 maxim:
y3maxim = 3.98
Cu aceste date, poate fi calculat zminim real, care este 37.34 ºC.
Simularea raspunsului sistemului la intrare treapta pentru cele trei functii de transfer:
TRC 1:
programul Matlab, folosind coeficientii gasiti in WinPIM, respectiv WinREG pentru model, respectiv regulator tip PID:
function []=raspunsTRC1()
BpeA = tf([0.28 0], [-0.93 0], 60);
T = tf([-2.21 3.31], [1], 60);
S = tf([-1 1], [1], 60);
R = tf([-2.21 3.31], [1], 60);
bucla_deschisa = T * BpeA / S
step(bucla_deschisa);
bucla_inchisa = T * ((BpeA / S) / (BpeA * R / S + 1))
figure;
step(bucla_inchisa);
rezultatele si graficele:
>> raspunsTRC1
Transfer function:
-0.6188 z^2 + 0.9268 z
functia de transfer in bucla deschisa
0.93 z^2 - 0.93 z
Sampling time: 60
Transfer function:
-0.5755 z^4 + 1.437 z^3 - 0.8619 z^2
functia de transfer in bucla inchisa
0.2894 z^4 - 0.2924 z^3 + 0.002976 z^2
TRC2:
programul Matlab, folosind coeficientii gasiti in WinPIM, respectiv WinREG pentru model, respectiv regulator tip PID:
function []=raspunsTRC2()
BpeA = tf([0.02 0], [-1.02 0], 300);
T = tf([-46.357 97.714], [1], 300);
S = tf([-1 1], [1], 300);
R = tf([-46.357 97.714], [1], 300);
bucla_deschisa = T * BpeA / S
step(bucla_deschisa);
bucla_inchisa = T * ((BpeA / S) / (BpeA * R / S + 1))
figure;
step(bucla_inchisa);
rezultatele si graficele:
>> raspunsTRC2
Transfer function:
-0.9271 z^2 + 1.954 z
1.02 z^2 - 1.02 z
Sampling time: 300
Transfer function:
-0.9457 z^4 + 2.939 z^3 - 1.993 z^2
0.09472 z^4 + 0.8582 z^3 - 0.953 z^2
PRC3:
Sistem discretizat:
A(0) = 1 B(1) = 0.03
A(1) = -1.45 B(2) = 0.03
A(2) = 0.51
Regulator:
R(0) = 27.47 S(0)= 1 T(0)= 16.41
R(1) = -32.45 S(1) = -0.47 T(1) = -16.22
R(2) = 10.12 S(2) = -0.53 T(2) = 4.94
programul Matlab, folosind coeficientii gasiti in WinPIM, respectiv WinREG pentru model, respectiv regulator tip PID:
function []=raspunsPRC3()
BpeA = tf([0.03 0.03 0], [0.51 -1.45 1], 5);
T = tf([4.94 -16.22 16.41], [1], 5);
S = tf([-0.53 -0.47 1], [1], 5);
R = tf([10.12 -32.45 27.47], [1], 5);
bucla_deschisa = T * BpeA / S
step(bucla_deschisa);
bucla_inchisa = T * ((BpeA / S) / (BpeA * R / S + 1))
figure;
step(bucla_inchisa);
rezultatele si graficele:
>> raspunsPRC3
Transfer function:
-0.1482 z^4 + 0.3384 z^3 - 0.0057 z^2 - 0.4923 z
0.2703 z^4 - 0.5288 z^3 - 0.6615 z^2 + 1.92 z - 1
Sampling time: 5
Transfer function:
0.04006 z^8 - 0.1698 z^7 + 0.08245 z^6 + 0.6385 z^5 - 1.062 z^4 + 0.02369 z^3
+ 0.9395 z^2 - 0.4923 z
0.009001 z^8 - 0.05575 z^7 + 0.191 z^6 - 0.4097 z^5 + 0.2068 z^4 + 1.32 z^3
- 3.278 z^2 + 3.016 z - 1
Copyright © 2024 - Toate drepturile rezervate
Instalatii | |||
|
|||
| |||
| |||
|
|||