Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

Regulator logiki rozmytej – przykład zastosowania

1592 wyświetleń, autor: Przemysław Krupiarz.

Wszyscy znamy cykl pracy automatyka – zaczynamy nowe zlecenie i z początku jest spokój. Dobieramy sprzęt, rysujemy schematy i programujemy, aż do momentu uruchomienia, które kończy sielankę. Drobne zamieszania administracyjne, opóźnienia dostaw, niedokończone prace mechaniczne, a na szarym końcu my z laptopem pod pachą.. Czasu zostało mniej niż mało, klient się niecierpliwi, ponieważ nowy system jest niezbędny do pracy, a my dopiero załączyliśmy zasilanie. Ale jaki to ma związek z regulatorem logiki rozmytej?

Jest już godzina popołudniowa, system ma zostać odebrany jutro, ale regulacja temperatury nie działa, a wystrojenie jednego regulatora PID wygląda na niewykonalne – należałoby zastosować dwa równolegle lub trzy kaskadowo/równolegle, co nie ułatwi obecnie trudnego strojenia. Przychodzi do głowy myśl – skoro function block jest gotowy i przetestowany na symulacji, czemu by nie spróbować? Szybka zmiana w oprogramowaniu i można przetestować czy ma to jakikolwiek sens.. eureka!

W tym artykule opiszę problem z jakim się zetknąłem i przedstawię moje rozwiązanie z regulacją rozmytą.

Opis procesu

Zadanie to regulacja temperatury w rurociągu, z wykorzystaniem dwóch zaworów regulacyjnych sterowanych analogowo (4-20 mA). Trochę jak lanie wody z kranu.

Teoria teorią, a w praktyce wychodzi jak zawsze, więc jakie problemy związane z regulacją napotkano?

  • Zawory otwierają się stopniowo w czasie, około 3 sekund od 0 do 100%;
  • Temperatura wody zmienia się w czasie z opóźnieniem;
  • Temperatura wody spada szybciej niż rośnie (prawdopodobnie zimna woda ma wyższe ciśnienie);
  • Temperatura ciepłej wody nie jest stała (centralna kotłownia i wiele odbiorów);

Nie wygląda to jak problemy, z którymi regulator PID sobie nie poradzi i jest to prawda, tyle że nie ma na to czasu, a na strojenie zmarnowano już ponad 2 godziny.

Logika rozmyta

Nie jest to wykład akademicki aby opisywać precyzyjnie wzorami jak zachodzą poszczególne procesy, wytłumaczmy sobie jak działa regulator logiki rozmytej na chłopski rozum:

  1. Odczytujemy dane i następuje ich rozmycie;
  2. Sprawdzamy do których reguł pasują rozmyte dane;
  3. Przeliczamy rozmyte dane reguł z użyciem wybranej funkcji (przeciwieństwo rozmycia?);

Wciąż nie brzmi to sensownie, więc przetłumaczmy co znaczą poszczególne punkty

  1. Logika rozmyta opiera się o założenie, że przykładowo temperatura może być gorąca i ciepła jednocześnie, stąd stwierdzenie rozmycia – ponieważ kwalifikujemy jedną wartość do dwóch zbiorów w różnym stopniu (20% jako gorąca i 80% jako ciepła) – różnica względem zwykłej logiki jest taka, że oceniamy prawdziwość stwierdzenia w procentach, zamiast oceniać jako prawda/fałsz.
  2. Rozmyte dane wykorzystujemy do wyliczenia siły reguł, wykorzystywanych potem do wyliczenia końcowej wartości wyjścia regulatora. Przykładową regułą jest – jeżeli temperatura jest zbyt ciepła i się nie zmienia to obniż temperaturę nieznacznie. Ważna uwaga: jednocześnie aktywowane może być wiele reguł!
  3. Funkcji wykorzystywanych do przeliczenia wartości z reguł jest wiele, wykorzystaną w tym przypadku jest środek ciężkości (ang. Center of Gravity).

Reklama


Jak zatem rozumieć, że jedna wartość zawiera się w dwóch zbiorach w różnym stopniu? Wystarczy spojrzeć na poniższy obrazek

