ZOSTAŃ PARTNEREM PORTALU
Firma Johnson Controls jest czołowym dostawcą sprzętu automatyki budynkowej, systemów kontroli oraz usług w zakresie ogrzewania, wentylacji, klimatyzacji i chłodnictwa, a także systemów zabezpieczeń.

KATALOG PRODUKTÓW

POZNAJ JOHNSON CONTROLS

Regulator PID w sterowniku Siemens S7-300 (TIA Portal) + FILM

Regulator PID w sterowniku Siemens S7-300 (TIA Portal) + FILM

Ostatnio nabyłem używany sterownik PLC Siemens S7-300 w celu nauki programowania. Zdecydowałem się na początek zrealizować na nim regulację obrotów silnika z wykorzystaniem regulatora PID. W związku z tym że środowisko pracy było dla mnie zupełnie nowe, to przy realizacji tego ćwiczenia musiałem pokonać kilka trudności. Mam nadzieję że taki artykuł pomoże komuś jeszcze łatwiej zrealizować podobne zadanie. Przed rozpoczęciem nauki tego sterownika, bardzo ciekawiło mnie również jak wygląda środowisko TIA Portal, dlatego przybliżę również ten temat.

Z uwagi na sprzęt jaki posiadałem, przyjąłem poniższe założenia:

  • Wykorzystać wiatrak komputerowy podłączany do wyjścia cyfrowego sterownika.
  • Regulacja mocy wiatraka będzie realizowana poprzez modulację szerokości impulsu PWM na wyjściu sterownika.
  • Prędkość obrotowa wiatraka będzie mierzona poprzez zliczanie impulsów z czujnika indukcyjnego.
  • Panel HMI posłuży jako interfejs użytkownika.

W tym celu wykorzystałem:

  1. Zasilacz 24V DC Siemens.
  2. Sterownik PLC Siemens S7-300 (CPU314)
  3. Panel dotykowy HMI Siemens Basic.
  4. Moduł wejść cyfrowych.
  5. Moduł wyjść cyfrowych.
  6. Wiatrak komputerowy 12V DC
  7. Czujnik indukcyjny

Skorzystałem z wiatraka komputerowego, ponieważ było to najprostsze rozwiązanie. Taki wiatrak podłączyłem do jednego z wyjść sterownika. W szereg z wiatrakiem wpiąłem rezystor 100 ohm 5W, aby możliwe było wykorzystanie 24V do zasilania wiatraka. W środkowej części wiatraka przykleiłem czarną taśmą małą podkładkę metalową, na którą będzie reagował czujnik indukcyjny. Sam czujnik zamontowałem tuż przy wiatraku, wykorzystując konstrukcję z kartonu.

W rzeczywistych układach podłączenie silnika bezpośrednio do sterownika jest zazwyczaj niemożliwe ze względu na ograniczony prąd wyjścia sterownika (0.5A). Natomiast do celów edukacyjnych możemy tak zrobić, gdyż maksymalny prąd pobierany przez wykorzystany wiatrak komputerowy to zaledwie 200mA.

Choć posiadany przeze mnie moduł wyjść cyfrowych nie posiada specjalizowanej funkcji obsługi sygnału PWM, to zdecydowałem się wykonać eksperyment czy takie sterowanie wiatraka będzie możliwe. Okazuje się że spokojnie można zrealizować takie sterowanie za pomocą odpowiedniej struktury programu z użyciem kilku timerów.

Tak wygląda układ zmontowany na płycie:

Wiatrak z podkładką pod czarną taśmą:

Program stworzyłem w środowisku TIA Portal V13. Widok konfiguracji sprzętowej:

Blok regulatora PID obudowałem w blok funkcyjny, co daje efekt przejrzystości programu. Blok nazwałem „Speed regulation”. Całość jest umieszczona w przerwaniu cyklicznym Cyclic_interrupt [OB35]. Przerwanie jest wywoływane co 500ms.

