Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka
https://iautomatyka.pl/wp-content/uploads/2019/03/Kurs-programowania-sterownika-easye4-eaton-67.jpg

Automatyka + IT w optymalizacji produkcji. Jak wykorzystałem easyE4 w aplikacji klasy OEE

autor: dawleg.

W jaki sposób prowadzić produkcję maksymalizując dochody? W pierwszej chwili na myśl przychodzi pomysł zwiększania produkcji. Natomiast co w sytuacji gdy na rynku nie ma zbytu na wyprodukowany przez zakład produkt? Koszty magazynowania związane z niedopasowaniem produkcji do zapotrzebowania to z pewnością niepożądany przez zakład wydatek. Produkcja powinna być prowadzona w sposób optymalny, unikając nadprodukcji (produkowania za dużo) oraz nie powodować sytuacji w której klient czeka na produkt (produkowania za mało). Problem ten dotyczy również produkcji wewnątrzzakładowej, gdzie na poszczególnych stanowiskach wytwarzany jest produkt z przygotowanych przez inne stanowiska półprodukty. Z pomocą w umiejętnym planowaniu produkcji przychodzą dwa parametry Takt Time (czas taktu) oraz czas cyklu. System oparty o te dwa parametry miałem okazję przygotować w oparciu o sterownik E4.

Dlaczego właśnie easyE4?

Jako sterownik zapewnił funkcje pozwalające na przeniesienie obliczeń na pierwszy poziom aplikacji, a dzięki funkcjonalności JSON Api oraz modbus TCP umożliwił szybką implementację wymiany danych oraz wkomponował się idealnie w architekturę aplikacji. W poniższym artykule chciałbym podzielić się przygotowaną aplikacją (poniższy zrzut ekranu) oraz opisać jej najważniejsze aspekty.

Swoją drogą interesujące jest to ile informacji można uzyskać z naciśnięcia jednego przycisku. Najpierw jednak postaram się przybliżyć ideę czasu taktu oraz czasu cyklu.

Czy wiesz, że w sieci dostępny jest polski kurs programowania sterownika easyE4? http://kurseasyE4.pl

Czas Taktu oraz Czas Cyklu

Czas taktu jest to parametr określający czas, w którym nastąpi zapotrzebowanie na produkt. Wzór na czas taktu: TT = efektywny czas pracy / zapotrzebowanie na produkt we wskazanym czasie pracy. Zobrazujmy to fikcyjnym przykładem zakładu produkującego drewniane ogrodzenia. Weźmy pod uwagę dwie linie: montażową oraz produkcyjną, która produkuje sztachety. Linia montażowa w ciągu godziny potrzebuje 25 sztachet. Zmianowe (8 godzin) zapotrzebowanie wynosi 200 sztachet. Efektywny czas pracy linii produkcyjnej to: 8 godzin – 30 minut przerwy czyli 7 godzin 30 minut. Czas taktu dla linii produkcyjnej wynosi 450 min / 200 sztachet = 2 min 15 s / sztachetę.

Takt Time jest parametrem teoretycznym. Do opisu faktycznego procesu wytwarzania wykorzystuje się czas cyklu. Czas cyklu to czas pomiędzy wytworzeniem kolejnych produktów w procesie. Wróćmy do przykładu ze sztachetami i rozpatrzmy proces wytwarzania jednej sztachety. Pracownik wykonując obowiązki na stanowisku najpierw ze stosu pobiera jedną z dociętych desek. Następnie wykonuje wszystkie potrzebne prace na stanowisku oraz odkłada wykonany element na stos elementów gotowych. Czasem cyklu w opisanym procesie będzie czas od odłożenia jednej sztachety na stos do czasu odłożenia kolejnej gotowej sztachety. Czy pracownik za każdym razem jest w stanie wykonać podaną pracę w takim samym czasie? Jest to mało prawdopodobne, dlatego czas cyklu wyznaczany jest najczęściej po uśrednieniu kilku, kilkunastu czasów zmierzonych dla powtarzalnej czynności. Załóżmy, że pracownik wykonuje tę czynność w uśrednionym czasie 4 min 10 s.