Widoczne na obrazku powyżej są przedstawienia reguł, gdzie:

  • Control Error = błąd regulacji = wartość zadana – wartość obecna;
  • Control Error delta = zmiana błędu regulacji = obecny błąd regulacji – poprzedni błąd regulacji;
  • Output = wyjście regulatora (a de facto zmiana wyjścia, ponieważ jest to regulator typu PI);
    • Regulator logiki rozmytej typu PD, to taki gdzie wyjście ustawiane jest bezpośrednio z obliczeń
      • y(t) = FLC(u(t), delta_u(t)), gdzie u(t) oznacza błąd regulacji, delta_u(t) oznacza jego zmianę w czasie t;
    • Regulator logiki rozmytej typu PI, to taki gdzie wyjście jest równe sumie poprzedniej wartości wyjścia oraz obecnie wyliczonej
      • y(t) = y(t-1) + FLC(u(t), delta_u(t)), gdzie t-1 oznacza poprzednią wartość;

Przykład: wartość błędu regulacji równa -7.0 będzie należeć jednocześnie do reguły zbyt niskiej (NegativeBig) i do reguły poniżej zera (NegativeSmall).

Uwaga:

Wiem, że jest to powierzchowne przedstawienie, lecz nie czuję się na siłach aby uczyć innych o czymś, co sam dopiero poznaję w praktyce, mogę polecić cykl anglojęzycznych poradników z firmy MathWorks:
https://www.mathworks.com/videos/getting-started-with-fuzzy-logic-toolbox-part-1-68764.html

Proszę nie opierać się na wiedzy przedstawionej w artykule, ma on na celu zainteresowanie tematem i pokazanie, że nie jest to czarna magia i przede wszystkim działa.

PLC

Problemem, który może wstrzymywać wielu automatyków jest brak lub trudny dostęp do gotowych bloków logiki rozmytej, w przeciwieństwie do regulatora PID. Należy zatem napisać, przetestować i wdrożyć to samemu!

Dlaczego zmienna do zezwolenia pracy regulatora nazywa się „global_PIDenable”? Wcześniej wspomniano, że logika rozmyta wybrana została rzutem na taśmę, jest to po prostu pozostałość po próbie stosowania PIDa.

Tak przedstawia się function block w środowisku TIA Portal z zewnątrz, niestety nie pokażę tutaj całości, ale pokażę użyteczną część.

Uwaga:

Komentarz w linii 22 zawiera błąd, powinno być Out_delta = sum(Weight*Rule) / sum(Rule).

Co oznaczają komentarze widoczne powyżej? Dla przykładu przetłumaczymy kilka z nich

  • Reguła 2:
    • X=LN, Y=SN
    • Control Error is LargeNegative, Control Error Delta is Small Negative;
    • Błąd regulacji jest zbyt niski i zmniejsza się powoli;
  • Reguła 18:
    • X=SP, Y=ZZ;
    • Control Error is SmallPositive, Control Error Delta is Zero;
    • Błąd regulacji jest powyżej zera i się nie zmienia ;

Możemy zauważyć również, że reguły 2 i 18 posiadają opis jako LN i SP, co oznacza ich wagę:

  • Reguła 2:
    • LN = LargeNegative;
    • Mocno obniż;
  • Reguła 18:
    • SP = SmallPositive;
    • Lekko podnieś;

Reklama


Tak właściwie do czego wykorzystywana jest waga reguły? Jest ona niezbędna do obliczenia wyjścia regulatora, ponieważ po rozmyciu danych wejściowych operujemy na wartościach od 0 do 100%, z użyciem czego uzyskujemy siły reguł, również w zakresie od 0 do 100%. Finalnie z użyciem wagi obliczamy wyjście lub jego zmianę, zgodnie ze wzorem w komentarzu (poprawka w uwadze powyżej):

  • Zmiana_wyjścia = suma(Wagi_Reguł * Siły_Reguł) / suma(Siły_Reguł)
    • Wagi_Reguł – wartość dla reguły, przykładowo: NB = NegativeBig = -5.0;
    • Siły_Reguł – wartość od 0 do 100%;

Poniżej widoczny jest kod do obliczania zmiany wyjścia regulatora, może zastanawiać pętla IF, a jest to po prostu zabezpieczenie przed dzieleniem przez 0.

Uwaga:

Ograniczenie wyjścia funkcją LIMIT() jest podyktowane wyłącznie metodologią programowania przez autora i nie jest częścią regulatora.

  • #outNominator oznacza mianownik, a więc zgodnie z w.w. wzorem = suma(Wagi_Reguł * Siły_Reguł)
  • #outDenominator oznacza dzielnik, a więc zgodnie z w.w. wzorem =  suma(Siły_Reguł)
    • dzielnik w tym wypadku zawsze jest większy lub równy zero, ponieważ siły reguł zawierają się w zakresie od 0 do 100%

Wcześniej wspomniano, że wypadałoby mieć interfejs graficzny do strojenia zamiast ustawiać dane bezpośrednio w datablocku, poniżej widzimy dlaczego