Funkcja przyjmuje dwie zmienne. Speed_setting to tag który jest ustawiany z poziomu panelu HMI. Natomiast Speed_measured to zmienna która jest wyliczana przez funkcję Motor_speed. Funkcja ta znajduje się w bloku organizacyjnym Main [OB1]. Jest to główny wątek programu:

Zmienną Speed_measured wylicza blok funkcyjny Motor_speed na podstawie impulsów z czujnika indukcyjnego. Po przeliczeniu otrzymujemy na jego wyjściu ilość obrotów wiatraka na sekundę.

Powyżej widoczny jest również blok funkcyjny PWM, który na podstawie wartości wejściowej z zakresu 0 – 20, steruje wyjściem Q4.0 do którego jest podłączony silnik wiatraka. W ten sposób możemy regulować moc silnika w zakresie 0 – 100%, z rozdzielczością 5%. Okres sygnału wyjściowego to 200ms.

Blok funkcyjny Irrigation odpowiada za kolejną funkcję sterownika, której tutaj nie będę poruszał. Pokazuje to jednak, jak łatwo dodać nowe funkcje do programu, które są odseparowane od dotychczasowych.

Wnętrze bloku PWM (sterowanie silnikiem):

Wnętrze bloku Motor_speed (pomiar prędkości obrotowej):

Teraz możemy przejść do sedna tematu, czyli bloku Speed_regulation z regulatorem PID:

Podczas programowania byłem zmuszony przechodzić z jednego typu zmiennej do innego, na przykład z int do real. Oto przykładowy blok Scale_int_to_real:

Jeżeli chodzi o dobór nastaw regulatora PID, dobrałem je według reguły Zieglera i Nicholsa. Informacje zaczerpnąłem z forum elektroda.pl:

W regulatorze włącza się tylko człon proporcjonalny P. Człon całkujący zamyka się całkowicie (Ti = max), człon różniczkujący całkowicie otwiera (Td = 0).
Nastawnikiem zespołu proporcjonalnego nastawia się współczynnik wzmocnienia kp tak, aby układ doprowadzić do granicy stabilności (uzyskać przebieg wielkości regulowanej oscylacyjny o stałej ampitudzie).
Z wyznaczonego przebiegu wielkości regulowanej określić okres drgań niegasnących Tkryt.

Znając kp kryt i Tkryt obliczyć nastawy regulatorów wg wzorów:
dla regulatora P: kp = 0,5 kp kryt;
dla regulatora PI: kp = 0,45 kp kryt, Ti = 0,75 Tkryt;
dla regulatora PID: kp = 0,6 kp kryt, Ti = 0,5 Tkryt, Td = 012 Tkryt.

Środowisko Tia Portal posiada bardzo przyjemne narzędzia do debugowania i uruchamiania systemu. Na przykład do uruchomienia regulatora PID i jego dostrojenia jest dostępne wbudowane narzędzie. Uruchamiamy je klikając przycisk w prawym górnym rogu bloku CONT_C:

Aby możliwe było wygodne ustawianie zadanej wartości, stworzyłem interfejs graficzny w panelu HMI:

FILM

Poniżej film nakręcony w czasie pracy układu. W tle można usłyszeć impulsowe sterowanie silnikiem:

Regulator PID w sterowniku PLC Siemens S7-300

Opis projektu dostępny jest na kamilszkutnik.pl

Od Autora:


Więcej artykułów znajdziesz na mojej stronie kamilszkutnik.pl, jednak zachęcam do pozostawiania komentarzy w portalu iautomatyka.pl

Pozdrawiam,

Kamil Szkutnik

28 kwietnia 2017 / Kategoria: , ,

Wszystko stanie się prostsze po zalogowaniu :)

Przypomnij hasło

Nie masz konta? Zarejestruj się

Forgot your password?

Enter your account data and we will send you a link to reset your password.

Close
z

    Przetwarzamy pliki... jeszcze chwilka…