Witamy

>> Pomoc dla użytkowników systemu Asix - wersji 7

www.asix.com.pl

Asix.Evo - Pierwsze kroki

Dok. Nr PLH7E002

Wersja: 2013-09-19


1. Informacje wstępne

Dodatek Asix.Evo jest modułem rozszerzającym możliwości pakietu Asix. Nowa funkcjonalność wprowadzona w Asix.Evo to przede wszystkim:

a) Całkowicie nowy system wizualizacji stanu procesu wraz z nowym środowiskiem budowy aplikacji.

b) Nowa technologia aplikacji internetowych, która pozwala na uzyskanie identycznej jak aplikacje okienkowe funkcjonalności. Nie jest wymaga konwersja aplikacji na format HTML.

c) Zmodernizowany system obsługi alarmów.

Aplikacje wykonane w technologii Asix.Evo wykorzystują elementy standardowego pakietu Asix w zakresie odczytu danych bieżących, zapisu i odczytu archiwów danych procesowych oraz komunikacji ze stanowiskami wykonującymi standardowe aplikacje Asix. Aplikacje Asix.Evo mogą również współpracować z programami Astrend i Asbase.

W dalszej części dokumentacji określeniem Asix będą oznaczane wszystkie informacje odnoszące się bezpośrednio do elementów wchodzących w skład podstawowego pakietu Asix.


21Wymagania systemowe

1.1. Wymagania systemowe

Asix.Evo wymaga do działania systemów operacyjnych Windows XP SP2 lub nowszych, lub systemów serwerowych Windows Server 2003 lub nowszych. Dodatkowo wymagana jest instalacji platformy .NET 3.51.

W przypadku aplikacji internetowych wymagana jest instalacja modułu IIS w wersji 5 lub nowszej dla stanowiska serwera aplikacji. Stanowiska klienckie muszą wykorzystywać przeglądarkę Internet Explorer 5 lub nowszą.


Instalacja

1.2. Instalacja

Dodatek Asix.Evo instalowany jest w ramach standardowego instalatora pakietu Asix. Z reguły należy instalować pełny pakiet - łącznie ze wszystkimi elementami Asixa klasycznego.

Można zainstalować tylko elementy Asix.Evo wtedy, gdy:

a) stanowisko pełni wyłącznie rolę serwera internetowego;

b) stanowisko jest typu terminalowego pobierającego dane wyłącznie sieciowo ze stanowisk serwerowych Asix.Evo oraz w aplikacji nie są używane programy AsTrend i AsBase.


2. Pierwsza aplikacja

W rozdziale tym zostanie przedstawiony kompletny proces utworzenia i uruchomienia bardzo prostej aplikacji Asix.Evo. Zadaniem tej aplikacji będzie wyświetlenie pojedynczego okna, w którym będzie wyświetlana aktualna godzina.


21Utworzenie nowej aplikacji

2.1. Utworzenie nowej aplikacji

Po uruchomieniu programu AsixEvo wykonujemy komendę Nowa aplikacja… z menu Plik. Zostanie wyświetlone poniższe okno dialogowe, w którym należy podać nazwę katalogu, w którym będą przechowywane pliki konfiguracyjne.

Rys. Okno deklaracji katalogu aplikacji.

W przypadku aplikacji Asix.Evo praktycznie wszystkie używane pliki znajdują się w dwóch katalogach. Pliki konfiguracyjne znajdują się w katalogu (i jego podkatalogach) podanym w powyższym oknie. Pliki robocze (np. archiwa, pliki logów) są zapisywane w katalogu roboczym, którego nazwa jest tworzona automatycznie. W tym przypadku byłaby to nazwa c:\asixevo\zegar_work. Lokalizację katalogu roboczego można zmienić w Ustawieniach stanowisk.

Po utworzeniu aplikacji w panelu Eksplorator aplikacji (menu Widok > Eksplorator aplikacji) pokazane jest drzewo elementów składowych aplikacji. Poprzez ten panel można uzyskać dostęp do paneli edycyjnych elementów, zazwyczaj poprzez podwójne kliknięcie na elemencie drzewa eksploratora.

UWAGA:

Wygląd okna roboczego może się różnić od pokazanego na przykładowych ilustracjach. Wygląd okna, położenie i rodzaj paneli, paski narzędziowe mogą być parametryzowane przy pomocy komend z menu Widok oraz metodami przeciągnij i upuść.

Rys. Okno główne programu Asix.Evo.exe.


2.2. Edycja diagramu zegara

Pierwszym krokiem w budowie naszej aplikacji będzie utworzenie diagramu, w którym następnie umieścimy obiekt pokazujący aktualny czas. W tym celu po kliknięciu prawym przyciskiem na elemencie Diagram eksploratora aplikacji z menu kontekstowego wybieramy komendę Utwórz diagram. Poniższa ilustracja pokazuje okno programu AsixEvo, w którym w centralnym panelu wyświetlany jest diagram w trybie edycji. W panelu właściwości pokazywane są wartości wszystkich właściwości opisujących parametry diagramu. Panel Właściwości jest podstawowym elementem używanym w trakcie edycji diagramów i okien. W przedstawionym przypadku została już zmieniona nazwa diagramu na Zegar, kolor tła diagramu, oraz właściwość Stałe rozmiary. Dostępne są dwa układy panelu właściwości: klasyczny i kompaktowy. Tryb pracy można zmienić korzystając z przycisku [image] w górnym prawym narożniku panelu. W pierwszym przykładzie będziemy korzystać z układu klasycznego, w którym wszystkie właściwości pokazywane są na jednej liście.

Na poniższej ilustracji została już zmieniona nazwa diagramu na Zegar, kolor tła diagramu, oraz właściwość Stałe rozmiary.

Rys. Okno edycji diagramu.

Kolor tła został zmieniony przy pomocy specjalizowanego okna wyboru koloru, otwieranego przy pomocy wskazanego poniżej przycisku w polu edycyjnym właściwości Kolor tła.

Rys. Opcja wyboru koloru tła diagramu.

Zestaw dostępnych przycisków może się różnić w zależności od typu właściwości.

Ustawienie właściwości Stałe rozmiary na Nie powoduje, że w trakcie wykonywania aplikacji rozmiar diagramu będzie dopasowywał się automatycznie do rozmiaru okna, w którym będzie wyświetlany. Wartość właściwości typu Tak/Nie zmienia się najszybciej poprzez podwójne kliknięcie w obszarze wartości.

Kolejnym krokiem będzie umieszczenie na diagramie obiektu typu Tekst, który będzie wyświetlał aktualną datę i godzinę. W tym celu należy:

  1. Uaktywnić panel Przybornik. (menu Widok > Przybornik)

  2. Rozwinąć sekcję Obiekty przybornika.

  3. Wybrać przez kliknięcie obiekt typu Tekst.

  4. Przy pomocy myszki zaznaczyć w polu diagramu obszar, w którym aktualny czas będzie wyświetlany.

Następna ilustracja pokazuje okno programu po wykonaniu tych czynności.

Rys. Okno edycji diagramu - po wstawieniu obiektu Tekst.

Obiekt Tekst jeszcze nie wyświetla niczego. Żeby to zmienić należy w panelu Właściwości zlokalizować właściwość Tekst obiektu.

Rys. Obiekt Tekst - określanie treści.

Przy pomocy ostatniego z przycisków otwieramy okno wyboru zmiennej procesowej.

Rys. Okno wyboru zmiennej.

Na tym etapie dostępny jest tylko predefiniowany zestaw zmiennych systemowych opisujących wewnętrzny stan aplikacji. Zmiennych tych nie trzeba definiować. Poza tym zmienne te są używane tak samo jak zmienne procesowe pobierane ze sterowników PLC i mierników. Należy wybrać zmienną DateTime, której wartość jest zawsze równa aktualnemu czasowi.

Efekt tych operacji pokazany jest na następnej ilustracji. Zmienione zostały też właściwości Kolor i Styl czcionki. Wartości zmienionych właściwości wyświetlane są pogrubioną czcionką.

W polu właściwości Tekst znajduje się wartość &DateTime. Znak & jest skrótową notacją oznaczającą odwołanie do wartości zmiennej procesowej podanej po znaku & (inne metody odwołania do wartości zmiennych zostaną podane w następnych rozdziałach dokumentacji). Ponieważ wartość zmiennej jest typu DateTime (nie mylić z nazwą zmiennej), to obiekt automatycznie formatuje wyświetlany tekst zgodnie z ustawieniami systemowymi daty i czasu (metody jawnego formatowania zostaną podane w następnych rozdziałach).

Rys. Okno edycji diagramu - po parametryzacji obiektu Tekst.


