Biblioteka elementów
Aby w pełni wykorzystać możliwości graficzne oprogramowania Adroit konieczne jest skorzystanie z biblioteki elementów. Program ma standardową bibliotekę, która jest instalowana razem z oprogramowaniem. Znajdujące się w niej elementy mogą być wykorzystane w całości lub częściowo, tj. po dokonaniu przeróbek. Wywołanie biblioteki odbywa się poprzez wybranie z menu File->Open w programie Agent Server. W pojawiającym się oknie dialogowym należy wybrać obiekt WizardMenu.mim, który domyślnie umieszczony jest w katalogu c:AdroitWizards. Spowoduje to pojawienie się okienka, w który możliwe jest oglądanie poszczególnych elementów biblioteki. Przycisk More Wizards pozwala na przejście do następnej strony biblioteki, a przycisk Shapes wyświetla elementy statyczne.
Aby wykorzystać dany element w synoptyce, należy go zaznaczyć, a następnie wkleić na ekran synoptyki. Po wykonaniu tej czynności pojawi się okno Wizard substitution (rys. 1), w którym definiuje się zmienną powiązaną z danym elementem. Można ją wpisać ręcznie lub wybrać z listy. Zmienna musi być wcześniej zadeklarowana lub może być dodana w oknie wyboru Select substitution tag (rys. 2). Po zatwierdzeniu wyboru można sprawdzić, czy wszystko działa poprawnie poprzez przełączenie mimiki do trybu Runtime.
![]() Rys. 1. Widok okna podczas wprowadzania nazwy zmiennej dla elementu z biblioteki | ![]() Rys. 2. Widok okna podczas dodawania zmiennej do elementu z biblioteki |
Jako przykład zostanie wykorzystany gotowy element biblioteki. Warto zaznaczyć, że możliwe jest stworzenie zupełnie nowych elementów i umieszczenie ich w bibliotece. W przypadku ich modyfikacji warto zrobić kopię elementu i dopiero wtedy zmieniać jego właściwości. Większość elementów biblioteki składa się z kilku lub kilkudziesięciu części składowych zgrupowanych ze sobą. Jeżeli element po zgrupowaniu zawiera właściwości dynamiczne (behaviours), po rozgrupowaniu zostaną one utracone.
Strukturę połączeń poszczególnych elementów w obiekcie można zobaczyć poprzez zaznaczenie obiektu i wciśnięcie przycisku Ctrl i kliknięcie go myszką (rys. 3). Można wówczas dowolnie zmieniać dany element obiektu. Część elementów jest statyczna, ale niektóre zawierają dodatkowe właściwości. Klikając w oknie na Background color można zmieniać kolor obiektu. Zmieniając Descriptor: <schows on/off, any Discrete value>.value na <dowolna zmienna cyfrowa>.value dokonuje się zmiany właściwości funkcji. Można również zmienić kolor, jaki ma się pojawić, jeżeli zmienna ma wartość 1 i 0.


Szablony
Kolejnym elementem oprogramowania są szablony (mimic templates). Są one zasobnikami obiektów graficznych umieszczanych na synoptyce lub innych zdefiniowanych obiektów i mogą być wielokrotnie używane w danym projekcie. Zmiany wprowadzane w jednym szablonie znajdują odzwierciedlenie wszędzie tam, gdzie dany szablon został użyty. Jest to szczególnie użyteczne dla obiektów, które mają te same lub podobne właściwości i są wielokrotnie wykorzystywane w tym samym projekcie. Przykładem mogą być silniki, mieszadła, pompy, zawory, itp. W oprogramowaniu Adroit szablonami mogą być obrazy synoptyczne, okna wykresów, alarmów lub zdarzeń. Każda nowo utworzona synoptyka może być szablonem. Z kolei utworzona mimika, wykres lub okno alarmowe mogą być przerobione na szablon. Najczęściej używane są tutaj okna synoptyk do tworzenia stacyjek dla obiektów graficznych.


Po zatwierdzeniu zmian należy przejść do głównego obrazu synoptyki i wstawić nowy przycisk, np. wprowadzając nazwę Stacyjka oraz dodać nową funkcję Execute Command. Dalsze czynności to wybór funkcji Open window, której typ należy ustawić na Operate picture oraz wpisanie nazwy Stacyjka.mim w polu File name. Należy również zaznaczyć opcję Enable substitution i wpisać wartość 1 w polu Use group. Pola te znajdują się w grupie opcji zaawansowanych.

Archiwizacja danych
W systemie Adroit przechowywane są jedynie bieżące wartości agentów w postaci plików konfiguracyjnych *.wgp. Możliwe jest cykliczne dokonywanie zapisów poprzez ustawienie slotu saveNow w agencie SystemInfo, co można zrealizować przy użyciu agenta typu Expression i Digital. Po stworzeniu agenta typu Expression jako argument należy podać SystemInfo.minute i sprawdzić, kiedy będzie on równy zeru. Jako wynik podaje się agenta typu Digital o nazwie ZAPIS1GODZ .value, w którym trzeba ustawić parametr Pulsed output na wartość 100ms. Następnie należy skopiować do slotu SystemInfo.saveNow z agenta ZAPIS1GODZ.value wybierając opcję Scan i jako sterownik wskazując Aliascan (rys. 8). Jako typ agenta należy wybrać SystemInfo i slot SaveNow, natomiast jako adres źródłowy - @ZAPIS1GODZ.value.
![]() Rys. 8. Okno skanowania po dodaniu zmienne do sterownika Aliascan | ![]() Rys. 9. Konfiguracja agenta typu Datalog |
Możliwe jest również zapisywanie do bazy danych dowolnego typu agenta, jak i różnych slotów. Aby przejść do okna konfiguracji należy wybrać agenta w oknie konfiguratora i kliknąć na przycisk Log. Wyświetlone zostanie okno z ustawieniami do logowanie danych (rys. 9). W polu Data Set Configuration należy ustawić nazwę pliku do jakiego zapisywana będzie wartość agenta. Pole Length określa ile zapisywanych będzie danych historycznych, natomiast Time definiuje częstotliwość zapisywania próbki. Automatycznie wyliczana jest również wielkość pliku w którym będą zapisywane dane. Po wprowadzeniu wszystkich ustawień należy uruchomić logowanie klikając Start. Pozyskane dane zapisywane są do wewnętrznej bazy danych. Aby je wyeksportować należy użyć narzędzia Extract. Można również zapisywać dane do zewnętrznej bazy typu Access, SQL, itd., do czego należy użyć agenta typu DbAccess.
Wykresy

