Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej
Kierunek: Automatyka i Robotyka –rok 1 2013/2014
____________________________________Projekt: Wielopoziomowe struktury
sterowania i systemy SCADA
Temat: System Batch w SCADa - zenon _____________________________________ Piotr Smaroń
Jerzy Lasyk
Rafał Płatek
Prowadzący:
Prof. dr hab. inż Witold ByrskiMgr. inż Andrzej Latocha
Kraków, styczeń 2014
1. Cel projektuPodstawowym celem projektu jest wykonanie w oprogramowaniu zenon aplikacji
przedstawiającej sterowanie produkcją z wykorzystaniem systemu zarządzania recepturami.
Wykonana aplikacja powinna w pełni wykorzystywać dostępne w programie zenon narzędzia,
służące do pracy z recepturami. Poza aplikacją efektem projektu powinno być także
dokumentacja dzięki, której inni użytkownicy tego oprogramowania będą mogli zdobyć
potrzebą wiedzę do budowy własnych aplikacji. W ramach projektu przedstawiona zostanie
także strona teoretyczna związana z produkcją wsadową (batch production).
2. Produkcja wsadowa (Batch Production) W procesie produkcji wsadowej (Batch production) obiekt będący przedmiotem
produkcji jest tworzony krok po kroku na rożnych stacjach
roboczych, istnieje możliwość wykorzystania różnych
receptur wykonywania produktu [1]. Produkcja batchowa
jest jedną z trzech głównych metod produkcji obok produkcji
masowej (ciągłej) oraz indywidualnej.
Rodzaje produkcji [3]: *zródła rysunku wikipedia
− Produkcja indywidualna (Job production) – każdy produkt jest wykonywany
indywidualnie. Przed rozpoczęciem produkcji kolejnego produktu wykonanie
poprzedniego musi być ukończone.
− Produkcja wsadowa (Batch production) – w tym przypadku grupa produktów jest
wytwarzana w tym samym czasie. Przykładem jest piekarnia wykonująca partię
chlebów. Wszystkie wchodzące w skład tej jednej partii są wykonywane jednocześnie
i według tej samej receptury.
− Produkcja ciągła – jest to produkcja identycznych produktów z wykorzystaniem linii
produkcyjnej. Pracownicy w tym przypadku mają bardzo wyspecjalizowane zadania
polegające na wykonaniu tych samych czynności na każdym produkowanym obiekcie.
Produkcja wsadowa (batch production) jest często spotykanym sposobem produkcji
w wielu gałęziach przemysłu (chemicznym, spożywczym czy farmaceutycznym) [2].
Podstawą tego rodzaju produkcji jest właściwie dozowanie składników produktu (najczęściej
do mieszalnika, reaktora lub innego zbiornika). Dodawanie składników może odbywać się
w określonej kolejności lub być wykonywane jednocześnie przy zachowaniu proporcji
zawartych w recepturze. Oprócz dozowania w trakcie produkcji mogą być wykonywane inne
czynności z udziałem składników lub wytwarzanego produktu. Przykłady takich czynności to
podgrzewanie, chodzenie czy też mieszanie. W przypadku gdy produkcja odbywa się
jednocześnie na kilku stanowiskach, system obsługujący proces produkcyjny musi zapewnić
odpowiednią dostępność składników, drogę dozowania, wzajemne blokady, ewentualnie
zbiorniki pomocnicze. Kolejnym zadaniem jest kontrola stanów magazynowych. System taki
powinien zapewnić ciągłość produkcji. W przypadku prowadzenia produkcji substancji
niebezpiecznych lub w warunkach zagrożenia (skażenie chemiczne, wybuch) system
automatyki odpowiedzialny za proces powinien spełniać dodatkowe wymogi bezpieczeństwa.
Cechy produkcji wsadowej [1] [4]:
− wytwarzanie różnych produktów na tej samej linii produkcyjnej
− redukcja kosztów związanych z rozpoczęciem produkcji – nie ma potrzeby
budowy/zakupu linii produkcyjnej dla każdego produktu z osobna
− wiedza o tym jak ma być wykonany produkt zawarta w recepturze
− produkcja małych ilości produktu – proces produkcji nie jest ciągły
− konieczność przerw w produkcji w przypadku zmiany receptury – przestrojenie
maszyn, czyszczenie zbiorników czy też wymiana składników
Produkcję wsadową najlepiej stosować gdy [1] [4]:
− wytwarzane są różne produkty na tej samej linii
− często wprowadzane są nowe produkty
− produkcja jest optymalizowana, a tym samym zmiany w sposobie wytwarzania
produktu mogą być dość częste
− produkty są projektowane i modyfikowane przez personel pracujący przy produkcji
− chcemy mieć możliwość uruchomienia produkcji na różnych instalacjach
przemysłowych
− nie ma możliwości na budowę specjalizowanej linii produkcyjnej dla każdego
z wytwarzanych produktów
− wytwarzane są produkty sezonowe
Zastosowania produkcji wsadowej [4]:
− przemysł farmaceutyczny
− biotechnologia
− przemysł lakierniczy (farby, lakiery, barwniki)
− środki ochrony roślin
− przemysł spożywczy
− produkcja środków czystości
− przemysł chemiczny
*zródła zdjęć wikipedia
3. Oprogramowanie zenonW projekcie wykorzystane zostało
oprogramowanie zenon wykonane przez firmę
COPA - DATA [5]. zenon stanowi rodzinę produktów służąca do nadzorowania przebiegu
procesów (SCADA), wizualizacji procesów oraz wyposażoną w system interfejsu
użytkownika (Human Machine Interface). W ramach oprogramowania zenon firma COPA-
DATA wprowadziła kilka innowacyjnych rozwiązań w dziedzinie HMI/SCADA. Wśród nich
należy wymienić circular redundancy (redundancja kołowa – zwiększająca bezpieczeństwo
poprzez wymaganie do każdego projektu serwera oraz serwera zapasowego) oraz system
Multitouch (pozwalający na szybka i bezpieczną obsługę interfejsów HMI).
Produkty zenon:
− zenon Anlyzer – narzędzie służące do raportowania produkcji
− zenon Supervisor – pełna wizualizacja i kontrola maszyn oraz urządzeń, możliwość
połączenia z innymi systemami (SAP, ERP)
− zenon Logic – system programistyczny dla sterowników PLC – zgodny z IEC 61131-3
− zenon Operator – służący do obsługi maszyn oraz urządzeń sterujących
Cechy zenona w wersji 7.10 [6]:
− ulepszony moduł Batch Control – technologia dotykowa, integracja w Report Viewer
− Report Viewer – pełne i wszechstronne raportowanie produkcji
− ochrona elementów aplikacji w zenon Editor – niektóre elementy mogą zostać
zablokowane dla pewnych użytkowników
− import zmiennych z SIMANTIC STEP 7
− aplikacje na urządzenia przenośne
− wsparcie dla SQL Server 2012, Multi-Touch oraz Windows 8
− specjalizowane wersje dla sektora energetyki (zenon Energy Edition) oraz przemysłu
farmaceutycznego (zenon Pharma Edition)
4. Receptury w oprogramowaniu zenon
Receptury to zgrupowane akcje ustawiające wartości zmiennych, mogą być używane
do zapamiętywania wartości parametrów [7].
W Projekt Manager pod hasłem Recipes znajdują się dwie pozycje Standard Recipes
oraz Recipegroup Manager. Tworzenie nowej receptury odbywa się poprzez kliknięcie na
Standard Recipes i wybranie opcji New Recipe. W wyniku tego działania dodana zostanie
nowa receptura, automatycznie nadawana jest jej nazwa Recipe + numer porządkowy.
Zarówno nazwę jak i skład receptury można dowolnie modyfikować. Receptura tworzona jest
poprzez dodawanie kolejnych zmiennych oraz ustawianie ich wartości.
Rys. 4.1 Okno Properties nowej procedury
Paramenty receptury można zmieniać w oknie Properties. Można miedzy innymi użyć
narzędzi autoryzacji do ograniczenia dostępu do modyfikacji receptury.
Rys 4.2 Widok Projekt Manager z dodaną recepturą
Użytkowanie receptur odbywa się na dwa sposoby poprzez funkcje oraz poprzez
Recipe Screen. Po dodaniu receptury możemy kliknąć na nią i wybrać opcję Create standard
function. W dalszych krokach określamy względem której z utworzonych receptur funkcja ma
działać oraz jaką akcję ma wykonywać.
Rys. 4.3 Wybór receptury, z którą ma pracować funkcja
Rys. 4.4 Wybór akcji wykonywanej przez funkcję.
Tworzona funkcja może wpisać wartości z receptury do aktualnych zmiennych, może również
odczytać wartości zmiennych i zapisać je do receptury, tym samym nadpisując ją, dostępna
jest także opcja wykonania duplikatu receptury.
Jeśli chcemy utworzyć ekran do zarządzania procedurami, możemy to zrobić dodając
nowy screen i wybierając dla niego Screen type – Standard recipes. Do tak utworzonego
ekranu możemy dodawać różnego rodzaju elementy służące do zarządzania procedurami.
Znajdują się one w Control elements, możemy dzięki temu dodać m.in. takie elementy jak
przyciski New Recipe, Edit Recipe, Add Variable, All Value--, Save Recipe. Jest także
możliwość skorzystania z gotowego szablonu ekranu do zarządzania procedurami. Aby
z niego skorzystać należy wybrać Control elements → Insert templete.. Aby podczas działania
aplikacji w zenon Runtime mieć dostęp do receptur utworzonych w projekcie należy
udostępnić je poprzez wprowadzenie odpowiednich zmian w ustawieniach projektu.
Rys. 4.5 Udostępnienie receptur dla Runtime
Gotowy ekran pozwala m.in. na dodawanie, edycję usuwanie receptur a także na dodawanie
zmiennych czy modyfikację ich wartości.
Rys. 4.6 Ekran receptur w zenon Runtime.
Planista
Receptury mogą być także zarządzane poprzez planistę. Zarządzanie polega na
dodawaniu punktów przełączeń (lub przedziałów czasu z punktami na końcu i początku).
W punktach tych mogę być wywoływane funkcje odpowiedzialne za receptury. W ten sposób
można zautomatyzować przełączanie receptur.
Rys. 4.7 Ustawienie funkcji związanych z recepturami na początku i końcu przedziału czasu
Rys. 4.8 Widok planisty z dodanymi punktami przełączeń
5. Opis realizacji projektuProjekt polegał na stworzeniu aplikacji wykorzystującej receptury. W naszym
przypadku procesem jest wytwarzanie napojów energetycznych 4 rodzajów: Tiger, Black,
Blow i RedBull. Każdy z tych napojów składa się z 5 składników: woda, cukier, dwutlenek
węgla, tauryna oraz aromaty. Proces produkcji przebiega w dwóch etapach. Pierwszym z nich
jest mieszanie 3 składników: wody, cukru oraz dwutlenku węgla w odpowiednich
proporcjach. Powstała mieszanka przepompowywana jest do następnego zbiornika, do
którego wlewane są tauryna i aromaty. Tutaj również następuje mieszanie składników ale już
w określonej dla każdego napoju temperaturze.
Realizacja projektu rozpoczęta została od utworzenia 3 okien: okna procesu, okna receptur
oraz panelu nawigacji. Na ekranie wyświetla się zawsze panel nawigacji z wybranym oknem
i wówczas drugie okno jest niewidoczne. Pozostawiony został również górny pasek alarmów,
domyślnie tworzony dla każdego projektu.
Panel nawigacji
Panel nawigacji jest to podłużne okno znajdujące się na spodzie ekranu. Umieszczone
zostały na nim trzy przyciski, spełniające następujące funkcje:
• Main window – służy do przełączenia widoku na okno procesu. Aby to zrobić,
należało utworzyć funkcję odpowiedzialną za pokazanie głównego okna. Następnie
funkcja ta została przypisana do przycisku poprzez wskazanie jej nazwy w jego
parametrach. Dodatkowo okno z przebiegiem procesu można włączyć poprzez
wciśnięcie kombinacji klawiszy ALT+M. Ta możliwość również została
skonfigurowana w opcjach przycisku.
• Recipes – przycisk służy do pokazania okna receptur. Został skonfigurowany
analogicznie jak powyższy przycisk. Skrót klawiszowy dla tego przycisku to ALT+R.
• Exit Runtime – wyłączenie trybu „Runtime” – powoduje zamknięcie działającej
aplikacji. Został mu przypisany skrót klawiszowy ALT+E.
Panel nawigacji przedstawiony został na Rys. 5.1.
Rys. 5.1 Panel nawigacji
Okno receptur
Okno receptur zostało utworzone poprzez menu Control Elements, wybierając opcję
Insert Template. Opcja ta umożliwia wstawienie predefiniowanego szablonu okna receptur
w wybranej przez projektanta rozdzielczości.
Aby umożliwić zapisywanie receptur tworzonych podczas działania aplikacji, należało
zmienić ustawienia projektu – w folderze General należało wejść do RT Changeable data
i odznaczyć checkbox Standard Recipes.
Okno receptur znajduje się na Rys. 5.2
Rys. 5.2 Okno receptur
Okno procesuW oknie procesu możemy wyróżnić elementy zarówno statyczne jak i dynamiczne.
Głównymi elementami są dwa zbiorniki, przeznaczone dla 2 etapów powstawania produktu.
Połączone są ze sobą rurociągiem, na którym umieszczone są dwa zawory oraz pompa. Jeden
z zaworów kontroluje odpływ mieszanki z pierwszego zbiornika, natomiast drugi z zaworów
otwiera lub zamyka wlot mieszanki do drugiego zbiornika. Pompa obrazuje element
pompujący mieszankę z pierwszego zbiornika do drugiego. Od wlotu pierwszego zbiornika
odchodzą 3 rury, przez które transportowane są następujące składniki: woda, cukier
i dwutlenek węgla. Składniki te prezentowane są tak, że na końcu każdej rury znajduje się
strzałka, poprzedzona cyfrowym wyświetlaczem wartości objętości każdego ze składników
używanego w procesie. W przypadku wody użyto dodatkowego zbiornika, symbolizującego
kontener z wodą, za którym znajduje się zawór służący do odcięcia przepływu wody.
Dodatkowo nad pierwszym zbiornikiem umieszczony został motor, którego wyprowadzone
mieszadło kończy się w środku zbiornika. Na zbiorniku umieszczony został wskaźnik
poziomu wypełnienia. Został on odpowiednio przeskalowany do pojemności zbiornika, tj. od
0 do 1500 litrów. U wejścia drugiego zbiornika, oprócz rurociągu doprowadzającego
mieszankę z pierwszego zbiornika, znalazły się silnik oraz dwa rurociągi doprowadzające
taurynę oraz kofeinę do środka. Na zbiorniku umieszczono również symbol grzałki,
wskazującej temperaturę, w jakiej będzie odbywało się mieszanie składników. Również na
tym zbiorniku umieszczono odpowiednio przeskalowany wskaźnik wypełnienia. Dodatkowo
pod grzałką znajduje się wskaźnik aktualnej temperatury cieczy. Z drugiego zbiornika
wychodzi rura zakończona zaworem. Każdy obiekt (poza strzałkami i rurami) został opisany
tekstowo.
Start procesu odbywa się poprzez naciśnięcie przycisku Start, umieszczonego na lewo od
pierwszego zbiornika. Podczas działania, proces można zatrzymać, naciskając na ten
przycisk.
Rys. 5.3 Okno procesu
Opis i konfiguracja poszczególnych elementów graficznych znajdujących się w oknie
procesu:
• silniki, zawory i pompa – elementy te zostały wstawione z Global symbol library
z folderu Pharma 2D. Zmienne do tych elementów zostały przypisane poprzez
właściwości obiektu – z folderu Linking Rule w polach Source i Target wpisano
odpowiednio: motor.running (dla silnika), valve.state (dla zaworu) i motor.state (dla
pompy), natomiast w polu Target odpowiednią zmienną przedstawiającą stan elementu
(typu BOOL).
• pola numeryczne – są to elementy „7-Segment Display 6 digits” z folderu Pharma
Displays w bibliotece Global symbol library. Zmienne zostały przypisane
w analogiczny sposób jak dla powyższych kontrolek: w Source wpisano number,
natomiast w Target odpowiednią zmienną.
• strzałki – elementy „3D arrow right” z folderu „Arrows” w bibliotece Global symbol
library. Zostały użyte strzałki dwóch rodzajów: wskazujące w prawo i lewo.
• zbiorniki - zbiorniki zostały importowane z biblioteki graficznej przykładowej
aplikacji Food & Beverage, dołączanej standardowo do instalacji oprogramowania
SCADA zenon. Eksport biblioteki projektu można wykonać poprzez kliknięcie
prawym przyciskiem myszy na elemencie Project symbol library w gałęzi Screens
w danym projekcie i wybranie polecenia Export XML all... . Import dokonuje się
w analogiczny sposób, wybierając z rozwijalnego menu opcję Import XML
i wskazując miejsce pliku uprzednio eksportowanego.
• wskaźniki wypełnienia – elementy Bar display dostępne z menu Elements. Służą do
wyświetlania poziomu wypełnienia. Zostały do nich przypisane zmienne
przechowujące wartości wypełnienia zbiornika. Konfiguracja elementów polegała na
zmianie skali na przedział od 0 do 1500.
• grzałka oraz rury – są to elementy Pipe dostępne z menu Elements. Główny rurociąg
łączący oba zbiorniki oraz wylot drugiego zbiornika mają wielkość 15 punktów,
natomiast pozostałe rury mają wielkość 5 punktów. Wielkość rury można zmieniać
poprzez konfigurację pola Line Width w polu Representation. Grzałka została
utworzona z elementu Pipe, jej wielkość to również 5 punktów.
• tekst – element Static Text dostępny z menu Elements. Wyświetlaną wartość zmienia
się w polu Text w zakładce Representation w konfiguracji obiektu. Pola tekstowe
posłużyły do opisu elementów zamieszczonych w głównym oknie aplikacji.
• przycisk start/stop - standardowy przycisk dostępny z panelu Elements. Została do
niego przypisana zmienna start typu Boolean. W zależności od wartości zmiennej,
przycisk zmienia kolory na zielony z napisem Start (dla wartości true) oraz kolor
czerwony z napisem Stop (dla wartości false).
Zmienne i typy zmiennych
Zmienne w programie służą do przechowywania wartości oraz mogą być
przypisywane do różnych obiektów, które zmieniają swój wygląd w trakcie działania
programu. W programie używaliśmy zarówno predefiniowanych typów jak i utworzonych
przez nas typów złożonych. Takim typem złożonym jest struktura Tank, składająca się
z trzech elementów: Fill (UINT) – poziom wypełnienia zbiornika, Drain (UINT) – szybkość
wypływania cieczy ze zbiornika, Supply (UINT) – szybkość dostarczania składników do
zbiornika. Typ strukturalny utworzono poprzez wybranie opcji New Structure Datatype
w Variables/Datatypes. Następnie dodano do niego poszczególne pola poprzez kliknięcie
prawym przyciskiem myszy na nowo utworzonym typie i wybraniu opcji New structure
element.
W programie utworzono zmienne typu prostego, potrzebne do określenia wielkości
poszczególnego składnika w procesie produkcyjnym i używane przez receptury. Są to
następujące zmienne: water, sugar, gas, taurine, aroma, temperature.
Do każdego z dynamicznych elementów (silniki, zawory, pompa) zostały przypisane zmienne
typu BOOL, przechowujące informację o ich stanie (włączony/wyłączony). W przypadku
zaworów i silników były to tablice zmiennych. Tablice zmiennych można utworzyć przy
definiowaniu zmiennej, wystarczy zmienić wymiar zmiennej (ang. dimension).
Funkcje
W aplikacji używane są funkcje odpowiedzialne za przełączanie okien oraz
wychodzenie ze środowiska Runtime. Funkcje zostały utworzone poprzez opcję New
Function wybraną z menu kontekstowego poprzez naciśnięcie prawego klawisza myszy na
zakładce Functions w menu projektu. Z pojawiającego się okna można wybrać interesującą
nas funkcję: Exit Runtime znajduje się w zakładce Application, natomiast Screen Switch
w zakładkach Favourites i Screen.
Receptury
Receptury utworzone zostały w oknie Standard recipes w zakładce Recipes z menu
projektu. Po wybraniu New recipe, wybrane zostały odpowiednie zmienne wchodzące
w skład receptury. W przypadku niniejszego projektu każda receptura składała się ze
zmiennych: water, sugar, gas, taurine, aroma, temperature. Następnie ustalono odpowiednie
wartości tych zmiennych poprzez zmianę pola Set value. Tak utworzone receptury widoczne
są w trybie Runtime w oknie receptur. Można je stamtąd eksportować i importować.
Skrypt VB – realizacja animacji
Aby dynamiczne elementy graficzne mogły być animowane, potrzebny był skrypt,
który kontrolowałby przepływem programu. zenon udostępnia kilka możliwości do pisania
programów, w poniższej pracy zdecydowano się na skrypt w języku Visual Basic. Edytor
skryptów VB dostępny jest w głównym drzewku pod elementem Programming
Interfaces/Process Control Engine. Po otworzeniu edytora mamy możliwość dodania nowego
zadania – Task’u, poprzez wybranie pozycji New Task. Należało skonfigurować powstały
task, w naszym przypadku zostały wybrane następujące opcje: typ cykliczny, task startuje
razem z systemem, wykonywanie co 10 ms. Później należy wybrać wszystkie zmienne
zdefiniowane w zenon Editor a których mamy zamiar używać w skrypcie VB. Plik z kodem
otwieramy klikając dwukrotnie na nazwę task’u. Znajdują się tam od razu 3 predefiniowane
procedury: init, main i exit, wykonywane odpowiednio na starcie runtime, podczas trwania
runtime, na wyjściu z runtime.
Cały program został pomyślany jako maszyna stanu, gdzie poszczególne stany opisują
zachowanie dynamicznych elementów w kolejnych, następujących po sobie krokach. Kod
znajduje się w funkcji Task_Main(), w funkcji Task_Init() umieszczone zostały jedynie dwa
przypisania zmiennych, natomiast funkcja Task_Exit() jest nieużywana.
Poszczególne stany przedstawiają się następująco:
1. przygotowanie do startu – załadowanie receptur,
2. odczekanie chwili na start procesu,
3. napełnienie pierwszego zbiornika składnikami,
4. mieszanie zawartości pierwszego zbiornika,
5. przelanie zawartości pierwszego zbiornika do drugiego zbiornika,
6. dodanie pozostałych składników do drugiego zbiornika,
7. podgrzewanie zawartości drugiego zbiornika,
8. mieszanie składników w drugim zbiorniku,
9. wypuszczenie gotowego zbiornika,
10. przejście do początku programu.
Maszyna stanu zrealizowana została za pomocą instrukcji Select Case, która cyklicznie
realizowała dany stan, określony w zmiennej o tej samej nazwie – stan. Opóźnienia
w programie realizowane były przez inkrementację jednej ze zmiennych do odpowiedniej
wartości. Skonfigurowany Task w edytorze VB znajduje się na Rys. 5.4.
Rys. 5.4 Edytor VB ze sokonfigurowanym Task'iem
Uwagi końcowe
Podczas projektowania aplikacji okazało się, że rozłożenie elementów w trybie edycji okna
i trybie działania aplikacji jest różne – część elementów po przejściu w tryb Runtime została
przesunięta.
Debugowanie programów napisanych w edytorze VB jest utrudnione z tego powodu,
że kompilator podaje bardzo mało informacji istniejących w programie błędach.
6. Kody źródłowe z opisemKod znajdujący się w edytorze VB został zamieszczony poniżej. Linie zaczynające się
od pojedynczego apostrofu oznaczają komentarz i zostały umieszczone dla rozjaśnienia
zamieszczonych tam instrukcji.
Każde odwołanie do zmiennej zdefiniowanej w zenon Editor musi odbywać się poprzez
instrukcję Task.Value(„nazwa zmiennej”), natomiast odwołania do zmiennych
zdefiniowanych wewnątrz edytora nie wymagają już takich poleceń.
'Globalna deklaracja zmiennychDim stan, licznik 'zmienne przechowujace numer aktulanego stanu i uzywany miejscami licznik'do ponizszych zmiennych przepisywane sa wartosci receptur w momencie uruchomienia programuDim waterR, sugarR, gasR, taurineR, aromaR, temperatureR'zmienne przechowuja wartosci maksymalnego wypelnienia zbiornikaDim FillLevel1, FillLevel2
'InitfunctionSub Task_Init()'Poczatkowa inicjalizacja zmiennychstan = 1licznik = 0
End Sub
'The Mainfunction is a cyclic functionSub Task_Main()
'Program dziala tylko, jesli uzytkownik wcisna przycisk StartIf Task.Value("start") = 0 Then'Rozpoczecie instrukcji wykonywania odpowiedniego stanuSelect Case stanCase 1 'Przygotowanie do startu
licznik = 0
'Ustawianie zmiennych do stanu poczatkowego'Sposob przedstawiony ponizej pozwala na odwolanie sie'do zmiennej zdefiniowanej w edytorze zenonTask.Value("Motor[1]")=falseTask.Value("Motor[2]")=falseTask.Value("Valve[1]")=falseTask.Value("Valve[2]")=falseTask.Value("Valve[3]")=falseTask.Value("Valve[4]")=falseTask.Value("Pump")=falseTask.Value("PumpRotation")=falseTask.Value("Tank[1].Fill level")=0Task.Value("Tank[2].Fill level")=0'Odczytanie wartosci recepturwaterR = Task.Value("water")sugarR = Task.Value("sugar")gasR = Task.Value("gas")taurineR = Task.Value("taurine")aromaR = Task.Value("aroma")temperatureR = Task.Value("temperature")Task.Value("currTemperature") = 0'Przejscie do stanu drugiegostan = 2
Case 2 'Odczekanie chwili przed rozpoczeciem procesulicznik = licznik + 1If licznik = 50 Then
licznik = 0stan = 3
End IfCase 3 'Napelnianie zbiornika skladnikami
Task.Value("Valve[4]") = true'Maksymalna wartosc wypelnienia osiagana przez 1. zbiornikFillLevel1 = waterR+sugarR+gasR'Wartosc wypelnienia bedzie zwiekszana co 10 jednostek'w kazdym powtorzeniu cyklu (mniej wiecej co 10ms)If Task.Value("Tank[1].Fill level") < FillLevel1 Then
Task.Value("Tank[1].Fill level") = Task.Value("Tank[1].Fill level")+10
Elsestan = 4
End IfCase 4 'Proces mieszania
Task.Value("Valve[4]") = falseTask.Value("Motor[1]") = trueIf licznik < 500 Then
licznik = licznik + 1Else
Task.Value("Motor[1]") = falselicznik = 0stan = 5
End IfCase 5 'Przelanie zawartosci zbiornika
Task.Value("Valve[1]") = trueTask.Value("Pump") = trueTask.Value("Valve[2]") = trueIf Task.Value("Tank[1].Fill level") > 0 Then
Task.Value("Tank[1].Fill level") = Task.Value("Tank[1].Fill level") - 10
Task.Value("Tank[2].Fill level") = Task.Value("Tank[2].Fill level") + 10
Elsestan = 6
End IfCase 6 'Dodanie do 2 zbiornika skladnikow
Task.Value("Valve[1]") = falseTask.Value("Pump") = falseTask.Value("Valve[2]") = falseIf licznik < 300 Then
licznik = licznik + 1Else
Task.Value("Tank[2].Fill level") = Task.Value("Tank[2].Fill level") + aromaR+taurineR
licznik = 0stan = 7
End IfCase 7 'Podgrzewanie
'Zwiekszanie temperatury odbywa sie z czestotliwoscia'dwukrotnie mniejsza od trwania cykluIf licznik/2 < temperatureR Then
Task.Value("currTemperature") = licznik/2licznik = licznik + 1
Elselicznik = 0stan = 8
End IfCase 8 'Mieszanie skladnikow w drugim zbiorniku
Task.Value("Motor[2]") = trueIf licznik < 500 Then
licznik = licznik + 1Else
licznik = 0Task.Value("Motor[2]") = falsestan = 9
End If
Case 9 'Wypuszczenie gotowego produktuTask.Value("Valve[3]") = trueIf Task.Value("Tank[2].Fill level") > 9 Then
Task.Value("Tank[2].Fill level") = Task.Value("Tank[2].Fill level") - 10
ElseTask.Value("Valve[3]") = falsestan = 10
End IfCase 10 'Przejscie do poczatku programu
Task.Value("start") = 1End Select
Else 'Reset programu'Jesli uzytkownik wybral nowa recepte i ponownie wcisna'przycisk Start, nastapi przejscie do 1. stanuIf stan = 10 And Task.Value("start") = 1 Then
stan = 1End If
End If 'start
End Sub
'ExitfunctionSub Task_Exit()
End Sub
'TimerfunctionSub Task_Timer(lTimerId)
End Sub
7. Instrukcja dla użytkownika aplikacjiPo uruchomieniu aplikacji widzimy dwa okna: główne okno procesu,
z zamieszczonymi graficznymi elementami przedstawiającymi zbiorniki, zawory itd. oraz
znajdujący się poniżej panel z przyciskami.
Panel nawigacji
Na panelu dostępne są 3 przyciski:
• Main window – po naciśnięciu pokazuje główne okno procesu; można w tym celu
użyć również skrótu klawiszowego Alt+M,
• Recipes – przejście do okna z recepturami, skrót klawiszowy to Alt+R,
• Exit Runtime - wyjście ze środowiska Runtime, skrót klawiszowy to Alt+E.
Panel nawigacji przedstawiony został wcześniej na Rys. 5.1
Okno receptur
Okno to stanowi zespół elementów, dzięki którym w pełni możemy zarządzać
recepturami. W górnym lewym rogu umieszczona jest lista rozwijalna, z której możemy
wybrać zdefiniowane uprzednio receptury. Po wybraniu jednej z nich, zmienne dodane do
receptury oraz ich wartości wyświetlają się poniżej. Wartość przypisaną do danej zmiennej
można zmienić, klikając na pole w kolumnie Value. Po obu stronach zostanie wówczas
wyświetlony zakres wartości przyjmowanych przez zmienną.
Idąc kolejno od lewego górnego rogu napotykamy na następujące przyciski:
• Recipe new – służy do dodawania nowej receptury. W pojawiającym się okienku
jesteśmy pytani m.in. o nazwę nowej receptury oraz poziom autoryzacji, potrzebny do
jej używania.
• Edit recipe – służy do edytowania aktualnie wyświetlanej receptury. Wyskakujące
okienko pyta nas o te same dane, jak powyżej.
• Copy recipe - aktualnie wyświetlana receptura zostanie skopiowana.
• Delete recipe – aktualnie wyświetlana receptura zostanie skasowana.
• Add variable - dodanie nowej zmiennej do receptury. Z pojawiającego się okienka,
zawierającego wszystkie zdefiniowane przez użytkownika zmienne oraz zmienne
stworzone wraz z tworzeniem projektu, należy wybrać zmienne, które chcemy dodać
do receptury, klikając na odpowiednią nazwę zmiennej dwukrotnie. Możemy wybrać
więcej niż jedną zmienną.
• Release variable – usuwanie konkretnej zmiennej z receptury.
• Read recipe – przypisanie nowych wartości do zmiennych w danej recepturze. Nowe
wartości zostaną zaczerpnięte z aktualnych wartości zmiennych.
• Write recipe – przypisywanie wartości zmiennych zdefiniowanych w recepturze do
zmiennych w aplikacji.
• Edit set value – edytowanie wartości przypisanej do zmiennej w recepturze.
• All value-- - wszystkie wartości zmiennych w recepturze zostaną zmniejszone o 1.
• All values++ - analogicznie jak wyżej, aczkolwiek wszystkie wartości zmiennych
zostaną powiększone o 1.
• Recipe save – zapisanie aktualnej receptury. Przydatne przy
tworzeniu/modyfikowaniu receptur.
• Import recipe – służy do importowania wcześniej zdefiniowanego i zapisanego na
dysku pliku z recepturami.
• Export recipe – służy do eksportowania aktualnie wyświetlanej receptury do pliku.
Okno główne programu
W oknie tym przedstawiony został proces produkcji napojów energetycznych.
Niektóre elementy (zawory, silniki) będą zmieniały swoje stany podczas działania procesu.
Pola numeryczne wyświetlają aktualne wartości receptur i zmiennych. Na zbiornikach
umieszczone zostały wskaźniki poziomu wypełnienia, które również zmieniają się w trakcie
działania programu. W tym oknie jedynym aktywnym przyciskiem jest przycisk Start/Stop
umieszczony po lewej stronie pierwszego ze zbiorników. Przy uruchamianiu programu
przycisk ten wyświetla napis Start i ma kolor zielony, po jego naciśnięciu kolor zmienia się na
czerwony a napis na Stop.
Uruchamianie programu
Aby uruchomić program, najpierw należy przejść do okna receptur. W tym celu naciskamy
przycisk Recipes, umieszczony w panelu nawigacyjnym. W górnym lewym rogu umieszczone
zostały predefiniowane receptury. Po wybraniu jednej z nich, klikamy na przycisk Write
Values, znajdujący się po prawej stronie. Sprawi to, że wybrane przez nas wartości zmiennych
zapisanych w recepturze przepisane zostaną do zmiennych zdefiniowanych w programie.
Następnie przechodzimy do głównego okna procesu, naciskając na przycisk Main Window
znajdujący się na panelu nawigacyjnym. Możemy teraz zauważyć, że pola numeryczne,
podpisane H2O, Sugar, C2O itd. będą wyświetlały wartości zapisane w recepturze.
Naciskamy na przycisk Start – wówczas uruchomiony zostanie cały proces. Podczas jego
działania program będzie przechodził przez następujące kroki:
1. przygotowanie do startu – załadowanie receptur,
2. odczekanie chwili na start procesu,
3. napełnienie pierwszego zbiornika składnikami,
4. mieszanie zawartości pierwszego zbiornika,
5. przelanie zawartości pierwszego zbiornika do drugiego zbiornika,
6. dodanie pozostałych składników do drugiego zbiornika,
7. podgrzewanie zawartości drugiego zbiornika,
8. mieszanie składników w drugim zbiorniku,
9. wypuszczenie gotowego zbiornika,
10. przejście do początku programu.
W międzyczasie niektóre elementy graficzne będą się zmieniały – np. kolory na zaworach,
poziom wypełnienia itd. Użytkownik w każdej chwili może zatrzymać proces naciskając na
przycisk Stop. Aby wznowić proces należy nacisnąć na przycisk Start.
Gdy proces zakończy się, czerwony do tej pory przycisk z napisem Stop, zamieni kolor na
zielony, tekst zostanie wówczas zamieniony na Start. Jest to znak, że można wybrać nową
recepturę i powtórzyć działanie całego procesu z nowo załadowaną recepturą.
8. Bibliografia
[1] http://en.wikipedia.org/wiki/Batch_production
[2] http://www.biap.com.pl/pl/products/12/show/11/Produkcja_wsadowa,_batching
[3]
http://www.bbc.co.uk/schools/gcsebitesize/business/production/methodsofproductionrev1.sht
ml
[4]
http://cache.automation.siemens.com/media/60237473_SIMATIC_BATCH_en_web/start.htm
[5] http://pl.wikipedia.org/wiki/Oprogramowanie_Zenon
[6] http://copa-data.automatykab2b.pl
[7] Training Material ZENON BASIC TRAINING
[8] zenon material – Programming Interfaces, v.7.00
[9] Pomoc programu zenon
Top Related