Skoro mamy już obliczenia gotowe, to jak zamienić jedną wartość na dwie? Przecież sterujemy dwoma zaworami, a wyjście regulatora jest jedno.

Przyjęto założenie, że jeden z zaworów powinien być zawsze otwarty na 100% – jak? To przedstawia się w kodzie programu poniżej

Zatem skoro regulator posiada wyjście powyżej 0 przymykamy zawór zimnej wody, jeżeli posiada wartość poniżej 0 przymykamy zawór ciepłej wody.

Regulator w pracy

Niestety, w całym chaosie uruchomienia „na wczoraj” nie zachowało się zbyt wiele wykresów z rzeczywistej pracy regulatora, więc zaprezentuję ostatni z nich.

Opis wykresów w kolejności od góry:

  • błąd regulacji,
  • wyjście regulatora,
  • rozkaz otwarcia zaworu ciepłej wody,
  • rozkaz otwarcia zaworu zimnej wody.

Oscylacje są w czasie 0,333 min do 0,917 min są spowodowane pracą blisko górnej granicy temperatury (stąd niewielkie otwarcie zaworu zimnej wody), w okolicy czasu 1,083 min została zmieniona wartość zadana na maksymalną dostępną stąd spadek otwarcia zaworu zimnej wody do 0.

Czas regulacji jest w tym przypadku wynosi około 20 sekund, jednak nie jest to krytyczna kwestia w całym procesie, ponieważ dozowanie wody trwa o wiele, wiele dłużej więc jest to nieodczuwalne w ostatecznym rozrachunku.

Podsumowanie

Dlaczego wystrojenie regulatora logiki rozmytej zajęło mniej czasu niż regulatora PID, pomimo większej ilości zmiennych?

Parametry są bezpośrednio zrozumiałe przez człowieka, można łatwo odczytać i wyobrazić sobie, gdzie zaczyna się temperatura gorąca, a gdzie ciepła, ile oznacza obniżyć mocno, a ile lekko podnieść. Jest to niewątpliwy plus względem innych algorytmów.

Logika rozmyta posiada również swoje minusy, stanowi większe obciążenie obliczeniowe dla procesora i jest trudniejsza w przełożeniu na kod, względem chociażby regulatora PID.

Oprócz plusów opisanych wcześniej, jest jeden bardzo ważny z punktu regulacji procesu – regulator PID najlepiej pracuje od punktu X do punktu Y (przykładowo od temperatury 20 do 60 stopni), lecz gdybyśmy chcieli zmienić punkt pracy może się okazać, że nastawy są nieodpowiednie – logiki rozmyta nie dotyczy ten problem i nastawy są niezależne od punktu pracy.

Przede wszystkim!

Należy sięgać po odpowiednie narzędzie do zadania, w tym konkretnym przypadku regulator logiki rozmytej  sprawdził się w sam raz, zastępując 2 godziny nieudanego strojenia regulatora PID, 30 minutami dostrajania.

PS. Na forum klubautomatyka.pl  obiecałem, że napiszę artykuł o symulacji zrobotyzowanej linii transportowej i trzymam się danego słowa, ograniczał mnie ostatnio brak czasu związany chociażby z treścią powyższego artykułu.

 

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Sierpień 2019

Nagrodę Voucher na szkolenie + głośnik + zestaw gadżetów

dostarcza ambasador konkursu, firma EMT-Systems.

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!

Zapoznałem się i akceptuję klauzulę informacyjną.
7 sierpnia 2019 / Kategoria: , ,

Reklama

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

Implementacja wymiany danych przy pomocy JSON API na przykładzie przekaźnika easyE4

Implementacja wymiany danych przy pomocy JSON API na przykładzie przekaźnika easyE4

>KLIKNIJ<

Publikuj artykuły razem z iAutomatyka.pl – Integrujemy Ludzi z Automatyką!

Publikuj artykuły razem z iAutomatyka.pl – Integrujemy Ludzi z Automatyką!

>KLIKNIJ<

Firma RENEX odznaczona tytułem Gazeli Biznesu

Firma RENEX odznaczona tytułem Gazeli Biznesu

>KLIKNIJ<

Kompaktowy sterownik z oprogramowaniem TwinCAT 3: większa skalowalność, większe możliwości!

Kompaktowy sterownik z oprogramowaniem TwinCAT 3: większa skalowalność, większe możliwości!

>KLIKNIJ<

Świat według automatyka – wywiad ze sterownikiem easyE4

Świat według automatyka – wywiad ze sterownikiem easyE4