2.3. Edycja okna startowego

Kolejnym krokiem jest utworzenia okna, w którym będzie wyświetlony diagram Zegar. Okno to będzie uruchamiane automatycznie na starcie programu w trybie aplikacyjnym.

W systemie Asix.Evo diagramy obrazujące stan procesu wyświetlane są zawsze w ramach okna. Okna są obiektami systemu Windows i posiadają typowe właściwości okien, np. linia nagłówka, menu, ramka. Wewnątrz okna w tzw. panelach wyświetlane są diagramy. W każdej aplikacji jest zdefiniowane przynajmniej jedno okno.

Tworzymy nowe okno poprzez użycie komendy Utwórz okno z menu kontekstowego elementu Okna drzewa eksploratora aplikacji. Następnie zmieniamy nazwę okna we właściwości Nazwa okna, oraz ustalamy rozmiar okna. Ustawienie rozmiaru okna jest bardzo istotne, ponieważ jest to rzeczywisty rozmiar okna w momencie uruchomienia aplikacji.

Efekt jest widoczny na następnej ilustracji.

Rys. Panel edycji okna aplikacji.

Kolejny krok to dodanie do okna panelu. W naszej aplikacji wystarczający będzie pojedynczy panel wypełniający cały obszar okna. W tym celu należy wykonać:

  1. Z menu kontekstowego okna wykonać komendę Dodaj Panel.

  2. Tryb dokowania panelu ustawić na Wypełnienie. (Podwójne kliknięcia w polu właściwości Dokowanie przełączają kolejno dopuszczalne wartości.)

  3. Ustawić właściwość Domyślny diagram na Zegar. Właściwość ta określa jaki diagram zostanie wyświetlony w panelu w momencie otwarcia okna. W trakcie dalszego działania aplikacji można załadować do panelu dowolny inny diagram.

Efekt tych działań pokazany jest poniżej.

Rys. Panel edycji okna aplikacji - widok z wstawionym panelem.


2.4. Ustawienie parametrów startowych

Kolejnym krokiem jest ustawienie okna startowego aplikacji. Najpierw podwójnym kliknięciem na elemencie Ustawienia stanowisk otwieramy panel edycji ustawień aplikacji zależnych od aktywnego stanowiska. Dodatkowo wybieramy jeszcze wyświetlenie panelu Stanowiska (menu Widok > Stanowiska).

Rys. Ustawienia stanowiska.

W momencie utworzenia aplikacji zostało także utworzone pojedyncze stanowisko pracy o nazwie zgodnej z nazwą komputera umieszczone w obszarze o nazwie Serwery. Można oczywiście tworzyć więcej stanowisk, ale w naszym przypadku nie jest to konieczne. Obowiązuje hierarchiczne dziedziczenie ustawień. Ustawienia z obszaru nadrzędnego obowiązują na stanowisku, o ile nie zostały jawnie przedefiniowane. Poprzez klikanie na węzłach drzewa stanowisk można przełączyć się na edycję ustawień dla właściwego stanowiska lub obszaru.

Na dolnym pasku statusowym wyświetlana jest nazwa wybranego stanowiska/obszaru, którego parametry są aktualnie edytowane. Natomiast w linii tytułu wyświetlana jest nazwa stanowiska w kontekście, którego program aktualnie pracuje. Nie ma ona nic wspólnego z edycją parametrów. Jeżeli nie zostało to inaczej ustawione, to domyślnie jest to stanowisko o nazwie zgodnej z systemową nazwą komputera.

Należy pamiętać o tym, że wariantowym ustawieniom podlegają jedynie parametry z panelów Ustawienia stanowisk, Kanały i Archiwa. Większość pozostałych elementów aplikacji jest wspólna dla wszystkich stanowisk (np. maski i okna). Niektóre elementy mają własny system wariantowych ustawień.

Jedynym ustawieniem, które należy zmienić w przypadku naszej aplikacji jest zaznaczenie okna Zegar jako okna otwieranego na starcie aplikacji.


2.5. Ustawienia zabezpieczeń

Ostatnią rzeczą jest dokończenie parametryzacji zabezpieczeń. Po podwójnym kliknięciu na węźle Zabezpieczenia w drzewie elementów Eksploratora Aplikacji wyświetlony zostanie panel edycji zabezpieczeń.

Rys. Panel edycji zabezpieczeń.

W momencie utworzenia aplikacji został stworzony użytkownik Administrator o pełnych uprawnieniach. Warto teraz ustawić hasło logowania tego użytkownika – po utworzeniu użytkownika hasło jest puste.

W rzeczywistych aplikacjach z reguły konieczne będzie utworzenie użytkowników o mniejszych uprawnieniach.

Aplikacja jest teraz gotowa. Należy jeszcze korzystając z komendy Zapisz… z menu Plik zapisywać wszystkie wykonane parametryzacje.


2.6. Utworzenie skrótu

Kolejnym krokiem jest utworzenie skrótu służącego do uruchomienia aplikacji. Najłatwiej to wykonać korzystając z okna kreatora otwieranego komendą Kreator skrótów… z menu Narzędzia.

Rys. Okno kreatora skrótów.

Przy pokazanych ustawieniach po naciśnięciu przycisku Utwórz na pulpicie zostanie utworzony skrót startujący naszą aplikację.

Można teraz zakończyć działanie programu AsixEvo.


2.7. Uruchomienie aplikacji

Uruchomienie aplikacji poprzez utworzony skrót powoduje otwarcie zaprojektowanego okna.

Rys. Okno uruchomionej aplikacji.

Okno może być swobodnie przemieszczane i skalowane. Obiekt diagramu dopasowuje się do zmian rozmiaru okna. Nie można natomiast zamknąć okna. Wynika to z faktu, że nie jest zalogowany żaden użytkownik. W aplikacjach AsixEvo użytkownik otrzymuje interfejs stworzony całkowicie przez projektanta. Nie są wyświetlane żadne dodatkowe okna. Jedynym elementem interfejsu, który jest automatycznie dodawany do każdej aplikacji jest obsługa przycisku Ctrl-Shift-F1. Użycie tej kombinacji klawiszy powoduje wyświetlenie okienka Panelu Kontrolnego.

Rys. Okno Panelu Kontrolnego.

Okno to pozwala na wykonanie podstawowych operacji administracyjnych. Po zalogowaniu na konto Administrator będzie możliwe zakończenie pracy aplikacji.


2.8. Uruchomienie aplikacji w trybie przeglądarki

Pierwszym krokiem w procesie uruchomienia aplikacji w wersji przeglądarkowej jest stworzenie nowego stanowiska, w kontekście którego będą uruchamiane wszystkie instancje aplikacji na komputerach klienckich. W tym celu w panelu roboczym Stanowiska należy korzystając z menu kontekstowego węzła Serwery użyć komendę Nowe stanowisko…. Wyświetlone zostanie poniższe okno dialogowe.

Rys. Okno tworzenia nowego stanowiska.

Należy teraz podać nazwę stanowiska oraz w polu Typ stanowiska wybrać typ Terminal WWW. Zostanie utworzone nowe stanowisko w obszarze SERWERY . Będzie ono dziedziczyło ustawienia z tego obszaru. W naszym przykładzie nie trzeba nic więcej parametryzować, ale w przypadkach bardziej złożonych wymagana byłaby np. odpowiednia parametryzacja kanałów komunikacyjnych i archiwów.

Kolejnym krokiem jest opublikowanie aplikacji Asix.Evo na serwerze internetowym IIS. Warunkiem wstępnym jest zainstalowanie i odpowiednie skonfigurowanie serwera IIS – najlepiej użyć do tego programu instalacyjnego pakietu Asix.Evo. Do publikacji aplikacji używana jest komenda Publikuj… z menu Plik. Na następnej ilustracji pokazano przykładową parametryzację procesu publikacji.

Rys. Okno publikacji aplikacji.

Najważniejsze opcje to Nazwa publikowanej aplikacji (używanej następnie jako część adresu www) i Nazwa terminala, która musi być nazwą utworzonego wcześniej stanowiska typu Terminal WWW.

Po wykonaniu operacji publikacji aplikacja jest już dostępna. Po uruchomieniu przeglądarki internetowej należy podać adres aplikacji Asix.Evo jako localhost\evonet\zegar. W miejsce localhost można podać nazwę lub adres ip komputera.

UWAGA:

W przypadku korzystania z wersji demonstracyjnej lub braku licencji Asix4Internet dostęp do aplikacji będzie możliwy tylko na komputerze, na którym uruchomiony jest serwer IIS.

Poniższa ilustracja pokazuje diagram naszej aplikacji w przeglądarce Internet Explorer.