W jakim celu wykorzystywane są podane parametry? Po pierwsze do zarządzania zasobami takimi jak ludzie, stanowiska, maszyny. Jeżeli z obliczeń czasu taktu wynika, że jest on mniejszy od czasu cyklu (widmo opóźnień w produkcji) zakład może zdecydować się na zwiększenie zasobów ludzkich – zatrudnienie nowego pracownika. Po drugie do szukania usprawnień w prowadzonej produkcji. Po trzecie do monitorowania postępów prac na wybranym stanowisku.

Zadania postawione przed systemem

System miał za zadanie posłużyć jako narzędzie do monitorowania postępu prac na stanowisku prac manualnych przypominających wyżej opisany przykład. W ramach systemu miała zostać dodana funkcja informowania pracowników o przerwie, której godzinę i czas trwania powinno dać się modyfikować. Aplikacja powinna wyświetlać najważniejsze aktualne parametry produkcji takie jak ilość wykonanych sztuk, efektywność pracy oraz powinna być dostępna z poziomu komputera w sieci zakładowej. Ponadto, czas taktu jak i parametr planowanej produkcji powinien dać się modyfikować w sytuacji gdy zajdzie taka potrzeba. Czasy poszczególnych cykli należy zapisywać do bazy danych w celu przyszłej analizy.

Architektura aplikacji

Aplikacja działa w oparciu o dwa urządzenia:

  1. Komputer klasy mini PC
  2. Sterownik easyE4

Sterownik E4 odpowiada za zbieranie informacji, kalkulację czasów pracy, sztuk oraz wydajności. Wyzwala również buzzer informujący o rozpoczęciu i zakończeniu pracy oraz o przerwie w produkcji. Założeniem aplikacji było wykonywanie jak największej liczby obliczeń w sterowniku, a następnie komunikacja z PC, gdzie istniała możliwość zapisu danych produkcyjnych, zadawania parametrów oraz wizualizacji postępu prac.

Koncepcja systemu została przedstawiona przy pomocy poniższej grafiki:

Jak wygląda to od strony easyE4?

EasyE4 – funkcja w aplikacji, przygotowany program

Sterownik wykorzystuje jedno wejście cyfrowe oraz jedno cyfrowe wyjście. Do wejścia podłączono przycisk, który należy nacisnąć w momencie wykonania produktu. Wyjście wykorzystywane jest do wyzwolenia buzzera. Sterownik powinien odliczać i wyznaczać wszystkie interesujące nas wartości takie jak: czas cyklu, efektywność, ilość wykonanych elementów. Ponadto, E4 powinien sygnalizować aplikacji nadrzędnej gotowość do zapisu danych produkcyjnych do wybranych tablic.

