BridgeWorX64: tworzenie złożonych operacji na danych

Wiktor Susfał How to, Produkty

GENESIS64 pozwala nie tylko na odczyt różnych danych i prezentację ich wartości. Możliwe jest też planowanie złożonych operacji zależnych od informacji wejściowych.

Zdanie konfigurowania algorytmów obróbki danych, często zależnych od samych danych wejściowych, realizowane jest za pomocą narzędzia BridgeWorX. Jak wszystkie narzędzia pakietu GENESIS64, jest ono konfigurowane z poziomu Workbench. Tworzenie schematów obliczeniowych bardzo przypomina tworzenie schematów blokowych. Użytkownik ma do dyspozycji pewien zestaw bloków funkcyjnych, które może odpowiednio konfigurować oraz łączyć ze sobą.

Konfiguracja BridgeWorX

Konfiguracja narzędzia odbywa się w zakładce „Bridging”, którą można znaleźć w sekcji „Project Explorer” w Workbench. Kolejne kroki są następujące.

  1. Po kliknięciu PPM na folder „Transactions” można wybrać opcję „Add Configuration” lub skorzystać z już istniejącej w tym folderze.
  2. W przypadku dodawania nowej, należy uzupełnić pola takie jak: nazwa konfiguracji; liczba wątków (projektów), które zawiera – „Number of Threads” oraz czas, po upływie którego anuluje się pracę wątku – „Cancel Timeout”;
    1. opcjonalne jest skonfigurowanie archiwizacji plików z informacjami o przebiegu wykonywanych algorytmów w zakładce „Archiving”.
  3. Przy tworzeniu nowej konfiguracji należy pamiętać o zaznaczeniu okno „Active Configuration” w zakładce „Generic Properties”.
  4. Następnie należy kliknąć PPM na żądaną konfigurację i wybrać „Add Transaction” – projekt, który będzie podpięty pod wybraną konfigurację.
  5. W zakładce „Transaction Settings” nowo otworzonego okna kluczowe jest tylko zaznaczenie okienka „The transaction is enabled”. Zakładka „Transaction Execution” służy do definiowania zmiennych, które będą wyzwalać wykonywanie się projektowanego algorytmu. Nie będzie jednak ona użyta w omawianym projekcie.
  6. Ostatnim krokiem jest utworzenie szablonu projektu w zakładce „Transaction Settings” w sekcji „Transaction Template”. Dokonuje się tego przez wybranie ikonki „plusa” po prawej stronie pola „Selected Template” lub przez kliknięcie PPM na folder „Templates” (Project Explorer -> Bridging).

Tworzenie szablonu

Po wykonaniu kroku 6 poprzedniego akapitu powinno pojawić się tak wyglądające okno:

Zdj. 1

W przypadku, gdy niewidoczny jest pasek z blokami funkcyjnymi zaznaczony z lewej strony, należy wybrać opcję zaznaczoną strzałką.

W zakładce „Template Diagram” tworzony jest schemat blokowy. Zakładka „Settings and Parameters” odpowiada za deklarowanie parametrów dostępnych przy tworzeniu szablonów, jednak w omawianym przypadku nie będzie wykorzystana.

Działanie BridgeWorX najlepiej zobrazuje przykład. Załóżmy, że obsługiwany jest pewien prosty system. Z poziomu GraphWorX, operator podaje pewną wartość która wpływa na pracę urządzenia. Jeśli wartość ta jest większa niż (załóżmy) 300, urządzenie nie będzie pracowało poprawnie. Należy tak zaprojektować system, aby uniemożliwił uruchomienie urządzenia, gdy podany parametr wynosi więcej niż 300. Ponadto, w przypadku nieprawidłowej wartości parametru, wysłany będzie mail ostrzegawczy na wcześniej skonfigurowany adres.