Rys. Okno aplikacji w przeglądarce IE.


3. Aplikacja z obsługą rzeczywistych danych

Zadaniem kolejnej aplikacji będzie prezentacja wartości bieżących i archiwalnych dla dwóch rzeczywistych zmiennych pomiarowych. Stworzony zostanie pełny szkielet aplikacji z przełączanymi diagramami synoptycznymi. Pokazany zostanie pełny cykl budowy aplikacji, począwszy od utworzenia nowej aplikacji, poprzez utworzenie bazy zmiennych pomiarowych, zdefiniowanie kanałów komunikacyjnych i archiwów, aż po zbudowanie części wizualnej. W dalszej części rozdziału zostanie też pokazane jak przekształcić aplikację jednostanowiskową na aplikację sieciową, złożoną z serwera i stanowiska terminalowego.

Aplikacja będzie pokazywała wartości dwóch pomiarów, każdy na osobnym diagramie. Wartość pomiaru będzie wyświetlana na wirtualnym mierniku i w postaci tekstowej. Oprócz tego będzie wyświetlany wykres pokazujący historię zmian pomiaru. Aplikacja będzie wyposażona w proste menu pozwalające na przełączanie pokazywanych diagramów.


3.1. Utworzenie aplikacji przy pomocy kreatora

Tym razem utworzymy nową aplikację przy pomocy kreatora. Jest to zalecana metoda postępowania. Kreatora uruchamiamy przy pomocy komendy Nowa aplikacja – kreator z menu Plik. Kreator pozwala w momencie utworzenia aplikacji, wygenerować jej szkielet oraz ustawić wstępnie wiele parametrów niezbędnych do pracy.


3.1.2. Szablon aplikacji

Ta zakładka pozwala na wygenerowanie szkieletu aplikacji – początkowego zestawu okien, diagramów i symboli graficznych.

Rys. Kreator aplikacji - zakładka 'Szablon'.

Można wybrać któryś z proponowanych wariantów, ale w przypadku naszej aplikacji wybieramy wariant pustej aplikacji. Będziemy budować aplikację od podstaw.


3.1.3. Konfiguracja stanowisk

Zakładka Stanowiska pozwala na utworzenie wybranego zestawu stanowisk dostosowanego do wymagań aplikacji.

Rys. Kreator aplikacji - zakładka 'Stanowiska'.

Kreator standardowo zakłada jedno stanowisko o nazwie zgodnej z nazwą komputera, na którym aplikacja jest tworzona. Oprócz tego można dodać jeszcze kilka stanowisk o różnym charakterze. Stanowiska te z założenia, będą służyły do wykonywania aplikacji. W razie konieczności utworzenia większej liczby stanowisk, należy to wykonać po zakończeniu kreatora w panelu roboczym.

W naszym przypadku, oprócz stanowiska edycyjnego tworzymy tylko jedno dodatkowe stanowisko stacji operatorskiej. W dalszej części przykładu pokażemy metodę ręcznego dodania stanowiska typu terminalowego.


3.1.4. Określenie sposobu pozyskiwania danych procesowych

W aplikacjach Asix.Evo dostęp do danych procesowych bieżących i archiwalnych odbywa się z wykorzystaniem jednej z trzech strategii:

  1. Dostęp poprzez serwer danych.

Podstawowy tryb odczytu danych. Serwer danych jest modułem programowym, który wewnętrznie uruchamia standardowe moduły Asmen, Aspad i Aslink znane z wcześniejszych wersji pakietu. Pozwala to wykorzystać wszystkie dotychczasowe drajwery komunikacyjne pakietu Asix do odczytu danych z urządzeń fizycznych. Możliwa jest także dwustronna wymiana danych z niezależnymi stanowiskami wykonującymi aplikacje Asix starego typu poprzez połączenia sieciowe Aslink’a.

  1. Dostęp z bezpośrednim połączeniem z lokalną aplikacją Asix.

    Rzadko używany tryb pozwalający na dostęp do danych poprzez aplikację Asix starego typu uruchomioną na tym samym komputerze. Typowym przypadkiem jest uruchomienie serwera Asix.Evo jako źródła danych dla aplikacji przeglądarkowej.

  1. Dostęp sieciowy mechanizmami Asix.Evo.

Tryb używany na stanowiskach terminalowych okienkowych i WWW – stanowisko pobiera dane z serwera Asix.Evo, żadne elementy serwera danych nie są używane.

Rys. Kreator aplikacji - zakładka 'Serwer Danych'.

W naszej aplikacji będziemy stosować dostęp do danych poprzez Serwer Danych Asix. Żeby skonfigurować Serwer należy użyć przycisk Utwórz nowy plik konfiguracyjny Serwera Danych. Spowoduje to uruchomienie programu Architekt w trybie kreatora aplikacji Asix.Evo.

Program Architekta służy także do konfiguracji aplikacji starego typu. Szczegółowy opis jego użycia znajduje się osobnym podręczniku.

Patrz: podręcznik Architekta - plik: Architekt.PDF/CHM.

W trybie kreatora aplikacji Asix.Evo wyświetlane jest poniższe okno.

Rys. Kreator serwera danych systemu Asix.

Dla nas najważniejsza jest zakładka Zasoby. Służy ona do założenia archiwum danych procesowych oraz konfiguracji kanałów komunikacyjnych. W polu Nazwa archiwum danych w sieci wprowadzamy nazwę Archiwum. Następnie dodajemy kanał komunikacyjny o nazwie Pomiary. Jeżeli posiadamy dostęp do sterownika, to należy wybrać właściwy drajwer komunikacyjny. Jeżeli nie mamy sterownika, to wybieramy drajwer typu None. Pozwoli to nam na symulację danych. W przypadku rzeczywistych drajwerów warto też użyć przycisk Edytuj opcje w celu skonfigurowania parametrów pracy drajwera.

Po zamknięciu okna kreatora, program Architekt otworzy panel edycyjny bazy definicji zmiennych procesowych.

Rys. Edytor definicji zmiennych procesowych.

Każda zmienna procesowa opisana jest zestawem atrybutów. Początkowo wyświetlany jest tylko zestaw podstawowy. Używając przycisk [image] znajdujący się z lewej strony linii nagłówków kolumn, można włączyć wyświetlanie dodatkowych atrybutów. Ponieważ w aplikacji będziemy potrzebować atrybut Maksimum krytyczne, to musimy go teraz włączyć.

W aplikacji będziemy używać dwóch zmiennych o nazwach Pomiar1 i Pomiar2. Przy pomocy przycisku + paska narzędziowego dodajemy kolejno dwie zmienne. Ich definicja powinna być zgodna z poniższą tabelką.

Tabela: Przykładowa deklaracja zmiennych procesowych.

 | Pomiar1 | Pomiar2
Nazwa | Pomiar1 | Pomiar2
Opis | Pomiar numer 1 | Pomiar numer 2
Kanał | Pomiary | Pomiary
Liczba elementów | 1 | 1
Okres próbkowania | 1 | 1
Archiwum | Archiwum | Archiwum
Parametry archiwizacji | D,1s,,1s | D,1s,,1s
Funkcja przeliczająca | NIC | NIC
Maksimum krytyczne | 80 | 50

Uwaga:

W przypadku tworzenia zmiennych o zbliżonej definicji warto skorzystać z komendy Wstaw kopie definicji zmiennej z menu kontekstowego edytora bazy definicji zmiennych.

Jeżeli w trakcie zakładania kanału Pomiary wybraliśmy inny drajwer niż None, to konieczne będzie też podanie adresu zmiennej w sterowniku w atrybucie Adres. Sposób adresowania zależy od wybranego drajwera i jest opisany w jego dokumentacji.

Po wprowadzeniu definicji zmiennych kończymy pracę programu Architekt i wracamy do kreatora aplikacji Asix.Evo.

Poniżej pokazane jest okno kreatora po zakończeniu pracy programu Architekt.

Rys. Kreator aplikacji - zakładka 'Serwer Danych' - po zakończeniu pracy programu Architekt.

Okno zostało uzupełnione o nazwę pliku konfiguracyjnego serwera danych oraz zostały ustawione powiązania pomiędzy stanowiskami aplikacji Evo a wariantami pracy serwera danych. Ze względu na to, że tworzyliśmy nowy plik konfiguracyjny serwera danych, to warianty serwera zostały automatycznie utworzone zgodnie z konfiguracją stanowisk aplikacji Evo. Jeżeli użylibyśmy istniejącego pliku serwera danych (np. z aplikacji utworzonej wcześniejszą wersją programu), to w przypadku braku zgodności nazw stanowisk i wariantów powiązanie należałoby wykonać ręcznie.


3.1.5. Deklaracja baz zmiennych procesowych

