Do sterowania obiektem wykorzystany został sterownik WAGO 750 – 833 opisany w rozdziale 5. Program sterownika zawierający algorytm PID został napisany w środowisku WAGI – I/O- PRO (opis w rozdziale 7).
Ze względu na przejrzystość połączeń oraz łatwość implementacji regulatora PID główna aplikacja została napisana w języku CFC opisanym w podrozdziale 6.4.4. Budowanie aplikacji w tym języku polega na łączeniu ze sobą odpowiednich bloków funkcyjnych (idea programowania podobna jak w MATLAB –SIMULINK) Biblioteka tego języka zawiera między innymi: bloki zawierające podstawowe funkcje matematyczne oraz gotowe algorytmy regulatorów. Język ten umożliwia dołączenie bloków funkcyjnych napisanych w innym języku, co było kolejnym kryterium przy wyborze tego języka.
W skład aplikacji wchodzi blok regulatora PID, bloki pomocnicze umożliwiające konwersje sygnału napięciowego na wartość temperatury i odwrotnie oraz bloki sterujące przetwornikami C/A i A/C.
Idea działania aplikacji jest następująca:
Napięciowy sygnał reprezentujący aktualną wartość temperatury pieca podawany na przetwornik A/C modułu zewnętrznego (750 - 476), który koduje ja za pomocą kodu U2. Wartość ta po pomnożeniu przez ziarno przetwornika i przeliczeniu na temperaturę według zależności (47) podawana jest na wejście „ACTUAL” regulatora PID. Następnie sygnał ten jest przetworzony z uwzględnieniem odpowiednich parametrów regulatora i na wyjściu otrzymujemy informacje o odchyłce regulacji, która jest ponownie przeliczana na wartość napięciowa i podawana na przetwornik C/A (moduł 750 - 556) Ze względu na ograniczenia narzucone przez sprzętową część modelu konieczne stało się zastosowanie zabezpieczeń zapobiegających przekroczeniu dopuszczalnych napięć przetworników. Schemat aplikacji przedstawiony jest na rysunku 8.1.
PROGRAM PLC_PRG
VAR
Tz:REAL:=80; (*wartosc zadana*)
ziarno_AC:REAL:=0.0003; (*ziarno przetwornika A/C*)
ziarno_CA:REAL:=0.0024; (*ziarno przetwornika C/A*)
Kp:REAL:=0.6; (*współczynnik wzmocnienia regulatora*)
TR:WORD:=15000; (*czas wyprzedzania*)
TD:WORD:=3000; (*czas zdwajania*)
RES:BOOL:=FALSE; (*reset regulatora*)
out AT %QW0:WORD; (*wyjście obiektowe*)
in AT %IW1:WORD; (*wejście obiektowe*)
Regulator: PID; (*deklaracja regulatora*)
Porownanie: cmp; (*deklaracja bloku porównania*)
END_VAR
Rysunek 8.1. Implementacja regulatora PID wraz z blokami pomocniczymi.
Blok „Porównanie” został napisany w języku ST, a jego kod przedstawiony jest poniżej:
(*Deklaracja zmiennych*)
FUNCTION_BLOCK cmp
VAR_INPUT
y:REAL;
END_VAR
VAR_OUTPUT
y1:REAL;
END_VAR
VAR
END_VAR
(*program główny*)
IF(y>200) THEN
y1:=200;
ELSIF (y<-100) THEN
y1:=-100;
ELSE
y1:=y;
END_IF
y1:=(y1+100)/60;
Copyright © 2008-2010 EPrace oraz autorzy prac.