Poniżej postaram się opisać realizację zadań w programie.

  • Network 1-2 – Przygotowanie informacji o pozytywnym zboczu sygnału końca produkcji pojedynczego elementu oraz bitu z informacją o początku oraz końcu przerwy. Wykorzystamy je dalej w programie.
  • Network 3 – wywołanie bloczka z zegarem czasu rzeczywistego.
  • Network 4-5 – wywołanie komparatorów w celu sprawdzenia czy godzina oraz minuta przerwy równa jest godzinie i minucie przerwy zadeklarowanej przez użytkownika.
  • Network 6 – Jeżeli drugi komparator zwraca wartość True na wyjściu równości lub użytkownik wymusi przerwę poprzez wysterowanie bitu M481, rozpoczynana jest przerwa.
  • Network 7 – Odliczanie czasu przerwy w przekaźniku czasowym i resetowanie przerwy w momencie osiągnięcia wartości zadanej.

  • Network 8-9 – Na podstawie operacji odejmowania i komparatora sprawdzane jest czy pozostała minuta do końca przerwy.
  • Network 10 – Trzy-sekundowe wysterowanie buzzera w przypadku rozpoczęcia i zakończenia zmiany, rozpoczęcia i zakończenia przerwy oraz jeżeli pozostała minuta do końca przerwy.

  • Network 11 – Jeżeli bit końca zmiany nie jest wysterowany, wykonywany jest skok do Networku 23.
  • Network 12-18 – Przepisywanie danych zgromadzonych podczas czasu jednej zmiany pod rejestry skąd wykonywany będzie zapis do bazy danych.
  • Network 19-21 – Zerowanie wartości aktualnych.
  • Network 22 – Setowanie bitu informującego aplikację nadrzędną, że należy zapisać dane końca zmiany.
  • Network 23 – Jeżeli bit o wykonaniu elementu nie jest wysterowany, wykonywany jest skok do Networku 33
  • Network 24 – Przepisanie czasu cyklu pod nowy rejestr z którego dokonany zostanie zapis do bazy danych.
  • Network 25 – Porównanie czy czas cyklu przekroczył czas taktu.

  • Network 26 – Jeżeli czas cyklu nie przekroczył zadanego czasu taktu, wykonywany jest skok do Networku 29 co skutkuje pominięciem wyznaczania i sumowania czasu spóźnienia.
  • Network 27-28 – Wyznaczenie wartości spóźnienia oraz sumowanie spóźnień.
  • Network 29-31 – Analogiczne działanie jak Networki 26-28 z tą różnicą, że wyznaczany i sumowany jest zapas czasu w produkcji.
  • Network 32 – Setowanie bitu informującego aplikację nadrzędną, że należy zapisać dane związane z wykonaniem elementu.


  • Network 33-38 – Wykonywane są obliczenia związane z wyznaczeniem aktualnej efektywności produkcji według wzoru: (CzasZmiany-CzasPrzerwy+SumaZapasu-SumaOpóźnień)/(CzasZmiany-CzasPrzerwy)*100%. Jeżeli dzielnik jest równy 0 dzielenie jest pomijane.
  • Network 39 – Przy pomocy licznika godzin pracy wyznaczany jest efektywny czas pracy – CzasZmiany – CzasPrzerwy.
  • Network 40 – Przy pomocy licznika godzin pracy wyznaczany jest CzasCyklu – praca nad jednym elementem.

  • Network 41-44 – Wyznaczanie czasu zmiany w sekundach. Zasada podobna jak w przedstawionych na powyższym zrzucie ekrany Networkach 45-48.
  • Network 49 – Zliczanie wykonanych sztuk podczas jednej zmiany i kończenie produkcji w przypadku wykonania zlecenia produkcyjnego.

Jak można wysnuć z logiki programu spora część informacji zawarta jest w rejestrach przechowujących wartości zadane, takie jak: zadana produkcja, godzina przerwy, czas taktu.

Jak użytkownik aplikacji może modyfikować poszczególne parametry?

mini PC – modyfikowanie parametrów w sterowniku oraz wizualizacja

Parametry aplikacji przechowywane są w tablicy o nazwie „Settings” w bazie danych „TaktTime”.

Tablica „Settings” zdefiniowana jest następująco:

Opis poszczególnych parametrów tablicy:

  • „System_ON” – praca rozpoczęta,
  • „Pause_Force” – rozpoczęcie nieplanowanej przerwy,
  • „Station_name” – nazwa stanowiska – wykorzystywane w wizualizacji,
  • „TaktTimeValue” – wartość czasu taktu – w sekundach,
  • „ProductionPlanned” – planowana produkcja – ilość sztuk,
  • „PauseHour”, „PauseMinute” – godzina oraz minuta rozpoczęcia przerwy,
  • „PauseDuration” – czas trwania przerwy planowanej oraz nieplanowanej, wartość w minutach.

Jak modyfikowane są poszczególne parametry?

Wizualizacja aplikacji wykonana jest jako aplikacja webowa składająca się z dwóch stron: monitoring oraz ustawienia. W oknie ustawienia, przedstawionym na poniższym zrzucie ekranu, możliwe jest modyfikowanie poszczególnych wartości w tablicy „Settings”.

Aplikacja umożliwia modyfikowanie parametrów w bazi danych, ale w jaki sposób powiązane są parametry w bazie danych z rejestrami sterownika? Posłużę się ponownie grafiką przedstawiającą koncepcję systemu:

Do wymiany danych easyE4<->mySQL wykorzystałem aplikację „App” napisaną w języku Python, która służy jako łącznik pomiędzy sterownikiem, a bazą danych MySql.