Kolejna zakładka kreatora dotyczy konfiguracji baz zmiennych. Bazy definicji zmiennych są kluczowym elementem każdej aplikacji. Aplikacja powinna posiadać przynajmniej jedną bazę zmiennych. Asix.Evo może używać bazy zmiennych w trzech formatach:

a. Bazy zmiennych w formacie XML

b. Bazy zmiennych w formacie MDB, używane także we wcześniejszych wersjach systemu Asix

c. Bazy zmiennych przechowywane w bazach danych typu SQL, również używane we wcześniejszych wersjach pakietu

W praktyce, bazy XML stosowane są wyłącznie do definicji tzw. zmiennych wirtualnych używanych w aplikacji, których wartości wyliczane są przy pomocy wewnętrznych obliczeń, np. skryptów.

Rys. Kreator aplikacji - zakładka 'Bazy zmiennych'.

W wyniku wcześniejszych kroków kreatora mamy już wybraną utworzoną programem Architekt bazę zmiennych.

Na tym etapie moglibyśmy utworzyć nową bazę typu XML lub dołączyć inne utworzone wcześniej bazy MDB. W naszej przykładowej aplikacji nie jest to jednak konieczne.


3.1.6. Konfiguracja źródeł danych

Zakładka Źródła danych pozwala wstępnie skonfigurować kanały komunikacyjne i archiwa.

Rys. Kreator aplikacji - zakładka 'Źródła Danych'.

Pokazane ustawienia z reguły są optymalne. Kreator odczyta zawartość wybranych wcześniej baz definicji zmiennych i na jej podstawie utworzy wszystkie wymagane kanały i archiwa aplikacji. Na stanowiskach serwerowych (z fizycznym dostępem do sterowników i lokalną archiwizacją) włączone zostaną drajwery i archiwa typy Asix. Stanowiska terminalowe będą miały konfigurację ustawioną na pozyskiwanie danych bieżących i archiwalnych z serwerów.


3.1.7. Parametryzacja systemu alarmów

W zakładce Alarmy można ustawić nazwę domeny alarmowej. Domena alarmowa jednoznacznie identyfikuje zbiór alarmów, czyli archiwum alarmów, definicje alarmów i strategie wykrywania. Jest to odpowiednik nazwy zasobu alarmowego w starszych aplikacjach Asix.

Rys. Kreator aplikacji - zakładka 'Alarmy'.

W odróżnieniu do starszych aplikacji systemu Asix, w aplikacjach typu Asix.Evo stanowisko może pracować jednocześnie w kilku domenach alarmowych. Dodanie kolejnych domen oraz ustawienie pozostałych parametrów systemu alarmów można wykonać później, w panelu roboczym parametryzacji systemu alarmów.

W naszym przykładzie nie będziemy jednak teraz tworzyć domeny alarmowej. Pokażemy później, jak taką domenę skonfigurować ręcznie.


3.1.8. Inne ustawienia

Rys. Kreator aplikacji - zakładka 'Pozostałe ustawienia'.

Ostatnia zakładka pozwala na skopiowanie do katalogu aplikacji predefiniowanych wzorców obiektów, obrazków i dźwięków. Można to również wykonać później przy pomocy funkcji selektywnego importu z odpowiednich paneli roboczych.

Ponieważ nie będziemy stosować standardowych elementów, to wyłączamy wszystkie funkcje importu.


3.2. Przegląd konfiguracji

Aplikacja została wstępnie skonfigurowana. Przyjrzymy się teraz ustawieniom wykonanym przez kreator.

Wybieramy panel Stanowiska (jeżeli nie był otwarty to używamy komendy Stanowiska z menu Widok). W panelu pokazana jest aktualna hierarchia stanowisk: w obszarze Serwery umieszczone jest nasze stanowisko robocze oraz dodatkowa stacja operatorska Stacja_OP_1. Ustawienia parametrów aplikacji są hierarchiczne. Znaczy to, że ustawienia wykonane w obszarze Serwery obowiązują także na podrzędnych stanowiskach, o ile nie zostaną tam zmienione.

Wybieramy węzeł Serwery i przechodzimy do panelu Eksplorator aplikacji (jeżeli nie był otwarty to używamy komendy Eksplorator aplikacji z menu Widok) .

Klikamy podwójnie na węźle Ustawienia globalne i otwartym panelu roboczym wybieramy zakładkę Komunikacja. W wyświetlanej tabelce znajdują się dane opisujące role jaką pełnią w aplikacji poszczególne stanowiska. Szczególnie istotny jest adres stanowiska. Dla stanowisk serwerowych powinien być podany właściwy adres IP lub systemowa nazwa komputera. Jeżeli nazwa stanowiska i nazwa komputera są identyczne, to adres może pozostać pusty.

Wybieramy węzeł Ustawienia stanowisk i otwieramy zakładkę Źródła danych. Możemy zauważyć, że nasza baza zmiennych AsixVarBase została wybrana jako baza aktywna, ładowana przy starcie aplikacji. Przechodzimy do zakładki Źródła danych. W ramce Ustawienia źródła danych procesowych wybrany jest tryb pracy z wykorzystaniem serwera danych – typowy tryb pracy w przypadku odczytu danych bezpośrednio ze sterowników. Przy pomocy przycisku [image] można ponownie uruchomić program Architekt w celu zmiany konfiguracji kanałów komunikacyjnych i archiwów lub modyfikacji zawartości bazy definicji zmiennych.

Od momentu zakończenia pracy kreatora serwer danych powinien już pracować. Ikonę serwera można znaleźć w systemowym pasku zadań.

Rozwijamy węzeł Bazy definicji zmiennych w panelu eksploratora aplikacji. Otwieramy panel przeglądu zmiennych klikając na węźle bazy AsixVarbase. W otwartym panelu powinniśmy zobaczyć definicje zmiennych wprowadzonych wcześniej do bazy w programie Architekt. W przypadku baz typu XML możliwa byłaby bezpośrednia edycja zmiennych. Dla baz MDB można tylko przeglądać bazę. Bazy MDB są tworzone wyłącznie za pośrednictwem programu Architekt.

Korzystając z węzła Kanały panelu eksploratora otwieramy panel roboczy konfiguracji kanałów.

Rys. Panel roboczy konfiguracji kanałów.

Na liście kanałów znajduje się kanał Pomiary użyty wcześniej przy definicji zmiennych w programie Architekt. Po prawej stronie panelu pokazany jest sposób zdefiniowania wybranego kanału w poszczególnych obszarach i stanowiskach aplikacji.

Z każdym kanałem związany jest drajwer odpowiedzialny za pozyskiwanie wartości zmiennych. W przypadku korzystania z kanałów serwera danych, zawsze należy korzystać z kanału typu Asix6. Rzeczywisty typ drajwera komunikacyjnego wynika z definicji zapisanej w konfiguracji serwera danych.

Korzystając z węzła Archiwa panelu eksploratora otwieramy panel roboczy konfiguracji archiwów.

Rys. Panel roboczy konfiguracji archiwów.

Podobnie jak w przypadku kanałów, dla archiwów tworzonych przez moduł Aspad wbudowany w serwer danych, jako typ archiwum zawsze należy wybierać Asix.


3.3. Test komunikacji - panel podglądu zmiennych

Zanim przejdziemy do budowy części wizualnej aplikacji przyjrzymy się jeszcze panelowi podglądu zmiennych. Panel podglądu powinien być już otwarty. W razie konieczności można go otworzyć komendą Podgląd zmiennych z menu Widok.

Panel poglądu zmiennych to narzędzie wspierające proces tworzenia aplikacji. Jego dwie zasadnicze funkcje to:

  • Test komunikacji ze sterownikami oraz kontrola poprawności adresacji zmiennych w sytuacji, gdy część wizualna aplikacji nie jest jeszcze wykonana.

  • Symulacja danych w przypadku, gdy nie ma możliwości podłączenia do sterownika, lub oprogramowanie sterownika nie jest jeszcze gotowe.

W naszej aplikacji panel podglądu będzie służył do symulacji danych.

Rys. Panel podglądu zmiennych.

Dodajemy do panelu wyświetlanie obu naszych zmiennych procesowych. Natychmiast po dodaniu aktualna wartość zmiennych zacznie być monitorowana. W przypadku użycia drajwera None wartości będą zerowe. W przypadku korzystania z innego drajwera powinny to być wartości odczytane ze sterownika.

W kolumnie Edytor wartości można wybrać tryb wpisywania nowych wartości,. Ponieważ chcemy uzyskać automatyczną symulacje danych, to wybieramy tryb Generator. Następnie w prawej części panelu ustawiamy parametry symulacji w taki sposób, aby uzyskać przebieg zmienny w zakresie mniej więcej od wartości 0 do 100. Po zdefiniowaniu parametrów, proces symulacji należy jeszcze zainicjować przyciskiem [image] .