Aby dodać nowe okno należy wybrać z menu File->New->Trend, otworzyć właściwości okna wybierając z menu górnego View->Properties, a następnie w karcie Plot zdefiniować zmienne, które mają być umieszczone na wykresie. Możliwa jest również zmiana pozostałych parametrów, takich jak: kolory, ustawienia długości czasu okna, siatka na wykresie, itp. Okno wykresu może być również szablonem, który można wykorzystywać wielokrotnie, bez potrzeby każdorazowego definiowania jego parametrów. Aby wywołać okno wykresu z poziomu synoptyki, można przyporządkować dla elementu typu przycisk funkcję Execute command w polu Window Type wybierając Trend i wskazując nazwę pliku.
Alarmy

W omawianym przykładzie wykorzystany zostanie istniejący agent typu Alarm. Po wystąpieniu alarmu w oknie alarmów powinien pojawić się odpowiedni komunikat. Aby tak się stało należy wrócić do utworzonej wcześniej zmiennej typu Digital o nazwie AWARIA. Po jej wybraniu należy kliknąć przycisk Alarm, co spowoduje pojawienie się okna, w którym można wybrać w jakim stanie alarm ma być sygnalizowany (rys. 12). Kolejnym krokiem powinno być dodanie typu On oraz otwarcie nowego okna typu Alarm. Aby sprawdzić poprawność wykonanych operacji należy w oknie stacyjki Urzadzenie1 zasymulować awarię.
![]() Rys. 12. Konfiguracja alarmu dla agenta typu Digital | ![]() Rys. 13. Widok okna alarmowego |
Aby zaakceptować alarm należy zaznaczyć go i kliknąć Global Acknowlegde. Można oczywiście zmienić ustawienia właściwości okna wybierając odpowiednie z menu View->Properties. Jeśli agent zmieni swoją wartość na „0”, zostanie on również usunięty z okna alarmowego. Podobnie skonfigurować można alarmy dla agenta typu Analog. Dostępne są alarmy związane z przekroczeniem górnych i dolnych progów. Standardowy agent typu Alarm został przygotowany tak, aby sygnalizować najczęściej używane alarmy. Można również sygnalizować w nim inne sloty, np. gdy nie może być on prawidłowo odczytany z zewnętrznego urządzenia.

Zdarzenia
W oprogramowaniu Adroit zaimplementowano system kontroli zdarzeń, który bazuje na wykorzystanym w systemie MS Windows. Zdarzenia pozwalają na dostarczanie informacji na temat tego, co się działo w systemie Adroit, pozwalając na stwierdzenie kiedy dany alarm, funkcja lub okno zostały wywołane. Podgląd zdarzeń historycznych jest możliwy dzięki wbudowanej przeglądarce. Użytkownik może filtrować komunikaty według założonych kryteriów, przy czym domyślnie logowane są zdarzenia systemowe oraz alarmy. Jeżeli mają być logowane również inne zdarzenia, takie jak np. zmiana wartości parametru lub załączenie urządzenia, konieczne jest zaznaczenie opcji Log (rys 15). Każda akcja operatora związana ze zmianą wartości danego agenta będzie zapisywana w zdarzeniach. Widok okna konfiguracji zdarzeń został przedstawiony na rys 16.
![]() Rys. 15. Widok funkcji Operator Action z zaznaczoną opcją Log | ![]() Rys. 16. Widok właściwości okna przeglądarki zdarzeń |
Należy wyjaśnić jeszcze sposób filtracji zdarzeń. W polu Agent tag jest wpisany filtr POT*, co oznacza, że będą wyświetlone wszystkie zmienne, które w nazwie na początku mają ciąg znaków POT, a więc na przykład POTW_PRACY. Dodatkowo w polu Filter group jest wpisana wartość „10” co oznacza, że są wyświetlane zmienne z tej grupy. Parametr ten dla każdej zmiennej jest określany w oknie Header.
Podsumowanie
Niniejszy artykuł kończy trzyczęściowy cykl praktycznego kursu programowania SCADA w Adroit6. Pokazany został kompletny zestaw narzędzi pozwalający na zaprojektowanie funkcjonalnego systemu HMI/SCADA, niemniej należy mieć świadomość, że kurs nie wyczerpuje wszystkich zagadnień i możliwości systemu Adroit. Więcej informacji znaleźć na ten temat można m.in. u dostawcy oprogramowania.
Artykuł autorstwa specjalistów z firmy AT Control, opracowanie: Marcin Karbowniczek, Zbigniew Piątek.