>KLIKNIJ<

Akademia PLC #1 – Sterowniki Unitronics serii UniStream

Akademia PLC #1 – Sterowniki Unitronics serii UniStream

>KLIKNIJ<

5 porad, jak odnieść sukces w branży automatyki przemysłowej na przykładzie firmy MPL Techma

5 porad, jak odnieść sukces w branży automatyki przemysłowej na przykładzie firmy MPL Techma

>KLIKNIJ<

Szkolenia z 75% rabatem od Mitsubishi Electric

Szkolenia z 75% rabatem od Mitsubishi Electric

>KLIKNIJ<

Czym są przekaźniki instalacyjne i jak ich używać?

Czym są przekaźniki instalacyjne i jak ich używać?

>KLIKNIJ<

Cyberbezpieczeństwo i Chmura – bezpłatne seminaria z ELMARK w 6 miastach

Cyberbezpieczeństwo i Chmura – bezpłatne seminaria z ELMARK w 6 miastach

>KLIKNIJ<

Sensory i czujniki w maszynach i obiektach automatyki – wywiad z Pepperl+Fuchs

Sensory i czujniki w maszynach i obiektach automatyki – wywiad z Pepperl+Fuchs

>KLIKNIJ<

Maszyna do napełniania i zamykania z LinMot

Maszyna do napełniania i zamykania z LinMot

>KLIKNIJ<

Meble przemysłowe ESD – przegląd cech dostawcy i produktu

Meble przemysłowe ESD – przegląd cech dostawcy i produktu

>KLIKNIJ<

Pierwsze w pełni zintegrowane rozwiązanie Machine-Centric Robotics – B&R i ABB

Pierwsze w pełni zintegrowane rozwiązanie Machine-Centric Robotics – B&R i ABB

>KLIKNIJ<

Programowanie PLC od podstaw – kurs dla automatyków i elektryków odc.1 – Wprowadzenie

Programowanie PLC od podstaw – kurs dla automatyków i elektryków odc.1 – Wprowadzenie

>KLIKNIJ<

KONKURS IAUTOMATYKA STYCZEŃ 2020

KONKURS IAUTOMATYKA STYCZEŃ 2020

>KLIKNIJ<

Przekaźnik elektromagnetyczny – co to jest i jak działa?

Przekaźnik elektromagnetyczny – co to jest i jak działa?

>KLIKNIJ<

Walka człowieka z robotem lutowniczym REECO na Polskiej Wystawie Gospodarczej

Walka człowieka z robotem lutowniczym REECO na Polskiej Wystawie Gospodarczej

>KLIKNIJ<

Pionierska technologia firmy Matisa

Pionierska technologia firmy Matisa

>KLIKNIJ<

Automatyczny Podcast #18: Automatyk w UK

Automatyczny Podcast #18: Automatyk w UK





MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • System MasterIN firmy Finder składa się z przekaźnikowych modułów sprzęgających z terminalami Push-in. Technologia ta reprezentuje najnowsze osiągnięcia w bezśrubowych ‘sprężynowych’ zaciskach, oferujących szybką instalację. W porównaniu do...
  • Ekonomiczne monitorowanie i sterowanie, teraz także dzięki panelom 2 generacji. Dzięki odpowiedniemu doborowi funkcji HMI, panele Basic 2 generacji stanowią doskonałe rozwiązanie przy produkcji maszyn lub w małych aplikacjach przemysłowych....
  • Zapraszamy do składania zapytań ofertowych o wszystkie produkty EATON w tym sterowniki easyE4 przez portal allektro.pl (Kliknij tutaj) lub przez kontakt e-mail oferty@staport.p...
  • Przeznaczony do pracy na wolnym powietrzu EMC / ekranowany Zakres zastosowania Budowa instalacji przemysłowychBudowa maszynTechnika grzewcza i klimatyzacyjnaElektrownie Dla przemiennika częstotliwości zasilającego 3 – fazowe silniki A...
  • Seria EX-Z Czujniki z serii EX-Z to jedne z najmniejszych urządzeń tego typu na świecie. Najcieńszy model posiada grubość jedynie 3 mm co zostało osiągnięte przez zastosowanie nowych półprzewodników i dzięki temu wyeliminowanie przewodów. B...
  • Seria FX-100 Czujniki z serii FX-100 to najlepsze rozwiązanie pod względem stosunku jakości do ceny. Wyposażone są w funkcje szybkiego uczenia, co pozwala użytkownikom w szybki i prosty sposób przystosować czujnik do pracy z nieskomplikowan...