3.4. Budowa okien i diagramów aplikacji

Po utworzeniu aplikacji, zdefiniowaniu zmiennych procesowych, kanałów komunikacyjnych i archiwów można przejść do fazy budowy części wizualnej aplikacji.


3.4.1. Utworzenie okna

Poprzez podwójne kliknięcie na elemencie Okna panelu eksploratora tworzymy okno główne aplikacji. W panelu właściwości zmieniamy nazwę okna na Start, wpisujemy tytuł okna, a przy pomocy myszki zmieniamy rozmiar okna. Nowy rozmiar można też określić we właściwościach Szerokość i Wysokość. Następnie, używając menu kontekstowego okna dodajemy dwa panele, w których będą wyświetlane diagramy synoptyczne. Pierwszy panel nazywamy Menu, a tryb dokowania ustawiamy na Do góry. Drugi panel nazywamy Info, a tryb dokowania ustawiamy na Wypełnienie. Efekt powyższych działań prezentuje ilustracja.

Rys. Edycja okna aplikacji - deklaracji paneli.

Należy zwrócić uwagę na sposób dopasowywania się paneli do okna w przypadku zmian jego rozmiaru.

Rys. Parametry rozmiaru okna aplikacji.

W dolnym narożniku okna programu można zobaczyć jaki jest rzeczywisty rozmiar panelu. Informacja ta może przydać się w trakcie tworzenia diagramów.


3.4.2. Utworzenie diagramów

Kolejny krok to utworzenie dwóch diagramów. Można by to zrobić klikając podwójnie na elemencie Diagramy panelu eksploratora aplikacji. Chcemy jednak żeby rozmiary diagramów były zgodne z rozmiarami paneli. Ponieważ nie chcemy ustawiać rozmiarów ręcznie, to zastosujemy komendę Utwórz dopasowany diagram z menu kontekstowego panelu okna. Wykonujemy komendę dwa razy dla obu paneli i tworzymy diagramy: Menu i Pomiar. Zgodne rozmiary paneli i diagramów pozwolą na edycję diagramów w takim rozmiarze w jakim będą one wyświetlane. Jeżeli edycyjne rozmiary diagramów będą niezgodne z rozmiarami paneli, to sposób wyświetlenia zależy od właściwości Stałe rozmiary diagramu. Wybranie wartości Nie (np. przez podwójne kliknięcie w polu wartości) spowoduje, że diagramy zostaną odpowiednio przeskalowane. Można też wybrać kolor tła diagramu, ewentualnie obrazek (tapetę) wyświetlaną w tle.

Rozpoczynamy od edycji diagramu Menu. W panelu Przybornik wybieramy obiekt Przycisk, a następnie na diagramie zaznaczamy miejsce, w którym chcemy umieścić przycisk. Celem jest uzyskanie diagramu pokazanego na ilustracji.

Rys. Edycja diagramu - dodanie obiektu Przycisk.

Można dostosować wygląd obiektu do własnych wymagań zmieniając właściwości odpowiedzialne za typ, kształt i kolorystykę. Obiekt z ilustracji ma wybrany typ Standardowy przycisk Windows oraz margines tekstu ustawiony na 20%. Dodatkowo warto zmienić właściwość Typ kursora na Hand. Spowoduje to, że w trakcie wykonania aplikacji kursor myszki będzie zmieniał kształt po najechaniu na przycisk. Tekst Koniec należy wpisać we właściwości Tekst wyłączenia w grupie właściwości stanowych obiektu.

Zadaniem obiektu będzie zakończenie pracy aplikacji. W tym celu należy w obsłudze zdarzenia Włączenie przycisku wpisać wywołanie akcji Terminate.

Rys. Okno edycji właściwości przycisku - deklaracja akcji.

Po wejściu do okna edycji właściwości z menu Akcje/Sterowanie aplikacją wybieramy akcję Terminate. Spowoduje to wpisanie do pola edycyjnego treści akcji operatorskiej. Znak ^ jest przedrostkiem oznaczającym, że definicja właściwości jest treścią akcji operatorskiej.

Można teraz przejść do edycji diagramu Pomiar. Rozpoczynamy od umieszczenia na diagramie dwóch obiektów typu Tekst, jednego obiektu Miernik oraz jednego obiektu Wykres.

Rys. Edycja diagramu - dodanie obiektów: Miernik i Wykres.

Diagram powinien wyglądać w sposób zbliżony do powyższego. Obiekty Tekst na razie nie wyświetlają żadnych informacji.

Obiekt Tekst umieszczony w górnej części diagramu będzie wyświetlał opis zmiennej pomiarowej pobierany z bazy zmiennych procesowych. W polu właściwości Główna zmienna używamy przycisku +. W oknie selekcji zmiennych wybieramy zmienną Pomiar1. Następnie w polu właściwości Text rozpoczynamy edycję wartości wprowadzając znak @. Znak @ oznacza odwołanie do atrybutu zmiennej procesowej. Wyświetlona zostanie lista wszystkich atrybutów, należy wybrać atrybut Description. W efekcie właściwość Text powinna przyjąć wartość @Description, co oznacza wyświetlenie zawartości atrybutu Description (Opis zmiennej) dla zmiennej głównej obiektu. Po wykonanych zmianach na diagramie powinien pojawić się opis zmiennej.

W obiekcie Miernik ustawiamy właściwość Główna zmienna na wartość Pomiar1, a w polu właściwości Wartość wprowadzamy znak #. Oznacza on odwołanie do wartości zmiennej głównej obiektu. Wskazówka miernika powinna się odchylić zgodnie z aktualną wartością zmiennej Pomiar1, odczytywanej ze sterownika lub wymuszanej poprzez panel Podgląd zmiennej.

W drugim obiekcie Tekst ustawiamy właściwość Główna zmienna na wartość Pomiar1, a w polu właściwości Tekst # oraz zmieniamy Wyrównywanie w poziomie na Wyśrodkowanie. Po zmianach obiekt pokaże aktualną wartość kontrolowanej zmiennej.

W obiekcie Wykres ustawiamy właściwość Główna zmienna na wartość Pomiar1. Obiekt ma wstępnie założoną jedną serię pomiarową.

Poniższa ilustracja pokazuje panel właściwości, tym razem w trybie kompaktowym. Należy wybrać zakładkę Serie. Na liście serii będzie dostępna pojedyncza seria. Dodatkowe serie można byłoby dodać stosując przyciski paska narzędziowego położonego poniżej listy serii. W prawej części panelu we właściwości Nazwa zmiennej wprowadzamy wartość @Name.

Rys. Parametryzacja obiektu Wykres - definicja serii pomiarowej.

Oznacza to odwołanie do atrybutu Name zmiennej głównej, czyli w praktyce do nazwy zmiennej głównej. Alternatywny sposób parametryzacji to podanie nazwy zmiennej bezpośrednio we właściwościach serii, bez wprowadzania nazwy zmiennej głównej.

Po wykonaniu powyższych czynności uzyskujemy końcową postać diagramu pokazaną poniżej.

Rys. Końcowa postać edycji diagramu.

Pozostały jeszcze do wykonania ostatnie czynności konfiguracyjne. Wracamy do parametryzacji okna Start. W ustawieniach paneli Menu i Info należy ustawić właściwość Domyślny diagram odpowiednio na Menu i Pomiar. W panelu eksploratora wybieramy Ustawienia stanowisk i w zakładce Opcje startowe wybieramy okno Start jako okno początkowe aplikacji.

Możemy teraz wykonać test pracy aplikacji. Pierwszy wariant to utworzenie przy pomocy kreatora skrótu uruchamiającego aplikację. Prostszy sposób (ale nadający się wyłącznie do uproszczonego testu) to wybranie panelu edycyjnego okna Start i z paska narzędziowego edycji okien wybrać komendę Uruchamianie/Uruchom normalnie. W efekcie uruchomienia okna powinniśmy uzyskać efekt zbliżony do pokazanego na poniższej ilustracji.

Rys. Podgląd diagramu.


3.4.3. Sygnalizacja przekroczeń

Kolejnym krokiem w rozwoju naszej aplikacji będzie dodanie sygnalizacji o przekroczeniu przez pomiar wartości górnego ograniczenia. Wartość ograniczenia wprowadziliśmy wcześniej w bazie zmiennych w atrybucie Maksimum krytyczne.