Aby wykonać postawione wyżej zadanie należy:

  1. Z listy bloków funkcyjnych wybrać „Real Time Input”, przeciągnąć go nad siatkę i dołączyć do bloku startowego. Ten blok odpowiada za odczyt wprowadzanego przez operatora parametru.
  2. W oknie konfiguracji bloku, po prawej stronie, należy w zakładce „Data Sources” dodać odpowiednią zmienną przechowującą wartość parametru. Na potrzeby symulacji niech będzie to: @sim64:Double.Static(„Zmienna1”).Value.
  3. Kolejnym krokiem jest przeciągnięcie elementu „Condition” i dołączenie do niego wyjścia elementu poprzedniego. „Condition” odpowiada za sprawdzenie danego warunku.
  4. W oknie konfiguracji bloku, w zakładce „Other Settings” należy wybrać „Edit Expression”. Następnie:
    1. wybrać „Previous Activity Output” (lewy górny róg) i do ukazanego w okienku wyrażenia dopisać: ” < 300″, co symbolizuje warunek.
    2. w argumentach wygenerowanego wyrażenia zamienić Row[index] na Row[0] oraz Col[indexOrN] na Col[1]. (Ma to związek z definicją zmiennej SCADA – „tag’u”. Na wyjściu poprzedniego bloku w ogólności pojawia się zestaw tagów. Row[0] symbolizuje pierwszą ze zmiennych (w tym przypadku jedyną). Każdy tag to zestaw danych przechowywanych w kolumnach. Pierwsza kolumna to nazwa tag’u, druga to wartość zmiennej itd… Stąd zapis:  {{PrevActivityOutput:Row[0].Col[1]}} < 300.)
  5. Kolejny potrzebny blok to „Real Time Output”. Należy podpiąć do niego pierwsze z wyjść elementu „Condition”, odpowiadające spełnieniu warunku. W oknie konfiguracji bloku w zakładce „Data Sources” w polu „Point Name” należy podać adres zmiennej, która ma zostać nadpisana, natomiast w polu „Output Expression” należy podać działanie, którego wynik zostanie zapisany do zmiennej. W omawianym przypadku adres to: @sim64:Bool.Static(„Zmienna2”).Value, a działanie: x=1. Blok ten odpowiada za uruchomienie urządzenia.
  6. Drugie wyjście elementu „Condition” musi zostać połączone z elementem „Send Email”. W oknie ustawień bloku „Send Email”, w zakładce „AlertWorX Configuration”, w polu point name, należy wpisać: Alert:\SendEmail (zmienną tą można również wyszukać w okienku Data Browser: MyComputer ->AlarmsAndNotifications->AlertWorX->SendEmail() ). Aktywuje ona skonfigurowany węzeł E-Mail w zakładce AlertWorX w Workbench. To, jak skonfigurować węzeł E-mail zamieszczone jest w tym wpisie. Jedyna różnica względem podanego artykułu polega na zaznaczeniu opcji „Receive commands on this node” w oknie konfiguracji węzła E-Mail.
  7. Element „Send Email” wykorzysta jedynie dane dostępu do skrzynki pocztowej ze wskazanego węzła E-Mail w AlertWorX’ie w celu wysłania z niej wiadomości. To, na jaki adres ją wyśle, z jakim tematem i treścią zależy od sposobu, w jaki użytkownik uzupełni kolejne pola („To adress”, „Subject”, „Message”) w oknie ustawien „Send Email”. Pola te mogą zawierać zarówno tekst wpisany z klawiatury, jak i wyrażenia dynamiczne konfigurowane za pomocą opcji „Edit Expression”.
  8. Wyjście elementu „Send Email” należy połączyć z blokiem „Real Time Output”, skonfigurowanym tak jak w punkcie 5, z tą różnicą, że teraz zapisywane działanie to x=0.
  9.  Do elementu z punktu 5 i 8 należy podpiąć znacznik końca algorytmu. Najważniejsze kroki powyższych działań i efekt końcowy przedstawiają zdjęcia:
Ustawienia AlertWorx
BridgeWorX – Output
BridgeWorX – SendEmail

 

 

 

 

 

 

 

Testowanie aplikacji

Aby przetestować działanie aplikacji należy:

  1. Upewnić się że konfiguracje węzła E-Mail w AlertWorX oraz Szablonów w BridgeWorX są zapisane. Po ostatecznym skonfigurowaniu AlertWorX zalecane jest ponowne uruchomienie serwera E-Mail (Wyłączenie i załączenie ikony sygnalizacji świetlnej na górnym pasku narzędzi Workbench w zakładce „Home” w sekcji „Service”, która pojawia się po wybraniu AlertWorX’a w oknie Project Explorer).
  2. W GraphWorX64 dodać 3 obiekty typu „ProcessPoint”. Dla dwóch odblokować zapis do zmiennej (parametr „Data Entry” w ustawieniach dynamicznych musi mieć wartość „True”).
  3. Do dwóch w/w obiektów jako źródła danych dodać: @sim64:Double.Static(„Zmienna1”).Value oraz zmienną odpowiedzialną za uruchomienie algorytmu BridgeWorX. W ogólnym przypadku ścieżka do zmiennej to: bwx:Nazwa_Transakcji_W_BridgeWorX/@@Execute.  Może ona zostać wyszukana w Data Browser (MyComputer->Bridging->NazwaTransakcji).
  4. Do trzeciego obiektu „ProcessPoint” dodać jako źródło danych: @sim64:Bool.Static(„Zmienna2”).Value .

Teraz można testować zachowanie się układu poprzez podawanie różnych wartości zmiennej „Zmienna1” i zapisywanie „1” do bwx:Nazwa_Transakcji_W_BridgeWorX/@@Execute, a następnie odczytywanie, jak zmienia się wartość zmiennej „Zmienna2” oraz sprawdzanie powiadomień w podanej skrzynce pocztowej. Efekty przedstawia poniższy filmik.

Funkcjonalność BridgeWorX64

Lista możliwości BridgeWorX64 jest długa. Wszystkie z dostępnych bloków funkcyjnych znajdują się na pasku zaznaczonym na Zdjęciu 1. Do najciekawszych należą: czytanie plików CSV, zestawów danych, historycznych alarmów, zapisywanie wartości do dynamicznego tagu, zapisywanie do plików CSV oraz XML, wprowadzanie opóźnienia, zmiana lokalizacji plików czy generowanie raportów.

BridgeWorX64 pozwala również na tworzenie własnych statycznych zmiennych lokalnych, widocznych tylko dla narzędzia BridgeWorX oraz statycznych jak i dynamicznych zmiennych globalnych. Służy do tego zakładka „Variables” (Workbench Project Explorer -> Bridging).

 

Elmark Automatyka udostępnia wersję demo oprogramowania GENESIS64 w celu osobistego przetestowania funkcjonalności pakietu. Skontaktuj się z nami na ICONICS@elmark.com.pl w celu otrzymania wersji testowej lub oferty handlowej.