WYKŁAD 7
PRAKTYCZNA REALIZACJA
REGULATORA PID
W STEROWNIKU
JANUSZ KWAŚNIEWSKI AGH Katedra Automatyzacji Procesów
2
Równanie regulatora PID
(prędkościowy, przyrostowy)
m
i
= a
0
e
i
+ a
1
e
i-1
+ a
2
e
i-2
- b
1
m
i–1
D10 D12 D14 D16 D18
y
o
m
i
e
i
Regulator
Obiekt
-y
i
3
Schemat blokowy algorytmu
Zerowanie komórek pamięci
Synchronizacja czasowa – próbkowanie
Generacja poprzednich chwil czasowych
Realizacja odejmowania-węzeł sumacyjny
Wymnożeń zmiennych przez współczynniki
Wpisanie równania różnicowego
Podzielenie wyniku przez mnożnik
Zerowanie komórek pamięci
Synchronizacja czasowa – próbkowanie
Generacja poprzednich chwil czasowych
Realizacja odejmowania-węzeł sumacyjny
Wymnożeń zmiennych przez współczynniki
Wpisanie równania różnicowego
Podzielenie wyniku przez mnożnik
4
Działania matematyczne mogą być
realizowane:
Na liczbach stałoprzecinkowych (jeżeli w algorytmie są współczynniki
z dokładnością paru miejsc po przecinku, to należy pomnożyć całe wyrażenie
tak, aby działanie było na liczbach całkowitych) i można tu wyróżnić
instrukcje do działań na liczbach:
w kodzie binarnym: na jednym słowie (od –32.768 w heksadecymalnym zapisie
8000H do +32.767 w heksadecymalnym zapisie 7FFFH i bez żadnego skrótu dla
dodawania +, odejmowania -, mnożenia * i dzielenia /) lub podwójnym słowie (od
-2.147.483.648 w heksadecymalnym zapisie 80000000H do +2.147.483.647
w heksadecymalnym zapisie 7FFFFFFFH ze skrótem tylko L). Ponadto dla mnożenia
i dzielenia mamy działania ze znakiem (bez żadnego skrótu) lub bez znaku wtedy
działanie oznaczone jest skrótem U lub UL w zakresie 0÷65535.
w kodzie BCD mniej pojemnym ale bardziej przyjaznym, dla dodawania
i odejmowania bez uwzględnienia przeniesienia oraz mnożenia i dzielenia: na
słowie (od –9.999 do +9.999 i ze skrótem w instrukcji B) lub podwójnym słowie
(od –99.999.999 do +99.999.999 i ze skrótem w instrukcji BL) i z przeniesieniem
CARRY a wtedy w skrócie dochodzi literka C (BC lub BCL) i poprzedzająca
instrukcja zerująca przeniesienie CLC (041).
Dane do powyższych instrukcji w postaci binarnej (heksadecymalnej) i BCD
poprzedzone są znakiem # a dziesiętne bez znaku wpisuje się po znaku &.
Na liczbach zmiennoprzecinkowych (3.402823E+38) – są to instrukcje
dla 64 bitów +D (845), -D(846),*D(847) i /D(848). Wpisujemy +5,7
5
Próbkowanie i węzeł sumacyjny
│e
i
│
w
D12
6
Mnożenie dla wersji równania 100
m
i
= 50 e
i
7
Obliczanie całki
CLC (041)
MOV (021)
100
D0026
e
i
e
i
+BC(406)
D 0026
D 0020
D 0020
Załączenie próbowania co 0,1 sek –są to
kolejne chwile czasowe i – umożliwiają
wprowadzać dane z kanału CIO 100 do
komórki pamięci D 26 w czasie jednego
cyklu.
D 20 = D 20 + e
i
(D 26)
Po przekroczeniu wartości maksymalnej
rejestru t.j. 9999, zadziała przeniesienie
P_CY i dla stanu 0000 przez okres
jednego cyklu będzie miało stan wysoki.
Obok przytoczonej tu instrukcji +BC (w
starszych wersjach ADD), która wymaga
poprzedzającej ją instrukcji CLC, która
kasuje
przeniesienie,
można
tu
zastosować
instrukcję
+,
+L
bez
instrukcji CLC.
Rejestr ten można wykorzystać do
zliczania kolejnych wartości np. do
wyznaczenia
wartości
całkowego
wskaźnika jakości z przebiegu uchybu
regulacji lub algorytmu przyrostowego
PID.
P_0_1s
0.1 sek
DIFU(013)
9.1
9.1
P_CY
Przeni
e-
sienie
SET
20.0
T
e
n
i
1
T
e
n
i
8
Generacja poprzednich chwil czasowych
MOV (021)
D 0014
D 0016
MOV (021)
D 0010
D 0018
m
i
e
i
W każdej chwili próbkowania co 0,1 sek
dane z kanału CIO 100 będą przepisywane
do komórki pamięci D 12.
Analogicznie
będzie
z
kolejnymi
wartościami
sygnału
e
i
które
będą
przepisane w drugiej chwili próbkowania do
komórki pamięci D 14 a następnie w trzeciej
chwili próbkowani będą przepisane do
komórki D 16. W efekcie końcowym w
komórkach D14 i D16 będą znajdować się
wartości sygnału e
i
z poprzednich chwil
czasowych.
m
i-1
MOV (021)
D 0012
D 0014
MOV (021)
100
D 0012
e
i-1
e
i
e
i-1
e
i-2
Załączenie
próbkowania
co
0,1
sek
umożliwia wprowadzenie wartości z kanału
D 10, gdzie znajduje się wyliczona wartość
wyjścia
regulatora
m
i
która
będzie
przepisana do komórki D 18. Będzie to
miało miejsce dopiero w drugiej chwili
próbkowania, czyli będzie to pierwsza
chwila czasowa „do tyłu” m
i-1
. Wartość ta
będzie wykorzystana dopiero w drugiej
chwili próbkowania.
P_0_1s
0,1
sek
DIFU(013)
9.1
9.1
9
Równanie m
i
=e
i
+e
i–1
+e
i–2
-m
i–1
Fragment
oprogramowania
w
sytuacji, gdy wynik odejmowania
jest ujemny.
CLC tylko gdy stosowane jest
P_CY !!!!
CLC
(041)
e
i
e
i-1
m
i
+BC(40
6)
D 0012
D 0014
D 0010
Załączenie warunku co 0.1 s – są to
kolejne chwile próbkowania i – powoduje
na
początku
dodawanie
dwóch
pierwszych składników sumy a wynik
umieszczony jest w komórce pamięci D
10, czyli mamy
m
i
= e
i
+ e
i-1
CLC
(041)
m
i
e
i-
2
m
i
+BC(40
6)
D 0010
D 0016
D 0010
CLC
(041)
m
i
m
i-1
m
i
-BC(414)
D 0010
D 0018
D 0010
Następnie dodany jest trzeci składnik
sumy a jej wynik wpisany jest do komórki
D 10 czyli w tym miejscu programu mamy
m
i
=e
i
+ e
i-1
+ e
i-2
P_CY
Przenie
-sienie
CLC
(41)
m
i
m
i
-BC(414)
# 0000
D 0010
D 0010
Na końcu odejmowany jest ostatni składnik
sumy a jej wynik wpisany jest do komórki
D 10, czyli
m
i
= e
i
+ e
i-1
+ e
i-2
- m
i-1
P_0_1s
0.1
sek
DIFU(013)
9.1
9.
1
10
Operacja przypisania
R := X lub X R oznacza przesunięcie zawartości rejestru
X do rejestru R, co w sterowniku np. firmy OMRON
zapisujemy jako MOV X R,
Jeżeli X jest argumentem bezpośrednim (stałą), to
zapisujemy go z symbolem #, np. MOV #100 R, tzn. do
rejestru R przesuwana jest liczba 100 (zapis w odwrotnej
kolejności nie ma sensu !),
*R := X lub X *R oznacza przesunięcie zawartości
rejestru X do rejestru którego adres znajduje się w R, co w
sterowniku zapisujemy jako MOV X *R lub MOV X [R]; jest to
tzw. adresowanie pośrednie,
R := operacja (Y,X) lub operacja (Y,X) R oznacza
wybraną operację arytmetyczna lub logiczna wykonaną na
rejestrach (Y, X) np. R := Y + X, co w sterowniku
zapisujemy jako ADD Y X R, często Y=R tzn., że zawartość
rejestru X dodawana jest do dotychczasowej zawartości
rejestru R.
11
Pełny program regulatora PID
D 6D 26 :=
Wyzerowanie rejestrów, istotne w przypadku nagłego wyłączenia napięcia
zasilającego (zastosowanie programu z adresowaniem pośrednim lub
instrukcji BSET).
D18 := D10
Instrukcja generowania m
i –1
(MOV).
D16 := D14
Instrukcja generowania e
i –2
(MOV).
D14 := D12
Instrukcja generowania e
i –1
(MOV).
D 6 := IR 110
Wprowadzenie wartości zadanej y
0
(instrukcja MOV, IN).
D 8 := IR 112
Wprowadzenie wartości z wyjścia obiektu y
i
, sygnał sprzężenia zwrotnego
(instrukcja MOV, IN).
D 12 := D 6 – D
8
Obliczenie wartości uchybu regulacji e
i
= y
0
– y
i
(-, -BC, SUB) *)
D12 := D22
D12
a
0
e
i
tutaj 50 e
i
(*, *B, MUL) *)
D14 := D24
D14
a
1
e
i -1
tutaj 1 e
i –1
(*, *B, MUL) *)
D10 := D12 +
D14
m
i
= a
0
e
i
+ a
1
e
i –1
tutaj 100 m
i
= 50 e
i
+ e
i –1
(+, +BC, ADD) *)
D16 := D26
D16
a
2
e
i -2
tutaj 2000 e
i –2
(*, *B, MUL) *)
D10 := D10 +
D16
m
i
= a
0
e
i
+ a
1
e
i –1
+ a
2
e
i -2
tutaj 100 m
i
= 50 e
i
+ e
i –1
+ 2000 e
i -2
(+, +BC, ADD) *)
D18 := D 28
D18
b
1
m
i –1
tutaj 100 m
i –1
(*, *B, MUL) *)
D10 := D10 –
D18
m
i
= a
0
e
i
+ a
1
e
i -1
+ a
2
e
i -2
- b
1
m
i –1
tutaj 100 m
i
= 50 e
i
+ e
i –1
+ 2000 e
i -2
- 100 m
i –1
(-, -BC, SUB)*)
D10 := D10 :
#100
Podzielenie przez 100 lub przesunięcie zawartości D10 w prawo o dwie cyfry
(2xSRD) dla BCD
*) w sterownikach firmy OMRON instrukcje matematyczne dodawania i odejmowania z przeniesieniem
P_CY należy poprzedzić skasowaniem tego przeniesienia (CLC) jeżeli jest wykorzystywane.
Trzeba również pamiętać o fragmencie programu dla uchybu mniejszego od zera w odejmowaniu oraz
ocenić wymaganą dokładność, aby ewentualnie wybrać instrukcje pracujące na podwójnym słowie (L)
lub korzystające z zapisu zmiennoprzecinkowego.
m
i
= a
0
e
i
+ a
1
e
i-1
+ a
2
e
i-2
- b
1
m
i–1
m
i
= 0.5e
i
+ e
i-1
+ 20e
i-2
- m
i–1
Zła wersja programu regulatora
12
P_0_1s
0.1 sek
impulse
DIFU(013) 9.1
9.1
T1
TIM 01 #1
T1
P_0.1s
BSET #0 D6 D50
MOV IR110 D6
SV
MOV IR112 D8
Wyj
MOV IR112 D8
Wyj
e
i
=SV- Wyj
- D6 D8 D12
D50
* #0.5 D12 D12
0.5e
i
+ D12 D14 D10
m
i
= 0.5e
i
+ e
i-1
* #20 D16 D16
20 e
i-2
+ D10 D16 D10
m
i
= 0.5e
i
+ e
i-1
+ 20e
i-2
_ D10 D18 D10
MOV D10 D18
m
i-1
MOV D14 D16
e
i-2
MOV D12 D14
e
i-1
m
i
= 0.5e
i
+ e
i-1
+ 20e
i-2
- m
i– 1
^D18
^D16
^D14
^D12
^D10
Zła wersja programu
13
P_0.1s
impulse
BSET #0 D6 D50
e
i
=SV- Wyj
- D D6 D10 D14
D50
* D D34 D14 D14
0.5e
i
+D D14 D18 D10
m
i
= 0.5e
i
+ e
i-1
* D D42 D22 D22
20 e
i-2
+D D10 D 22 D10
m
i
= 0.5e
i
+ e
i-1
+ 20e
i-2
- D D10 D26 D10
MOVF D10 D26
m
i-1
MOVF D18 D22
e
i-2
MOVF D14 D18
e
i-1
m
i
= 0.5e
i
+ e
i-1
+ 20e
i-2
- m
i– 1
Zerowanie
MOVF +20 D42
20
MOVF +0,5 D34
0.5 Wpisujemy wg IEEE +0,5 !!!!!
MOVF 112 D10
Wyj (żle)
MOVF 110 D6
SV
^D26
^D22
^D18
^D14
^D10
^D34
^D38
^D42
^D46
Dobry program
14
15
Jak sprawdzić napisany regulator?
specjalistyczne oprogramowanie
nakładkowe umożliwiające symulacje, np.
symulator do SIMATIC S7, CX-Simulator –
OMRONA,
potencjometry z sygnałem cyfrowym,
w które wyposażona jest większość
sterowników,
własne oprogramowanie polegające na
podaniu znanego ciągu liczb i obserwacji
zachowania się wyjścia
16
Przeliczenie m
i
=e
i
+e
i–1
+e
i-2
-m
i–1
dla
e
i
= (1, 2, 3, 2, 1, 0, 0, 0).
Chwila próbkowania
i
m
i
e
i
e
i –1
e
i -2
m
i –1
1
1
1
0
0
0
2
2
2
1
0
1
3
4
3
2
1
2
4
3
2
3
2
4
5
3
1
2
3
3
6
0
0
1
2
3
7
1
0
0
1
0
8
-1
0
0
0
1
Badanie
regulatora
STAR
T
P_E
Q
200.0
2
MOV (021)
# 0040
D 102
CMP(020)
# 0039
D 101
++B
(594)
D 102
MOV (021)
* D 101
D 12
(=)
Do słowa pamięci D 101 wpisywany jest
początkowy adres komórki, do której wcześniej
wpisaliśmy pierwszą wartość wejściową, a do
słowa pamięci D 102 początkowy adres komórki
do której będzie wpisany wynik przeliczeń
z badanego programu np. regulatora.
W kolejnych chwilach próbkowania (tu 0,1 sek)
dzięki adresowaniu pośredniemu wpisywane są
na wejście regulatora D 12 wartości z komórek
pamięci od D 0030 do D 0039 .
Po 11. próbce instrukcja CMP uruchamia
warunek P_EQ zrównania się zwartością zadaną
#39 i dochodzi do ponownego wpisania do D
101 wartości #30
Zwiększanie zawartości D 101 i D 102 ma
miejsce
podczas
każdego
kolejnego
próbkowania (inkrementacja w kodzie BCD –
w starszych wersjach instrukcja INC(380)).
Np. stany D 101 w kolejnych próbkach są
następujące:
0030 po 1 próbce
0031 po 2 próbce
. . .
0039 po 10 próbce
0030 po 11 próbce
200.01
P_0_1s (0,1
sek)
DIFU(013)
9.1
9.
1
MOV (021)
# 0030
D 101
e
i
SBS (091)
0
++B (594)
D 101
MOV
(021)
D 14
*D 102
m
i
200.0
2
SET
200.0
1
Po naciśnięciu przycisku START rozpoczyna się
wczytywanie i przetwarzanie danych aż do
ostatniej wartości i zadziałania znacznika P_EQ
za instrukcją porównania CMP.
W sterownikach firmy OMRON można stosować
jedną instrukcję KEEP (011) zamiast dwóch
SET i RSET.
W kolejnych chwilach próbkowania wyliczane
są wartości wyjścia D 14 z badanego programu
i wpisywane są do komórek pamięci od
DM0040 do DM 0049.
Tu dochodzi do wywołania całego podprogramu
np. regulatora lub można go tu wpisać
bezpośrednio.
RSET
200.0
1
18
Firmowe instrukcje do sterowania
PID (190)
0100
PID(190)
0200
D00300
0.0
S: Słowo wejściowe (PV)
D: Słowo wyjściowe (MV)
C: Pierwsze słowo z parametrami (SV)
0 1 2 C
C : D00300
C+1: D00301
C+2: D00302
C+3: D00303
C+4: D00304
C+5: D00305
C+6: D00306
C+7: D00307
C+8: D00308
C+9÷C+39: D00309÷ D00338 Obszar roboczy – nie może być wykorzystywany
0 0 6 4
0 4 B 0
0 1 9 0
0 0 3 2
0 0 0 8
0 4 9 4
0 0 0 0
0 0 0 0
300 SV (wartość zadana) wszystkie wpisywane w kodzie heksadecymalnym
10% zakres proporcjonalności PB [%], gdzie m=e 100/PB =e K
c
120,0 s T
i
od 0001 do 1FFF (1 do 8191), gdy brak działania należy ustawić 9999
40,0 s T
d
od 0001 do 1FFF (1 do 8191), gdy brak działania należy ustawić
0000
0,50 s T czas próbkowania , minimum 6-krotnie mniejszy od najmniejszej stałej czasowej w procesie
Bity 15÷4 wartość filtra α od 0,00 do 0,99 (100 do 163), tu dla 000 =0,65,bit 3 dla 0: 0% wartości
sterującej MV gdy PV=SV, dla 1:50%, bit 1 0: jedna zmiana parametr. i bit 0 0:działanie odwrotne,1:proste
Bit 12 0: bez ograniczenia zmiennej MV, 1: z ogran., bity 11÷8 zakres wejścia, np. 4 :12 bitów, bity 3÷0
zakres wyjścia, bity 7÷4 postać stałych czasowych, 1: wymnożenie przez czas próbkowania (0: x100 ms)
Ograniczenie górne zmiennej sterującej MV
Ograniczenie dolne zmiennej sterującej MV
Wpisanie operandu +znajomość instrukcji =liczbie zajętych komórek pamięci
PIDAT (191)
19
Zastosowanie wirtualnego
obiektu
20
OBIEKT
REGULACJI
REGULATOR
WŁASNY,PID (190),PIDAT (191)
Wyjście PV
SV
PV
MV
D10
D200
D20
W Matlabie wybieramy obiekt
Konwertujemy na równanie różnicowe
Wpisujemy do sterownika
Zadanie czasowe (blok czasowy OB30) = czasowi próbkowania !!!!!!
Ustawiamy
czas próbkowania !!!
Generator SV i próbkowania
21
100
0
4 sek
4 sek
0,1 sek
TIM1
D10
Układ regulacji
22
CX Designer umożliwia wygodne
zadawanie parametrów
23
24
Firmowe instrukcje do sterowania
PID (190)
e
a) Działanie odwrotne (inwersyjne)
m ( MV)
100%
50%
0%
SV
50%
Wyjście 50 %
dwukierunkowe
PB zakres proporcjonalności
e
b) Działanie proste
m (MV)
100%
50%
0%
PB zakres proporcjonalności
Wyjście 0 %
jednokierunkowe
PB
SV
0%
SV
0%
Temperatura
maleje
Temperatura
rośnie
Temperatura
maleje
Temperatura
rośnie
25
Firmowe instrukcje do sterowania
PID (190)- nierówność czasu próbkowania
Wczytanie
parametrów
regulatora
cykl=60ms
cykl
cykl
cykl
cykl
próbkowanie
PID
PID
PID
PID
PID
PID
Nie wykonanie
instrukcji
60ms<100 ms
Wykonanie
instrukcji
100ms>60 ms
120-100=20ms
pozostało
cykl=60ms
1 próbka=100 ms
2 próbka
3 próbka
Nie wykonanie
instrukcji
20+60<100 ms
80ms pozostało
cykl=60ms
cykl
Wykonanie
instrukcji
100ms>60 ms
80+60-100=40ms
pozostało
cykl=60ms
cykl=60ms
cykl=60ms
?
Im wartość czasu próbkowania PID jest bliższa czasowi cyklu tym
próbkowanie jest mniej równomierne
26
Firmowe instrukcje do sterowania
PIDAT(191) dostrajanie metodą
cyklu granicznego
C+9 Stan (1) bitu 15 decyduje o
dostrajaniu i w każdym cyklu jest
sprawdzany jego stan a po
zakończeniu dostrajania przechodzi
w stan (0), możemy go ustawić np.
instrukcją SETB; trzy sąsiednie bity
(14,13,12) nie są wykorzystywane a
w bitach 11÷0 wpisuje się udział w
obliczaniu wzmocnienia podczas
dostrajania w przedziale 0,01÷10,00
(001÷3E8 hex); opcjonalnie dla 000
jest to wzmocnienie 1,00
(zwiększamy tę wartość jeżeli zależy
nam na stabilności a zmniejszamy
jeżeli nam zależy na wrażliwości)
C+10 całe słowo przewidziane jest
na ustawienie wartości histerezy
cyklu granicznego w przedziale
0,01÷10,00 % (0001÷03E8 hex);
opcjonalnie dla 0000 wartość
histereza wynosi 0,2%
C+11÷C+40 te bity podobnie jak w
instrukcji PID są zarezerwowanym
obszarem roboczym, zabronionym
do wykorzystywania.
27
Nieliniowe przetwarzanie sygnału
ograniczenie górne i dolne wyjściowego LMT (680),
strefa martwa dla wejściowego
BAND (681),
strefa martwa dla wyjściowego ZONE (682).
28
Sterowanie dwustanowe
z
modulacją szerokości impulsu TPO(685)
29
Skalowania sygnału
SCL(194), SCL2(486), SCL3(487)
30
Pozycjonowanie elementów maszyn
uśrednianie, szybkie liczniki i wyjścia impulsowe
Uśredniania wartości sygnału wejściowego dla określonej liczby cykli
AVG (195) ma trzy operandy: w pierwszym S wpisujemy adres słowa
źródłowego w drugim N liczbę cykli 0÷64 (0001÷0040 hex) wziętą do
uśredniania a w trzecim R rejestr z wartością średnią po N cyklach.
PRV2 konwertująca częstotliwość sygnału otrzymywanego z licznika na
sygnał prędkości obrotowej,
CTBL dla sygnału z szybkiego wyjścia licznikowego ustawia się liczbę
progów (max. 8) i ich wartości oraz numer przerwania, które po każdym
progu może realizować określone zadanie
PULS i SPED umożliwia określić liczbę wyjściowych impulsów (PULS) z
zadaną częstotliwością (SPED) czyli prędkością, co jest realizowane
bezzwłocznie (prostokątny przebieg prędkości),
PLS2 umożliwia zrealizowanie trapezoidalnego przebiegu prędkości,
określa się tu wartość częstotliwości na jednostkę czasu np. 500 Hz/4 ms
dla przyspieszenia lub opóźnienia, docelową częstotliwość i liczbę
impulsów (czas trwania procesu) oraz częstotliwość startową,
ACC umożliwia przedziałami zmieniać wartość przyspieszenia lub
opóźnienia,
PWM umożliwia zmieniać współczynnik wypełnienia impulsów (ang. duty
factor).
31
Zasady dostrajania parametrów
regulatorów PID
wpływ typu regulatora na odpowiedź
y
e
t
e
ust
P
PID
PI
32
Zasady dostrajania parametrów
regulatorów PID
zmniejszanie przeregulowania i szybsza stabilizacja sygnału
y
t
SV
1
2
Zmniejszamy wzmocnienie k
c
z na
1
2
y
t
SV
1
2
Zwiększamy wzmocnienie k
c
33
Zasady dostrajania parametrów
regulatorów PID
likwidowanie „kołysania” długookresowego i krótkookresowego
y
t
SV
1
2
Zwiększamy stałą całkowania lub zmniejszamy wzmocnienie
y
t
SV
1
2
Zmniejszamy stałą różniczkowania
34
35
Dziękuję za uwagę