Obiekt Miernik posiada wbudowany mechanizm oznaczania na skali zakresów poprawności pomiarów. W pierwszym kroku włączamy sygnalizację ustawiając właściwość Pokaż limity na Tak. Pozostaje ustawić zakresy. Ponieważ chcemy tyko pokazywać przekroczenie maksimum krytycznego, to właściwości Wartość LL i Wartość L ustawiamy na 0, a Wartość H i Wartość HH na @LimitHiHi. W efekcie, zakres od 0 do wartości atrybutu LimitHiHi (maksimum krytyczne) będzie traktowany jako zakres wartości normalnych – na skali będzie rysowane oznaczenie w kolorze właściwości Kolor wartości normalnej. Zakres powyżej maksimum krytycznego kontrolowanej zmiennej będzie oznaczony kolorem podanym we właściwości Kolor HH. Oprócz oznaczenia zakresów na skali miernika, będziemy jeszcze zmieniać kolor wskazówki w zależności od aktualnej wartości pomiaru. W tym celu we właściwości Kolor wskazówki należy wprowadzić wyrażenie pokazane na poniższej ilustracji.

Rys. Deklaracja wyrażenia zmieniającego kolor wskazówki Miernika w zależności od wartości zmiennej procesowej.

Wyrażenie ma postać wyrażenia arytmetycznego warunek?wartość_dla_true:wartość_dla_false. Interpretacja pokazanego wyrażenie jest następująca: jeżeli wartość zmiennej głównej Variable() jest większa od wartości limitu krytycznego zmiennej głównej (Attribute(LimitHiHi)), to użyj kolor Red, w przeciwnym wypadku użyj kolor Black.

W końcowym efekcie powinniśmy uzyskać postać miernika pokazaną poniżej.

Rys. Obiekt Miernik z zadeklarowaną zmianą kolorow w zależności od wartości zmiennej procesowej.

Przejdziemy teraz do obiektu Liczba pokazującego wartość zmiennej. Oprócz sygnalizacji przekroczenia, będziemy również chcieli w specjalny sposób obsłużyć błędy odczytu zmiennej. Za kolor wyświetlanego teksu odpowiada właściwość Kolor znajdująca się w grupie właściwości stanowych. Moglibyśmy użyć wyrażenia podobnego do tego zastosowanego w obiekcie miernika, ale w tym przypadku użyjemy mechanizmu właściwości stanowych.

W panelu właściwości wybieramy zakładkę Właściwości stanowe, a następnie używamy przycisku [image] paska narzędziowego znajdującego się poniżej listy stanów. Początkowo na liście znajduje się tylko zawsze istniejący Stan podstawowy. Użycie przycisku spowoduje dodanie nowego stanu, na liście pojawi się dodatkowy stan jako Stan [1]{}. W grupie stanowej znajduje się identyczny zestaw właściwości jak w tzw. grupie podstawowej oraz jedna dodatkowa właściwość Warunek stanu.

Rys. Deklaracja zmiany koloru obiektu Liczba w zależności od wartości zmiennej procesowej.

Jako warunek stanu wprowadzamy wyrażenie =Variable()>Attribute(LimitHiHi). Właściwość Kolor ustawiamy na Red. Warunek stanu przyjmuje wartość true wtedy, gdy wartość zmiennej głównej przekroczy maksimum krytyczne. W tym momencie wszystkie ustawienia zdefiniowane jawnie w grupie (w naszym przypadku właściwość Kolor) będą miały pierwszeństwo przed wszystkimi ustawieniami we wcześniejszych grupach – po przekroczenia limitu wartość zmiennej będzie wyświetlana w kolorze czerwonym.

Dodajemy do obiektu kolejny stan – warunek stanu ustawiamy na =VarIsNotGood(), właściwość Tekst na Brak danej, a właściwość Kolor na Yellow. W efekcie, gdy status głównej zmiennej będzie niepoprawny, to zamiast wartości zmiennej będzie wyświetlony tekst Brak danej w kolorze żółtym. Należy zwrócić uwagę, że w momencie, gdy oba dodatkowe stany będą aktywne, to pierwszeństwo będzie miała definicja właściwości kolor w ostatniej grupie stanowej.


3.4.4. Dodanie parametrów diagramu

Uzyskaliśmy teraz końcową postać wizualną diagramu Pomiar. Naszym celem jest jednak pokazanie dwóch pomiarów. Moglibyśmy oczywiście zrobić kopię diagramu Pomiar i zamienić wszystkie odwołania do zmiennej Pomiar1 na zmienną Pomiar2. Ponieważ oba diagramy mają wyglądać tak samo, lepszym rozwiązaniem jest użycie mechanizmu diagramów parametryzowanych. Będziemy posiadać tylko jeden diagram służący do pokazywania dowolnej liczby zmiennych. W przypadku późniejszych ewentualnych zmian będziemy musieli modyfikować tylko ten jeden diagram.

Rozpoczynamy od dodania parametru. Klikamy w obszarze diagramu poza granicami obiektów. W panelu właściwości zostaną pokazane parametry diagramu. Wybieramy linię Parametry, a następnie przyciskiem + dodajemy parametr i definiujemy go zgodnie z poniższą ilustracją.

Rys. Deklaracja parametru dla diagramu.

W kolejnym kroku zaznaczamy wszystkie obiekty diagramu. W panelu właściwości zostaną pokazane tylko właściwości wspólne dla wszystkich czterech obiektów diagramu.

Rys. Właściwości wspólne obiektów.

Zmieniamy właściwość Główna zmienna na wartość %Zmienna. Prefiks % oznacza odwołanie do parametru diagramu. Ponieważ parametryzowaliśmy nasze obiekty w taki sposób, żeby nazwa zmiennej pojawiała się tylko we właściwości Główna zmienna, to po zmianie definicji nasze obiekty są całkowicie przełączone na pokazywanie zmiennej podanej w parametrze diagramu. Nie powinniśmy zauważyć żadnej zmiany w wyglądzie i działaniu diagramu, wartość domyślna parametru jest równa Pomiar1, czyli w dalszym ciągu pokazujemy te same dane.

Wracamy do edycji diagramu Menu. Dodamy dwa przyciski służące do przełączania diagramów. Ponieważ chcemy zachować jednorodną stylistykę, to zaznaczamy przycisk Koniec i dwukrotnie przyciskamy klawisz ctrl-d tworząc dwie kopie obiektu. Modyfikujemy właściwość Tekst włączenia obu nowych obiektów. Zmieniamy również akcje podane w obsłudze zdarzenia Włączenie przycisku. Akcja dla pierwszego przycisku powinna wyglądać tak:

^OpenWindow(null,Info,Pomiar,"Zmienna=Pomiar1")

Interpretacja akcji jest następująca: w oknie bieżącym (null) w panelu Info otwórz diagram Pomiar ustawiając wartość parametru Zmienna na Pomiar1.

W podobny sposób analogiczny należy zmodyfikować akcję dla przycisku drugiego.

Aplikacja jest gotowa, można ją uruchomić w trybie pełnym lub testowym. Efekt powinien wyglądać w sposób zbliżony do poniższego.

Należy zwrócić uwagę na to, jak obiekty dostosowują się do parametrów pobieranych z bazy definicji zmiennych (opis i zakres zmiennej).

Rys. Widok diagramu z możliwością przełączania się pomiędzy wariantami dla dwóch zmiennych.


3.4.5. Wprowadzenie wzorców

Wykonamy jeszcze jedną zmianę w aplikacji. Chcemy pokazać jeszcze diagram zbiorczy ze wszystkimi pomiarami. Na tym diagramie będziemy wyświetlać tylko miernik i liczbową wartość pomiaru. Ponieważ każdy pomiar ma wyglądać identycznie, a nie chcemy wielokrotnie kopiować obiektów, to posłużymy się mechanizmem wzorców.

Przechodzimy do edycji diagramu Pomiar, zaznaczamy obiekty miernika i wartości pomiaru, a następnie przyciskamy klawisz ctrl-p. Spowoduje to utworzenia wzorca złożonego z wybranych obiektów.

Rys. Wzorzec kompozycji obiektów: Miernik i Liczba.

W panelu właściwości zmieniamy nazwę wzorca na WzorPomiar. Można zauważyć, że wzorzec ma już automatycznie dodany parametr. Wynika to z faktu, że diagram z którego pochodziły obiekty taki parametr też posiadał. Chociaż nie jest to konieczne, usuniemy ten parametr (przyciskiem -), a następnie założymy nowy o innej nazwie. Zaznaczamy wszystkie obiekty wzorca klawiszem ctrl-a. W panelu właściwości zmieniamy nazwę głównej zmiennej na %WZmienna. Ponieważ taki parametr jeszcze nie istnieje, program spyta czy ma on zostać założony – ustawiamy wartość domyślną na Pomiar1 i akceptujemy utworzenie parametru. Pozostało jedynie zapisać wzorzec w pliku (np. komendą Zapisz z menu kontekstowego zakładki Wzorzec WzorPomiar).