Jakie były założenia aplikacji „App”:

1. Wykorzystanie protokołu ModbusTCP do odczytywania oraz nadpisywania rejestrów sterownika E4.

2. Po uruchomieniu aplikacji należy:

  • odczytać dane z tablicy „Settings”,
  • przepisać odczytane dane do rejestrów sterownika,

3. Następnie cyklicznie należy:

  • wykonać odczyt danych z tablicy „Settings”,
  • w przypadku zmiany danych należy przepisać je do sterownika,
  • sprawdzić bity informujących o zapisie danych związanych z wykonaniem elementu oraz końcem produkcji,
  • w przypadku odczytu wartości informującej o konieczności zapisu wykonać: odczyt danych z rejestrów sterownika, zapisać odczytane dane do wskazanych tablic oraz wyzerować w sterowniku bit z poleceniem zapisu.

Na poniższym zrzucie ekranu przedstawiłem mechanizm zapisu danych związanych z czasem cyklu.

Najpierw odczytywane są dwa rejestry, które przechowują informację o danych przygotowanych do zapisu. Ma to miejsce w liniach 123-127. Następnie od linii 132 sprawdzana jest wartość rejestru i wykonywane instrukcje zapisu. W 134 linii sterownik odpytywany jest o czas cyklu, a następnie w 137 linii przygotowywana jest komenda MySQL, którą wykorzystano w 139 linii gdzie wykonywany jest zapis wartości do tablicy. Następnie w 141 linii wykonywane jest resetowanie w sterowniku wartości informującej o konieczności wykonania zapisu.

Ostatnim elementem układanki jest LAMP. LAMP jest akronimem stworzonym z pierwszych liter słów: Linux, Apache, MariaDB/MySQL, Perl/PHP. Jest on zestawem oprogramowania open source, tworzących wspólnie platformę serwerową dla dynamicznych stron WWW. W przypadku napisanej aplikacji platformę oparto na: Linux, Apache, MySQL, PHP.

Wartość co poniektórych zmiennych wyświetlanych na wizualizacji pobierana jest bezpośrednio ze sterownika. W celu uzyskania takiego rezultatu posłużyłem się funkcjonalnością JSON Api sterownika E4, którą opisywałem w tym artykule.

Jak zostało to zaimplementowane w przygotowanej aplikacji? W przygotowanej funkcji napisanej w javascripcie wykonywane jest polecenie GET do serwera na mini PC. Funkcja została pokazana na poniższym zrzucie ekranu.

Wysłane żądanie w kierunku serwera skutkuje wywołaniem funkcji pokazanej poniżej:

Funkcja napisana jest w PHP i jest jedną z funkcji kontrolera obsługującego połączenie z serwerem. Wartością przez nią zwracaną jest odpowiedź sterownika na żądanie utworzone w linii nr 18.

Owa odpowiedź jest następnie przetwarzana wewnątrz funkcji javascript’owej i na jej podstawie modyfikowane są wartości wykresu (linie 10-11) oraz aktualne wartości.

Podsumowanie

Wprowadzenie aplikacji tego typu napotyka często na spory sprzeciw ze strony pracowników. W mojej opinii chęć wprowadzenia tego typu aplikacji oraz jej formę należy konsultować z pracownikami na produkcji. Ostatecznie to oni będą jej użytkownikami, a beneficjentami osoby planujące produkcję. Dotyczy to głównie małych zakładów produkcyjnych, które stopniowo zaczynają wprowadzać automatyczne gromadzenie danych produkcyjnych.

Mam nadzieję, że pokazany w artykule przykład zainspiruje kogoś do wykorzystania sterownika easyE4 w podobny sposób. Myślę, że użycie podobnej architektury ma szansę sprawdzić się w takich miejscach jak zbieranie danych produkcyjnych z maszyn lub automatyka domowa. Sterownik easyE4 jest w mojej opinii elastycznym urządzeniem i można go z powodzeniem wkomponować w różnego rodzaju aplikacje.

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Luty 2020. Nagrodę Koszulka 4F + zestaw gadżetów  dostarcza ambasador konkursu, firma PEPPERL+FUCHS.


Utworzono: / Kategoria: , , ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY