background image

WYKŁAD 7

PRAKTYCZNA REALIZACJA 
REGULATORA PID 
W STEROWNIKU

JANUSZ KWAŚNIEWSKI  AGH Katedra Automatyzacji Procesów

background image

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

background image

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

background image

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).

background image

5

Próbkowanie i węzeł sumacyjny

│e

i

D12

background image

6

Mnożenie dla wersji równania 100 
m

50 e

i

 

background image

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

 (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

background image

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 

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

background image

9

Równanie m

i

=e

+e

i–1

+e

i–2

-m

i–1

 

Fragment 

oprogramowania 

sytuacji,  gdy  wynik  odejmowania 
jest ujemny.

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

background image

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. 

background image

11

Pełny program regulatora PID

 D 6D 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

–1 

(MOV).

 D16 := D14

Instrukcja generowania e

–2  

(MOV).

 D14 := D12 

Instrukcja generowania e

–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 –

2000 e

i -2

 (+, +BC, ADD) *)

 D18 := D 28  

D18

b

1

 m

–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

–1 

tutaj 100 m

i

 = 50 e

i

 + e

i –

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 

należy poprzedzić skasowaniem tego przeniesienia (CLC). 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

background image

12

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

background image

13

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

background image

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

background image

15

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=100/PB =K

c 

 120 s  T

i

  od 0001 do 1FFF (1 do 8191), gdy brak działania należy ustawić 9999 

  40 s  T

d

 od 0001 do 1FFF (1 do 8191), gdy brak działania należy ustawić 0000 

 

 

0,5 s  T czas próbkowania w 0,01, 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

background image

16

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

 

background image

17

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

background image

18

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.

background image

19

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).

background image

20

Sterowanie dwustanowe 

z

 

modulacją szerokości impulsu TPO(685)

 

background image

21

Skalowania sygnału 

SCL(194), SCL2(486), SCL3(487)

 

background image

22

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).

background image

23

Zasady dostrajania parametrów 

regulatorów PID

wpływ typu regulatora na odpowiedź

 

 e 

e

ust 

PID 

PI 

background image

24

Zasady dostrajania parametrów 

regulatorów PID

zmniejszanie przeregulowania i szybsza stabilizacja sygnału

 

 

SV 

Zmniejszamy wzmocnienie k

c

 z       na 

 

SV 

Zwiększamy wzmocnienie k

background image

25

Zasady dostrajania parametrów 

regulatorów PID

likwidowanie „kołysania” długookresowego i krótkookresowego

 

SV 

Zwiększamy stałą całkowania lub zmniejszamy wzmocnienie 

 

SV 

Zmniejszamy stałą różniczkowania 

background image

26

Dziękuję za uwagę


Document Outline