Wracamy do edycji diagramu Pomiar. Usuwamy obiekty miernika i wartości pomiaru, w ich miejsce wstawiamy wzorzec. W panelu Przybornik z zakładki Wzorce wybieramy wzorzec WzorPomiar, a w obszarze diagramu pokazujemy miejsce umieszczenia wzorca. Po kliknięciu na dowolnym fragmencie osadzonego wzorca w panelu właściwości zobaczymy, że mamy możliwość zmiany tylko właściwości osadzenia – nie ma dostępu do obiektów umieszczonych wewnątrz wzorca. Pozostaje nam tylko ustawić wartość parametru wzorca WZmienna. W polu edycyjnym wprowadzamy %Zmienna. Efektem tego będzie przekazanie od obiektów wzorca (poprzez parametr WZmienna) nazwy zmiennej pomiarowej z parametru Zmienna diagramu. Po zmianie diagram powinien działać identycznie z poprzednią wersją.

Utworzymy teraz nowy diagram o nazwie Wszystkie. Wstawiamy do diagramu dwie instancje wzorca WzorPomiar. Jako wartość parametru WPomiar podajemy odpowiednio nazwy zmiennych Pomiar1 i Pomiar2. We właściwościach panelu Info okna Start, ustawiamy diagram Wszystkie jako diagram domyślny. Na koniec do diagramu Menu dodamy jeszcze jeden przycisk, który będzie wykonywał akcję ^OpenWindow(null,Info,Wszystkie,null).

W trybie wykonania aplikacja powinna wyglądać w sposób zbliżony do poniższego.

Rys. Edycja diagramu - efekt powielenia obiektów przy użyciu wzorca.

Spróbujmy jeszcze sprawdzić jak zachowa się aplikacja po zmianie wzorca. Przesuńmy we wzorcu wartość tekstową pomiaru w wolne miejsce w obszarze miernika. Po zapisaniu wzorca, wszystkie diagramy automatycznie dostosują się do jego nowej postaci.


3.5. Dodanie stanowiska terminalowego

W trakcie zakładania naszej aplikacji utworzyliśmy tylko pojedyncze stanowisko. Jest to wystarczające w przypadku prostych aplikacji działających na pojedynczym komputerze. Teraz jednak rozszerzymy projekt o pracę w konfiguracji sieciowej, w której pojedynczy komputer pełni rolę serwera danych dla grupy stanowisk terminalowych.

Rolę serwera będzie pełniło stanowisko, którego używaliśmy do tej pory. Musimy tylko założyć dodatkowe stanowisko terminalowe. Otwieramy panel Stanowiska i przy pomocy menu kontekstowego, komendą Nowe stanowisko, tworzymy nowe stanowisko w obszarze TERMINALE.

Rys. Tworzenie nowego stanowiska terminalowego.

Istotne jest aby w ramce Ustawienia komunikacji ustawić typ stanowiska na Terminal.

Stanowisko zostało utworzone. Pozostaje jeszcze skonfigurować kilka ustawień w szczególności sposób obsługi kanałów komunikacyjnych i archiwów. Rozpoczynamy od zakładki Komunikacja w panelu Ustawienia globalne.

Rys. Ustawienia globalne dla stanowiska.

Wszystkie parametry powinny być już poprawnie ustawione. Ale należy zweryfikować poniższe ustawienia:

  1. Czy typ stanowiska jest ustawiony prawidłowo? Dla stanowiska, które będzie udostępniało dane koniecznie musi być wybrany typ Serwer.

  2. Czy w kolumnie Adres stanowiska znajdują się poprawne wartości? Adres ten służy do lokalizacji stanowiska w sieci. W przypadku serwera musi być to systemowa nazwa komputera lub jego adres IP. Parametr nie jest istotny dla stanowisk terminalowych. Terminale nigdy nie są bezpośrednio adresowane. Poza tym w kontekście stanowiska terminalowego można uruchomić dowolną liczbę komputerów.

W panelu pokazany jest numer portu TCP, który będzie używany do komunikacji pomiędzy stanowiskami. Ważne jest, aby ten port był odblokowany w systemowej zaporze ogniowej.

Przechodzimy teraz do panelu Stanowiska i wybieramy w nim obszar TERMINALE. Wszystkie dalsze ustawienia będziemy podawać dla tego obszaru. Stanowisko Terminal będzie dziedziczyło wszystkie ustawienia z powodu przynależności do obszaru.

Wybieramy panel Ustawienia stanowisk i wykonujemy następujące zmiany w konfiguracji:

  1. W zakładce Opcje startowe zaznaczamy okno Start jako okno startowe aplikacji.

  2. W zakładce Źródła zmiennych zaznaczamy bazę AsixVarbase jako bazę aktywną.

  3. W zakładce Źródła danych w ramce Ustawienia źródła danych Asix wybieramy Nie używaj.

  4. W zakładce Zabezpieczenia jako użytkownika domyślnego wybieramy użytkownika Administrator. To ustawienie ułatwi obsługę naszej aplikacji testowej. Normalna użytkowa aplikacja powinna posiadać w pełni skonfigurowany system zabezpieczeń z dodanym interfejsem do logowania użytkownika.

Kolejnym krokiem jest właściwa parametryzacja kanałów komunikacyjnych. W panelu eksploratora aplikacji wybieramy węzeł Kanały.

Rys. Parametryzacja kanałów komunikacyjnych dla stanowiska terminalowego.

W lewej części panelu Kanały znajduje się lista wszystkich kanałów komunikacyjnych aplikacji. W prawej części pokazane są drajwery komunikacyjne powiązane z wybranym kanałem. Powiązanie dotyczy stanowiska/obszaru wybranego w panelu Stanowiska. Aktualnie wybrane stanowisko/obszar jest też wyświetlone w opisie zakładki panelu Kanały oraz na pasku statusowym głównego okna programu. Naszym zadaniem jest dodanie, w kontekście obszaru TERMINALE, do kanału POMIARY drajwera komunikacyjnego typu Network (o ile taki drajwer nie został już dodany). Wykonujemy to przy pomocy przycisku + paska nawigacyjnego umieszczonego w dolnej części sekcji kanałów. W parametrach drajwera bardzo istotne jest ustawienie właściwości Stanowiska. Jest to lista stanowisk typu serwerowego, z których stanowisko terminalowe będzie mogło pobierać dane . Należy wybrać nazwę naszego jedynego stanowiska serwerowego aplikacji.

W analogiczny sposób musimy jeszcze ustawić sposób odczytu danych archiwalnych w paneli Archiwa.

Rys. Parametryzacja archiwów dla stanowiska terminalowego.

Należy wybrać sieciowy typ archiwum oraz zaznaczyć nasze stanowisko serwerowe jako źródło odczytu danych.

Konfiguracja stanowiska terminalowego została zakończona. Można przejść do testu działania. W tym celu należy uruchomić stanowisko serwerowe oraz jedno lub kilka stanowisk terminalowych. Należy pamiętać, aby w trakcie tworzenia skrótów startowych dla stanowisk terminalowych, ustawić w kreatorze opcje Uruchom jako na wersję Terminal.

W trakcie działanie aplikacji w konfiguracji sieciowej można kontrolować stan systemu poprzez panel Połączenia dostępny z panelu eksploratora aplikacji – węzeł Diagnostyka/Połączenia.

Rys. Panel podglądu aktywnych połączeń dla stanowisk.

W panelu można zobaczyć wszystkie aktywne połączenia oraz podstawowe informacje o poszczególnych stanowiskach.


4.1. Parametryzacja systemu alarmów

W panelu eksploratora wybieramy węzeł System alarmów i otwieramy panel dedykowany do konfiguracji systemu alarmów.

Rys. Panel dedykowany do konfiguracji systemu alarmów.

Panel składa się z dwóch części. W lewej znajduje się lista tzw. domen alarmów. Strona prawa służy do parametryzacji systemu dla wybranej domeny.

Rozpoczynamy od dodania (używając przycisku +) domeny o nazwie AlarmyDemo. Każda domena alarmowa stanowi jakby osobny system alarmów. Domeny są od siebie całkowicie niezależne. W typowej aplikacji wystarczające jest założenie pojedynczej domeny. Dodanie dodatkowych domen ma sens tylko wtedy, gdy chcemy łączyć w jednej aplikacji alarmy z kilku całkowicie niezależnych instalacji.

