Politechnika Gdańska
Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania
KOMPUTEROWE SYSTEMY STEROWANIA (sem. 6)
Sterowanie optymalizacyjne
Opracowanie:
Tomasz Rutkowski, dr inż.
Jarosław Tarnawski, dr inż.
Arkadiusz Cimiński, mgr inż.
Gdańsk, kwiecień 2010
2
Celem ćwiczenia jest wykorzystanie odpowiednio sformułowanego problemu optymalizacji do sterowania stacją pompowania z zbiornikiem (schemat technologiczny na rys.1), której celem jest dostarczenie odpowiedniej ilości wody do systemu wodociągowego (SW).
Pomiar przepływu
Pomiar poziomu
Zbiornik
Rozdzielacz Pompa
Ujęcie wody
SW
qp
qr
Rys. 1 Przykładowy schemat technologiczny stacji pompowania z zbiornikiem dostarczającej wodę do SW.
Cel stacji realizowany jest za pomocą urządzeń wykonawczych: pompa oraz rozdzielacz. Wartości sygnałów sterujących tymi elementami to ilość wody przepływającej przez pompę oraz rozdzielacz. W sformułowaniu zadania optymalizacji zakłada się, że:
• lokalny układ sterowania pompą jest na tyle szybki, że z punktu widzenia optymalizatora traktowany jest jako element bezinercyjny o charakterystyce statycznej przestawionej na rys. 2a;
• rozdzielacz doprowadzający/odprowadzający wodę z/do zbiornika jest elementem statycznym o charakterystyce jak na rys. 2b.
3
Rys. 2 Charakterystyki statyczne urządzeń wykonawczych stacji.
Stacja ma następujące ograniczenia technologiczne:
• minimalna i maksymalna ilość wody w zbiorniku, odpowiednio: Vmin=50 i Vmax=500 [m3];
• ilość wody w zbiorniku na początku symulacji V(t0)=300 [m3];
• maksymalne odchylenie ilości wody w zbiorniku na początku i końcu horyzontu predykcji ∆V=|V(t0|t0)-V(t0+Hp|t0)|=10 [m3];
• maksymalna i minimalna wartość zadanej pompą: qpmin=0 i qpmax100 [m3];
• maksymalna i minimalna wartość zadanej rozdzielaczem: urmin = -100 i urmax = 100 [m3];
• maksymalna szybkość zmian sygnału sterującego pompą i rozdzielaczem: 20 i 30 [m3].
Dodatkowo należy spełnić warunek aby stan lustra wody w zbiorniku na początku i końcu horyzontu predykcji był podobny.
Sformułowanie zadania optymalizacji wyznaczania sterowania pompą i rozdzielaczem:
0 10 20 30 40 50 60 70 80 90 100
0 10 20 30 40 50 60 70 80 90 100
Charakterystyka pompy
Przeplyw [m3/h]
Wartosc zadana pompa - 'up'
-100 -80 -60 -40 -20 0 20 40 60 80 100
-100 -80 -60 -40 -20 0 20 40 60 80 100
Charakterystyka zaworu
Wartosc zadana rozdzielacza - 'uz' Przeplyw [m3/h]
a) b)
4 Definicja zmiennych
Wektor zmiennych zadania jest postaci:
( ) ( ) ( ) ( )
[
qzadp t Hs ,qzadr t Hs ,V t Hp ,qzad t Hp]
x= 0+ 0 + 0+ 0 +
,gdzie
(
s)
p
zad t H
q 0 + - trajektoria zadana przepływu przez pompę dana na horyzont sterowania t0:t0+Hs,
(
s)
r
zad t H
q 0+ - trajektoria zadana przepływu przez rozdzielacz dana na horyzont sterowania t0:t0+Hs, V
(
t0+Hp)
- wyznaczona trajektoria ilości wody w zbiorniku dana na horyzont predykcji t0:t0 +Hp , qzad(
t0+Hp)
-przewidywana ilość wody pobierana przez odbiorców SW dana na horyzont predykcji Hp
t :
t0 0+ .
Funkcja kryterialna (celu)
( ) ( ( ) ( ) )
⋅ + ⋅ −
=
∑ ∑
=
=
s Hp
k zad q
H
k
u u w q k q k
w min x f min
0
2 0
2
Ograniczenia modelowe na bilans masy wody w węźle
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
( )
p rzad( )
p zad( )
pp zad
p zad p
r zad p
p zad
zad r
zad p
zad
zad r
zad p
zad
zad r
zad p
zad
H q H q H q
H q H
q H
q ...
k q k q k q ...
q q
q
q q
q
= +
−
=
− +
−
= +
= +
= +
1 1
1
1 1
1
0 0
0
;k∈0,Hp
Ograniczenia modelowe na bilans masy wody w zbiorniku
( ) ( ) ( )
( ) ( )
( ) ( )
( ) ( )
(
p)
zadr( )
p pr zad p
r zad r zad r zad
H q H
V
H q H V ...
k q k
V ...
q V
q V
V V
= +
−
=
= +
=
=
=
1
1 1
1 2
0 1
0 0
;k∈1,Hp
Ograniczenia na zmienne
5
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
( )
k q( )
k q( )
kq
k V k V k V
k q k q k q
k q k q k q
max zad zad
min zad
max min
max , r zad r
zad min
, r zad
max , p zad p
zad min
, p zad
≤
≤
≤
≤
≤
≤
≤
≤
;k∈0,Hp
Stacja pompowania sterowana jest z wykorzystaniem następującej struktury sterowania (rys.3).
Pomiar przepływu
Pomiar poziomu
Zbiornik Zawór Pompa
Ujęcie wody
Komputer „1” - Matlab
P L C
S C A D A
O P T Y M A
L I Z A C J A Komputer „2” – InTouch i Matlab
Obiekt sterowania
Algorytm sterowania optymalizującego V(t), qzad(t0:Np)
c(t0:Np)
qpzad (t0:Np), qrzad(t0:Np), k(t0:Np), Q(t0:Np) V(t0:Np) qpzad(t),
qrzad(t) V(t) , qzad(t) V(t), q(t)
qpzad(t), αzad(t)
Rys. 3 Schemat poglądowy układu sterowania stacją dostarczania wody do SW z pomocą optymalizacji.
,gdzie: V(t) – ilość wody w zbiorniku w chwili czasu t w [m3]; q(t) – wypływ ze stacji w chwili czasu t w [m3/h]; qzad(t0:Hp) – wektor zapotrzebowania na wodę przez SW określony w chwili czasu t0 na horyzont czasu t0:Hp w [m3/h]; c(t0:Hs) - wektor ceny energii elektrycznej określony w chwili czasu t0 na horyzont sterowania t0:Hs w [zł];
k(t0:Hs) – całkowity koszt sterowania pompą wyznaczony w chwili czasu t0 na horyzoncie sterowania t0:Hs w [zł]; qpzad(t0:Hs), qrzad (t0:Hs) –wartość zadana pompą i rozdzielaczem wyznaczone w chwili czasu t0 na horyzont predykcji t0:Hs; qpzad(t), qrzad
(t)– odpowiednio wartość zadana pompą i rozdzielaczem dane w chwili czasu t w [m3/h]; Q(t0:Hs) – wypływ ze stacji wyznaczony przez optymalizator wyznaczony w chwili czasu t0 na horyzont predykcji t0:Hs w [m3/h].
!!!UWAGA!!!
Do budowy układu sterowania wykorzystaj informacje z poprzednich laboratoriów oraz informacje zawarte poniżej.
6
Do bloku OPTYMALIZACJA dana jest funkcja o nazwie „MPC_SW.p”, która rozwiązuje zadanie optymalizacji wyznaczania sterowania pompą i rozdzielaczem na podstawie koniecznych informacji. Wywołanie funkcji jest o składni:
[U tr_zb koszt Q]=MPC_SW(Hs, Hp, w_u, w_q, V0, eps_V0, V_min_max, u_min_max, profil_cena, profil_poboru);
U – macierz i rozmiarach [2xHs], która składa się z dwóch wektorów kolumnowych sterowań pompą qpzad(t0:Hs)=U(:,1) oraz rozdzielaczem qrzad (t0:Hs)=U(:,2);
tr_zb – trajektoria zbiornika wyznaczona na podstawie wyznaczonego sterowania U;
koszt – koszt sterowania pompą;
Q – trajektoria przepływu do odbiorców SW realizowana dla wyznaczonego sterowania U;
Hs – długość horyzontu sterowania [h];
Hp – długość horyzontu predykcji [h];
w_u – waga przy składniku funkcji celu odpowiadającej za koszt sterowania;
w_q – waga przy składniku funkcji celu odpowiadającej za odchylenie trajektorii zadanej realizowanej;
V0 – stan lustra wody w zbiorniku w chwili czasu t0;
eps_V0 – maksymalne odchylenie wartości stanu lustra wody w zbiorniku na końcu horyzontu predykcji od wartości na początku tego horyzontu;
V_min_max – wektor ograniczeń zbiornika o rozmiarze [1x2] w postaci: [Vmin Vmax];
u_min_max – macierz zawierająca ograniczenia sterowań urządzeniami wykonawczymi stacji o rozmiarze [2x3] w postaci:[qpzad,min qp zad,max dqp; qrzad,min qrzad,max dqr], gdzie qpzad,min, qpzad,max, qrzad,min, qrzad,max – minimalna i maksymalna wartość sterowania odpowiednio pompą i rozdzielaczem; dqp, dqr; maksymalna szybkość zmiany sterowania odpowiednio pompą i rozdzielaczem;
profil_cena – profil ceny sterowania pompą;
profil_poboru – profil poboru wody przez SW.
Profil poboru wody oraz strukturę profilu ceny jest taka sama jak w laboratorium T5.
7
Informacje mogące pomóc w wykonywaniu ćwiczenia
Skrypty w InTouch
Skrypty w InTouch umożliwiają wprowadzanie algorytmów użytkownika udostępniając w ten sposób możliwość realizacji sterowania nadzorczego. Skrypty wprowadzane są w języku wysokiego poziomu zbliżonego do języka Pascal.
Mamy do dyspozycji skrypty aplikacyjne, związane ze skrótem klawiaturowym, skrypty warunkowe oraz monitorujące zmianę zmiennych.
Rys. 4 Okno widoku skryptów
Skrypty typu aplikacyjnego dotyczą całej aplikacji InTouch i umożliwiają pracę w trzech trybach:
• Podczas startu aplikacji (On Startup)
• Podczas działania aplikacji (While Running) z określonym okresem (Every x msec)
• Podczas zakończenia pracy aplikacji (On Shutdown)
Rys. 5 Skrypt aplikacyjny
8
Skrypty związane z klawiszami umożliwiają wywołanie logiki określonej przez użytkownika w przypadku naciśnięcia, trzymania naciśniętego, bądź zwolnienia klawisza klawiatury.
Rys. 6 Skrypt działający przy naciśnięciu klawisza
Skrypty warunkowe umożliwiają ciągłe monitorowanie wyrażenia logicznego i reakcję w zależności od spełnienia i niespełnienia tego warunku
Rys. 7 Skrypt warunkowy
Skrypty związane z monitorowaniem zmiany zmiennej umożliwiają reakcję na taką zmianę.
9
Rys. 8 Skrypt działający przy zmianie wartości danej zmiennej
Pilnowanie czasu w InTouch
Zmienne systemowe związane z czasem:
$Date
$DateString
$DateTime
$Day
$Hour
$Minute
$Month
$Msec
$Second
$Time
$TimeString
$Year
Zmienne te mogą być wykorzystywane w skryptach użytkownika w celu kontroli nad czasem, zmiany parametrów prowadzenia procesu, zmiany reżimu produkcji, odliczania czasu itd.
InTouch jako serwer, Matlab jako klient
Dostępne polecenia w Matlabie jako kliencie DDE to:
ddeadv - Set up advisory link.
ddeexec - Send string for execution.
ddeinit - Initiate DDE conversation.
10
ddepoke - Send data to application.
ddereq - Request data from application.
ddeterm - Terminate DDE conversation.
ddeunadv - Release advisory link.
W celu zainicjowania komunikacji program View InTouch musi być uruchomiony. W Matlabie inicjujemy połączenie komendą DDEinit
channel = ddeinit('View','Tagname')
Dane pobieramy komendą ddereq podając otwarty wcześniej kanał oraz nazwę zmiennej
dane = ddereq(channel, 'v')
Dane wpisujemy podając wcześniej otwarty kanał, nazwę zmiennej i wartość do wpisania
ddepoke(channel, 'v', 23.24)