Po założeniu domeny należy określić jaką rolę w systemie alarmów będą pełnić poszczególne stanowiska. W każdej domenie potrzebny jest przynajmniej jeden Kontroler. Jest to stanowisko, które koordynuje pracę wszystkich innych stanowisk. Kontroler powinien pracować 24 godziny na dobę i w sensie komunikacyjnym musi być stanowiskiem typu Serwer. Możliwe jest posiadanie kilku kontrolerów. Stosuje się to z reguły, w przypadku posiadania redundantnej pary stanowisk operatorskich. Stanowiska pełniące rolę Terminal posiadają wszystkie funkcje związane z operatorską obsługą i przeglądaniem alarmów. Nie mogą jednak pracować samodzielnie. Informacje o wykrytych alarmach otrzymują od stanowisk kontrolerów. W naszej aplikacji demonstracyjnej kontrolerem będzie stanowisko serwerowe, a stanowisko Terminal będzie pełniło rolę terminala.

Kolejnym krokiem jest określenie jakie strategie wykrywania alarmów będą stosowane w aplikacji. Strategia jest tworem analogicznym do kanałów komunikacyjnych, ale dotyczy procesu wykrywania alarmów. Jej zadaniem jest kontrola stanu alarmów i dostarczanie informacji o zdarzeniach początku i końca alarmu. Dostępne jest kilka typów strategii, które wykrywają alarmy różnymi metodami. W każdej domenie można skonfigurować dowolną ilość strategii alarmowych, także tego samego typu.

Wybieramy zakładkę Strategie i przy pomocy przycisku + zakładamy nową strategię o nazwie Warunki.

Rys. Deklaracja strategii alarmów.

Jako typ strategii wybieramy Warunkowa. Strategia warunkowa wykrywa alarmy na podstawie zajścia dowolnie zdefiniowanych warunków logicznych. Warunki zostaną określone w momencie definiowania bazy alarmów.

We właściwości Kontrolery podajemy listę wszystkich kontrolerów domeny, na których strategia może zostać uruchomiona. Typowo podaje się listę wszystkich kontrolerów. Lista może być ograniczona, jeżeli ze specyfiki działania strategii (głównie uwarunkowań komunikacyjnych) wynika, że niektóre stanowiska kontrolerów nie powinny uruchamiać danej strategii. W trakcie działania aplikacji, w danym momencie, strategia wykonywana jest tylko na jednym stanowisku.

Można teraz przejść do zakładki Alarmy i zdefiniować dwa alarmy, które będą używane w naszej aplikacji. Pokazuje to poniższe ilustracja.

Rys. Deklaracja alarmów.

Każdy alarm posiada unikalny (w ramach domeny) identyfikator. Podstawowe właściwości alarmu to Strategia i Parametry wykrywania. We właściwości Strategia należy wskazać jedną z wcześniej zdefiniowanych strategii wykrywania alarmów. Format właściwości Parametry wykrywania zależy od typu wybranej strategii. Dla strategii warunkowej jest to wyrażenie arytmetyczne typu logicznego. Zmiana wartości wyrażenia z false na true oznacza zdarzenia początku alarmu. Użyta w przykładzie funkcja Asix6Limit porównuje wartość wybranej zmiennej z wartością podanego atrybutu. Funkcja intepretuje atrybut limitu na kilka sposobów: może to być limit liczbowy lub nazwa zmiennej, której wartość określa limit. W przypadku, gdy zachodzi potrzeba zdefiniowania dużej liczby alarmów, zamiast ręcznej edycji można stosować import z plików programu Excel. Funkcje importu dostępne są w zakładce Źródła.

Przechodzimy do zakładki Ustawienia służącej do określenia pozostałych parametrów pracy systemu alarmów.

Rys. Ustawienia parametrów pracy systemu alarmów.

W ramce Usuwanie zakończonych alarmów aktywnych określamy sposób działania logu alarmów aktywnych w momencie wykrycia zdarzenia końca alarmu. W naszej konfiguracji alarm zakończony będzie przechowywany w logu jeszcze przez 5 minut lub do momentu potwierdzenia. Można też ustawić usuwanie natychmiastowe, ale w przypadku alarmów krótkotrwałych mogą być one niezauważone przez operatora.

W ramce Alarmy historyczne określamy sposób archiwizacji zdarzeń alarmowych. W aplikacji mogą być stosowane dwa logi alarmów historycznych. Pierwszy, kontrolowany opcją Zapisuj plik logów alarmów historycznych, jest podstawowym archiwum stosowanym do obsługi alarmów. Archiwa typu SQL są opcjonalne. Są tworzone tylko na potrzeby programu AsAlarm oraz systemu raportowania.

Zapisujemy wszystkie wykonane zmiany. Od tego momentu system alarmów powinien zacząć pracę.


4.2. Wyświetlenie tabeli alarmów aktywnych

Rozszerzymy teraz naszą aplikację o diagram pokazujący tabelę alarmów aktywnych. Tworzymy nowy diagram o nazwie Alarmy. Następnie w przyborniku wybieramy obiekt Tabela alarmów aktywnych i umieszczamy go na diagramie. Zaznaczamy obiekt i z menu kontekstowego wybieramy komendę Wyrównaj do/Dopasuj do diagramu. Obiekt tabeli zajmie cały obszar diagramu.

Zmieniamy właściwości obiektu tabeli:

  1. Właściwość Domena ustawiamy na wartość AlarmyDemo. Obiekt powinien zacząć pokazywanie alarmów.

  2. We właściwości Elementy paska narzędziowego wybieramy funkcje, które mają być dostępne za pośrednictwem paska narzędziowego obiektu.

  3. Po utworzeniu w tabeli wyświetlany jest podstawowy zestaw kolumn. Można dołożyć dodatkowe kolumny, usunąć istniejące lub zmienić ich znaczenie. W celu dodania nowej kolumny, w panelu właściwości obiektu zaznaczamy linię Kolumny i przyciskiem + dodajemy nową kolumnę. W polu właściwości kolumny Typ kolumny wybieramy odpowiedni typ informacji. Można też zmienić ustawienia szerokości kolumn. Dla wszystkich kolumn oprócz kolumny Opis dobieramy szerokość kolumny w polu właściwości Szerokość kolumny [%]. Pozostawiamy szerokość 0 w kolumnie Opis – zajmie ona całe pozostałe miejsce. W tabeli widoczna jest jeszcze jedna kolumna – jest to tzw. wskaźnik wierszy. W kolumnie wskaźnika wyświetlana jest migocząca ikonka informująca o nowych zdarzeniach. Za pokazywanie kolumny wskaźnika odpowiedzialna jest właściwość Pokazuj wskaźnik wierszy.

  4. Według własnego gustu ustawiamy kolory elementów tabeli w grupie właściwości stanowych.

Pozostało uzupełnienie diagramu Menu o przycisk otwierający diagram Alarmy. Dodajemy nowy przycisk wykonujący akcję OpenWindow(null,Info,Alarmy,null). Jeżeli w linii menu brakuje miejsca na nowy przycisk, to należy zmniejszyć rozmiar przycisków i ponownie je rozmieścić. W tym celu wykonujemy kolejno:

  1. Zaznaczamy wszystkie obiekty diagramu przy pomocy myszki lub skrótem klawiszowym ctrl-a.

  2. Zmniejszamy wartość właściwości Szerokość.

  3. Wyrównujemy górną krawędź przycisków komendą Wyrównaj do/Góry z menu kontekstowego diagramu (lub skrótem klawiszowym alt-strzałka w górę).

  4. Rozsuwamy równomiernie przyciski komendą Rozsuń/Poziomo z menu kontekstowego.

Budowa aplikacji z obsługą alarmów została zakończona. Można teraz przejść do testu działania. W analogiczny sposób możemy rozszerzyć aplikację o wyświetlenie tabeli alarmów historycznych.


4. Aplikacja z obsługą alarmów

W tym rozdziale, nasza poprzednia aplikacja zostanie rozszerzona o obsługę zdarzeń alarmowych. Rozdział obejmie parametryzację systemu alarmów (definicje alarmów i strategie alarmowe) oraz dodanie do aplikacji elementów wizualnych związanych z prezentacją stanu alarmów.


3.1.1. Lokalizacja aplikacji i wybór języków

Pierwsza zakładka kreatora pozwala na podanie katalogu, w którym pliki definicyjne aplikacji będą zapisywane. W razie konieczności można także podać katalog, w którym będą przechowywane pliki robocze: archiwa, logi itp..

Można też określić w jakich językach aplikacja będzie używana. Standardowe ustawienie to pojedynczy język wybrany zgodnie z ustawieniami systemu operacyjnego.

Rys. Kreator aplikacji - zakładka 'Aplikacja'.