Nowy ANT Studio Web 5.0

Wielkość: px
Rozpocząć pokaz od strony:

Download "Nowy ANT Studio Web 5.0"

Transkrypt

1 ANT STUDIO WEB 5.0 Pomoc oprogramowania ANT Studio Web 5.0 Nowy ANT Studio Web 5.0 z technologią AJAX Web 2.0 WYRÓŻNIAJĄCE SIĘ NA RYNKU OPROGRAMOWANIE HMI/SCADA, W KTÓRYM ZBUDUJESZ JAK Z KLOCKÓW APLIKACJĘ DO: WIZUALIZACJI, LOGOWANIA, ALARMOWANIA I RAPORTOWANIA DOSTĘPNĄ TAKŻE W PRZEGLĄDARKACH WWW. ANT Sp.z o.o. Kraków ul.wadowicka 8A ant-iss@ant-iss.pl ANT Sp. z o.o.

2 ANT Studio otwiera nieograniczone możliwości przetwarzania danych pobieranych z aparatury kontrolno-pomiarowej: sterowników PLC, regulatorów, liczników, przetworników, analizatorów i urządzeń wykonawczych. Umożliwia sterowanie, monitorowanie, wymianę danych, zdalny dostęp, archiwizację, wizualizację, analizę, raportowanie i udostępnianie danych. Główne zastosowanie: Systemy wizualizacji SCADA procesu technologicznego, linii i maszyn produkcyjnych, systemów zasilania, poboru mediów i surowców, Systemy nadzoru inteligentnego budynku BMS, system monitorowania serwerowni, klimatyzacji i zabezpieczeń, Panelowe aplikacje HMI, Serwerów wizualizacji danych produkcyjnych dostępny przez przeglądarki w lokalnej lub zewnętrznej sieci Internet, Systemy telemetrii i hostingu www danych pomiarowych z rozproszonych obiektów, Sprzęgi wymiany danych pomiędzy aparaturą kontrolno-pomiarową a innym oprogramowaniem SCADA\MES, bazami danych, aplikacjami biurowymi. ANT Sp z o.o. Strona 2

3 DANE TECHNICZNE Parametr Wizualizacja Serwer http OPC DDE Protokoły komunikacyjne Modbus Gazmodem M-Bus Satchwell Samsung (OEMax ) Panasonic Mitsubishi Danfoss Lonworks IEC National Instruments SNMP Interfejsy komunikacyjne Bazy danych Wewnętrzna baza programu Zewnętrzne bazy Skrypty Moduły skryptowe Język skryptów National Instruments - kontrolki Measurement Studio, kontrolki użytkownika TCL\Tk Zintegrowany z oprogramowaniem, dostępny w wersji ANT Studio WEB OPC klient i OPC serwer, DA, tryb ASync 2.0 i Sync, wyszukiwanie serwerów i automatyczna konfiguracja. Możliwość stworzenie wielu instancji serwerów i klientów w jednej aplikacji i ich połączenia ze sobą. DDE klient i DDE serwer. Możliwość stworzenie wielu instancji serwerów i klientów w jednej aplikacji i ich połączenia ze sobą. Modbus Master i Modbus Slave. Tryby RTU, ASCII, TCP. Gotowe wzorce wielu urządzeń. Gazmodem 1.0, wzorce urządzeń Plum, Common, El-tec. Możliwość konfigurowania własnych. Wzorce popularnych liczników ciepła oraz możliwość konfigurowania własnych. Sterowniki IAC-420 i IAC-620 Sterowniki serii NX Sterowniki FP2 Sterowniki serii Alpha i FX, wzorce poszczególnych wersji. Przetwornice częstotliwości serii VLT5000 Lontalk Liczniki energii elektrycznej DAQmx monitoring i zarządzanie urządzeniami sieciowymi Port szeregowy, połączenie TCP\IP jako klient, serwer i UDP, modemy PSTN, modemy GSM, modemy GPRS, modemy ANT GPRS SQLite Połączenie przez ODBC z każdą dostępną bazą SQL. Wsparcie modułu archiwizacji dla baz: MSSQL Server i PostreSQL Tworzone przez użytkownika, umożliwiające przetwarzanie danych, tworzenie interfejsów graficznych, oraz sterowanie pracą programu. TCL\Tk ANT Sp z o.o. Strona 3

4 WPROWADZENIE Uruchomienie programu 1. Uruchomienie programu Program uruchamiamy wybierając go z menu programów. Program antstudio.exe wymaga istnienia w tym samym katalogu pliku z konfiguracją o nazwie default.cfg. Brak tego pliku powoduje błąd i brak możliwości pracy z systemem. Po zainstalowaniu programu plik default.cfg zawiera pustą konfigurację pierwotną. 2. Logowanie użytkownika Należy wybrać użytkownika i podać hasło. Przeczytaj o Logowaniu użytkowników ANT Sp z o.o. Strona 4

5 3. Ekran systemu 4. Menu programu Menu Funkcja Opis File Exit Wyjście z programu Configuration Save Zapis konfiguracji do pliku Load Odczyt konfiguracji z pliku Users Logout Wylogowanie użytkownia z systemu Windows Configuration tree Otwarcie drzewa konfiguracyjnego Debug tree Otwarcie drzewa monitora systemu Debug log Otwarcie raporu logów systemu ANT Sp z o.o. Strona 5

6 Po zaznaczeniu w menu Windows wszystkich trzech okien mamy je rozmieszczone w następujący sposób: Okna programu można szybko włączać i wyłączać klawiszami: F2 configuration tree F3 debug log F4 debug tree Schematy synoptyczne są tworzone na środkowym ekranie, który podzielony jest zakładkami. ( Window 1 ) Okno Configuration Tree Property Panel Debug Tree Debug Log Opis Drzewo konfiguracji systemu Tabela właściwości wybranego elementu w drzewie konfiguracji Drzewo przedstawiające parametry pracy systemu i niektórych modułów Tabela z logami systemu UWAGA: dostęp do drzewa konfiguracji mają tylko uprawnieni użytkownicy. Konfigurowanie systemu wykonuje się na drzewku konfiguracyjnym Configuration Tree. ANT Sp z o.o. Strona 6

7 Moduły System stanowi zbiór skonfigurowanych w drzewku konfiguracyjnym modułów, które połączone są ze sobą kanałami danych. Niezależnie od tego jaką funkcjonalność pełni dany moduł jest on zawsze w taki sam sposób dodawany do systemu i łączony z i innymi modułami. Moduły można podzielić na : moduły graficzne Są to wszelkiego rodzaju kontrolki służące do graficznej prezentacji danych. Znajdują się one w menu Insight Graphical Controlls. Dzielą się one na kontrolki wyświetlające wartości Displays, kontrolki do zadawania wartości Setpoints system alarmowania AlarmsAndEvents oraz system raportowania Reports Wśród kontrolek graficznych są moduły wbudowane w system oraz skrypty TCL/Tk z interfejsem graficznym. ANT Sp z o.o. Strona 7

8 moduły wymiany danych Znajdują się one w menu Exchange, Sources, Protocols, Scripts. Są to moduły komunikacyjne, które wymieniają dane pomiędzy systemem, a zewnętrznymi aplikacjami i urządzeniami. Należą do nich : - moduły komunikacji z aplikacjami: OPC, DDE, ODBC - moduły komunikacji z urządzeniami: Modbus, GazModem, LonWorks Moduły wymiany danych zazwyczaj nie posiadają interfejsu graficznego. Skrypty Skrypty są uniweralnymi modułami, mogącymi pełnić dowolne funkcje zaimplementowane w kodzie programu. Skrypty mogę posiadać własny interfejs użytkownika. Każdy moduł posiada swoją konfigurację, umieszczoną w drzewku konfiguracyjnym. ANT Sp z o.o. Strona 8

9 Knob - pokrętło do ustawiania wartości jest modułem graficznym ( kontrolką ), której konfiguracja przedstawiona jest na powyższym rysunku. Moduły które posiadają interfejs graficzny ( tak jak m.in. knob ) posiadają w swojej konfiguracji wskaźnik do okna - Window, w którym wskazany jest ekran programu oraz położenie i wielkość kontrolki. Niezależnie od typu każdy moduł posiada kanały za pomocą których wymieniane są dane. Przeczytaj więcej o kanałach systemu. Istotną cechą systemu jest to, że moduły konfiguruje się niezależnie, w locie, bez przerywania pracy systemu. ANT Sp z o.o. Strona 9

10 Drzewko konfiguracyjne Drzewko konfiguracyjne programu znajduje się po lewej stronie ekranu. Aby je otworzyć należy wybrać z menu Configuration, Configuration Tree Drzewko składa się z części zawierającej predefiniowane okresy dla zdarzeń periodycznych Hooks, opisującej moduły Modules, konfiguracji kont użytkowników Users oraz części opisującej okna Windows. Pod drzewkiem znajduje się tabela z właściwościami Properties wybranego elementu drzewa. ANT Sp z o.o. Strona 10

11 W zakładce Description znajduje się opis statusu modułu. Np. w przypadku, gdy moduł oznaczony jest czerwonym wykrzyknikiem znajduje się tam opis błędu. Ustawianie wartości w tabelce Properties Aby ustawić wartość należy 2 razy kliknąć myszką na wybranej wartości, którą chcemy zmienić. Wtedy edytor umożliwia wpisanie wartości. W przypadku zmiennych logicznych On/Off stany zmienia się poprzez kolejne kliknięcie myszką. Zatem klikamy 2 razy żeby przejść do edycji komórki i trzeci raz aby przestawić stan. Aby nowa wartość została ustawiona należy kliknąć na dowolnym innym polu w tabelce. Menu Elementy drzewa mogą posiadać menu konfiguracyjne, które wywołuje się kliknięciem prawym klawiszem myszki. Drzewko konfiguracyjne wspiera inteligentny system kopiowania i przeciągania. Układ menu może zostać dowolnie zmieniany, poprzez edycję wzorców konfiguracji. Kopiowanie elementów drzewa wykonuje się wybierając z menu wskazanego elementu Copy, i wybraniu Paste na właściwym folderze do którego chcemy skopiować element. Należy zwrócić uwagę na to, że foldery zawierają elementy danego typu. Np. jeśli folder nazywa się InputChannels i zawiera kanały wejściowe (input) to nie można do niego kopiować kanałów wyjściowych (output). Możliwe natomiast jest przeciągnięcie kanału typu input do folderu OutputChannels. Przeciąganie kanałów na moduły - łączenie modułów i kanałów Przykład: Mamy moduł OPCclient oraz DDEserver. Chcemy aby kanał z OPCclient'a był udostępniany po DDE. Zatem chcemy stworzyć kanał typu input w serwerze DDE i podłączyć do niego (zmapować) kanał z OPCclienta. ANT Sp z o.o. Strona 11

12 Przeciągając kanał MotorRPMSensor_out0 do folderu InputChannels modułu DDEDriver0 stworzony zostanie kanał wejściowy o tej samej nazwie, podłączony (zmapowany) do kanału z modułu OPC. Zostanie również stworzona automatycznie konfiguracja kanału DDE, ANT Sp z o.o. Strona 12

13 Konfiguracja ta jest prawidłowa, natomiast może być oczywiście zmieniona zgodnie z preferencjami użytkownika. Jeśli chcemy aby wszystkie kanały danego modułu zostały w ten sposób połączone należy przeciągnąć moduł na folder kanałów. W opisywanym przypadku przeciągając moduł OPCclient0 na folder InputChannel modułu DDEDriver0 stworzone zostaną kanały wejściowe w DDE, do których zostaną podłączone kanały wyjściowe z OPC. W ten sposób uzyskamy połączenie wszystkich kanałów między modułami. Przeczytaj o szczegółach operacji na drzewku konfiguracyjnym. ANT Sp z o.o. Strona 13

14 Podobnie, jeśli przeciągniemy moduł na folder OutputChannel innego modułu to dodane zostaną kanały output, a w module przeciąganym kanały input zostaną do nich podłączone. Gdy przeciągamy kanał typu input do folderu InputChannels lub output do folderu OutputChannels między dwoma modułami, to gdy są to różne moduły, to może dość do potrzeby zmiany typu. Zobacz listę modułów. ANT Sp z o.o. Strona 14

15 Dodawanie modułów Moduły systemu konfiguruje się w bardzo podobny sposób. Aby dodać nowy moduł należy nacisnąć prawym klawiszem myszy na folderze Modules i wybrać go z menu Insert. Tworząc wzorce konfiguracji, użytkownik programu może stworzyć własne menu, umożliwiające dodanie przygotowanego wcześniej elementu, np. OPCclient skonfigurowany do połączenia z serwerem wraz ze zdefiniowanymi kanałami. Przeczytaj więcej o wzorcach konfiguracji. Usuwanie modułu, podobnie jak dla dowolnego elementu konfiguracji, można wykonać wybierając polecenie Remove, albo naciskając klawisz Delete. Aby uruchomić moduł, należy ustawić w panelu właściwości, znajdującym się pod drzewkiem konfiguracyjnym opcję Active = ON, lub wybrać z menu modułu polecenie Module On. Aby uruchomić wszystkie moduły znajdujące się w bieżącej konfiguracji w folderze Modules, należy wybrać polecenie Switch All On. Podobnie aby je wyłączyć należy wybrać polecenie Switch All Off. ANT Sp z o.o. Strona 15

16 Foldery W celu uławienia i usprawnienia tworzenia aplikacji można wykorzystać opcję Folder. Operacje na folderach: Dodany do drzewa konfiguracji Folder posiada funkcjonalność bloku Modules. Możemy stworzyć w nim strukturę drzewa dodając do folderu moduły: Aby skopiować folder z zawartością używamy opcji Copy folder. Wklejamy wybierając opcje Paste folder na Module lub wybranym folderze. ANT Sp z o.o. Strona 16

17 Klikając na folder i wybierając zakładkę Properties dostajemy możliwość zmian: Name Nazwy folderu Parent Przypisanie wszystkich kontrolek znajdujących się w folderze do danego okna: Jeżeli Parent ma ustawioną wartość <multiple names> oznacza to, że w folderze znajdują się moduły przypisane do rożnych okien. ANT Sp z o.o. Strona 17

18 ANT Sp z o.o. Strona 18

19 Katalogi systemu Po zainstalowaniu systemu, we wskazanej ścieżce tworzona jest następująca struktura folderów i plików: W katalogu głównym znajdują się: program ANT Studio.exe plik z konfiguracją domyślną default.cfg biblioteki dll oraz foldery systemu Na uwagę zasługuje folder User Projects, do którego powinny trafiać konfiguracje użytkownika. ANT Sp z o.o. Strona 19

20 TWORZENIE APLIKACJI Kanały Rodzaje kanałów. Moduły systemu posiadają kanały wejściowe i wyjściowe. Za ich pomocą przekazywane są dane pomiędzy modułami. Kanały wejściowe Input Channels, to kanały po których dostarczane są dane do modułu ze środowiska. Przez kanał wejściowy modułu A można podłączyć go z modułem B. Kanały wyjściowe Output Channels dostarczają dane do środowiska. Jeśli mamy do czynienia z modułem komunikacyjnym np. OPC, DDE, Modbus itd. to kanałem wyjściowym będą dostarczane do systemu dane z zewnątrz, np. z serwera OPC, DDE, czy urządzenia Modbus. Moduł komunikacyjny przekazuje dane z kanałów wejściowych na zewnątrz. Każdy kanał systemu musi mieć unikalną nazwę w obrębie modułu. Należy zwrócić uwagę na to, że unikalne muszą być nazwy zarówno kanałów wejściowych i wyjściowych. Trendy to kanały archiwalne, które umożliwiają przesyłanie danych z baz danych. Trendy są elementami konfiguracji modułów bazodanowych - Archive oraz niektórych urządzeń, które gromadzą w swojej pamięci wartości archiwalne - m.in. GazModem. Trend składa się przeważnie z kanału wejściowego i wyjściowego, umożliwiającego zapis danych do modułu oraz odczyt. Kanały trendów można traktować jak zwykłe kanały wartości bieżących i podłączać je do kontrolek lub innych modułów. Dane bieżące z kanału trendowego to ostatnio zapisane dane w bazie. ANT Sp z o.o. Strona 20

21 Moduły operujące na danych archiwalnych m.in. ArchivePlot pobierają za pomocą kanału trendu dane archiwalne. Przeczytaj o typach kanałów. Typy kanałów Typy kanałów System operuje na następujących typach kanałów nazwa double integer string sql_query sql_result raw opis liczby zmiennoprzecinkowe podwójnej precyzji 8bajtów liczby całkowite 4bajtowe łańcuchy znaków nieograniczonej długości zapytanie języka SQL odpowiedź na zapytanie w SQL ciąg bajtów, m.in. w transmisji szeregowej Przeczytaj o kanałach. ANT Sp z o.o. Strona 21

22 Mapowanie kanałów Mapowanie kanałów polega na łączeniu kanałów wejściowych z wyjściowymi. Każdy kanał wejściowy posiada folder Mapping. Tam wskazuje się moduł oraz jego kanał, którego wartość ma być podawana na konfigurowany kanał. Mapowanie dotyczy jedynie kanałów wejściowych. To im wskazuje się źródło sygnału. Możliwe jest łączenie kanałów wejściowych z wyjściowymi, ale również łączenie ze sobą kanałów wejściowych. UWAGA! Można łączyć ze sobą tylko kanały o tym samym typie danych. Przeczytaj więcej o typach kanałów Aby zmapować kanał, można wskazać źródło kanału w ustawieniach Mapping, lub przeciągnąć w drzewku konfiguracyjnym na siebie kanały metodą Drag&Drop. Przykład połączenia ze sobą dwóch kanałów, kontrolki Knob i Gauge. ANT Sp z o.o. Strona 22

23 Wskazanie we właściwościach mapowania W ustawieniach Mapping, należy wybrać moduł oraz kanał, który ma być źródłem danych. ANT Sp z o.o. Strona 23

24 Ten sam efekt można uzyskać przeciągając kanał output na input, lub output na Mapping. Po zmapowaniu kanałów, dane z kanału output przepływają do kanału input. Dzięki temu za pomocą pokrętła Knob można ustawiać wartość wskaźnika Gauge. Metodą przeciągania, jedną operacją można ze sobą połączyć wszystkie kanały dwóch modułów. Przeciąganie kanałów na moduły - łączenie modułów i kanałów ANT Sp z o.o. Strona 24

25 Dodawanie nowego okna Aby dodać nowe okno należy kliknąć prawym klawiszem myszy na zakładce Windows i wybrać Insert New window Nowe okno zostanie dodane do konfiguracji w drzewku, a jego zakładka pojawi się w centralnej części ekranu. Dodane w ten sposób okno wymaga jeszcze skonfigurowania. Parametry konfiguracyjne okna Parametr BackgroundColor Wartość kolor tła okna ANT Sp z o.o. Strona 25

26 CustomBackgroundColor Grid GridSize Name Picture Wartość "On" powoduje ustawienie wskazanego koloru tła Wartość "On" powoduje włączenie siatki widocznej ułatwiającej rozmieszczenie kontrolek w oknie rozmiar okna siatki w pikselach niepowtarzalna nazwa okna ścieżka do pliku graficznego W oknie można umieścić rysunek pobrany z plików graficznych zapisanych w następujących formatach. GIF, ICO, TGA, PCX, WBMP, WMF, JPEG, PNG, MNG, TIFF, JBIG, PNM, PPM, PGM RAS, JPEG-2000 ANT Sp z o.o. Strona 26

27 Tworzenie wizualizacji Ekrany synoptyczne tworzy się umieszczając w oknach kontrolki graficzne. Tłem okna może być grafika pobrana ze wskazanego pliku, przedstawiająca obiekt wizualizacji. Przeczytaj jak dodać nowe okno. Każdą kontrolę graficzną dodaje się do systemu tak samo. Polega to na dodaniu wybranej kontrolki do drzewka konfiguracyjnego, przeciągnięciu jej na wybrane okno lub kliknięcie w obszarze okna prawym klawiszem myszki i wybranie kontrolki graficznej. Kontrolka zostanie dodana w miejscu kliknięcia. Przykład: Dodanie 2 kontrolek Knob i Gauge oraz podłączenie ich ze sobą. 1. Dodajemy wskazane kontrolki graficzne z menu Modules -> Insight ANT Sp z o.o. Strona 27

28 2. Przeciągamy kontrolki na stworzone wcześniej okno Window0 ANT Sp z o.o. Strona 28

29 3. Łączymy (mapujemy) kanał wyjściowy output kontrolki Knob z kanałem wejściowym input kontrolki Gauge przeciągając kanał output na input. Mapowanie kanałów. 4. Uruchamiamy oba moduły. Każda kontrolka posiada w swojej konfiguracji Window, opisujące miejsce położenia. ANT Sp z o.o. Strona 29

30 Manipulowanie kontrolkami 1. Aby przesunąć kontrolkę można wpisać nowe wartości w polach X i Y lub przesunąć myszką wyłączony modu ł(przy włączonym parametrze Grid okna pojawi się wtedy siatka ułatwiająca umieszczenie kontrolki ). Klikając prawym klawiszem na folderze zawierającym kontrolki z obszru jednego okna możemy wybrać wyrównnie wszystkich kontrolek do skrajnego położenia: góra, dół, lewo, prawo 2. Aby zmienić rozmiar można wpisać nowe wartości Height i Width lub chwytając i przeciągając myszką oznaczone kwadratami miejsca na wyłączonej - umieszczonej wcześniej w oknie - kontrolce. 3. Aby umieścić kontrolkę w innym oknie można wybrać okno w parametrze Parent, lub przeciągnąć moduł kontrolki z drzewka konfiguracyjnego na okno. 4. Wyszukiwanie kontroki Znajdywanie modułu kontrolki w konfiguracji Gdy kontrolka jest wyłączona i na ekranie znajduje się jej cień (zobacz rysunek powyżej), to naciskając na niej lewy klawisz myszy w drzewku konfiguracyjnym po lewej stronie zostanie podświetlona wybrana kontrolka. W przypadku gdy kontrolka jest włączona należy nacisnąć na niej lewym klawiszem myszy wciskając wcześniej klawisz Shift. ANT Sp z o.o. Strona 30

31 Znajdowanie kontrolki na ekranie Rozwinięcie menu okna Window (naciśnięcie prawego klawisza) umożliwia wywołanie polecenia Switch to, które powoduje otwarcie okna na którym znajduje się wybrana kontrolka. 5. Menu kontrolki Gdy kontrolka jest wyłączona to naciskając na niej prawy klawisz myszki otwieramy menu kontrolki. Gdy kontrolka jest włączona, to samo można uzyskać wciskając wcześniej Shift. Wyświetlone menu jest takie samo jak dla modułu wybranego w drzewku konfiguracyjnym. ANT Sp z o.o. Strona 31

32 Ekrany synoptyczne Aplikacja wizualizacji składa się z zaprojektowanych przez użytkownika ekranów synoptycznych. Przeczytaj jak dodać nowy ekran. Przełączanie okien. Okno można wybrać wskazując jego zakładkę Aby sprawnie poruszać się po systemie można w poszczególnych oknach umieścić klawisze przejścia do wybranego okna (linki). Klawisze takie dodaje się w folderze okna Gadgets, wybierając z menu wywołanego naciśnięciem prawego klawisza myszki opcję Insert Button. Konfiguracja klawisza określa jego nazwę oraz nazwę okna, do którego ma nastąpić przełączenie. Klawisze przejścia można - podobnie jak kontrolki graficzne - umieszczać w oknie przeciągając je myszką. Przykład przełączania okien za pomocą klawisza przejścia. ANT Sp z o.o. Strona 32

33 Na jednym oknie mamy kontrolkę Gauge, na drugim kontrolkę Knob. Dodajemy do okna o nazwie Gauge klawisz przejścia GoToKnob z parametrem "SwitchTo" o wartości "Knob" oraz do okna Knob klawisz przejścia GoToGauge z analogicznym parametrem o wartości "Gauge". Naciśnięcie klawisza GoToKnob powoduje otwarcie okna Knob, zaś naciśnięcie klawisza GoToGauge powoduje otwarcie okna Gauge. ANT Sp z o.o. Strona 33

34 Operacje na drzewku konfiguracyjnym Wszystkie czynności konfiguracyjne systemu wykonywane są w drzewku konfiguracyjnym. Efektywne korzystanie z niego umożliwiają autokonfiguratory, inteligentne przeciąganie, kopiowanie, dodawanie. Łączenie kanałów - mapowanie Przeciągając kanał wyjściowy na kanał wejściowy, lub odwrotnie uzyskujemy połączenie ze sobą obu kanałów. Dane z kanału wyjściowego są przekazywane do kanału wejściowego. Alternatywnym rozwiązaniem jest skonfigurowanie mapowania kanału, poprzez wybór właściwego modułu i kanału. Przeczytaj więcej o mapowaniu kanałów. Łączenie wielu wyjść z jednego modułu do wielu wejść drugiego modułu Połączenie wszystkich kanałów wyjściowych z modułu Source do modułu Target. W module Target zostaną dodane kanały wejściowe dla wszystkich kanałów wyjściowych z modułu Source. ANT Sp z o.o. Strona 34

35 Przeciągnąć moduł Source na folder Input channels modułu Target Przeciągnięcie Efekt przeciągnięcia ANT Sp z o.o. Strona 35

36 Łączenie wielu wejść z jednego modułu do wielu wyjść drugiego modułu Połączenie wszystkich kanałów wejściowych z modułu Source do modułu Target. W module Target zostaną dodane kanały wyjściowe dla wszystkich kanałów wejściowych z modułu Source. Przeciągnąć moduł Source na folder Output channels modułu Target ANT Sp z o.o. Strona 36

37 Przeciągnięcie Efekt przeciągnięcia ANT Sp z o.o. Strona 37

38 Łączenie modułów Połączenie ze sobą na krzyż wszystkich kanałów ( wejściowych i wyjściowych z dwóch modułów ) Przeciągnąć moduł Source na moduł Target Przykład: Aby utworzyć połączenie wszystkich kanałów z serwera OPC z klientem DDE, tak aby wartości kanałów odczytywanych z DDE były udostępniane przez serwer OPC, oraz kanały serwera OPC były odczytywane przez klienta DDE wystarczy przeciągnąć moduł OPC na DDE. Zostaną stworzone kanały DDE: wyjściowe połączone z wejściowymi do OPC oraz wejściowe podłączone do wyjściowych z OPC. ANT Sp z o.o. Strona 38

39 Przeciągnięcie Efekt przeciągnięcia ANT Sp z o.o. Strona 39

40 Dodawanie kanałów do archiwów Konfigurowanie systemów wymiany danych archiwalnych, logowania, czy replikacji danych polega na konfigurowaniu Trendów. Po dodaniu modułu archiwizującego trendy: SQLArchive, RAMArchive możliwe jest tworzenie trendów dla dostępnych w systemie kanałów wyjściwych. Mając skonfigurowany moduł archiwizacji Archive, możemy w nim tworzyć trendy poprzez: przeciąganie kanałów wyjściowych na moduł Archive Przeciągnięcie Efekt przeciągnięcia 1. poprzez menu konfiguracyjne: Add to archive, Remove from archive, Show on plot. Wybierając z menu kanału Add to Archive ANT Sp z o.o. Strona 40

41 Efekt po operacji ANT Sp z o.o. Strona 41

42 Rysowanie trendów Jeśli w konfiguracji znajdują się moduły ArchivePlot można szybko skonfigurować rysowanie na nich trendów. Dodanie do ArchivePlota nowego trendu można wykonać: przeciągając trend z modułów Archive na ArchivePlot Przeciągnięcie Efekt przeciągnięcia wybierając z menu Show on Plot Wybierając z menu trendu Show on plot ANT Sp z o.o. Strona 42

43 Efekt po operacji ANT Sp z o.o. Strona 43

44 Wzorce konfiguracji Wykorzystanie wzorców konfiguracji ( template ) umożliwia tworzenie własnych menu, zawierających gotowe do użycia fragmenty konfiguracji. Każdy folder umożliwia stworzenie wzorców elementów składowych. Możemy zatem stworzyć np. wzorce skonfigurowanych modułów, urządzeń Modbusa, kanałów. Tworzenie wzorców działa podobnie jak tworzenie menu ulubione w przeglądarkach internetowych. Aby stworzyć wzorzec konfiguracji należy wybrać menu Make template. Tworzenie wzorców, na przykładzie urządzeń Modbus Po stworzeniu konfiguracji urządzenia dodajemy go do wzorców, aby w przyszłości móc wybrać z menu gotowe do użycia, skonfigurowane urządzenie. Wybieramy polecenie Make template ANT Sp z o.o. Strona 44

45 W oknie dialogowym stworzyć wielokatalogowe menu w którym umieszczamy wzorzec. Polecenie Create folder tworzy folder - podmenu, a Insert powoduje dołożenie wzorca. W tym przykładzie stworzony został katalog MyDevices, w którym umieszczamy urządzenie MyDevice. ANT Sp z o.o. Strona 45

46 Dodany w ten sposób wzorzec tworzy menu wszystkich folderów IOBlocks modułu ModbusMaster. Po dodaniu do konfiguracji wzorców należy ją zapisać poleceniem Configuration Finish. Konfigurując urządzenia będzie można wybrać MyDevice wprost z menu. Dodane wzorce urządzeń stanowią bazę dla modułów i mogą być przez nie wykorzystywane do celów m.in. autodetekcji, jak to ma miejsce w przypadku modułu ModbusMaster. Do wzorców można, jak wspomniano na początku, dodać cały moduł. I tak, jeśli zdefiniowaliśmy moduł ModbusMaster, który wymienia dane z pewną liczbą urządzeń na danej podsieci szeregowej, to możemy zapisać taki wzorzec konfiguracji i wykorzystać go przy definiowaniu następnej podsieci na następnym porcie Com. ANT Sp z o.o. Strona 46

47 Po dodaniu w ten sposób modułu do wzorców, można z niego łatwo skorzystać, wybierając go z menu modułów. ANT Sp z o.o. Strona 47

48 Archiwizacja danych System umożliwia archiwizację danych z kanałów pomiarowych typu double i integer. Wartości z kanałów mogą być archiwizowane przez moduły SQLArchive i RAMArchive. System umożliwa wymianę danych z wieloma modułami typu Archive jednocześnie. Dane z modułów Archive dostępne są w postaci bieżących wartości oraz danych archiwalnych. Konfiguracja przedstawia rejestrację danych z pokrętła Knob przez moduł archiwizacji SQLArchive. Dane umieszczane są w bazie danych wskazanej przez źródło danych ODBC, skonfigurowane dla danego SQLArchive. Przeczytaj o operacjach na drzewku umożliwiających szybko skonfigurować trendy. ANT Sp z o.o. Strona 48

49 Architektura systemu Przykłady aplikacji systemu: Pojedyncza aplikacja - system typu SCADA ANT Studio System ze stacjami operatorskimi - serwer akwizycji i stacja operatorska ANT Studio ANT Sp z o.o. Strona 49

50 Aplikacja WEB ze stacją operatorską - serwer WWW i stacja operatorska ANT Studio Aplikacja wieloserwerowa - serwer akwizycji, serwer WWW i stacje operatorskie ANT Studio ANT Sp z o.o. Strona 50

51 System posiada następujące grupy modułów: Grupa Exchange Insight Graphical Controlls Insight Web Server Sentry Opis Moduły wymiany danych z urządzeniami, bazami danych oraz OPC Moduły graficzne służące do wizualizacji oraz zadawania wielkości występujących w systemie Moduł serwera WWW Moduły związane z telemetrią ANT GPRS ANT Sp z o.o. Strona 51

52 WYMIANA I ŹRÓDŁA DANYCH, PROKOTOŁY, SKRYPTY Komunikacja z urządzeniami Moduły grupy IOModules Pakiet Moduł Opis Modbus ModbusMaster podsieć jednego mastera protkokołu Modbus Modbus ModbusSlave podsieć wielu slave'ów prokokołu Modbus LonWorks MultiLon noda sieci LonWorks GazModem GazModem moduł komunikacji z urządzeniami protokołu GazModem Mitsubishi MitsubishiMX moduł komunikacji ze sterownikami Mitsubishi Grupa ta zawiera moduły akwizycji danych z urządzeniami zewnętrznymi. W przypadku urządzeń i protokołów transmisji szeregowej, takich jak Modbus czy GazModem moduł (BUS) należy połączyć z modułem komunikacji szeregowej: Com lub IPSocket Połączenie takie można wykonać przeciągając na siebie moduły. Moduły grupy IOModules, mogą tworzyć szynę ( BUS ), która umożliwia skonfigurowanie wielu urządzeń daneo typu ( Modbus, GazModem ), lub zawierają pojedyncze urządzenie ( MitsubishiMX, MultiLon ). Moduły akwizycji IOModules umożliwiają tworzenie skryptów, które bezpośrednio przetwarzają odczytywane i zapisywane do urządzeń wartości. Na kanałach wyjściowych z danymi pomiarowymi można wykonywać operacje skalowania nakładanie masek i wyodrębnianie wartości poszczególnych bitów z odczytanego rejestru. Przeczytaj o Skalowanie kanałów wyjściowych ANT Sp z o.o. Strona 52

53 Konfiguracja Konfigurację modułów komunikacji z urządzeniami, na przykładzie modułu ModbusMaster przedstawia poniższe drzewko: Kolorami zaznaczone są poszczególne części konfiguracji: pomarańczowy - kanał wejściowy i wyjściowy typu Raw przez który moduł podłączony jest do modułu komunikacji np. portu szeregowego ComDriver, portu i adresu w sieci Ethernet - IPSocket. czerwony - kanały zdefiniowane w ioblokach, pobierane zazwyczaj wprost z urządzeń. W przypadku Modbus'a kanały te wskazują na konkretne rejesty odczytywane przez ramki zdefiniowane w ioblokach fioletowy - kanały wejściowe i wyjściowe, które obsługują wartości przeliczeniowe. Można w nich zdefiniować kanały z wartościami wyliczonymi na podstawie wartości kanałów odczytanych w ioblokach (OutputChannels) lub można przeliczać wartości kanałów zapisywanych do urządzenia na podstawie wartości przesyłanych przez kanały wejściowe (InputChannels). Operacje na kanałach zapisuje się w skryptach urządzeń. ANT Sp z o.o. Strona 53

54 niebieski - trendy. Urządzenia które umożliwiają poza wartościami bieżącymi odczytywanie wartości archiwalnych (rejestratory), mogą mieć zdefiniowane w konfiguracji trendy. Trendy obsługiwane są również w skryptach urządzeń. Trendy udostępnione w modułach komunikacji mają w systemie identyczną funkcjonalność jak trendy w modułach archiwizacji Archive. Do trendów urządzeń można podłączyć bezpośrednio kontrolkę ArchivePlot i rysować wykresy. Można również podłączyć archiwum i replikować wartości rejestrowane przez urządzenie w bazach danych. ANT Sp z o.o. Strona 54

55 Skalowanie wartości kanałów wejściowych. Przy zapisywaniu wartości do rejestrów urządzenia możemy je odpowiednia przeskalować używając funkcji: Linear Linear 16 bit Linear 32 bit Linear - warości podawane na kanal input z zakresu UnitRangeMin UnitRangeMax są skalowane na wartości z zakresu RangeMin RangeMax ANT Sp z o.o. Strona 55

56 Linear 16 bit wartości podawane na kanał input z zakresu UnitRangeMin UnitRangeMax skalowane są na wartości zakresu rejestru 16 bitowego Linear 32 bit wartości podawane na kanał input z zakresu UnitRangeMin UnitRangeMax skalowane są na wartości zakresu rejestru 32 bitowego Skalowanie kanałów wyjściowych ANT Sp z o.o. Strona 56

57 Skalowanie wartości kanałów wyjściowych. Odczytywane wartości z urządzeń możemy skalować wykorzystując parametr Scale przypisany do każdego kanału typu OUT. Możemy dokonać: skalowania liniowego Linear liniowego dla zakresu wartości z rejestru 16 bitowego Linear 16 bit liniowego dla zakresu wartości z rejestru 32 bitowego Linear 32 bit. ANT Sp z o.o. Strona 57

58 Scale Type Linear Wartość przeskalowana UnitRange Max UnitRange Min Range Min Range Max Wartość odczytana Wartość wystawiana na kanal wyjściowy po skalowaniu obliczana jest ze wzoru: ANT Sp z o.o. Strona 58

59 Wartość = (odczyt- RMin)/(RMax-RMin)*(URMax -URMin) + URMin gdzie: odczyt - wartość odczytana z rejestru urządzenia poddawana przeskalowaniu RMin - dolna granica zakresu wartości odczytywanej z rejestru urządzenia RMax - górna granica zakresu wartości odczytywanej z rejestru urządzenia URMin - dolna granica zakresu wartości przeskalowanej wystawiona na kanał wyjściowy URMax - górna granica zakresu wartości przeskalowanej wystawiona na kanał wyjściowy Przykład: Pomiar ciśnienia kpa z przetwornika ciśnienia (z sygnałem wyjściowym mA) podłączonego do urządzenia konwertującego sygnał prądowy ma na postać cyfrową (np. protokół Modbus): 0 kpa odpowiada wartości 400 (4 ma) w rejestrze 25 kpa odpowiada wartości 2000 (20 ma) w rejestrze Linear 16 bit skaluje liczbę zapisaną w rejestrze 16 bitowym na zakres UnitRangeMin UnitRangeMax ANT Sp z o.o. Strona 59

60 Linear 32 bit skaluje liczbę zapisaną w rejestrze 32 bitowym na zakres UnitRangeMin UnitRangeMax ANT Sp z o.o. Strona 60

61 Mask przy pomocy funkcji Mask w danym kanale otrzymujemy wynik operacji logicznej AND na wartości odczytanej z danego rejestru, i wartości określonej w parametrze Mask Type Bit przy pomocy funkcji Bit możemy w danym kanale wyświetlać wartość (0 lub 1) wybranego przez nas bitu z odczytywanego rejestru ANT Sp z o.o. Strona 61

62 Klikając prawym klawiszem na kanale OUT mamy do dyspozycji dwie funkcje Create bit channels Create bit channels Funkcja tworzy odpowiednio 16 i 32 kanały wyjściowe, w których na wyjściu otrzymujemy wartość poszczególnych bitów z danego rejestru ANT Sp z o.o. Strona 62

63 Skrypty urządzeń - w modułach akwizycji Moduły akwizycji danych, takie jak: Modbus Master Modbus Slave GazModem MitsubishiMX MultiLon posiadają wbudowany w swoją strukturę skrypt, który umożliwia przetwarzanie wartości kanałów odczytanych lub mających być zapisanych do urządzeń. Skrypty takie umożliwiają przeliczenie wartości odczytywanych z urządzeń do wartości rzeczywistych i odwrotnie przeliczenie wartości rzeczywistych do formatu danych zrozumiałych dla urządzenia. Przykład 1. Gdy odczytujemy wartości z urządzeń protokołu GazModem, to wartość określająca stan licznika gazu w warunkach normalnych odczytywana jest z urządzenia z dwóch rejestrów. Rejestry te zawierają dwa składniki wartości rzeczywistej wskazania, którą można wyznaczyć ze wzoru LG = R * R2 Operację przeliczenia najlepiej jest wykonać właśnie w skrypcie modułu komunikacyjnego. W celu skonfigurowania takiego zadania, należy wykonać następujące czynności: 1. Skonfigurować urządzenie, podłączyć je do modułu komunikacji szeregowej (ComDriver, lub IPSocket) i ustawić parametry transmisji, umożliwiające odczyt zdefiniowanych w IOBlock u kanałów L0 i L1. Przeczytaj o konfigurowaniu modułu GazModem. Poniższy rysunek przedstawia przykładową konfigurację modułu GazModem, zawierającego jeden IOBlock obsługujący dwa kanały. ANT Sp z o.o. Strona 63

64 Mając tak skonfigurowany system, odczytujemy z urządzenia dwa kanały L0 i L1, których wartości możemy przedstawić w tabelce: 2. Teraz należy dodać kanał wyjściowy, który będzie przedstawiał wartość rzeczywistą wskazania. ANT Sp z o.o. Strona 64

65 Po dodaniu kanału zmieniamy jego nazwę na L ANT Sp z o.o. Strona 65

66 3. Dodany kanał o nazwie L, będzie udostępniał dane, które zostaną do niego wpisane przez skrypt. proc notifyioblock { block_name } { # inicjalizacja zmiennych globalnych w których znajdują się wartości # odczytanych kanałów global "Current.L0" "Current.L1" # wysłanie do kanału L wartości wyliczonej w wyrażeniu expr... antiosetdevicechannel L [expr [ set "Current.L0" ] \ * [ set "Current.L1" ] ] } Tak napisany skrypt należy zapisać w pliku tekstowym, i podać jego ścieżkę w konfiguracji urządzenia. 4. Skonfigurowany moduł udostępnia wyliczaną wartość, którą można dodać do tabeli: ANT Sp z o.o. Strona 66

67 Dla lepszego zilustrowania przykładu, zmodyfikowano skrypt tak, aby do wartości L była dodawana stała wartość , modyfikując funkcję antiosetdevicechannel użytą w poprzednim skrypcie. antiosetdevicechannel L [expr [ set "Current.L0" ] \ * [ set "Current.L1" ] \ ] Wyliczona wartość znajduje się w tabelce: Przykład 2 Poniższy skrypt przelicza wartości kanałów zdefiniowanych w IOBlock u DB CH0 i CH1, w których znajdują się wartości temperatury i wilgotności odczytane z urządzenia, do wartości T temperatury po konwersji oraz DT wyznaczonej temperatury punktu rosy. proc notifyioblock { block_name } { if { $block_name == "DB"} { global "$block_name.ch0" "$block_name.ch1" # convert temperature to Celsius set T [expr [set "$block_name.ch0"] ] set RH [set "$block_name.ch1"] # saturation vapor pressure over water ANT Sp z o.o. Strona 67

68 set EW [expr ( (7.5*$T/(237.3+$T))+(log10($RH)-2))] # calculate dewpoint set DP [expr (( $EW)*237.3) / ($EW ) ] } } antiosetdevicechannel T $T antiosetdevicechannel DP $DP Przykład 3 Konfiguracja akwizycji danych w protokole Modbus, konwertująca dane odczytywane z urządzenia, oraz zapisująca do urządzenia konwertowane w skrypcie ustawienie. Skrypt przetwarza odczytane z urządzenia wartości kanałów IO16r.MonDay, IO16r.YeAr i IO16r.HourMin na łańcuch znaków określający datę i czas: N14.Date Ponadto w skrypcie przetwarzana jest wartość kanału bright, którego wartości są w zakresie od 0 do 100 na wartości akceptowalne przez urządzenie 0-15 ANT Sp z o.o. Strona 68

69 Skrypt przetwarzający dane w przykładzie nr 3 proc notifyioblock { block_name } { if { $block_name == "IO16r" } { global IO16r.HourMin IO16r.MonDay IO16r.YeAr set HourMin [format "%0.0f" [ set IO16r.HourMin ] ] set MonDay [format "%0.0f" [ set IO16r.MonDay ] ] } if { [ string length $MonDay ] == 3 } { set MonDay "0$MonDay" ANT Sp z o.o. Strona 69

70 } if { [ string length $HourMin ] == 3 } { set HourMin "0$HourMin" } set min [string replace $HourMin 0 1] set hour [string replace $HourMin 2 3] set day [string replace $MonDay 0 1] set month [string replace $MonDay 2 3] set year [format "%0.0f" [set IO16r.YeAr] ] antiosetdevicechannel Date "$year-$month-$day $hour:$min" } proc notifyiodevicechannel { channel_name } { global $channel_name set br [expr 15 * [set $channel_name ] / 100 ] antiosetblockchannel IO16w.brt $br } Struktura skryptu przeliczającego wartości w modułach akwizycji danych. proc notifyioblock { block_name } { } proc notifyiodevicechannel { channel_name } { } W skryptach modułów akwizycji wywoływane są funkcje : notifyioblock po każdej wykonanej operacji odczytu kanałów z IOBlock u o nazwie block_name W procedurze notifyioblock { block_name } wpisuje się kod przeliczający wartości odczytanych z urządzenia kanałów. Wartości kanałów dostępne są w skrypcie jako zmienne globalne o nazwach odpowiadających kanałom zdefiniowanym w IOBlock ach urządzenia, przy czym nazwy kanałów składają się tylko z członu nazwy bloku oraz samej nazwy kanału. ANT Sp z o.o. Strona 70

71 Ze względu na to, że nazwy kanałów zawierają znaki nieużywane w TCL w nazwach zmiennych, stosuje się funkcję set do pobierania wartości zmiennej. proc notifyioblock { block_name } { global IOBlock.channel1 set value [ set IOBlock.channel1 ] } Długa i krótka nazwa kanału Przykład: Pełna nazwa: GazModem.RPM-01.Current.L1 w skrypcie będzie określana jako Current.L1 Należy zwrócić uwagę na to, że zmienne globalne z wartościami kanałów są dostępne po wykonaniu operacji odczytu. Wszystkie zmienne globalne są dostępne po wykonaniu operacji odczytu na wszystkich blokach. Używając zmiennej globalnej należy się upewnić, że została przynajmniej raz poprawnie wykonana operacja odczytu jej wartości. Jeśli została wywołana funkcja notifyioblock to można operować na kanałach z tego bloku i wszystkich bloków, dla których została wcześniej wywołana ta funkcja. Taki mechanizm powoduje wyjątek przy próbie wykonania obliczeń na nieodczytanej jeszcze wartości kanału. Kanałom można przypisać wartości początkowe wpisując na początku skryptu set nazwa_kanału wartość_początkowa ANT Sp z o.o. Strona 71

72 notifyiodevicechannel { channel_name } wejściowego z folderu InputChannels. - gdy zostanie podana wartość do kanału W wywołaniu funkcji podawana jest nazwa kanału. Wartość kanału dostępna jest w zmiennej globalnej. proc notifyiodevicechannel { channel_name } { global $channel_name set value [set $channel_name] } Używając zmienne globalne należy stosować tę samą zasadę co w przypadku funkcji nofityioblock Funkcje API używane w skryptach. Funkcje PLCModules wykonywane w modułach skryptowych. W skryptach modułów akwizycji można używać wszystkich funkcji TCL. API Tk nie jest wspierane i funkcje z niego nie mogą być używane. Nie można również wykorzystywać zewnętrznych pakietów TCL. (require package) Uniwersalność skryptów krótkie nazwy kanałów Używanie krótkich nazw kanałów w skryptach powoduje, że są one uniwersalne dla wielu tych samych urządzeń posiadających w konfiguracji różne nazwy, lub/i pracujących w różnych modułach. Raz napisany skrypt przetwarzający dane z pewnego modelu urządzenia, może być wykorzystany wielokrotnie we wszystkich występujących w konfiguracji programu modułach. ANT Sp z o.o. Strona 72

73 IOAPI Funkcje rozszerzonego API dla skryptów obsługi urządzeń Funkcja antiosetdevicechannel antiolog antiopresetblockchannel antioreadblockchannel antioreadblock antiowriteblockchannel antiowriteblock Krótki opis ustawia wartość kanału wirtualnego pisze do okienka DebugLog ustawia do zapisu wartość na kanale odczytuje wartość kanału z bloku odczytuje wszystkie wartości kanałow z bloku zapisauje kanał bloku zapisuje wszystkie kanały bloku, ustawione wcześniej funkcją antiopresetblockchannel ANT Sp z o.o. Strona 73

74 Operacje na kanałach antiopresetblockchannel antiopresetblockchannel block_channel_name value Funkcja ustawia wartość value do zapisu na kanał block_channel_name, zdefiniowanego w IObloku. Wartość ta nie zostaje wysłana do urządzenia, jest ona tylko zachowana w pamięci kanału. Wysłanie ustawionych wartości kanałów do urządzenia następuje po komendzie antiowriteblock Funkcja znajduje zastosowanie tam, gdzie zapisanie wartości kanałów jest wykonywane funkcją operującą na wielu kanałach. antioreadblockchannel antioreadblockchannel block_channel_name Funkcja odczytuje z urządzenia wartość kanału block_channel_name, zdefiniowanego w IObloku. Wywołanie tej funkcji powoduje również odczyt pozostałych kanałów zdefiniowanych w bloku, przy czym wartość kanału podanego w argumencie funkcji jest zwracana przez funkcję. Wartości pozostałe kanałów są dostępne jako zmienne globalne o nazwach odpowiadających nazwabloku.nazwakanału ANT Sp z o.o. Strona 74

75 antioreadblock antioreadblock block_name Funkcja odczytuje z urządzenia wartości wszystkich kanałów zdefiniowanych w bloku block_name. Wartości kanałów dostępne są jako zmienne globalne o nazwach odpowiadających nazwabloku.nazwakanału Funkcja zwraca po wykonaniu odczytu. antiowriteblockchannel antiowriteblockchannel block_channel_name value Funkcja zapisuje do kanału block_channel_name urządzenia wartość value. W odróżnieniu od funkcji antiopresetblockchannel, funkcja antiowriteblockchannel wysyła wartość bezpośrednio do urządzenia i wraca po wykonaniu zapisu. ANT Sp z o.o. Strona 75

76 antiowriteblock antiowriteblock block_name Funkcja powoduje zapis wszystkich wartości ustawionych wcześniej przez funkcję antiopresetblockchannel do urządzenia. antiosetdevicechannel antiosetdevicechannel nazwa_kanału wartość ustawia wartość kanału wyliczanego z urządzenia, znajdującego się w folderze OutputChannels. ANT Sp z o.o. Strona 76

77 Dostęp do konfiguracji antiogettrendslist antiogettrendslist Funkcja zwraca listę aktywnych (Disable = Off) trendów zdefiniowanych w urządzeniu. Lista składa się z nazwy trendu oraz ustawienia AddData, zdefiniowanego w trendzie. Np. { trend1 1 trend2 2 trend3 3 } AddData - additional data, to wartość, która może być ustawiana w trendzie. Wartość ta typu string określa trend. antiogetblockinputchannelslist antiogetblockinputchannelslist block_name Funkcja zwraca listę aktywnych (Disable = Off) kanałów wejściowych zdefiniowanych w IOBloku o nazwie block_name ANT Sp z o.o. Strona 77

78 antiogetblockoutputchannelslist antiogetblockoutputchannelslist block_name Funkcja zwraca listę aktywnych (Disable = Off) kanałów wyjściowych zdefiniowanych w IOBloku o nazwie block_name antiogetblockslist antiogetblockslist Funkcja zwraca listę aktywnych (Active = On) IOBlocków zdefiniowanych w urządzeniu. Np. { "Read Holging Registers" "Write Single Channel" } antiogettrendsetting antiogettrendsetting trend_name setting_name Funkcja zwraca wartość parametru setting_name zdefiniowanego we właściwościach trendu o nazwie tend_name. Np. set d [antiogettrendsetting Trend1 AddData] ANT Sp z o.o. Strona 78

79 Inne antioenabletrendqueues antioenabletrendqueues queue_size Funkcja tworzy kolejkę obsługująca odczyt w systemie wartości archiwalnych o długości queue_size. Funkcję należy użyć tylko raz. Tak zdefiniowana kolejka umożliwia dokładanie do niej wartości archiwalnych za pomocą funkcji anttrendqueueaddvalues antiolog antiolog typ treść zapis do logów systemu treści. Funkcja analogiczna do antlog antiodebugtreeupdate antioreadblockchannel value path Funkcja służy do umieszczania w drzwie DebugTree wartości value w opisanej przez parametr path ścieżce. Wartości umieszczane są we fragmencie drzewa opisującym urządzenie. Pusta ścieżka path odnosi się do wpisu bezpośrednio pod wpisem urządzenia. anttrendqueueaddvalues anttrendqueueaddvalues trend_name time value status Funkcja dodaje do utworzonej funkcją antioenabletrendqueues kolejki wartości dla trendu o nazwie trend_name ANT Sp z o.o. Strona 79

80 antiotkt_int2float antiotkt_int2float longint funkcja zwraca wartość zapisaną jako long integer - argument longint jako wartość typu float32. antiogetdeviceconfig antiogetdeviceconfig Funkcja zwraca listę z parametrami konfiguracyjnymi urządzenia. Lista składa się z następujących elementów: index element 0 nazwa urządzenia 1 typ 2 adres 3 timeout - czas odpowiedzi antiotkt_crc7 antiotkt_crc7 bytelist Funkcja zwraca wartość CRC7 wyliczoną z przesłanej listy bajtów - bytelist W bibliotece standardowej TCL znajduje się m.in. funkcja do wyliczenia wartości CRC16. ANT Sp z o.o. Strona 80

81 Funkcje obsługi trendów System umożliwia w przypadku wybranych modułów komunikacyjnych definiowanie sposobu pobierania trendów z urządzeń. Ma to zastosowanie, gdy specyfikacja samego protokołu prezentowanego przez wybrany moduł nie definiuje sposobu przesyłania danych archiwalnych. Możliwość zdefiniowania własnej komunikacji z modułem, która pozwala na pobieranie z niego trendów jest obecnie udostępniona w module ModbusMaster. Gdy w module zostanie zdefiniowany trend, to wołane są następujące funkcje obsługi trendu. proc getstatus { trend_name } { } proc getfirstnotsmaller { trend_name time } { } proc getfirstsmaller { trend_name time } { } proc getlastnotgreater { trend_name time } { } proc getlastgreater { trend_name time } { } proc getsamplesbetween { trend_name time_from time_to } { } proc getcurrent { trend_time } { } ANT Sp z o.o. Strona 81

82 Protokoły komunikacyjne Grupa ta zawiera obsługiwane przez ANT Studio protokoły komunikacyjne, standardowe oraz implementowane przez producentów sprzętu. Obsługujemy protokoły: Modbus MBUS GazModem Lon Advantech ADAM OEMax Panasonic Mitsubishi FX oraz Alfa Pozyton Satchwell Wilo Compit C2 SNMP Lista obsługiwanych protokołów jest stale rozszerzana. W przypadku korzystania z urządzenia, które jeszcze nie komunikuje się z programem ANT Studio, możliwe jest łatwe tworzenie własnych modułów konfiguracyjnych. ANT Sp z o.o. Strona 82

83 Konfiguracja Konfigurowanie modułu komunikacyjnego polega na dodaniu dostępnego urządzenia, bądź stworzeniu własnego. Najpierw należy dodać moduł komunikacyjny protokołu urządzenia, z którym mamy zamiar się komunikować. Następnie klikając prawym przyciskiem myszy na folder IODevices dostępny po rozwinięciu modułu komunikacyjnego wybieramy interesujące nas urządzenie. ANT Sp z o.o. Strona 83

84 Otrzymujemy moduł do komunikacji z konkretnym urządzeniem, który wystarczy podłączyć do kanału komunikacyjnego (Serial Port, IP Socket, Telemetry Client), a jego wyjścia i wejścia połączyć z odpowiednimi modułami zadającymi bądź przetwarzającymi dane. W przypadku braku używanego urządzenia wśród urządzeń dostępnych do wyboru, można wybrać urządzenie SDevice i samodzielnie napisać odpowiedni driver. Więcej informacji na ten temat można znaleźć w temacie Tworzenie własnych modułów konfiguracyjnych. ANT Sp z o.o. Strona 84

85 Dedykowane moduły komunikacyjne OEMax (Samsung) Moduł ten umożliwia komunikację ze sterownikami OEMax Controls (Samsung Automation) serii NX7, NX70 oraz NX700. Sterowniki OEMax Controls (Samsung) seria NXplus (NX7, NX70-CPU70P i NX-CPU700P) Aby nawiązać komunikację ze sterownikiem PLC należy dodać moduł obsługujący właściwy typ sterownika. W przypadku sterowników OEMax Controls (Samsung) serii NXplus należy w tym celu po kliknięciu na katalogu Modules wybrać kolejno: Insert -> Exchange,Sources,.. -> Communication Protocols -> OEMax (Samsung) -> OEMax (Samsung) Spowoduje to dodanie do konfiguracji modułu obsługującego protokół sterownika. Kolejnym etapem jest wybór konkretnego modelu OEMax (Samsung) NXplus. W tym celu należy rozwinąć drzewko modułu OEMax (Samsung) oraz po kliknięciu prawym przyciskiem myszy na katalogu IODevices wybrać Insert... -> OEMax (Samsung) -> odpowiedni model sterownika ANT Sp z o.o. Strona 85

86 Następnie po kliknięciu na ikonę konkretnego sterownika w drzewku konfiguracyjnym należy w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wpisać adres urządzenia oraz TimeOut (w przypadku komunikacji przez GPRS jego wartość powinna być ustawiona na poziomie 15000, w przypadku komunikacji przewodowej wystarczającą wartością jest 5000). Pozostałe wartości w tabelce należy pozostawić niezmienione. Każdy z modułów sterownika ma zdefiniowany standardowy zestaw odczytywanych parametrów: odpowiednią dla danego modelu ilość wejść/wyjść dyskretnych oraz kilka pierwszych rejestrów z każdego typu danych: M, K, PV, SV, TC, W. Użytkownik, jeśli zajdzie taka potrzeba, może samodzielnie zdefiniować dodatkowe rejestry. ANT Sp z o.o. Strona 86

87 W tym celu należy rozwinąć drzewko konfiguracyjne danego sterownika odnaleźć interesujący IOBlock oraz klikając prawym przyciskiem myszy na katalogu InputChannels (w przypadku zapisywania wartości do sterownika) lub OutputChannels (w przypadku odczytu wartości) wybrać kolejno Insert -> Double output(input) channel Następnie należy kliknąć na nowo dodany kanał oraz w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wprowadzić nazwę kanału oraz w polu AddData wprowadzić odpowiedni numer rejestru. Rejestry typu M oraz K mogą być odczytywane jako pojedyncze bity lub jako całe słowa (16 lub 32 bitowe). W przypadku odczytu pojedynczych bitów należy odpowiednio zaadresować kanały (pole AddData): NumerSłowa_NumerBitu (np. 1_3 ) natomiast w przypadku odczytu całych słów w polu AddData ustawia się numer rejestru oraz dodatkowo należy wybrać odpowiedni rozmiar słowa w polu ValueType ( 16 bit integer lub 32 bit integer ). Domyślną wartością (pole ValueType puste) jest 16 bit integer. Rejestry typu W mogą być odczytywane oraz zapisywane jako 16 lub 32 bitowe ze znakiem lub bez. Odpowiednią wartość należy ustawić w polu ValueType. Domyślną wartością (pole ValueType puste) jest 16 bit integer. Aby dodać do konfiguracji urządzenia nowy IOBlock należy kliknąć prawym przyciskiem myszy na folderze IOBlocks w drzewku konfiguracyjnym urządzenia, a następnie wybrać: Insert... -> Add new IO Block ANT Sp z o.o. Strona 87

88 Następnie należy kliknąć na ikonie nowo dodanego bloku i w jego tabeli konfiguracyjnej wpisać nazwę bloku (może być dowolna) oraz w polu Label wpisać rodzaj rejestrów jakie będą odczytywane w tym IOBlocku (możliwe ustawienia: DI, DO, M, K, PV, SV, TC, W). Kolejnym krokiem jest zdefiniowanie w obrębie nowego IOBlocku kanałów zgodnie z instrukcją podaną powyżej. Sterowniki OEMax Controls (Samsung) CPU seria NX70-CPU750 i NX-CPU750x W przypadku sterowników Samsung NX70-CPU750 i NX700-CPU750x należy po kliknięciu na katalogu Modules wybrać kolejno: Insert -> Exchange ->Device Protocols -> OEMax (Samsung) - > OEMax (Samsung) (patrz pkt Sterowniki OEMax Controls (Samsung) NXplus ). Spowoduje to dodanie do konfiguracji modułu obsługującego protokół sterownika. Kolejnym etapem jest wybór konkretnego modelu sterownika. W tym celu należy rozwinąć drzewko modułu OEMax (Samsung) oraz po kliknięciu prawym przyciskiem myszy na katalogu IODevices wybrać Insert... -> OEMax(Samsung) -> NX70-CPU750 (NX-CPU750x) ANT Sp z o.o. Strona 88

89 Następnie po kliknięciu na ikonę konkretnego sterownika w drzewku konfiguracyjnym należy w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wpisać adres urządzenia oraz TimeOut (w przypadku komunikacji przez GPRS jego wartość powinna być ustawiona na poziomie 15000, w przypadku komunikacji przewodowej wystarczającą wartością jest 5000). Pozostałe wartości w tabelce należy pozostawić niezmienione. Każdy z modułów sterownika ma zdefiniowany standardowy zestaw odczytywanych parametrów (X, Y, WX, WY, R, DT). Użytkownik, jeśli zajdzie taka potrzeba, może samodzielnie zdefiniować dodatkowe rejestry. W tym celu należy rozwinąć drzewko konfiguracyjne danego sterownika odnaleźć interesujący IOBlock oraz klikając prawym przyciskiem myszy na katalogu InputChannels (w przypadku ANT Sp z o.o. Strona 89

90 zapisywania wartości do sterownika) lub OutputChannels (w przypadku odczytu wartości) wybrać kolejno Insert -> Double output(input) channel Następnie należy kliknąć na nowo dodany kanał oraz w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wprowadzić nazwę kanału oraz w polu AddData wprowadzić odpowiedni numer rejestru. Rejestry typu DT mogą być odczytywane oraz zapisywane jako 16 lub 32 bitowe ze znakiem lub bez. Odpowiednią wartość należy ustawić w polu ValueType. Domyślną wartością (pole ValueType puste) jest 16 bit integer. Aby dodać do konfiguracji urządzenia nowy IOBlock należy kliknąć prawym przyciskiem myszy na folderze IOBlocks w drzewku konfiguracyjnym urządzenia a następnie wybrać: Insert... -> Add new IO Block ANT Sp z o.o. Strona 90

91 Następnie należy kliknąć na ikonie nowo dodanego bloku i w jego tabeli konfiguracyjnej wpisać nazwę bloku (może być dowolna) oraz w polu Label wpisać rodzaj rejestrów jakie będą odczytywane w tym IOBlocku (możliwe ustawienia: X, Y, WX, WY, R, DT). Kolejnym krokiem jest zdefiniowanie w obrębie nowego IOBlocku kanałów zgodnie z instrukcją podaną powyżej. ANT Sp z o.o. Strona 91

92 Panasonic Moduł ten umożliwia komunikację ze sterownikami Panasonic serii FP0, FP-Sigma, FP-X, FP2. Aby dodać moduł do tworzonej konfiguracji należy po kliknięciu na katalogu Modules wybrać kolejno: Insert -> Exchange,Sources -> Communication Protocols -> Panasonic MEWTOCOL -> Panasonic Spowoduje to dodanie do konfiguracji modułu obsługującego protokół sterownika. Kolejnym etapem jest wybór konkretnego modelu sterownika Panasonic. W tym celu należy rozwinąć drzewko modułu Panasonic oraz po kliknięciu prawym przyciskiem myszy na katalogu IODevices wybrać Insert... -> Panasonic -> odpowiedni model sterownika Następnie po kliknięciu na ikonę konkretnego sterownika w drzewku konfiguracyjnym należy w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wpisać adres urządzenia oraz TimeOut (w ANT Sp z o.o. Strona 92

93 przypadku komunikacji przez GPRS jego wartość powinna być ustawiona na poziomie 15000, w przypadku komunikacji przewodowej wystarczającą wartością jest 5000). Pozostałe wartości w tabelce należy pozostawić niezmienione. Każdy z modułów sterownika ma zdefiniowany standardowy zestaw odczytywanych parametrów (X, Y, WX, WY, R, DT). Użytkownik, jeśli zajdzie taka potrzeba, może samodzielnie zdefiniować dodatkowe kanały w IOBlockach lub dodatkowe IOBlocki. W celu dodania nowego kanału do istniejącego IOBlocku należy rozwinąć drzewko konfiguracyjne danego sterownika odnaleźć interesujący IOBlock oraz klikając prawym przyciskiem myszy na katalogu InputChannels (w przypadku zapisywania wartości do sterownika) lub OutputChannels (w przypadku odczytu wartości) wybrać kolejno Insert -> Double output(input) channel Następnie należy kliknąć na nowo dodany kanał oraz w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wprowadzić nazwę kanału oraz w polu AddData wprowadzić odpowiedni numer rejestru. Rejestry typu DT mogą być odczytywane oraz zapisywane jako 16 lub 32 bitowe ze znakiem lub bez. Odpowiednią wartość należy ustawić w polu ValueType. Domyślną wartością (pole ValueType puste) jest 16 bit integer. ANT Sp z o.o. Strona 93

94 Aby dodać do konfiguracji urządzenia nowy IOBlock należy kliknąć prawym przyciskiem myszy na folderze IOBlocks w drzewku konfiguracyjnym urządzenia a następnie wybrać: Insert... -> Add new IO Block Następnie należy kliknąć na ikonie nowo dodanego bloku i w jego tabeli konfiguracyjnej wpisać nazwę bloku (może być dowolna) oraz w polu Label wpisać rodzaj rejestrów jakie będą odczytywane w tym IOBlocku (możliwe ustawienia: X, Y, WX, WY, R, DT). Kolejnym krokiem jest zdefiniowanie w obrębie nowego IOBlocku kanałów zgodnie z instrukcją podaną powyżej. ANT Sp z o.o. Strona 94

95 Danfoss Moduł ten umożliwia komunikację z przetwornicami częstotliwości Danfoss. Aby dodać moduł do tworzonej konfiguracji należy po kliknięciu na katalogu Modules wybrać kolejno: Insert -> Exchange,Sources...-> Communication Protocols -> Danfoss VLT5000 -> Danfoss Spowoduje to dodanie do konfiguracji modułu obsługującego protokół sterownika. Kolejnym etapem jest wybór konkretnego modelu przetwornicy Danfoss. W chwili obecnej oprogramowanie ANT Studio daje możliwość komunikacji tylko z jednym typem przetwornic: VLT5000. W przyszłości funkcjonalność programu zostanie rozszerzona o kolejne modele. Aby wybrać interesujący model należy rozwinąć drzewko modułu Danfoss oraz po kliknięciu prawym przyciskiem myszy na katalogu IODevices wybrać Insert... -> Danfoss -> odpowiedni model przetwornicy ANT Sp z o.o. Strona 95

96 Następnie po kliknięciu na ikonę konkretnego sterownika w drzewku konfiguracyjnym należy w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wpisać adres urządzenia oraz TimeOut (w przypadku komunikacji przez GPRS jego wartość powinna być ustawiona na poziomie 15000, w przypadku komunikacji przewodowej wystarczającą wartością jest 5000). Pozostałe wartości w tabelce należy pozostawić niezmienione. Każdy z modułów sterownika ma zdefiniowany standardowy zestaw odczytywanych parametrów (Alarms, ReadParameters, WriteParameters). Użytkownik, jeśli zajdzie taka potrzeba, może samodzielnie zdefiniować dodatkowe kanały w IOBlockach lub dodatkowe IOBlocki. W celu dodania nowego kanału do istniejącego IOBlocku należy rozwinąć drzewko konfiguracyjne danej przetwornicy odnaleźć interesujący IOBlock oraz klikając prawym przyciskiem myszy na katalogu InputChannels (w przypadku zapisywania wartości do urządzenia) lub OutputChannels (w przypadku odczytu wartości) wybrać kolejno Insert -> Double output(input) channel ANT Sp z o.o. Strona 96

97 Następnie należy kliknąć na nowo dodany kanał oraz w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wprowadzić nazwę kanału, w polu AddData wprowadzić adres parametru (PNU) oraz w polu Comment podać współczynnik konwersji (Conversion Index). Informacje na temat adresów parametrów oraz ich współczynników konwersji można odnaleźć w dokumentacji technicznej urządzenia. Aby dodać do konfiguracji urządzenia nowy IOBlock należy kliknąć prawym przyciskiem myszy na folderze IOBlocks w drzewku konfiguracyjnym urządzenia, a następnie wybrać: Insert... -> Add new IO Block Następnie należy w tabeli konfiguracyjnej nowo dodanego IOBlocku wpisać jego nazwę oraz zdefiniować w jego obrębie kanały wyjściowe (w przypadku odczytu wartości z urządzenia) lub/oraz wejściowe (w przypadku zapisu), zgodnie z instrukcją podaną powyżej. ANT Sp z o.o. Strona 97

98 Oprócz standardowej funkcjonalności odczytu oraz zapisu parametrów w skład modułu przetwornicy wchodzi także IOBlock Alarms, którego zadaniem jest odczyt zdarzeń alarmowych z urządzenia. IOBlock ten posiada trzy kanały wyjściowe Alarm_out, Extended_out, Warning_out na których wystawiana jest numeryczna wartość odpowiedniego rejestru zdarzeń. Dodatkowo wartość ta jest przeliczana na komunikaty tekstowe typu string i wystawiana na odpowiednie kanały wyjściowe modułu urządzenia. W przypadku braku zdarzeń na kanałach tych pojawia się wartość Events canceled. ANT Sp z o.o. Strona 98

99 IEC Moduł ten umożliwia komunikację z licznikami energii elektrycznej Landis+Gyr. Aby dodać moduł do tworzonej konfiguracji należy po kliknięciu na katalogu Modules wybrać kolejno: Insert -> Exchange,Sources...-> Communication Protocols -> IEC > Landis+Gyr Spowoduje to dodanie do konfiguracji modułu obsługującego protokół licznika. Kolejnym etapem jest wybór konkretnego modelu licznika. Aby wybrać interesujący model należy rozwinąć drzewko modułu Landis+Gyr oraz po kliknięciu prawym przyciskiem myszy na katalogu IODevices wybrać Insert... -> Landis+Gyr -> odpowiedni model licznika ANT Sp z o.o. Strona 99

100 Następnie po kliknięciu na ikonę konkretnego licznika w drzewku konfiguracyjnym należy w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) w polu Identyfication wpisać ośmio cyfrowy adres licznika oraz TimeOut (w przypadku komunikacji przez GPRS jego wartość powinna być ustawiona na poziomie minimum 30000, w przypadku komunikacji przewodowej wystarczającą wartością jest 20000). Pozostałe wartości w tabelce należy pozostawić niezmienione. Każdy z modułów licznika ma zdefiniowany standardowy zestaw odczytywanych parametrów. Użytkownik, jeśli zajdzie taka potrzeba, może samodzielnie zdefiniować dodatkowe kanały w IOBlockach lub dodatkowe IOBlocki. W celu dodania nowego kanału do istniejącego IOBlocku należy rozwinąć drzewko konfiguracyjne danego licznika odnaleźć interesujący IOBlock oraz klikając prawym przyciskiem myszy na katalogu OutputChannels wybrać kolejno Insert -> Double output channel Następnie należy kliknąć na nowo dodany kanał oraz w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wprowadzić nazwę kanału (Name), w polu AddData wprowadzić adres parametru (kod identyfikacyjny parametru zgodny z listą odczytową licznika) oraz w polu Comment podać ANT Sp z o.o. Strona 100

101 współczynnik konwersji (np x10 - spowoduje przeskalowanie wartości razy 10). Opcja ta jest przydatna w przypadku zastosowania przed licznikiem przekładników prądowych i/lub napięciowych. Jeżeli pole Comment pozostanie puste wówczas nie jest dokonywana konwersja wartości. ANT Sp z o.o. Strona 101

102 Wilo Moduł ten umożliwia komunikację z pompami Wilo. Aby dodać moduł do tworzonej konfiguracji należy po kliknięciu na katalogu Modules wybrać kolejno: Insert -> Exchange,Sources...-> Communication Protocols -> Wilo -> Wilo Spowoduje to dodanie do konfiguracji modułu obsługującego protokół pompy. Kolejnym etapem jest wybór konkretnego modelu pompy Wilo. Aby wybrać interesujący model należy rozwinąć drzewko modułu Wilo oraz po kliknięciu prawym przyciskiem myszy na katalogu IODevices wybrać Insert... -> Danfoss -> odpowiedni model pompy ANT Sp z o.o. Strona 102

103 Następnie po kliknięciu na moduł konkretnej pompy w drzewku konfiguracyjnym należy w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wpisać adres urządzenia oraz TimeOut (w przypadku komunikacji przez GPRS jego wartość powinna być ustawiona na poziomie 15000, w przypadku komunikacji przewodowej wystarczającą wartością jest 5000). Pozostałe wartości w tabelce należy pozostawić niezmienione. Każdy z modułów pompy ma zdefiniowany standardowy zestaw odczytywanych parametrów (ReadValues, WriteValues). Użytkownik, jeśli zajdzie taka potrzeba, może samodzielnie zdefiniować dodatkowe kanały w IOBlockach. W celu dodania nowego kanału do istniejącego IOBlocku należy rozwinąć drzewko konfiguracyjne danej przetwornicy odnaleźć interesujący IOBlock oraz klikając prawym przyciskiem myszy na katalogu InputChannels (w przypadku zapisywania wartości do urządzenia) lub OutputChannels (w przypadku odczytu wartości) wybrać kolejno Insert -> Double output(input) channel ANT Sp z o.o. Strona 103

104 Następnie należy kliknąć na nowo dodany kanał oraz w jego tabelce konfiguracyjnej (lewy dolny róg ekranu) wprowadzić nazwę kanału, w polu AddData wprowadzić adres parametru. Informacje na temat adresów parametrów można odnaleźć w dokumentacji urządzenia. ANT Sp z o.o. Strona 104

105 Tworzenie własnych modułów komunikacyjnych Scripted Devices ScriptedDevices umożliwiają szybkie i łatwe tworzenie własnych modułów komunikacyjnych dla nietypowych urządzeń. Drivery te mogą pracować jako SDMaster, SDSlave magistrali lub jako dowolne urządzenie - SDDevice. Tworzenie modułów polega na wpisaniu w skrypcie języka TCL\Tk własnych procedur obsługi urządzeń, które są wywoływane podczas pracy modułu. Procedury, które wymagają wpisania to: - inicjalizacja urządzenia - inicjalizacja bloków danych urządzenia - odczyt danych z urządzenia - zapis danych do urządzenia - obsługa trendów urządzenia - zakończenie pracy z urządzeniem Dla prostych urządzeń wystarczy w praktyce uzupełnienie 2 funkcji - odczytu i zapisu danych do urządzenia. W przypadku modułów typu BUS - pracujących na magistrali do dyspozycji programisty są funkcje obsługi wysyłania i odbierania ramek. Funkcje te w znacznym stopniu upraszczają program i umożliwiają jego zapisanie w kilku linijkach kodu. Przykładowe rozwiązania wymiany danych przez moduły ScriptedDevices znajdują sie w pliku konfiguracyjnym dostępnym w lokalizacji \Help\Examples\Scripts\ScriptedDevices.cfg W konfiguracji programu dostępny jest również przykład generatora, którego można wybrać wprost z menu. ANT Sp z o.o. Strona 105

106 SDMaster SDMaster to moduł umożliwiający tworzenie własnego Mastera magistrali, który wysyła ramki z zapytaniami do urządzeń i przetwarza ramki z odpowiedziami. Powyższa przykładowa konfiguracja przedstawia urządzenie SDevice0 zdefinionane na magistrali SBUSMaster, które może odpytywać urządzenie Slave o blok danych IOBlock0 w którym znajduje się jeden kanał. Moduł zapewnia konfigurowalność oraz prowadzenie procesu komunikacji, natomiast po stronie użytkownika jest napisanie własnych procedur obsługujące podstawowe operacje wymiany danych. Wzorzec skryptu Mastera ###################################### # DeviceLibrary\SDMasterTemplate.tcl # # # # ScriptedDevice Master Template # # # ###################################### # Set of procedures called during communication process ANT Sp z o.o. Strona 106

107 ##################################### # Called once when script starts proc Iostartup { } { # configure Your driver here set cfg [ antiogetdeviceconfig ] # cfg it is a list devicename name iotype value address # value timeout value } # You can use this settings in startup procedure ################################### # Called once per each ioblock when scripts starts proc Ioblockinitialize { block_name } { # install waitable handlers for frames You expected antioinstallwaitable $block_name verify_procedure notify_procedure } ################################### # Called once per each ioblock when scripts exits proc Ioblockuninitialize { block_name } { } ################################### # Called once when script exits proc Ioshutdown { } { } ################################### # called when master ask slave about data proc Ioreadchannels { block_name } { # build frame # send frame and wait for good answer # set result [ antioserialexchange verify_procedure notify_procedure frame timeout ] # when good answer not appears - throw exception } ################################### # called when any data appears on input, answer frame from slave ANT Sp z o.o. Strona 107

108 recognition proc verify_procedure { frame } { # use regexp for quick frame examine #This function must return 0 or 1 #1 means that frame is ok return 1 } # when Verify_procedure returns 1 - process data proc notify_procedure { frame } { # read frame and set block channel values # antiosetblockchannel channel_name value } ################################################ # called when it is time for write data to slave proc Iowritechannels { block_name data } { #data it is a list containing channel_name and value pairs. } proc Iowritechannel { channel_name } { } ################################################ # after successful read of ioblock this method is called in order to process read channel values proc notifyioblock { block_name } { } ################################################ # this procedure is called when any device input value changes. proc notifyiodevicechannel { channel_name } { } ANT Sp z o.o. Strona 108

109 SDDevice SDDevice umożliwia stworzenie własnego modułu - drivera, do wymiany danych z nietypowymi urządzeniami. Rozwiązanie SDDevice to szkielet uniwersalnego modułu komunikacyjnego, w którym użytkownik wypełnia potrzebne do obsługi urządzenia funkcje. SDDevice to niezależne urządzenie, nienależące do magistrali, obsługiwane indywidualnymi funkcjami. Skrypt obsługi urządzenia może wołać funkcje z bibliotek dll. Wzorzec skryptu SDDevice DeviceLibrary\SDDeviceTemplate.tcl #################################################################### #DeviceLibrary\SDDeviceTemplate.tcl # #Easy example of writing own Scripted Device # # #################################################################### ####### # Called once when script starts proc Iostartup { } { ANT Sp z o.o. Strona 109

110 } # Called once when script exits proc Ioshutdown { } { } # Called once per each ioblock when scripts starts proc Ioblockinitialize { block_name } { } # Called once per each ioblock when scripts exits proc Ioblockuninitialize { block_name } { } # called when it is the time for ask slave about data proc Ioreadchannels { block_name } { } # called when it is time for write data to slave proc Iowritechannels { block_name data } { } proc Iowritechannel { block_name } { } # after successful read of ioblock this method is called in order to process read channel values proc notifyioblock { block_name } { } # this procedure is called when any device input value changes. proc notifyiodevicechannel { channel_name } { } ANT Sp z o.o. Strona 110

111 SDSlave SDSlave służy do tworzenia własnych modułów komunikacji typu slave. Wzorzec skryptu Slave DeviceLibrary\SDSlaveTemplate.tcl ##################################### # DeviceLibrary\SDSlaveTemplate.tcl # # # # ScriptedDevice Slave Template # # # ##################################### # Set of procedures called during communication process ##################################### # Called once when script starts ANT Sp z o.o. Strona 111

112 proc Iostartup { } { # configure Your driver here set cfg [ antiogetdeviceconfig ] # cfg it is a list devicename name iotype value address value timeout value # You can use this settings in startup procedure } ################################### # Called once per each ioblock when scripts starts proc Ioblockinitialize { block_name } { # install waitable handlers for frames You expected antioinstallwaitable $block_name verify_procedure # Waitable Buffer Length s-length, default antiosetwaitablebufferlength s notify_procedure } ################################### # Called once per each ioblock when scripts exits proc Ioblockuninitialize { block_name } { } ################################### # Called once when script exits proc Ioshutdown { } { } ################################################ # this procedure is called when any device input value changes proc notifyiodevicechannel { channel_name } { } ################################################ # this procedure is called when any ioblock input value changes proc Iowritechannels { block_name data } { #data it is a list containing channel_name and value pairs } # the value of input channel is stored in the global variable, named as the channel ################################### ANT Sp z o.o. Strona 112

113 # Define Your verify and notify procedures proc verify_procedure { frame } { #this function must return value 0 or 1. #1 means that received frame is valid return 1 } proc notify_procedure { frame } { # called after verify_procedure returns 1 # Here You should receive data from frame and set channel values # antiosetblockchannel channel_name value } ANT Sp z o.o. Strona 113

114 SDAPI Funkcje z rozszerzonego API modułów SDDevice. Funkcje SDMaster Funkcja antiosetblockchannel antioserialexchange Krótki opis ustawia wartość kanału wysyła ramkę komunikacyjną i oczekuje na odpowiedź Funkcje SDSlave Funkcja antiosetblockchannel antioinstallwaitable antiosendframe Krótki opis ustawia wartości kanałów z danego bloku instaluje akcje oczekiwania na wartości kanału wysyła ramkę komunikacyjną Opisane funkcje operują na ramce w postaci binarnych łańcuchów, które są obsługiwane przez funkcje TCL - binary ANT Sp z o.o. Strona 114

115 antioserialexchange antioserialexchange verify_function notify_function frame timeout Funkcja służy do komunikacji z urządzeniami slave. Funkcja wysyła ramkę frame i oczekuje przez czas timeout na poprawną odpowiedź urządzenia sprawdzaną funkcją verify_frame. Po uzyskaniu poprawnej odpowiedzi wołana jest funkcja notify_frame. Funkcja antioserialexchange podczas próby komunikacji z urządzeniem woła funkcje: proc verify_function { frame } { # if frame ok return 1, else return 0 } proc notify_function { frame } { #frame is ok, just retrive values from it } verify_function Funkcja verify_function, sprawdza, czy otrzymana od urządzenia odpowiedź jest pełna i prawidłowa. Jeśli tak to zwraca wartość 1, w przeciwnym wypadku zwraca wartość 0. Funkcja verify_function wołana jest za każdym razem, gdy zostanie odebrana paczka danych prze moduł komunikacji szeregowej. Paczki danych są do siebie dodawane tworząc jeden ciąg - ramkę. notify_function Funkcja notify_function wołana jest tylko wtedy, gdy wcześniej wywołana verify_function zwróci wynik 1. W funkcji notify_function należy umieścić kod analizujący poprawną ramkę i pobierający z niej wartości. pobrane przez funkcję wartości można wysłać na kanały systemu funkcją antiosetblockchannel ANT Sp z o.o. Strona 115

116 antiosetblockchannel antiosetblockchannel block_channel_name value Funkcja ustawia wartość value kanału wyjściowego block_channel_name zdefiniowanego w bloku. Nazwa kanału block_channel_name, jest postaci nazwabloku.nazwakanału_out antioinstallwaitable antioinstallwaitable block_name verify_function notify_function Funkcja instaluje procedurę wykrywającą zapytania wysyłane przez moduł master. Każdemu z bloków modułu SDSlave można przypisać dowolną liczbę procedur wykrywających poprawne zapytania. Gdy pojawia się na wejściu do modułu SDSlave ramka, wołane są wszystkie zainstalowane funkcje analizujące verify_frame. Jeśli wynik analizy jest poprawny, to wołana jest funkcja notify_frame. Funckje wołane podczas detekcji ramki proc verify_function { frame } { # if frame ok return 1, else return 0 } proc notify_function { frame } { #frame is ok, just retrive values from it and send answer } antiosendframe antiosendframe frame Funkcja wysyła ramkę odpowiedzi do mastera. ANT Sp z o.o. Strona 116

117 Przykład Poniżej przedstawione zostały przykładowe skrypty modułów SDMaster oraz SDSlave wymieniające między sobą dane. Konfigurację przedstawiającą działanie poniższego przykładu można znaleźć w przykładowych konfiguracjach oprogramowania ANT Studio ############################################ #DeviceLibrary\\SDMaster.tcl #Easy example of writing own serial Master - Slave protocol driver. # SDMaster asks SDSlave signal generator channels. ############################################ #Frame # get Amp10 - get channels with amplitude 10 # input frame Address get Amp10 # output frame Address get Amp10 sin sin_value cos cos_value end # default device setting, set in Iostartup set DeviceAddress 1 set TimeOut 500 # Called once when script starts proc Iostartup { } { # configure driver set cfg [ antiogetdeviceconfig ] # cfg devicename value iotype value address value timeout value # global DeviceAddress TimeOut set DeviceAddress [ lindex $cfg 5 ] set TimeOut [ lindex $cfg 7 ] } # Called once when script exits proc Ioshutdown { } { } # Called once per each ioblock when script starts proc Ioblockinitialize { block_name } { } # Called once per each ioblock when script exits proc Ioblockuninitialize { block_name } { } # called when it is the time for ask slave about data proc Ioreadchannels { block_name } { global DeviceAddress TimeOut if { $block_name == "Amp10" } { #read channels with amplidute 10 # build frame set frame [ binary format a* "$DeviceAddress get Amp10" ] # send frame and wait for good answer set result [ antioserialexchange verifyamp10 notifydata $frame $TimeOut ] ANT Sp z o.o. Strona 117

118 # when good answer not appears - throw exception if { $result!= "ok" } { error $result } } } # called when any data appears on input, frame recognition proc verifyamp10 { frame } { global DeviceAddress if { [lindex $frame end]!= "end" } { return 0 } if { [lindex $frame 0]!= $DeviceAddress } { return 0 } # ok it is valid frame with good address return 1 } # when VerifyAmp10 returns 1 - process data proc notifydata { frame } { #read values from frame scan [lindex $frame 4] "%f" sin scan [lindex $frame 6] "%f" cos # set ioblock output channels with new values antiosetblockchannel Amp10.sin_out $sin antiosetblockchannel Amp10.cos_out $cos } # called when it is time for write data to slave, but this script reads only and doesn\'t call this procedures. proc Iowritechannels { block_name data } { } proc Iowritechannel { block_name } { } # after successful read of ioblock this method is called in order to process read channel values proc notifyioblock { block_name } { if { $block_name == "Amp10" } { global "Amp10.sin_out" "Amp10.cos_out" # let's calculate sum of these two channels set sin [set "Amp10.sin_out"] set cos [set "Amp10.cos_out"] set sum [expr { $sin + $cos } ] # set device channel sum_out antiosetdevicechannel sum_out $sum } } # this procedure is called when any device input value changes. In this example device input channels are not defined. proc notifyiodevicechannel { channel_name } { } ##################################################################### #DeviceLibrary\SDSlave.tcl # #Easy example of writing own serial Master - Slave protocol driver. # ANT Sp z o.o. Strona 118

119 # SDMaster asks SDSlave signal generator channels. # ##################################################################### #Frame # get Amp10 - get channels with amplitude 10 # input frame Address get Amp10 # output frame Address get Amp10 sin sin_value cos cos_value end # settings # signal generator simple settings set t 0 set dt 0.2 # default device setting, set in Iostartup set DeviceAddress 1 set Timeout 500 # Called once when script starts proc Iostartup { } { # configure driver set cfg [ antiogetdeviceconfig ] # cfg devicename value iotype value address value timeout value # global DeviceAddress TimeOut set DeviceAddress [ lindex $cfg 5 ] set TimeOut [ lindex $cfg 7 ] } # Called once when script exits proc Ioshutdown { } { } # Called once per each ioblock when scripts starts proc Ioblockinitialize { block_name } { if { $block_name == "Amp10" } { # install verify and notify procedure for Amp10 io block antioinstallwaitable Amp10 verifyamp10 notifyamp10 } } # Called once per each ioblock when scripts exits proc Ioblockuninitialize { block_name } { } # Called when any data comes on input channel - recognize frame proc verifyamp10 { frame } { global DeviceAddress # input frame get Amp10 if { $frame == "$DeviceAddress get Amp10" } { # it is the frame we are waiting for return 1 } return 0 } ANT Sp z o.o. Strona 119

120 # when verify function return 1 this function is called proc notifyamp10 { frame } { global t dt DeviceAddress # generate data set sin_value [expr { 10 * sin ( $t ) } ] set cos_value [expr { 10 * cos ( $t ) } ] set t [expr {$t + $dt} ] # make frame set frame [ binary format a* "$DeviceAddress get Amp10 sin $sin_value cos $cos_value end" ] # send frame antiosendframe $frame } ANT Sp z o.o. Strona 120

121 Modbus Pakiet Moduł Opis Modbus ModbusMaster podsieć jednego mastera protkokołu Modbus Modbus ModbusSlave podsieć wielu slave'ów prokokołu Modbus ModbusSlave ModbusSlave to moduł udostępniający wirtualne urządzenia Slave protokołu Modbus, które połączone są do współnego portu szeregowego. Za pomocą tego modułu, można udostępniać kanały systemu do sieci protokołu Modbus odpytywanej przez obcego Mastera. Rysunek przedstawia znaczenie wirtualnych urządzeń stworzonych w module ModbusSlave, oraz możliwy sposób utworzenia sieci Modbus. Tworzenie wielu wirtualnych urządzeń w module ModbusSlave służyć może do celów symulacji i testów, ponieważ aby udostępnić dane z systemu jako ModbusSlave wystarczy stworzyć jedno urządzenie i podłączyć do niego udostępniane kanały. ANT Sp z o.o. Strona 121

122 Ustawienia konfiguracyjne modułu Parametr Active Wartość moduł wyłączony ConnectionMode DefaultTimeOut Name moduł włączony tryb połączenia (ciągły/modem) domyślny czas na odpowiedź nazwa slave ANT Sp z o.o. Strona 122

123 Ustwienia konfiguracyjne urządzenia Parametr Active Wartość urządzenie wyłączone Address urządzenie włączone Adres urządzenia z zakresu w podsieci Modbus IOType Identyfication Mode Name typ urządzenia ModbusSlave ciąg bajtów identyfikujący dane urządzenie zwracany przez funkcję 0x11h Report Slave ID, jeśli jest ona wspierana przez urządzenie. wybór trybu Modbus ASCII lub Modbus RTU nazwa urządzenia w konfiguracji programu W odróżnieniu od urządzeń definiowanych w module ModbusMaster, wirtualne urządzenie ma zdefiniowane bloki danych, podzielone zgodnie ze specyfikacją protokołu Modbus, na cewki - coils, rejestry wewnętrzne - holding registers, rejestry wejść dyskretnych - input discrete i rejestry wejściowe - input registers. Konfigurowanie wirtualnego urządzenia polega na dodaniu do poszczególnych bloków danych kanałów. ANT Sp z o.o. Strona 123

124 Ustawienia konfiguracyjne bloku danych Parametr Active DataType ExecutionMode Name RangeFrom RangeTo Wartość blok nieaktywny blok aktywny możliwe typy danych przypisane blokowi opis pod tabelką tryb wywoływania bloku continous callback continous and callback nazwa bloku danych dolny zakres rejestów blok odpytywany cyklicznie odczyt danych wywołany wyłącznie przez funkcję modułu skryptowego oba wymienione tryby górny zakres rejestów Zakresy dolny i górny są wykorzystywane jedynie podczas funkcji Create Channels. Typy danych DataType Blok Funkcje Typ Opis Coils 0x01 Read Coils 0x05 WriteSingleCoil Discrete Inputs 0x02 Read Discrete Inputs Holding Registers 0x03 Read Holding Registers 0x06 Write Single Register coil wartość binarna 0,1 discrete input wartość binarna 0,1 16 bit register 32 bit register 2x16 bit register wartości całkowite 0x00.. 0xFFFF wartości całkowite lub zmiennoprzecinkowe 0x00.. 0xFFFFFFFF wartości całkowite lub zmiennoprzecinkowe 0xFFFF << xFFFF ANT Sp z o.o. Strona 124

125 Input Registers 0x04 Read Input Registers 16 bit register 32 bit register 2x16 bit register Queues 0x18 Read FIFO Queue raw ciąg bajtów wartości całkowite 0x00.. 0xFFFF wartości całkowite lub zmiennoprzecinkowe 0x00.. 0xFFFFFFFF wartości całkowite lub zmiennoprzecinkowe 0xFFFF << xFFFF Konfigurowanie kanałów wykonuje się tak samo jak w przypadku kanałów modułu ModbusMaster. ANT Sp z o.o. Strona 125

126 ModbusMaster ModbusMaster to moduł wymieniający dane z urządzeniami Slave protokołu Modbus. Jeden moduł ModbusMaster może być podłączony do jednego z modułów komunikacji szeregowej Com lub IPSocket i wymieniać dane ze wszystkimi urządzeniami danej podsieci szeregowej, zgodnie z zasadami protokołu Modbus. Konfiguracja modułu opisuje urządzenia Slave które są odpytywane przez Mastera. Przykładowa konfiguracja urządzenia Konfiguracja transmisji ModbusMaster Przed konfiugracją należy podłączyć urządzenia do wybranego portu szeregowego i zasilić je. 1. Dodaj do konfiguracji dwa moduły: SerialPort oraz ModbusMaster 2. Skonfiguruj SerialPort: wskaż nazwę portu i ustaw parametry transmisji. Przeczytaj jak skonfigurować SerialPort. 3. Połącz ze sobą dodane moduły komunikacyjne. ANT Sp z o.o. Strona 126

127 Najszybszym sposobem na uzyskanie takiego połączenia jest przeciągnięcie jednego z modułów na drugi. Przeczytaj więcej o mapowaniu kanałów. 4. Ustawienia konfiguracyjne ModbusMaster ANT Sp z o.o. Strona 127

128 Parametr Active Wartość moduł wyłączony ConnectionMode DefaultTimeOut Name moduł włączony tryb połączenia (ciągły/modem) domyślny czas na odpowiedź nazwa mastera 5. Definiowanie urządzeń Wykrywanie urządzeń Jeśli producenci podłączanych urządzeń zaimplementowali funkcję 0x11 umożliwiającą identyfikację urządzeń to można je automatycznie wykryć. Wzorce znanych systemowi urządzeń znajdują się we wzrocach folderu Devices. Informacja o tym czy dane urządzenie obsługuje funkcję "0x11h Report Slave ID" powinna znajdować się w dokumentacji urządzenia. Przed przystąpieniem do wykrywania urządzeń należy upewnić się, czy podłączane urządzenia znajdują się w katalogu wzorców. Jeśli nie, należy dodać urządzenie ręcznie, stworzyć jego konfigurację i zapisać ją do wzorców. Ułatwi to następnym razem podłączenie danego urządzenia. Autodetekcja Aby rozpocząc detekcję urządzeń należy włączyć moduły: ComDriver i ModbusMaster oraz wybrać z menu ModbusMaster polecenie Find devices. ANT Sp z o.o. Strona 128

129 Odpytane zostaną wszystkie urządzenia z zakresu Identyfkację urządzeń można w dowolnym momencie przerwać wybierając z menu modułu polecenie Break. Jeśli zostanie wykryte urządzenie na danym adresie to zostanie niezwłocznie dodane do drzewka konfiguracyjnego. Jeśli będzie to urządzenie zdefiniowane we wzorcach, to zostanie dołączony jego wzorzec, z aktualnym adresem. Uwaga: urządzenia są identyfikowane po numerze ID. Poszczególne modele lub wersje danego urządzenia mogą różnić się numerem ID. Jeśli dla znalezionego urządzenia nie będzie zdefiniowany wzorzec to do konfiguracji zostanie dołączone UnknownDevice z odpowiadającym mu adresem oraz numerem ID. Urządzenie to będzie wymagało skonfigurowania. Automatycznie dodane do konfiguracji urządzenie jest poprawnie skonfigurowane i wymienia dane. Definiowanie nieznanego urządzenia Jeśli dysponujemy konfigurowanym urządzeniem i urządzenie to wspiera funkcję 0x11h to najlepszym sposobem na jego szybkie skonfigurowanie jest dodanie go poleceniem Find devices. Wykryte w ten sposób urządzenie ma już skonfigurowany adres i pobrany ciąg identyfikujący. ANT Sp z o.o. Strona 129

130 Gdy nie dysponujemy urządzeniem w chwili konfiguracji lub urządzenie nie wspiera identyfikacji należy dodać je ręcznie. 1. Z menu folderu IODevices wybierz Insert ModbusDevice. 2. Ustawienia konfiguracyjne urządzenia ModbusDevice Parametr Active Wartość urządzenie wyłączone Address IOType Identification urządzenie włączone Adres urządzenia z zakresu w podsieci Modbus typ urządzenia ModbusMaster ciąg bajtów identyfikujący dane urządzenie zwracany przez funkcję 0x11h Report Slave ID, jeśli jest ona wspierana przez urządzenie. Pole to jest automatycznie wypełnione gdy wybierzemy polecenie ScanBy0x11ReportSlaveID. ANT Sp z o.o. Strona 130

131 Mode Name Retries TimeBetweenFrames TimeOut TimeTrendCache TimeOut wybór trybu Modbus ASCII lub Modbus RTU nazwa urządzenia w konfiguracji programu ilość ponowień zapytania w przypadku braku odpowiedzi Czas pomiędzy otrzymaniem odpowiedzi na ramkę, a wysłaniem następnej nieprzekraczalny czas odpowiedzi urządzenia nieprzekraczalny czas odpowiedzi urządzenia 3. Konfigurowanie bloków IOBlocks danych urządzenia Bloki danych przedstawiają podział pamięci urządzenia i przyporządkowują im funkcję zapisu lub odczytu. System wspiera następujące rodzaje danych: Typ funkcja odczytu funkcja zapisu coils / cewki 0x01 0x05 discrete inputs / wejścia dyskretne 0x input registers / rejestry wejściowe 0x holding registers / rejesty wewnętrzne 0x03 0x06 FIFO Queue / ciąg bajtów 0x18 nie wspierana Zdefiniowane w programie bloki danych stanowią zarazem sekwencję odpytywania urządzenia przez Mastera. Tworząc konfigurację bloków należy podzielić przestrzeń danych urządzenia na spójne fragmenty. Fragmenty te można zdefiniować w jednym lub więcej bloków. Np, jeśli urządzenie udostępnia rejestry holding w zakresach oraz to należy definiować 2 bloki obsługujące oba zakresy, lub w danym zakresie zdefiniować wiele bloków. Urządzenie jest odpytywane funkcją odczytu w obrębie całego bloku. Niektóre urządzenia posiadają ograniczenie na ilość jednocześnie odpytanych rejestrów. Przeczytaj więcej na temat typów danych protokołu Modbus. ANT Sp z o.o. Strona 131

132 4. Właściwy blok danych wraz z określoną funkcją można wybrać wprost z menu folderu IOBlocks Blok danych można zdefiniować również ręcznie wybierając ModbusxxxIOBlock. Ustawienia konfiguracyjne bloku IOBlock. Parametr Active Wartość blok obsługinany DataType blok nieobsługiwany możliwe typy danych przypisane danej funkcji opis pod tabelką ANT Sp z o.o. Strona 132

133 ExecutionMode ExtraTimeOut Function Name RangeFrom RangeTo tryb wywoływania bloku continous blok odpytywany cyklicznie callback odczyt danych wywołany wyłącznie przez funkcję modułu skryptowego continous and callback oba wymienione tryby dodatkowy czas oczekiwania na odpowiedź urządzenia przy komunikacji z blokiem. Jeśli komunikacja z urządzeniem przy wywołaniu funkcji tego bloku może trwać więcej niż TimeOut zdefiniowany globalnie dla urządzenia to należy podać dodatkowy czas. Łączny czas oczekiwania na odpowiedź jest sumą czasów TimeOut i ExtraTimeOut funkcja modbus nazwa bloku danych dolny zakres rejestów górny zakres rejestów Zakresy dolny i górny są wykorzystywane jedynie podczas funkcji Create Channels. Typy danych DataType Tabela przedstawia wspierane przez program typy danych dla poszczególnych funkcji protokołu Modbus. Funkcja Typ Opis 0x01 Read Coils coil wartość binarna 0,1 0x05 WriteSingleCoil 0x02 Read Discrete Inputs discrete input wartość binarna 0,1 0x03 Read Holding Registers 0x04 Read Input Registers 16 bit register wartości całkowite 0x00.. 0xFFFF 0x06 Write Single Register 32 bit register wartości całkowite lub zmiennoprzecinkowe 0x00.. 0xFFFFFFFF 2x16 bit register wartości całkowite lub zmiennoprzecinkowe 0xFFFF << xFFFF 0x18 Read FIFO Queue raw ciąg bajtów Taki podział typów danych umożliwia na wymianę danych z każdym urządzeniem protokołu Modbus. ANT Sp z o.o. Strona 133

134 Konfigurowanie kanałów Należy dodać odpowiednią ilość kanałów. Ustawienia konfiguracyjne kanału. Parametr Comment Disable Wartość komentarz kanał nie aktywny kanał aktywny Name Register Type ValueType nazwa kanału, tworzona w części automatycznie rejest w urządzeniu przypisany do kanału typ danych systemu reprezentacja liczby Reprezentacja liczby ValueType związana jest z typem danych bloku - DataType DataType ValueType Opis coil bit wartość dyskretna 0,1 zapisana discrete input na 1 bicie ANT Sp z o.o. Strona 134

135 16 bit register 16 bit integer wartość całkowita 0x0...0xFFFF 32 bit register 32 bit (1234) integer (1234) float msb lsb 4 2x16 bit register 32 bit (3412) integer (3412) float 32 bit (1234) integer (1234) float msb lsb 2 msb lsb 4 register 1 register 2 32 bit (3412) integer (3412) float msb lsb 4 register 1 register 2 raw raw n-1 n 2x16 bit register polega na połączeniu ze sobą 2 rejestrów 16 bitowych. W zależności od urządzenia rejestry te mogą mieć zamienioną kolejność. Ustawienia (3412) mają najczęściej zastosowanie do rejestów składanych 2x16. Praca modułu ModbusMaster Poprawnie skonfigurowany moduł odczytuje dane z rejestrów zdefiniowanych w blokach funkcji odczytu. Cyklicznie odczytywane są tylko bloki aktywne Active On o zdefioniowanym ExecutionMode = continous lub callback and continous. Urządzenia odpytywane są kolejno po 1 bloku. ANT Sp z o.o. Strona 135

136 SNMP SNMP Simple Network Management Protocol jest to protokół komunikacyjny służący do zarządzania, monitorowania z urządzeń podpiętych do sieci komputerowych. SNMP wykorzystuje do transmisji wykorzystuje protokół: UDP (User Datagram Protocol) Program zarządzający Urządzenia zarządzane SNMP UDP IP SNMP UDP IP SIEĆ Aby dodać moduł do tworzonej konfiguracji należy po kliknięciu na katalogu Modules wybrać kolejno: Insert -> Exchange,Sources...-> Communication Protocols -> SNMP ->SNMP ANT Sp z o.o. Strona 136

137 Active włącz wyłącz moduł Name nazwa bloku Retries liczba prób wysłania zapytania Timeout czas oczekiwania na odpowiedź (w ms) ANT Sp z o.o. Strona 137

138 W drzewie konfiguracyjnym modułu SNMP dodajemy do IOBlocks nowy blok wejść wyjść. Klikamy prawym klawiszem na IOBlocks i dodajemy Group. Dodawanie kanałów Input /output : Ręczne: Klikamy prawym klawiszem Insert i wybieramy typ kanału Podajemy numer lub nazwę Oid-u ANT Sp z o.o. Strona 138

139 Pobieramy z urządzenia listę dostępnych parametrów. Klikamy prawym klawiszem na IOBlock: Import system Oids from device. Z urządznenia zostanie pobraba lista wejsciowych i wyjsciowych oid-ów. Połączenie modułu SNMP poprzez Socket: Modul SNMP łączymy z socket-em przeciągając moduł na SNMP lub mapując kanały input output. ANT Sp z o.o. Strona 139

140 Socket powinien pracować z parametrem Mode ustawionym na UTP LocalAddress adres komputera zarządzającego Local Port port na którym oczekujemy uzyskania odpowiedzi RemoteAddress adres zarządzanego urządzenia sieciowego RemotePort port na który wysyłamy zapytania ANT Sp z o.o. Strona 140

141 GazModem Moduł GazModem, umożliwia wymianę danych z urządzeniami z protokołem GazModem1. Urządzenia takie powszechnie stosowane są w gazownictwie. GazModem umożliwia odczyt danych bieżących i archiwalnych. Dane bieżące mogą być bezpośrednio łączone z innymi modułami systemu. Dane archiwalne dostępne są jako trendy. Trendy mogą być podłączone bezpośrednio do kontrolki ArchivePlot, która rysuje wykres. Najczęściej moduł GazModem łączy się z modułem Archive, który replikuje dane archiwalne z urządzenia do bazy danych na komputerze. Moduł GazModem umożliwia wymianę danych z wieloma urządzeniami połączonymi na wspólnej magistrali. Urządzenia mogą być połączone z komputerem poprzez port szeregowy lub przez sieć TCP/IP. W zależności od tego w jaki sposób są podłączone urządzenia, moduł GazModem konfiguruje się łącząc go z modułem SerialPort lub IPSocket. Konfigurowanie komunikacji z urządzeniami GazModem, zaczynamy od dodania modułu GazModemMaster i jednego z modułów pośredniczących: SerialPort lub IPSocket. Najszybszym sposobem na połączenie tych modułów, jest przeciągnięcie SerialPort na moduł GazModem. Po podłączeniu do portu szeregowego urządzenia należy skonfigurować port szeregowy. Przeczytaj o konfigurowaniu portu szeregowego. GazModem należy do grupy modułów akwizycji danych, które posiadają wbudowany skrypt umożliwiający swobodne przetwarzanie danych odczytywanych i zapisywanych do urządzeń. ANT Sp z o.o. Strona 141

142 Ustawienie konfiguracyjne modułu GazModemMaster Parametr Active Wartość moduł wyłączony ConnectionMode DefaultTimeOut moduł włączony tryb połączenia (ciągły/modem) domyślny czas na odpowiedź MasterAddress adres komputra nadrzędnego w transmisji po protokole GazModem Name nazwa mastera Konfigurowanie urządzenia, rozpoczynamy od jego dodania do listy urządzeń. Ustawienia konfiguracyjne urządzenia protokołu GazModem ANT Sp z o.o. Strona 142

143 Parametr Active Wartość urządzenie wyłączone Address IOType Identification Name Retries TimeBetweenFrames urządzenie włączone Adres urządzenia z zakresu 0..0xffff w podsieci GazModem typ urządzenia GazModem unikalna nazwa urządzenia nazwa urządzenia ilość prób wykonania transmisji w przypadku błędów Czas pomiędzy otrzymaniem odpowiedzi na ramkę, a wysłaniem następnej TimeOut maksymalny czas oczekiwania na odpowiedź urządzenia ANT Sp z o.o. Strona 143

144 TimeTrendCache TrendBufferSizeDaily TrendBufferSizeRegistered TrendRefreshRate okres odświeżania danych z trendów Moduł GazModem posiada wbudowany skrypt, umożliwiający przetwarzanie transmitowanych danych. Jego użycie jest opcjonalne. Przeczytaj więcej o skryptach osadzonych w modułach akwizycji danych. Dane bieżące odczytywane są w IOBlock'ach. W nich użytkownik definiuje kanały, których wartości mają być odczytywane z urządzenia. Na podstawie skonfigurowanych w IOBlocku kanałów tworzone jest jedno zapytanie, obejmujące wszystkie zdefiniowane kanały. W zależności od tego jakie dane udostępnia urządzenie, oraz jaką ilość wartości może przesłać jedną ramką definiuje się jeden lub więcej IOBlocków. Bloki takie powinny zawierać kanały o sąsiednich rejestrach, z tym, że dopuszczalne są dziury, czyli nie skonfigurowane rejestry. Istotne jest to, żeby ilość rejestrów między pierwszym i ostatnim (o numerze najmniejszym i największym) zdefiniowanym rejestrem wewnątrz pojedynczego bloku nie przekraczała ilości obsługiwanych jednorazowo wartości przez urządzenie. ANT Sp z o.o. Strona 144

145 Ustawienia konfiguracyjne bloku danych Parametr Active ExecutionMode Name Wartość blok obsługiwany blok nieobsługiwany tryb wywoływania bloku continous blok odpytywany cyklicznie callback odczyt danych wywołany wyłącznie przez funkcję modułu skryptowego continous and callback nazwa bloku oba wymienione tryby Ustawienia konfiguracyjne kanału ANT Sp z o.o. Strona 145

146 Parametr Comment DataNumber Disable Wartość Komentarz, w przypadku wybrania zdefiniowanej w standardzie GazModem danej (DataNumber) wpisywany jest komentarz opisujący wybraną daną numer danej odczytywanej w tym kanale, zgodnie ze specyfikacji protokołu GazModem kanał aktywny Name Type nazwa kanału typ wartości kanał wyłączony, nie aktywny Ponieważ pewne kanały protokołu GazModem wymagają przeliczenia wartości końcowej na podstawie dwóch rejestrów, np. 0 i 1 razem tworzą wartość licznika w warunkach normalnych, użyteczne jest wykorzystanie skryptu. Dane archiwalne udostępniane są poprzez kanały trendów. Trendy definiujemy w folderze Trends. Ustawienia konfiguracyjne trendu. ANT Sp z o.o. Strona 146

147 Parametr DataNumber Disable Wartość Numer danej archiwalnej zgodnie ze specyfikacją protokołu GazModem, lub danymi producenta urządzenia. trend włączony Name nazwa trendu trend wyłączony TrendType Type typ trendu Registered - dane rejestrowane Daily - dane dobowe Alarm - stany alarmowe typ danej Kanał trendu można podłączyć do dowolnego modułu obsługującego dane rzeczywiste ( kontrolki graficzne, moduły komunikacyjne OPC, DDE itp. ). Kanał trendu może być również podłączony do kontroli ANT Sp z o.o. Strona 147

148 MultiLon MultiLon jest modułem komunikacyjnym z urządzeniami sieci LonWorks. Do konfigurowania modułu należy przystąpić po wcześniejszym skonfigurowaniu serwera MultiLon. Ustawienia konfiguracyjne modułu Parametr Active Wartość moduł wyłączony Name dllname moduł włączony Nazwa modułu w systemie Nazwa biblioteki komunikacyjnej z serwerem MultiLon Ustawienia konfiguracyjne połączenia z serwerem MultiLon ANT Sp z o.o. Strona 148

149 Parametr Active IOType Name Wartość MultiLon Nazwa połączenia połączenie nie aktywne połączenie aktywne Retries ServerName UserName UserPassword Ilość prób ponowienia komunikacji Nazwa komputera na którym pracuje Mutilon Server Nazwa użytkownika serwera Hasło użytkownika Moduł MultiLon umożliwa na import konfiguracji z serwera. Wykonuje się to poleceniem Load nodes. Import konfiguracji jest możliwy gdy dobrze zostało skonfigurowanie połączenie z serwerem. Nody - czyli urządzenia LonWorks można również zdefiniować ręcznie, jednak zaleca się import konfiguracji celem uniknięcia błędów. ANT Sp z o.o. Strona 149

150 Ustawienia konfiguracyjne nody są podczas importu automatycznie ustawiane. Nody posiadają kanały wejściowe i wyjściowe, za pomocą których można z nimi wymieniać dane. ANT Sp z o.o. Strona 150

151 OPC Pakiet Moduł Opis OPC OPCclient klient OPC OPC OPCserver serwer OPC OPCserver OPCserwer udostępnia dane bieżące jako serwer OPC. Dane te mogą być pobierane przez lokalnych i zdalnych klientów OPC. Przeczytaj więcej o technologii OPC Konfiguracja serwera OPC Active Name Parametr nazwa modułu Wartość moduł wyłączony moduł włączony ServerName nazwa serwera OPC związanego z modułem. Aby łatwo identyfikować serwery w systemie jest rejestrowana nazwa ANT.ServerName Update period to okres wymiany danych przez serwer. Konfiguracja serwera polega na wskazaniu jego nazwy (ServerName), zdefiniowaniu kanałów i zarejestrowaniu nowo utworzonego serwera w rejestrach systemu Windows. ANT Sp z o.o. Strona 151

152 Dodawanie kanałów można przeprowadzić ręcznie lub, gdy chcemy udostępnić kanały z innego modułu, przez przeciągnięcie go na moduł serwera lub jeden z jego folderów Input lub Output Channels. Konfiguracja kanału Parametr Comment Disable Name Wartość Opis kanału kanał nie aktywny kanał aktywny Nazwa kanału w systemie OPCType Typ danych OPC, w jakim zostanią udostępnione dane Path Ścieżka OPC pod którą zostanie udostępniony kanał Type Typ kanału w systemie Rejestracja serwera OPC Rejestracja polega na dodaniu wpisu do rejestrów systemu Windows opisujących serwer OPC. Zarejestrowany obiekt DCOM, przedstawiający serwer OPC można konfigurować poleceniem dcomcnfg. Polecenie Register powoduje dodanie do rejestrów wpisu. Unregister kasuje wpis. ANT Sp z o.o. Strona 152

153 OPCclient OPCclient służy do wymiany danych bieżących z serwerami OPC. Przeczytaj więcej o technologii OPC Konfiguracja połączenia z serwerem OPC Najszybszym sposobem na skonfigurowanie połączenia z serwerem jest: 1. wstawić do konfiguracji i włączyć (Active On) moduł OPCClient 2. wybrać z menu polecenie Browse computers and OPC servers Przeszukane zostaną komputery grupy roboczej otoczenia sieciowego w celu znalezienia zainstalowanych serwerów OPC. Operacja to może potrwać kilka minut. Możną ją przerwać wybierając z menu polecenie Break Po udanym przeszukaniu otoczenia sieciowego w folderze OPCNeighbourhood zostanie umieszczone drzewko komputerów w sieci oraz listy zainstalowanych serwerów OPC ANT Sp z o.o. Strona 153

154 3. Wskazując na wybrany serwer wybrać polecenie Add all items. Spowoduje to podłączenie do serwera, dodanie do folderów kanałów wejściowych i wyjściowych kanałow z listy eksportowanej przez serwer. Jeśli ustawienia konfiguracyjne klienta OPC są zgodne z konfiguracją serwera to wykonane w ten sposób połączenie jest gotowe. Podczas konfiguracji może zainstnieć błąd w połączeniu, sygnalizowany czerwonym wykrzyknikiem Opis problemu znajduje się w zakładce Description Problem ten rozwiązemy konfigurując parametry modułu. Ustawienia konfiguracyjne modułu ANT Sp z o.o. Strona 154

155 Parametr Active BrowseMode Wartość moduł wyłączony moduł włączony sposób przeszukiwania serwerów OPC w otoczeniu sieciowym Registry - zdalne czytanie rejestrów OPC enum - wykorzystanie serwera OPCenum HostName nazwa komputera na którym znajduje się serwer OPC z którym ustanawiamy połączenie Name nazwa modułu PercentDeadBand strefa martwa przy aktualizacji pomiaru wyrażona w % zakresu ReadMode tryb odczytu danych Synchronous - połączenie przez interfejs IOPCSyncIO Odczyt wykonywany jest z częstotliwością odpowiadającą okresowi SamplingPeriod Async połączenie przez interfejs IOPCAsyncIO2 ServerName nazwa serwera OPC TimeOut czas braku odpowiedzi z serwera w minutach Type typ modułu WriteMode tryb zapisu danych Synchronous - synchroniczny zapis buforowany wykonywany z częstliwością pracy modułu - określną w parametrze SamplingPeriod Asynchronous - asynchroniczny, zapis każdej zmiany sygnału Aby zmniejszyć obciążenia komputera i sieci zaleca się buforowanie zapisu WriteMode = Synchronous. Rozwiązanie problemu braku połączenia ANT Sp z o.o. Strona 155

156 W przedstawionym przypadku, powodem braku połączenia jest to, że wybrany serwer nie obsługuje trybu Async 2.0. Przełączenie na tryb Synchronous rozwiązuje problem. Przeczytaj więcej o połączeniu OPC Podgląd pracy modułu Wybierając DebugTree po prawej stronie ekranu pojawia się drzewko przedstawiające pracę modułu ANT Sp z o.o. Strona 156

157 ANT Sp z o.o. Strona 157

158 Połączenie OPC Konfigurowanie zdalnego połączenia OPC na Windows NT/2000/XP Połączenie OPC może zostać zrealizowane w następujący sposób: 1. Dostęp do zdalnego serwera OPC bezpośrednio z komputra klienta. W tym przypadku klient nawiązuje połączenie wysyłając do komputra serwera OPC jego nazwę i ID. 2. Przekierowanie po stronie klienta lokalnego połączenia z serwerem OPC na serwer zdalny. W tym przypaku klient nazwiązuje łączy się poprzez DCOM z lokalnym serwerem, który na skutek ustawień uruchamia aplikację serwera na wskaznym komputerze. Sposób połączenia nie wpływa na zachowanie klienta OPC. Przed rozpoczęciem konfigurowania połączenia OPC należy sprawdzić: Uwaga 1. W celu połączenia się ze zdalnym OPC oba komputery muszą być zalogowane do tej samej domeny windows NT. Zaleca się używania tych samych kont użytkownika w celu uniknięcia komplikacji podczas konfiguracji. Jeśli w Windows XP, oba komputery są zalogowane jako Administrator to konto Gość musi zostać ustawione jako Authenticate as Guest. Uwaga 2. W Windows XP, jeśli oba komputery pracują jako Administrator to zewnętrzni użytkownicy muszą być autoryzowani jako Gość. Nie dotyczy to przypadku w którym na obu komputerach klienta i serwera OPC zalogowany jest ten sam użytkownik z uprawnieniami administratora. Aby zmienić w Windows XP ustawienie, że autoryzacja gościa nie jest wymagana, należy wybrać Administrative Tools»Local Security Policy»Local Policies»Security Options»Network Access»Sharing and Security for Model for Local Accounts. Zmień ustawienia na Classic - Users authenticate as themselves. Po zmianie tego ustawienia nie będzie konieczna autryzacja jako gość., podobnie jak w Windows Uwaga 3. Nie ma znaczącej różnicy w pracy klienta OPC na komputerach z Windows W systemach Windows NT/2000 serwery OPC mogą być zdalnie uruchamiane przy logowaniu się do nich pierwszego klienta, co nie jest możliwe w Windows 9x/Me, gdzie serwer OPC musi zostać uruchomiony wcześniej, przed połączeniem się klienta. Prawdziwym utrudnieniem jest to, że serwery OPC często uniemożliwiają ich ręczne uruchomienie. W tym przypadku należy je uruchamiać poprzez lokalnego klienta, co jest często nie wygodne, dlatego zaleca się instalowanie serwerów OPC na komputerach z Windows NT/2000/XP ANT Sp z o.o. Strona 158

159 Zdalne połączenie z serwerem OPC Zaletą tej metody jest brak konieczności instalowania serwera OPC na komputrze klienta. Komputer serwera (Windows NT/2000): 1. Wybierz Start >> Run i wpisz dcomcnfg ( Start >> Uruchom ) 2. Wybierz Default Properties (Właściwości domyślne). Upewnij się wybrane jest pole oznaczone Enable Distributed COM on this computer. Ustaw w polach Authentication i Impersonation następujące kombinacje opcji w zależności od rządanego poziomu zabezpieczenia: (None) + Anonymous brak sprawdzania Connect + Identify sprawdzanie podczas inicjacji połączenia Call + Identify sprawdzanie zabezpieczeń podczas każdego wywołania Więcej informacji na ten temat można uzyskać wybierajać polecenie Help. 3. Kliknij Apply (Zastosuj) aby zachować zmiany. 4. Wybierz zakładkę Default Security (Zabezpieczenia domyślne). Upewnij się, czy użytkownik logujący się podczas połączenia ma do tego niezbędne uprawnienia. Wybierz Edit Default w każdej z trzech opcji zabezpieczeń i przydziel uprawnienia: Allow access, Allow Launch and Full Control. Uwaga 1. Wybranie wszędzie Everyone ustawia minimalny poziom zabezpieczeń, tzn. że połączenie będzie dostępne dla każdego użytkownika sieciowego. Uwaga 2. Ustawienia Default Security dotyczą wszystkich aplikacji, zatem wskazany użytkownik dostaje pełny dostęp. Ustawiena dostępu można przydzielić poszczególnym aplikacą ( patrz następne punkty ) 5. Kliknij Apply (Zastosuj) aby zachować zmiany. 6. W przedstawionych krokach ustawiono właściwości domyślne. Aby skonfigurować konkretny serwer OPC, należy go wybrać z listy i otworzyć okienko jego Właściwości (Properties). ANT Sp z o.o. Strona 159

160 a) W zakładce General wybierz Default w opcjach authentication level, lub wskaż inne ustawienie opisane w kroku 2. b) W zakładce Location zaznacz Run application on this computer. c) W zakładce Security wybierz właściwości domyśle (Default) dla wszyskich trzech opcji uprawnień, lub wskaż ustawienia właściwe tylko dla danego serwera. d) W zakładce Identity można zdefiniować którego użytkownika kontekst zabezpieczeń ma być użyty przy inicjowaniu połączenia. Interactive user dotyczy użytkownika aktualnie zalogowanego do systemu. e) Kliknij Apply (Zastosuj) aby zachować zmiany i naciśnij klawisz OK. 7. Naciśnij klawisz OK aby zamknąć panel dcomcnfg. 8. Uruchom ponownie komputer, aby uaktywnić wprowadzone zmiany w ustawieniach DCOM. Komputer serwera (Windows XP): 1. Wybierz Start >> Run i wpisz dcomcnfg. 2. Rozszerz drzewko konfiguracyjne Component Services >> Computers and find My Computer. Wybierz właściwości My Computer. ANT Sp z o.o. Strona 160

161 3. Wybierz zakładkę Default Properties (Właściwości domyślne). Upewnij się, że jest zaznaczony model obiektów rozproszonych na tym koputrze Enable Distributed COM on this computer. Ustaw uprawnienia podobnie jak opisane wyżej w Windows NT/ Kliknij Apply (Zastosuj) aby zachować zmiany. 5. Wybierz zakładkę Default Security (Zabezpieczenia domyślne). Upewnij się, czy użytkownik logujący się podczas połączenia ma do tego niezbędne uprawnienia. Wybierz Edit Default w każdej z trzech opcji zabezpieczeń i przydziel uprawnienia: Allow access, Allow Launch or Both. Uwaga 1. Wybranie wszędzie Everyone ustawia minimalny poziom zabezpieczeń, tzn. że połączenie będzie dostępne dla każdego użytkownika sieciowego. Uwaga 2. Ustawienia Default Security dotyczą wszystkich aplikacji, zatem wskazany użytkownik dostaje pełny dostęp. Ustawiena dostępu można przydzielić poszczególnym aplikacą ( patrz następne punkty ) 6. Kliknij Apply (Zastosuj) aby zachować zmiany. Kliknij OK aby zamknąć okno. 7. W przedstawionych krokach ustawiono właściwości domyślne. Teraz otwórz MyComputer->DCOM Config ( Mój komputer - Konfiguracja DCOM ) ANT Sp z o.o. Strona 161

162 8. Wybierz zdalny OPC serwer z których chcesz się łączyć i kliknij prawym klawiszem myszy na jego właściwościach Properties. a) W zakładce General (Ogółne) wybierz Default w opcjach authentication level, lub wskaż inne ustawienie opisane w kroku 2. b) W zakładce Location zaznacz Run application on this computer. c) W zakładce Security wybierz właściwości domyśle (Default) dla wszyskich trzech opcji uprawnień, lub wskaż ustawienia właściwe tylko dla danego serwera. d) W zakładce Identity można zdefiniować którego użytkownika kontekst zabezpieczeń ma być użyty przy inicjowaniu połączenia. Interactive user dotyczy użytkownika aktualnie zalogowanego do systemu. e) Kliknij Apply (Zastosuj) aby zachować zmiany i naciśnij klawisz OK. 9. Naciśnij klawisz OK aby zamknąć panel dcomcnfg. 10. Uruchom ponownie komputer, aby uaktywnić wprowadzone zmiany w ustawieniach DCOM. ANT Sp z o.o. Strona 162

163 Komputer Klienta Windows NT/2000/XP: 1. Wybierz Start i uruchom dcomcnfg. 2. Upewnij się, że model COM jest udostępniony. W Windows NT/2000 kliknij zakładkę Default Properties (Właściwości domyślne) i sprawdz ustawienie Enable distributed COM on this computer (Włącz model obiektów rozproszonych COM na tym komputerze). W Windows XP ustawienie to znajduje się we właściwościach My Computer (Mój komputer). 3. Uruchom ponownie komputer aby zastosować wprowadzone zmiany. Oba komputery są gotowe do ustanowienia połączenia OPC. Klient musi zapytać DCOM o uruchomienie serwera OPC na zdalnym komputerze. Przekierowanie lokalnego OPC do zdalnego Ta metoda wymaga zainstalowania OPC serwera na komputerze klienta. Ustawienia konfiguracyjne serwera są takie same jak w opisach powyżej. Różnią się natomiast ustawienia klientów. Windows NT/2000: 1. Uruchom dcomcnfg. 2. Upewnij się że włączona jest opcja Enable distributed COM on this computer (Włącz model obiektów rozproszonych COM na tym komputerze). Kliknij Apply i OK. 3. Wybierz zakładkę Aplikacji i wskaż OPC serwer z którym chcesz się łączyć. We właściwościach wybierz zakładkę Location (Lokalizacja) i wybierz Run application on the following computer (Uruchom aplikację na następującym komputerze). Upewnij się, że w zakładce zaznaczona jest tylko jedna pozycja. Kliknij Apply i dwa razy OK. 4. Uruchom komputer ponownie aby zastsować zmiany. Windows XP: 1. Uruchom dcomcnfg. 2. Rozwiń drzewko Component Services >> Computers i wybierz My Computer. ( Usługi składowe, komputery, Moj Komputer ). Wybierz właściwości mojego komputera. 3. Upewnij się, że jest wybrane ustawienie Enable distributed COM on this computer (Włącz model obiektów rozproszonych COM na tym komputerze). Kliknij Apply i OK. 4. Rozwiń My Computer >> DCOM Config. 5. Wybierz OPC serwer i wejdź do jego właściwości 6. Wybierz zakładkę Location (Lokalizacja). Wybierz Run application on the following computer (Uruchom aplikację na następującym komputerze) i podaj nazwę komputera na którym jest zainstalowny OPC serwer. Upewnij się że w zakładce wybrana została tylko jedna opcja.kliknij Apply i dwa razy OK. 7. Uruchom ponownie komputer aby zastosować zmiany. ANT Sp z o.o. Strona 163

164 SQL Pakiet Moduł Opis SQL ODBC moduł komunikacji ze źródłem danych ODBC SQL SQLArchive moduł wymiany danych z tabelą SQL SQLTerminal terminal do wydawania poleceń SQL i przeglądania wyników SQL SQLite moduł wbudowanej w system bazy SQLite ODBC Moduł komunikacji ze źródłami danych ODBC dostarcza kanałów wymiany danych z bazami danych oraz innymi zbiorami, do których zainstalowane są w systemie Windows sterowniki. Ustawienia konfiguracyjne: ANT Sp z o.o. Strona 164

165 Parametr Active Wartość moduł wyłączony ConnectionMethod ConnectionString DataSource Name Password User moduł włączony Simple - proste, poprzez bezpośrednie połączenie ze zdefiniowanym w systemie źródłem ConnectionString - umożliwia nawiązanie połączenia na podstawie wpisanego poniżej wyrażenia - ConnectionString opis powyżej. Nazwa źródła danych, z którym konfigurowane jest połączenie Nazwa modułu Hasło użytkownika Nazwa użytkownika Jeśli we właściwościach źródła danych zdefiniowany jest użytkownik oraz podane jest hasło to wypełnienie pól Password i User nie jest konieczne. Najczęstszym przypadkiem połączenia ze źródłem jest wybranie metody ConnectionMethod połączenia Simple oraz wskazanie źródła DataSource. Listę dostępnych w systemie źródeł danych można uzyskać wybierając komendę z menu modułu Explore ODBC. Komenda ta jest dostępna, gdy moduł jest włączony Active = ON Ewentualne problemy z nawiązaniem połączenia są raportowane w zakładce Description. Najczęściej są one związane z brakiem dostępu do danego komputera, do serwera bazy danych. ANT Sp z o.o. Strona 165

166 SQLTerminal Terminal umożliwia podgląd zwracanych rezultatów, oraz wpisywanie zapytań do serwerów baz danych połączonych przez ODBC. Przykład użycia modułu: Interfejs graficzny modułu składa się z 3 elementów: tabeli prezentującej odpowiedź result na zapytanie SQL query monitora zapytań, rezultatów odpowiedzi oraz błędów pola tekstowego umożliwiającego wpisanie zapytania. Ustawienia konfiguracyjne ANT Sp z o.o. Strona 166

167 Active Parametr Wartość moduł wyłączony ErrorMessages LinesInBuffer Mode Name Responses SniffedQueries TypedQueries moduł włączony kolor lini, w których opisany jest błąd ilość lini w terminalu Tryb pracy: terminal - pełna funkcjonalność obługi przez użytkownika, wpisywanie zapytań, prezentacja danych w tabeli, podgląd rezultatów i błędów table - tylko tabla przedstawiająca wynik - result Nazwa modułu kolor lini z odpowiedziami serwera kolor poglądanego dialogu kolor wpisanych ręcznie z terminala zapytań Połączenia terminala: kanał query_snifer result query połączenie z kanałem po którym zadawane są zapytania z modułem ODBC - result jeśli terminal pracuje w trybie terminal, query należy połączyć z kanałem wejściowym query z modułu ODBC ANT Sp z o.o. Strona 167

168 SQLite SQLite to moduł wbudowanej w system bazy SQLite. Moduł wyprowadza do systemu kanał odpowiedzi SQL. Może być stosowany wymiennie z modułem ODBC, który komunikuje system ze wskazaną bazą danych udostępnianą przez serwer bazy danych. W odróżnieniu od ODBC - SQLite, to wbudowana w system baza danych, która przetrzymuje dane we wskazanym przez użytkownika pliku. Ustawienia konfiguracyjne Active Parametr Wartość moduł wyłączony DatabaseFile Name Synchronization moduł włączony Ścieżka do pliku bazy danych Nazwa modułu w systemie Częstotliwość zapisywania danych na dysku full - wymuszenie zapisu danych na dysku po każdej zmianie w bazie normal - cykliczne wymuszanie zapisu na dysk, off - brak wymuszania zapisu na dysk, Plik zapisywany jest wyłącznie przez system operacyjny. Dane zapisywane są w pliku binarnym. Dane zgromadzone w pliku bazy mogą być zapisane do pliku SQL. Aby zapisać taki plik na dysk należy wybrać polecenie Dump z menu modułu. Polecenie to jest aktywne dla włączonego modułu. ANT Sp z o.o. Strona 168

169 Moduł SQLite może być wykorzystany jako archiwum modułu SQLArchive oraz można w nim stworzyć strukturę bazy danych składającą się w wielu tabel. ANT Sp z o.o. Strona 169

170 SQLArchive Moduł SQLArchive służy do wymiany danych z tabelami baz danych. Moduł musi być podłączony do bazy danych poprzez ODBC. Ustawienia konfiguracyjne Active Parametr Wartość moduł wyłączony DefaultTrendType Dialect moduł włączony Typ logowanych danych Dielekt używany przez bazę danych LogSQLErrors Logowanie błędów komunikacji z bazą danych LookupTable Nazwa dodatkowej tablicy... Name Nazwa modułu w systemie OutputRefreshInterval Okres odświeżania kanałów wyjściowych PointColumn Nazwa kolumny określającej nazwę trendów ANT Sp z o.o. Strona 170

171 Table Nazwa tabeli w bazie danych TimeColumn Nazwa kolumny ze znacznikami czasu pomiarów UseTransactions... ValueColumn Nazwa kolumny z wartościami Moduł SQLArchive może współpracować z jedną tabelą, w której zdefiniowane są trzy kolumny: PointColumn ValueColumn TimeColumn varchar float8 timestamp Moduł umożliwia również zapis do tabeli wartości, przy czym wartości mogą być zapisywane tylko do tabel składających się z trzech kolumn. UWAGA: Jeśli w bazie danych nie ma tabeli o nazwie Table, która posiada kolumny PointColumn, ValueColumn i TimeColumn to należy ją stworzyć poleceniem FormatTable, bądź założyć w bazie narzędziami do administracji bazą. Za pomocą SQLArchive można odczytywać dane z tabel składających się z większej niż trzy liczby kolumn. PointColumn ValueColumn1 ValueColumn2 ValueColumn3 TimeStamp Aby stworzyć trendy każdej z trzech wartości dla danego wiersza należy stworzyć trzy instancje modułu SQLArchive i wskazać kolejne kolumny danych. Przy konfigurowaniu połączenia z tabelą pomocne mogą być funkcje z menu modułu. ANT Sp z o.o. Strona 171

172 Find trends - wyszukuje trendy zdefiniowane w tabeli Lookup Detect layout - wykrywa kolumny: nazw trendów, wartości i znaczników czasu Format table - tworzy tabele w bazie danych składającą się z trzech wskazanych w konfiguracji kolumn. Dodawanie trendów Trendy do modułu najszybciej dodaje się przez wykonanie polecenia Find trends. Jeśli nie ma zdefiniowanych trendów w tabeli można je dodać wybierając z menu dostępnego dla folderu Trends polecenie Insert. Trendy Trend składa się z kanału wejściowego i wyjściowego. Kanał wyjściowy umożliwia podłączenie do modułu SQLArchive kontroli do przeglądania danych archiwalnych ArchivePlot W kanale dostępne są również wartości bieżące ( ostatnio zalogowane w bazie ), które można podłączyć do innych modułów systemu, w tym kontrolek graficznych. Dzięki temu moduł SQLArchive umożliwia dostęp do danych archiwalnych oraz bieżących. Kanał Input umożliwia podłączenie do kanału, którego wartość będzie logowana w tabeli. Dostęp do konfiguracji logowania utworzonych trendów do bazy zapewnia tabela parametrów dostępna po wybraniu elementu Logging. ANT Sp z o.o. Strona 172

173 Parametr FlushPeriod MaxTimeSpan Policy Resolution TrimmingEnabled TrimmingInterval wartość Okres fizycznego zapisu danych na dysk Czas przechowywania danych w bazie Wybór trybu logowania danych wejściowych Rozdzielczość logowania danych Usuwanie najstarszych danych z bazy Okres przeprowadzania operacji usuwania danych Przykładowa tabela, zdefiniowana w bazie PostgreSQL, stworzona komendą Format table. W tabeli znadują się kolejne wartości z podłączonej do trendu o nazwie "knob" kontrolki Knob. ANT Sp z o.o. Strona 173

174 Schemat połączeń z bazą danych. ANT Sp z o.o. Strona 174

175 Dane z kontrolki knob zapisywane są w bazie danych przez moduł SQLArchive za pośrednictwem połączenia ODBC. Wartości bieżące oraz archivalne udostępniane są kanałem Output. ANT Sp z o.o. Strona 175

176 Archwizacja SQLArchive Moduł SQLArchive służy do wymiany danych z tabelami baz danych. Moduł musi być podłączony do bazy danych poprzez ODBC. Ustawienia konfiguracyjne Active Parametr Wartość moduł wyłączony DefaultTrendType Dialect moduł włączony Typ logowanych danych Dielekt używany przez bazę danych LogSQLErrors Logowanie błędów komunikacji z bazą danych LookupTable Nazwa dodatkowej tablicy... Name Nazwa modułu w systemie OutputRefreshInterval Okres odświeżania kanałów wyjściowych ANT Sp z o.o. Strona 176

177 PointColumn Nazwa kolumny określającej nazwę trendów Table Nazwa tabeli w bazie danych TimeColumn Nazwa kolumny ze znacznikami czasu pomiarów UseTransactions... ValueColumn Nazwa kolumny z wartościami Moduł SQLArchive może współpracować z jedną tabelą, w której zdefiniowane są trzy kolumny: PointColumn ValueColumn TimeColumn varchar float8 timestamp Moduł umożliwia również zapis do tabeli wartości, przy czym wartości mogą być zapisywane tylko do tabel składających się z trzech kolumn. UWAGA: Jeśli w bazie danych nie ma tabeli o nazwie Table, która posiada kolumny PointColumn, ValueColumn i TimeColumn to należy ją stworzyć poleceniem FormatTable, bądź założyć w bazie narzędziami do administracji bazą. Za pomocą SQLArchive można odczytywać dane z tabel składających się z większej niż trzy liczby kolumn. PointColumn ValueColumn1 ValueColumn2 ValueColumn3 TimeStamp Aby stworzyć trendy każdej z trzech wartości dla danego wiersza należy stworzyć trzy instancje modułu SQLArchive i wskazać kolejne kolumny danych. Przy konfigurowaniu połączenia z tabelą pomocne mogą być funkcje z menu modułu. ANT Sp z o.o. Strona 177

178 Find trends - wyszukuje trendy zdefiniowane w tabeli Lookup Detect layout - wykrywa kolumny: nazw trendów, wartości i znaczników czasu Format table - tworzy tabele w bazie danych składającą się z trzech wskazanych w konfiguracji kolumn. Dodawanie trendów Trendy do modułu najszybciej dodaje się przez wykonanie polecenia Find trends. Jeśli nie ma zdefiniowanych trendów w tabeli można je dodać wybierając z menu dostępnego dla folderu Trends polecenie Insert. Trendy Trend składa się z kanału wejściowego i wyjściowego. Kanał wyjściowy umożliwia podłączenie do modułu SQLArchive kontroli do przeglądania danych archiwalnych ArchivePlot W kanale dostępne są również wartości bieżące ( ostatnio zalogowane w bazie ), które można podłączyć do innych modułów systemu, w tym kontrolek graficznych. Dzięki temu moduł SQLArchive umożliwia dostęp do danych archiwalnych oraz bieżących. Kanał Input umożliwia podłączenie do kanału, którego wartość będzie logowana w tabeli. ANT Sp z o.o. Strona 178

179 Dostęp do konfiguracji logowania utworzonych trendów do bazy zapewnia tabela parametrów dostępna po wybraniu elementu Logging. Parametr FlushPeriod MaxTimeSpan Policy Resolution TrimmingEnabled TrimmingInterval wartość Okres fizycznego zapisu danych na dysk Czas przechowywania danych w bazie Wybór trybu logowania danych wejściowych Rozdzielczość logowania danych Usuwanie najstarszych danych z bazy Okres przeprowadzania operacji usuwania danych Przykładowa tabela, zdefiniowana w bazie PostgreSQL, stworzona komendą Format table. W tabeli znadują się kolejne wartości z podłączonej do trendu o nazwie "knob" kontrolki Knob. ANT Sp z o.o. Strona 179

180 Schemat połączeń z bazą danych. ANT Sp z o.o. Strona 180

181 Dane z kontrolki knob zapisywane są w bazie danych przez moduł SQLArchive za pośrednictwem połączenia ODBC. Wartości bieżące oraz archivalne udostępniane są kanałem Output. ANT Sp z o.o. Strona 181

182 RAMArchive RAM Archive loguje dane w pamięci operacyjnej komputera. Może on być wykorzystany do przetwarzania trendów, które nie muszą być docelowo zapisywane na dysk. Ustawienia konfiguracyjne Active Name Parametr Wartość moduł wyłączony moduł włączony Nazwa modułu w systemie OutputRefreshInterval Okres co który wysyłane są dane bieżące do kanałów ANT Sp z o.o. Strona 182

183 Logowanie i Replikacja Logging Moduły archiwizacji trendów, umożliwiają logowanie oraz replikację danych. Logowanie danych polega na zapisie danych bieżących do trendu. Replikacja polega na cyklicznym pobieraniu danych z trendu udostępnianego przez inny moduł archiwalny lub urządzenie rejestrujące. Ustawienia logowania. Parametr FlushPeriod Policy ReplicationRequestInterval ReplicationRequestWidth Resolution Wartość Okres fizycznego zapisu danych na dysk. Logging bez znaczenia bez znaczenia Rozdzielczość zapisu danych Ustawienia replikacji. Parametr FlushPeriod Policy ReplicationRequestInterval ReplicationRequestWidth Resolution Wartość Okres fizycznego zapisu danych na dysk. Replication Okres pomiędzy kolejnym odpytywaniem Ilość danych ( okres ), pobierany podczas kolejnego cyklu replikacji. Rozdzielczość zapisu danych ANT Sp z o.o. Strona 183

184 Przykład: Replikacja danych z urządzenia rejestrującego 1. Przeciągnąć trend z urządzenia na moduł Archive, 2. Ustawić Replikację danych 3. Ustawić parametry replikacji danych UWAGA: Pełna replikacja odbędzie się jedynie wtedy, gdy w tabeli do której jest replikowany trend nie ma próbek wcześniejszych od próbek znajdujących się w tabeli replikowanej. W innym przypadku zreplikowana zostanie jedynie ta część trendu, której nie ma w tabeli, do której dane są replikowane. ANT Sp z o.o. Strona 184

185 Modemy, SMS, Modem Połączenia wdzwaniane oraz wysyłanie i odbieranie wiadomości tekstowych realizowane są przez moduł Modem Ustawienia konfiguracyjne ANT Sp z o.o. Strona 185

186 Parametr Pin HardwareReset ReadDevices ConnectionAttempts Wartość Numer Pin karty używanej w modemie. W przypadku, gdy na karcie wyłączone jest żądanie numeru Pin, pole to należy pozostawić niewypełnione. Zezwolenie na sprzętowy reset zasilania modemu. Opcja dostępna przy współpracy z modemami dostarczonymi przez ANT. 1 - włączone 0 - wyłączone Zezwolenie na automatyczny odczyt urządzeń dołączonych do odpowiednich kanałów modułu Modem po zestawieniu połączenia. 1 - włączone 0 - wyłączone Maksymalna ilość prób wykonania połączenia z danym numerem, w przypadku, gdy modem docelowy nie odbiera. ANT Sp z o.o. Strona 186

187 Disconnect MaxConnectionTime ConnectionRetryInterval ConnectionAttempts Hook Mode Remove Read folder Numbers Rozłączanie połączenia natychmiast po zakończeniu odpytywania podłączonego modułu komunikacji z urządzeniami. Opcja używana we współpracy z ReadDevices. 1 - włączone 0 - wyłączone Maksymalny czas trwania połączenia wyrażony w sekundach. Po upływie tego czasu połączenie jest bezwarunkowo przerywane. Opcja stanowi zabezpieczenie przed niekontrolowanym połączeniem lub zawieszeniem się modemu. Okres pomiędzy nieudaną próbą zestawienia połączenia, a próbą ponowną. Maksymalna ilość prób wykonania połączenia z danym numerem, w przypadku, gdy modem docelowy nie odbiera. Okres, co jaki sprawdzane jest, czy przyszły nowe wiadomości tekstowe, np. 10 s, 30 s, 1 m, etc. Tryb, w jakim odbierane i wysyłane będą wiadomości tekstowe. Dostępne opcje: Pdu, Txt Usuwanie wiadomości po ich odczytaniu i przekazaniu na kanał wyjściowy. 1 - włączone 0 - wyłączone Periodyczne, z okresem zależnym od opcji Hook, sprawdzanie, czy przyszły nowe wiadomości tekstowe. 1 - włączone 0 - wyłączone Zawiera definiowane przez użytkownika opcje konfiguracyjne typu string. Nazwa opcji jest opisową nazwą zdefiniowanego połączenia, zaś jej wartością jest numer telefonu, np. Tak zdefiniowane numery dostępne są na rozwijanej liście wyboru. Obsługa modułu Umieszczenie w konfiguracji Po dodaniu modułu z menu Exchange -> Serial, należy odpowiednio zmapować jego kanały. Kanał com_in łączymy z wyjściem z modułu SerialPort, kanał com_out z jego wejściem. Kanały modem_in i modem_out po zestawieniu połączenia stanowić będą kanał komunikacyjny, do którego można podłączyć np. moduł urządzenia i/lub terminal. ANT Sp z o.o. Strona 187

188 Aby wysyłać wiadomości SMS w trybie tekstowym, należy stworzyć kanał wejściowy typu string, którego nazwa to numerdocelowy_in, np _in. Tekst o dozwolonej długości wysłany na ten kanał zostanie dodany do kolejki wiadomości do wysłania. Kanał message_out należy zmapować z modułem obsługującym przychodzące wiadomości SMS. Konfiguracja Biorąc pod uwagę zastosowanie modułu i konfigurację, w jakiej ma pracować, należy skonfigurować jego parametry pracy. UWAGA!!! Błędne podanie numeru Pin spowodować może zablokowanie karty SIM Zestawianie połączeń Aby zestawić połączenie należy wybrać numer z rozwijanej listy i wcisnąć przycisk "Connect". Jeżeli wszystkie warunki do uzyskania połączenia zostały spełnione, moduł zestawi połączenie z wybranym numerem. Zasygnalizuje to odpowiedni stan opisowy modułu oraz zaświecenie się indykatora "online". Zarówno podczas zestawiania połączenia, jak i w czasie jego trwania operację można przerwać przyciskając przycisk "Abort". Po zestawieniu połączenia moduł Modem, w zależności od ustawienia opcji konfiguracyjnych, może zainicjować odpytywanie urządzenia przez dołączony moduł, a po zakończeniu rozłączyć połączenie lub je utrzymać. Aby zabezpieczyć modem przed niekontrolowanym utrzymaniem połączenia, a jednocześnie zapewnić ilość czasu wystarczającą do wymiany danych ze zdalnym urządzeniem, należy odpowiednio ustalić parametr MaxConnectionTime. Połączenia mogą być zestawiane nie tylko z poziomu GUI. Moduł udostępnia funkcję CallNumber, dzięki której można zestawić połączenie z poziomu zewnętrznego managera. Sygnalizacja połączenia jest taka sama, jak w przypadku wybierania numeru z rozwijanej listy. Obsługa wiadomości tekstowych Aby wysłać wiadomość tekstową pod numer zdefiniowany uprzednio w folderze "Numbers" konfiguracji modułu, należy wpisać w polu edycyjnym treść wiadomości, a następnie wcisnąć przycisk "Send". Wiadomość zostanie dodana do kolejki oczekujących na wysłanie. Kolejnym sposobem na wysłanie wiadomości SMS jest dostarczenie tekstu, który ma zostać wysłany, na kanał wejściowy z numerem telefonu w nazwie. Moduł Modem udostępnia funkcję sendsms, która pozwala na zakolejkowanie wiadomości do wysłania z zewnętrznego modułu skryptowego. Tylko przy użyciu tego sposobu możliwe jest wysyłanie wiadomości w trybie Pdu. ANT Sp z o.o. Strona 188

189 Odbieranie wiadomości może odbywać się synchronicznie, poprzez ustawienie opcji Read na 1 i zdefiniowanie okresu odpytywania w opcji Hook, albo asychronicznie, poprzez wywołanie z innego modułu skryptowego funkcji CheckSMS. Format wiadomości opuszczającej kanał message_out, w zależności od trybu pracy: - Txt: numer_telefonu;data,godzina tresc_wiadomosci - Pdu: tresc_wiadomosci Funkcje udostępniane przez moduł Modem CallNumber number Jeżeli modem jest wolny, inicjuje zestawienie połączenia z numerem number, podanym jako argument wywołania. Zwraca kod "calling", jeżeli połączenie zostało skierowane do wywołania lub "busy", jeżeli urządzenie jest zajęte obsługą innego połączenia, bądź jest niefunkcjonalne. AbortCurrentCall Przerywa aktualnie zestawione, bądź zestawiane połączenie. CheckModemState Zwraca kod odzwierciedlający aktualny stan modemu: "free", kiedy modem jest wolny, "connected", kiedy zestawione jest połączenie oraz "busy", gdy modem wykonuje jakieś działanie. CheckSMS Wymusza sprawdzenie, czy na modemie nie pojawiła się nowa wiadomość tekstowa. Jeżeli tak, zostanie ona wysłana na kanał message_out. SendSMS message Dodaje wiadomość do kolejki wiadomości wychodzących. Argument wejściowy różni się w zależności od tego, w jakim trybie obsługi wiadomości SMS znajduje się moduł. W trybie Txt jest to lista składająca się z dziewięciocyfrowego numeru telefonu oraz treści wiadomości. W trybie Pdu powinna być to gotowa do wysłania wiadomość. Zwraca kod "ok". Konfiguracje, w jakich pracować może moduł Dzięki szczegółowej konfiguracji oraz zwielokrotnionym metodom dostępu do głównych funkcjonalności, moduł Modem może znaleźć wiele różnych zastosowań, np. ANT Sp z o.o. Strona 189

190 1) Po podpięciu kanałów modem_in oraz modem_out do modułu SerialTerminal, wyłączeniu opcji automatycznego odpytywania urządzeń oraz ustawieniu odpowiednio długiego maksymalnego czasu połączenia otrzymujemy konfigurację do zdalnego debugowania urządzeń. Przy takim doborze ustawień użytkownik samodzielnie zestawia i rozłącza połączenia. 2) Wykorzystując zewnętrzny moduł managera korzystający z udostępnianych przez moduł Modem funkcji i uaktywniając funkcję automatycznego czytania urządzeń, zbudować można samodzielny system, z zadaną częstotliwością odpytujący zdalne urządzenie i wysyłający alarmowe SMSy do operatora systemu. ANT Sp z o.o. Strona 190

191 3) Stosując multipleksowanie kanałów modem_in i modem_out oraz nieco bardziej skomplikowany manager, zbudować można system, który przy pomocy jednego modemu odpytywać może wiele urządzeń, dostępnych pod różnymi numerami telefonów. Przykładowa konfiguracja W Menu Start -> ANT Studio -> ANT Exchange -> Examples znaleźć można dwie przykładowe konfiguracje, w jakich pracować może modem. 1. Terminal over Modem ANT Sp z o.o. Strona 191

192 Jest to ilustracja pierwszego z opisanych wyżej przypadków, kiedy to moduł Modem znajdzie zastosowanie. Konfiguracja zawiera moduł portu szeregowego, moduł Modem oraz SerialTerminal, który służy do ręcznej edycji wysyłanych do zdalnego urządzenia ramek. Połączenia są zestawiane i zrywane przez użytkownika przy pomocy listy wyboru i przycisku w graficznym interfejsie. 2. Modbus over Modem ANT Sp z o.o. Strona 192

193 W tej konfiguracji użytkownik po wybraniu odpowiedniego numeru i wciśnięciu przycisku Connect sprawi, iż moduł Modem wykona połączenie pod żądany numer, a po jego zestawieniu wymusi odczyt zdalnego urządzenia. Po zakończeniu wymiany danych przez moduł sprzętowy i urządzenie, połączenie zostaje przerwane. W tym celu ustawione są w drzewie konfiguracyjnym odpowiednie opcje. SerialTerminal w tej konfiguracji pełni jedynie rolę obserwacyjną, jego wyjście nie jest zmapowane z żadnym z kanałów. Warto zwrócić uwagę, iż moduł ModbusMaster ma każdy IOBlock ustawiony w trybie "callback", czyli nie odpytuje urządzenia okresowo, a jedynie na zewnętrzne wymuszenie, za które w tym przypadku odpowiada moduł Modem. ANT Sp z o.o. Strona 193

194 ModemScheduler Moduł ModemSheduler służy do automatycznego zestawiania połączeń modemowych i obsługi transferu danych między urządzeniami, a systemem. Główne cechy funkcjonalne modułu po nawiązaniu połączenia automatycznie dokonuje odpytania zdalnego urządzenia, a po ukończonej wymianie danych zrywa połączenie może współpracować z więcej niż jednym modemem jednocześnie. Pozwala to na równoczesną wymianę danych z kilkoma urządzeniami zdalnymi. Dzięki zwielokrotnieniu ilości modemów moduł może zignorować niedziałające z różnych przyczyn urządzenie i przekazać wykonanie połączenia do modemu działającego. zestawienie połączenia może być wykonane na dwa sposoby: jako zdarzenie czasowe przypisane do jednego z systemowych Hooków lub wywołanie z modułu zewnętrznego. Wywołanie synchroniczne i asynchroniczne mają konfigurowalne priorytety. możliwa jest wizualna kontrola zestawiania połączeń i dokonywania odczytów Ustawienia konfiguracyjne ANT Sp z o.o. Strona 194

195 Parametr HardwareReset MaxConnectionTime ConnectionRetryInterval ConnectionAttempts folder Priorities Wartość Zezwolenie na sprzętowy reset zasilania modemu. Opcja dostępna przy współpracy z modemami dostarczonymi przez ANT. 1 - włączone 0 - wyłączone Maksymalny czas trwania połączenia wyrażony w sekundach. Po upływie tego czasu połączenie jest bezwarunkowo przerywane. Opcja stanowi zabezpieczenie przed niekontrolowanym połączeniem lub zawieszeniem się modemu. Okres pomiędzy nieudaną próbą zestawienia połączenia, a próbą ponowną. Maksymalna ilość prób wykonania połączenia z danym numerem, w przypadku, gdy modem docelowy nie odbiera. Wyższa wartość w jednym z ustawień Hook lub External daje przyporządkowanemu mu wywołaniu wyższy priorytet. ANT Sp z o.o. Strona 195

196 Obsługa modułu Umieszczenie w konfiguracji Po dodaniu modułu z menu Exchange -> Serial, należy odpowiednio zmapować jego kanały. Kanały #ComX_in w ilości odpowiadającej fizycznie dostępnej liczbie modemów łączymy z wyjściami odpowiadających im modułów SerialPort, a kanały #ComX_out z wejściami. Kanały, które połączone zostaną z modułami urządzeń, nazwane powinny zostać Nazwa_nrTelefonu_in oraz Nazwa_nrTelefonu_out, gdzie Nazwa ma być dowolną zrozumiałą dla użytkownika nazwą urządzenia w systemie, a nrtelefonu dziewięciocyfrowym numerem pod którym to urządzenie jest dostępne. Dla celów kontroli poprawności zestawiania połączeń i odczytu urządzeń można umieścić w wizualizacji tabelę statusów. Dokonuje się tego poprzez ustawienie opcji Embedded modułu na On i przeciągnięcie go na wolne miejsce w oknie konfiguracji. Połączenia, których zestawianie się już zakończyło ze skutkiem pozytywnym lub negatywnym, można usunąć z tabeli poprzez wciśnięcie przycisku "OK" w kolumnie "Accept". ANT Sp z o.o. Strona 196

197 Konfiguracja Konfigurację modułu obejmuje ustalenie parametrów w drzewku konfiguracyjnym oraz przypisanie modulom komunikacyjnym odpowiedniego systemowego Hooka, np. Użytkownik tworzy zdarzenie systemowe - Hook uruchamiany o godzinie W komentarzu kanału danych urządzenia, które ma być odczytywane o zadanym czasie, wpisuje się nazwę zdarzenia czasowego Funkcje udostępniane przez moduł ModemScheduler connectnumber number Dodaje na pozycji wynikającej ze skonfigurowanych priorytetów do kolejki nowe połączenie do numeru number. W ten sposób można wywołać jedynie połączenie z numerem już zdefiniowanym w managerze poprzez odpowiednie nazwanie kanałów. ANT Sp z o.o. Strona 197

198 Sender Moduł Sender służy do wysyłania komunikatów alarmowych od systemu za pomocą wiadomości . Zdarzeniami powodującymi wysłanie wiadomości jest przesłanie jej treści na kanał wejściowy modułu lub odpowiednio długo utrzymujący się na wejściu modułu stan wysoki lub niski. Generalne ustawienia konfiguracyjne Parametr Password User SmtpPort SmtpServer To From Wartość Hasło serwera poczty wychodzącej Nazwa konta na serwerze poczty wychodzącej Port, po którym moduł będzie łączył się z serwerem pocztowym (standardowo 25) Adres serwera pocztowego Adresat wiadomości zapisany w formacie: Nazwa Adresata <nazwa@domena> Nadawca wiadomości zapisany w formacie: Nazwa Nadawcy <nazwa@domena> ANT Sp z o.o. Strona 198

199 Obsługa modułu Umieszczenie w konfiguracji Moduł dodany do konfiguracji zawiera dwa kanały wejściowe: jeden typu tekstowego (alarm_in), a drugi typu numerycznego (status_in). Po dodaniu modułu należy dodać właściwą ilość kanałów wejściowych odpowiednich typów tak, by dla każdego monitorowanego kanału _status_out modułów urządzeń przypadał jeden wejściowy kanał typu integer lub double, a dla każdego kanału tekstowego (np. wyjścia modułu alarmów) jeden kanał typu string. W konfiguracji może znaleźć się dowolna ilość kanałów każdego z typów, również zero. Predefiniowane w module kanały alarm_in i status_in należy potraktować jako wzorcowe, po stworzeniu własnych można je usunąć. Konfiguracja Każdy kanał wejściowy modułu Sender musi posiadać własny podfolder z konfiguracją, którego nazwę tworzy się poprzez usunięcie przyrostka _in z nazwy kanału. Najprościej stworzyć taki podfolder kopiując istniejący i zmieniając jego nazwę na odpowiednią. Jedyną opcją konfiguracyjną kanałów typu string jest temat wiadomości (Subject). Treścią wiadomości jest komunikat, który odebrano na tekstowym kanale wejściowym. Kanały numerycznych typów oprócz ustawienia Subject mają następujące opcje konfiguracyjne: Parametr HighStateDelay HighStateMessage LowStateDelay LowStateMessage Wartość Nieprzerwany czas trwania stanu wysokiego na wejściu, po którym wysłana zostanie wiadomość Treść wiadomości wysyłanej po przejściu wejścia w stan wysoki Nieprzerwany czas trwania stanu niskiego na wejściu, po którym wysłana zostanie wiadomość Treść wiadomości wysyłanej po przejściu wejścia w stan niski ANT Sp z o.o. Strona 199

200 SMSSender Moduł SMSSender służy do wysyłania komunikatów alarmowych od systemu za pomocą wiadomości SMS. Zdarzeniami powodującymi wysłanie wiadomości jest przesłanie jej treści na kanał wejściowy modułu lub odpowiednio długo utrzymujący się na wejściu modułu stan wysoki lub niski. Generalne ustawienia konfiguracyjne Parametr RecipientNumber ResetWatchdog Wartość 9-cyfrowy numer telefonu odbiorcy Zezwolenie na reset watchdoga modemu. Opcja dostępna przy współpracy z modemami dostarczonymi przez ANT. 1 - włączone 0 - wyłączone Obsługa modułu Umieszczenie w konfiguracji Moduł SMSSender należy połączyć z modułem SerialPort mapując odpowiednio kanały com_in oraz com_out. Należy wybrać port szeregowy, do którego fizycznie dołączony jest modem GSM. Moduł dodany do konfiguracji zawiera dwa kanały wejściowe służące do generacji wiadomości alarmowych: jeden typu tekstowego (alarm_in), a drugi typu numerycznego (status_in). Po ANT Sp z o.o. Strona 200

201 dodaniu modułu należy dodać właściwą ilość kanałów wejściowych odpowiednich typów tak, by dla każdego monitorowanego kanału _status_out modułów urządzeń przypadał jeden wejściowy kanał typu integer lub double, a dla każdego kanału tekstowego (np. wyjścia modułu alarmów) jeden kanał typu string. W konfiguracji może znaleźć się dowolna ilość kanałów każdego z typów, również zero. Predefiniowane w module kanały alarm_in i status_in należy potraktować jako wzorcowe, po stworzeniu własnych można je usunąć. Konfiguracja Każdy kanał wejściowy typu integer lub double modułu SMSSender musi posiadać własny podfolder z konfiguracją, którego nazwę tworzy się poprzez usunięcie przyrostka _in z nazwy kanału. Najprościej stworzyć taki podfolder kopiując istniejący i zmieniając jego nazwę na odpowiednią. Kanały wejściowe typu string nie mają opcji konfiguracyjnych. Treścią wiadomości jest komunikat, który odebrano na tekstowym kanale wejściowym. Kanały numerycznych typów mają następujące opcje konfiguracyjne: Parametr HighStateDelay HighStateMessage LowStateDelay LowStateMessage Wartość Nieprzerwany czas trwania stanu wysokiego na wejściu, po którym wysłana zostanie wiadomość Treść wiadomości wysyłanej po przejściu wejścia w stan wysoki Nieprzerwany czas trwania stanu niskiego na wejściu, po którym wysłana zostanie wiadomość Treść wiadomości wysyłanej po przejściu wejścia w stan niski ANT Sp z o.o. Strona 201

202 Port szeregowy, IPSocket Pakiet Moduł Opis Serial Serial Port moduł wymiany danych po porcie szeregowym Serial Virtual Serial Port wirtualny port szeregowy Serial IPSocket moduł wymiany danych przez socket TCP/IP Serial Terminal terminal komunikacji szeregowej Serial ModemTk moduł wymiany danych przez połączenie wdzwaniane Serial ConnectionManagerTk manager połączeń modemowych SerialPort Moduł SerialPort umożliwia wymianę danych ze standardowym portem szeregowym. ANT Sp z o.o. Strona 202

203 Ustawienia konfiguracyjne Active Parametr Wartość moduł wyłączony AutoReset AutoResetDelay moduł włączony nieaktywny aktywny czas pomiędzy kolejnymi resetami portu ANT Sp z o.o. Strona 203

204 BaudRate prędkość transmisji w b/s Byte size DtrControl InputBufferSize MaxTimeBetweenChars Name OutputBufferSize Parity ParityType ilość bitów danych kontrola przepływu wielkość bufora danych wejściowych limit czasu pomiędzy kolejnymi znakami w transmisji nazwa modułu w systemie wielkość bufora danych wyjściowych sprawdzanie parzystości nie aktywne aktywne PortName RtsControl StopBits TimeOutConstant TimeOutMultiplier Type rodzaj kontroli parzystości nazwa portu com np. com1, com2...com256 kontrola RTS nie aktywna aktywna ilość bitów stopu stały cześć odstępu czasu pomiędzy kolejnymi ramkami danych mnożnik długości czasu oczekiwana na ramkę i długości bufora wejściowego typ modułu Czas oczekiwania na ramkę = TimeOutConstant + TimeOutMultiplier x InputBufferSize Maksymalna prędkość odpowiedzi portu: ANT Sp z o.o. Strona 204

205 MaxTimeBetweenChars 1 TimeOutConstant 0 TimeOutMultiplier 0 Takie ustawienie portu powoduje praktycznie natchmiastowe przesłanie ramki do kanału systemu. Takie ustawienie jest kosztowne dla systemu (zwiększa użycie CPU) oraz nieefektywne, ponieważ każda, nawet kilkuznakowa ramka jest przesyłana do systemu w kolejnych fragmentach. Optymalne ustawienia Ustawienia portu powinny zostać oparte na szybkości odpowiedzi urządzenia, prędkości transmisji oraz sposobu przesłania ramki zwrotnej MaxTimeBetweenChars ok 50 TimeOutConstant ok 250 TimeOutMultiplier 0 TimeOutConstant ustawiamy większy gdy spodziewamy się długich ramek zwrotnych. Zaleca się każdorazowo wykonać próby z urzadzeniem. ANT Sp z o.o. Strona 205

206 Virtual Serial Port Moduł Virtual Serial Port tworzy widoczny w systemie wirtualny port szeregowy, po którym mogą być wymieniane ramki komunikacyjne obsługiwane przez inne aplikacje. Zastosowanie wirtualnego portu szeregowego umożliwia udostępnienie modemów GPRS lub soketów IP innym programom typu SCADA. Ustawienia konfiguracyjne Active Parametr Wartość moduł wyłączony Name PortName moduł włączony nazwa modułu w systemie nazwa tworzonego wirtualnego portu szeregowego np. com1, com2...com256 ANT Sp z o.o. Strona 206

207 IPSocket Moduł umożliwia tworzenie połączeń opartych na protokole TCP/IP pomiędzy komputerami z sieci. Za jego pomocą można łatwo udostępnić kanały systemu pomiędzy aplikacjami pracującymi na komputerach połączonych w sieć. Moduł może pracować w trzech trybach: TCPServer, TCPClient oraz UDP, różniących się opcjami konfiguracyjnymi oraz działaniem. TCPServer W tym trybie należy uzupełnić adres IP lokalnego komputera, numer portu oraz rozmiary buforów wejściowego i wyjściowego. Moduł nasłuchuje połączeń przychodzących na zdefiniowanym porcie. TCPClient ANT Sp z o.o. Strona 207

208 W tym trybie należy uzupełnić adres IP komputera zdalnego, numer portu oraz rozmiary buforów wejściowego i wyjściowego. Moduł próbuje nawiązać połączenie ze zdalnym serwerem o zadanym IP na zadanym porcie. UDP W trybie UDP należy uzupełnić zarówno dane komputera lokalnego jak i zdalnego. Moduł zestawia połączenie pracujące z protokołem UDP. Konfigurując dwa moduły IPSocket systemów pracujących na dwóch komputerach, wskazując im wzajemne nazwy lub adresy IP, oraz wybierając ten sam port dla połączenia uzyskuje się połączenie, w którym dane z kanału wejściowego input udostępniane są w drugim programie, w kanale wyjściowym output. W ten sposób można transmitować protokół Modbus, lub jakikolwiek inny, w tym też własny, zaimplementowany w skrypcie. ANT Sp z o.o. Strona 208

209 MultiplexedSocket Moduł MultiplexedSocket służy do zestawiania połączeń z wieloma zdalnymi hostami, w przeciwieństwie do modułu IPSocket, który akceptuje pojedyncze połączenia. MultiplexedSocket jest modułem typu serwer, który na zdefiniowanym przez użytkownika porcie nasłuchuje połączeń. Po zestawieniu połączenia i przesłaniu pierwszej ramki protokołu, moduł zapamiętuje jaki adres i port przypisany jest do urządzenia o danym id. W ten sposób tworzy się swego rodzaju tablica routingu, a ramki z odpowiedzią kierowane są z powrotem do właściwego kanału komunikacyjnego. Ponieważ moduł ma charakter uniwersalny, do Użytkownika należy wypełnienie procedur getidfromqueryframe oraz getidfromqueryframe, które z ramek przesyłanego protokołu wydobędą daną identyfikującą urządzenie. Ustawienia konfiguracyjne Parametr ExpirationPeriod ListeningPort Type Wartość Długość okresu bez wymiany danych, po którym przedawnia się wpis w tablicy routingu dotyczący kanału o danym id oraz kanał jest resetowany. Port, na którym moduł czeka na połączenia od zdalnych peerów. Typ otwieranego gniazda sieciowego. Dostępne wartości to TCP oraz UDP Moduł MultiplexedSocket należy połączyć z modułem komunikacyjnym pracującym jako slave (np. SSlave, ModbusSlave), mapując kanały input_in oraz output_out. ANT Sp z o.o. Strona 209

210 Przykladowe procedury wydobywające id urządzenia z ramki zapytania i odpowiedzi protokolu Modbus: proc getidfromqueryframe { frame_data } { return [string index $frame_data 0] } proc getidfromreplyframe { frame_data } { return [string index $frame_data 0] } Powyższe procedury zwracają pierwszy bajt ramki zapytania oraz ramki odpowiedzi, które według specyfikacji protokolu Modbus oznaczają adres urządzenia. ANT Sp z o.o. Strona 210

211 Terminal Terminal umożliwia podgląd oraz wysyłanie danych na połączony z modułem port szeregowy lub socket. Poniższy przykład pokazuje śledzoną w terminalu wymianę danych w protokole Modbus. Dla rozróżnienia komunikatów przedstawiane są one w konfigurowalnych kolorach. Terminal umieszcza w następnej lini każdy następny komunikat. Jeśli więc ramka danych przyszła w 2 fragmentach to jest ona pokazana w 2 liniach. Przejście do następnej lini następuje również wtedy, gdy przekroczona jest konfigurowalna ilość znaków w linii. Ustawienia konfiguracyjne: ANT Sp z o.o. Strona 211

212 Active Parametr Wartość moduł wyłączony CharactersPerLine Font LinesInBuffer Name Responses SniffedMessages TypedMessages moduł włączony ilość znaków umieszczanych w linii wybór czcionki ilość lini w buforze terminala nazwa modułu kolor odpowiedzi - danych połączonych do kanału input kolor podglądanyc danych - połączonych do kanału input_sniffer kolor danych wpisanych ręcznie Podłączenie terminala Połączenie terminala bezpośrednio z portem może odbyć się przez przeciągnięcie portu lub terminala na siebie w drzewku konfiguracyjnym. Wtedy zostaną ze sobą połączone kanały input i output. Możliwe jest również podłączenie terminala równolegle do zestawionego wcześniej połączenia portu z innym modułem np. COM i ModbusMaster. W takim wypadku należy wskazać ręcznie mapowanie kanałów input i input_snifer, wskazując wybrane do podglądu kanały wymiany danych. Łącząc wejście i wyjście portu z kanałem input i input_snifer uzyskuje się podgląd transmisji. ANT Sp z o.o. Strona 212

213 Pisanie ręczne do portu Ten tryb wymaga połączenia kanału output terminala z wybranym portem. Najszybciej można to wykonać przeciągając terminal na wybrany moduł portu. W dolnej części terminala znajduje się pole tekstowe które umożliwa wpisanie ręczne komunikatu, który zostanie wysłany na port po zaakceptowaniu klawiszem ENTER. Wpisane ciągi znaków i liczb są zamieniane na odpowiadające im kody ASCII i w takie formie są wysyłane na port. Wciśnięcie lewego klawisza Ctrl i wpisanie liczby hex umożliwia bezpośrednie wysłanie jej wartości. Terminal wysyła liczby 8 bitowe. Liczby takie zapisane są w < >. Uwaga, wartości cyfrowe należy wprowadzać w głównej części klawiatury. Wpisanie znaków z klawiatury numerycznej powoduje wpisanie złej wartości. Przykłady: wpisane znaki reprezentacja w terminalu wysłane kolejne bajty ala c Ctrl-1 Ctrl-fe <01> <fe> 1 fe ANT Sp z o.o. Strona 213

214 TerminalTk Jest to bardziej rozbudowana wersja terminala. Umożliwia obserwację kilku kanałów wejściowych o edytowalnych kolorach jednocześnie. Można oglądać wymianę danych wraz z chwilą ich wystąpienia w postaci heksadecymalnej oraz po zdekodowaniu do znaków ASCII. Panele wyświetlające dane w określonym formacie są włączane i wyłączane poprzez zaznaczenie odpowiednich pól. ANT Sp z o.o. Strona 214

215 Zadawanie danych z terminala wymaga wybrania sposobu wprowadzania znaków. Można zadawać dane w postaci heksadecymalnej lub ASCII. Dane zostaną wystawione na kanał wybrany z dostępnych kanałów wyjściowych ("terminal_out" na przykładowym zrzucie ekranu). Jeżeli zachodzi taka potrzeba, terminal może automatycznie uzupełnić ramkę wychodzącą o odpowiednią ilość bajtów CRC. Zawartość okien terminala można zapisać do pliku wciskając przycisk "dump". ANT Sp z o.o. Strona 215

216 Skrypty ScriptedModule ScriptedModule to moduł skryptu języka TCL/Tk umożliwiający przetwarzanie danych przesyłanych kanałami wejściowymi i wyjściowymi. Ustawienia konfiguracyjne modułu Parametr Active Embedded Name graficznego nazwa modułu Wartość moduł wyłączony moduł włączony moduł nie tworzy okna interfejsu moduł tworzy okno Moduły skryptowe mogą posiadać interfejs graficzny podobnie jak wbudowane w system kontrolki graficzne. Po zaznaczeniu Embedded na On, moduł można przeciągnąć myszką na okno wizualizacji. Jeśli pisany przez nas moduł nie będzie posiadał interfejsu graficznego to należy wybrać Embedded Off. Plik z programem TCL/Tk wskazuje się w konfiguracji ModuleScript - SourcePath. ANT Sp z o.o. Strona 216

217 Struktura pliku programu modułu W folderze Configuration można zbudować własną strukturę konfiguracyjną. Przykładem modułu skryptowego, który posiada interfejs jest dostępna w menu programu kontrolka PieChart. Posiada ona również własną konfigurację. Moduły skryptowe pozwalają użytkownikowi na rozszerzanie systemu o nowe w pełni funkcjonalne moduły oraz zwiększenie elastyczności rozwiązań. ANT Sp z o.o. Strona 217

218 Do tworzenia skryptów wykorzystano język TCL. TCL (Tool Command Language) jest językiem stworzonym przez profesora Johna Ousterhout a z uniwersytetu Berkeley w 1989 roku. Od tego czasu TCL stał się jednym z najbardziej popularnych języków skryptowych. Jego główne zalety to: Łatwość opanowania (bardzo prosta gramatyka). Duża siła : umożliwia szybkie tworzenie rozwiązań skomplikowanych problemów. Wiele dostępnych bibliotek do praktycznie rzecz biorąc każdego możliwego zastosowania. Na szczególną uwagę zasługuje biblioteka TK (wraz z rozszerzeniami), pozwalająca na tworzenie aplikacji z graficznym interfejsem użytkownika (GUI). Przejrzysta i wyczerpująca dokumentacja. Użytkownicy TCL tworzą dużą społeczność w sieci Internet, co w razie potrzeby ułatwia skorzystanie z fachowej pomocy. Założono, że czytelnik niniejszego dokumentu jest zaznajomiony z podstawami programowania w TCL. W razie potrzeby należy skorzystać ze strony domowej projektu TCL: Podstawowe komendy wbudowane w języku TCL/TK są dostępne automatycznie w systemie. Niezależnie od tego, podczas startu skryptu skanowany jest katalog ScriptLibrary i jego podkatalogi, w poszukiwaniu ewentualnych pakietów TCL/TK. Każdy znaleziony tam pakiet może być włączony do skryptu poleceniem TCL: package require nazwa_pakietu W obecnej chwili w katalogu ScriptLibrary instalowane są następujące pakiety: Ant-1.0 BWidget itcl3.3 itk3.3 iwidgets4.0.2 Tcl8.4 Tk8.4 tcllib-1.7 tcom tklib0.2 Tktable2.8 Użytkownik może z łatwością dołączyć dowolny pakiet, po prostu kopiując jego pliki do podkatalogu katalogu ScriptLibrary. Taki pakiet staje się automatycznie dostępny w skryptach systemu. ANT Sp z o.o. Strona 218

219 Struktura skryptu Moduł skryptowy składa się z czterech podstawowych funkcji: startup, shutdown, notifydata oraz timerhook. Funkcje te są automatycznie wywoływane przez system. Moduł musi zawierać wszystkie cztery funkcje jeśli któraś z nich nie jest używana, może pozostać pusta, lecz należy ją zdefiniować. startup Funkcja bezargumentowa. Jest wywoływana podczas włączania modułu. Jej zadaniem jest przygotowanie modułu do pracy: zainicjowanie struktur danych, zainstalowanie procedur obsługi zdarzeń czasowych (timer hooks), skonfigurowanie kanałów wejściowych, tworzenie okien itd. shutdown Funkcja bezargumentowa. Wywoływana podczas wyłączania modułu (mowa tutaj o poprawnym wyłączaniu, w razie powstania wyjątku (exception) lub błędu składniowego w skrypcie nie dochodzi do wywołania). Kod umieszczony w funkcji shutdown powinien zamykać funkcjonowanie modułu. notifydata channel_name Funkcja ta wołana jest wtedy, gdy do któregoś z kanałów wejściowych modułu dotrą nowe dane. Argumentem funkcji jest nazwa tego kanału. Typowa postać funkcji notifydata zajmuje się odczytaniem i przetwarzaniem tych danych. timerhook hook_interval Funkcja wywoływana przez system obsługi czasu. Jedynym argumentem funkcji jest interwał zdarzenia czasowego. System obsługuje następujące interwały: 1/100 s, 1/10 s, 1 s, 2 s, 5 s, 10 s, 30 s, 1 m. Użytkownik może wykorzystać te zdarzenia w dowolnych kombinacjach. Należy jedynie pamiętać, że im większa częstotliwość tym większe obciążenie systemu. Interwały i okresy zdarzeń czasowych Interwał Okres 1/100 s Jedna setna sekundy 1/10 s Jedna dziesiąta sekundy 1 s Sekunda 2 s Dwie sekundy 5 s Pięć sekund 10 s Dziesięć sekund 30 s Trzydzieści sekund 1 m Jedna minuta Dodatkowo zdefiniowane mogą zostać jeszcze dwie funkcje: exposure i initialize. Są one opcjonalne i nie muszą występować w skrypcie. ANT Sp z o.o. Strona 219

220 exposure flag Funkcja wywoływana w dwóch sytuacjach: przy włączaniu modułu po procedurze startup i w sytuacji zmiany widocznego okna. Argumentem funkcji jest flaga informująca o tym, czy moduł znajduje się na widocznym oknie (flag = 1) czy na niewidocznym (flag = 0). initialize Funkcja wywoływana po startup (lub exposure, jeśli zdefiniowana) podczas włączania modułu. Podobnie jak startup słuzy do zainicjowania pracy modułu, daje jednak większe mozliwości dostępu do konfiguracji. Przykładowy (pusty) moduł skryptowy Tak może wyglądać najprostszy moduł skryptowy systemu: proc startup { } { } proc shutdown { } { } proc notifydata { channel_name } { } proc timerhook { hook_interval } { } # opcjonalne proc exposure { flag } { } } proc initialize { } { ANT Sp z o.o. Strona 220

221 Grafika w skryptach Jedną z najbardziej użytecznych i docenianych możliwości języka TCL jest łatwość tworzenia oprogramowania z graficznym interfejsem użytkownika (GUI) przy użyciu biblioteki TK. Z tego powodu, język bywa nawet nazywany TCL/TK. Rzeczywiście, nie sposób przecenić możliwości stworzenia aplikacji graficznej przy pomocy kilkudziesięciu linii języka skryptowego (dla porównania, najprostsze aplikacje graficzne w języku C zawierają tysiące linii kodu, wymagają czasochłonnej kompilacji i są znacznie mniej odporne na pomyłki programisty). Moduły skryptowe w systemie mają wbudowaną możliwość korzystania z TK. Dlatego też każdy z modułów skryptowych posiada okno, tak jak wszystkie inne moduły graficzne systemu. Oczywiście, nie zawsze istnieje potrzeba korzystania z tego okna: skrypt może być zupełnie pozbawiony możliwości graficznych lub też ograniczać się do wykorzystania okienek niezależnych od okien systemu. W tym celu używa się ustawienia Embedded w konfiguracji skryptu. ON oznacza skrypt wyposażony w okno i osadzony w zakładce systemu. OFF nie tworzy okna dla skryptu. Pisanie aplikacji wykorzystujących TK w systemie jest identyczne do tworzenia takich aplikacji przy użyciu standardowego interpretera TCL/TK, programu wish. Programowanie przy użyciu TK jest zbyt złożone jak na rozmiary niniejszego opracowania, poniższy skrypt zamieszczono jedynie w charakterze prostego przykładu. proc startup {} { button.button -text "Sample button" -command on_button pack.button -expand 1 -fill both } proc shutdown {} { tk_messagebox -type ok -message "Bye bye" -title "Goodbye" } proc notifydata { channel_name } { } proc timerhook { hook_name } { } proc on_button {} { tk_messagebox -type ok -message "Button pressed" \ -title "Event" } ANT Sp z o.o. Strona 221

222 AutomationToolbox Automation Toolbox zestaw przykładowych modułów skryptowych stosowanych w systemach automatyki. Sumowanie danych przychodzących na kanał, odejmowanie wartości, wykonywanie na zdefiniowanych operacji arytmetycznych, liczenie całki, moduły regulatorów. skrtypty tcl-owe modułów znajdują sięc: ANTStudio\ScriptedModules\AutomationToolbox 2StateController- regulator 2 położeniowy z histerezą kanały wejściowe: hyst_in - wartość histerezy, hyst*sp SP_in- wartość zadana Value_in - wartość mierzona Configuration: Hysteresis -wartość histerezy hyst*sp, (0.1*SP) SP - wartość zadana jeżeli kanały wejściowe SP_in i hyst_in nie są zmapowane, parametry pracy brane są z ustawień konfiguracyjnych kanały wyjściowe: output_out - wartość sterowania 0, 1 3StateController- regulator 3 położeniowy z histerezą kanały wejściowe: OFF_in -wartość zadana wyłączenia/ załączenia ON_in- wartość zadana wyłączenia/ załączenia Value_in - wartość mierzona Configuration: Hysteresis -wartość histerezy hyst* ON /OFF, (0.1*ON/ OFF) ON, OFF - wartość załączenia, wyłączenia jeżeli kanały wejściowe ON_in OFF_in hyst_in nie są zmapowane, parametry pracy brane są z ustawień konfiguracyjnych kanały wyjściowe: output_out - wartość sterowania Jeżeli:ON <= OFF jeżeli value <= ON+(ON*hist) sterowanie = 1 jeżeli value >= OFF-(OFF*hist) sterowanie = 0 ANT Sp z o.o. Strona 222

223 Jeżeli ON>OFF jeżeli value >= ON-(ON*hist) sterowanie = 1 jeżeli value <= OFF+(OFF*hist) sterowanie = 0 PID- regulator PID kanały wejściowe: K_in -wzmocnienie Ti_in - stała całkowania Td_in -stała różniczkowania SP_in- wartość zadana Value_in - wartość mierzona Configuration: K -wzmocnienie Tin - stała całkowania Td -stała różniczkowania Umax - górne ograniczenie sterowania Umin- dolne ograniczenie sterowania jeżeli kanały wejściowe nie są zmapowane, parametry pracy brane są z ustawień konfiguracyjnych kanały wyjściowe: output_out - wartość sterowania Filter- filtr cyfrowy filtr oblicza wartość wystawianą na kanał output na podstawie wyniku operacji arytnetycznych monżenie sumowanie kolejnych próbek przychodzących na kanał x_in output = a*x+a1*x1+a2*x2+a3*x3 gdzie x to najnowsza próbka Integrator- całkowanie kanały wejściowe: x_in- wartość chwilowa x0_in - wartość początkowa Configuration: dt - podstawa czasu całkowania ( sec,minute,hour) Kanały wyjściowe: output_out wartość całki ANT Sp z o.o. Strona 223

224 Expr - wykonywanie zdefiniowanych działań matematycznych na danych z kanałów wejściowych Configuration: Expr - podajemy formułe według której ma być obliczona wartość na podstawie danych wejściowych: formułę podajemy $ przed nazwą panału $nazwa_kanału np 100+$a_in-$b_in-3*$x_in+(20*$a_in) wynik tej operacji zostanie ustawiony na kanale wyjściowym output_out Sub - odejmuje warości z kanałów wejściowych Configuration: Expr - podajemy formułe odejmowania $nazwa_kanału np $a_in - $b-in wynik tej operacji zostanie ustawiony na kanale wyjściowym output_out Sum -sumowanie wartości przuchodzących na nanały wejściowe Moduł ten sumuje dane z dowolnej ilości kanałów wejściowych Configuration: NewData: czekaj na nowe dane: tak- 1, czekamy aż na wszyskie kanały przyjdą nowe wartości i dopiero wtedy je sumujemy nie- 0, sumujemy gdy na kanał dowolny przyjdą dane ANT Sp z o.o. Strona 224

225 Funkcje API Kanały (channels) są najprostszą i najczęściej wykorzystywaną metodą komunikacji pomiędzy modułami systemu. Moduły nie działają w izolacji: siłą systemu jest możliwość elastycznego łączenia różnych modułów. Niniejszy rozdział opisuje, w jaki sposób moduł skryptowy wymienia dane z innymi modułami poprzez kanały. Jak wiadomo, w systemie występują dwa rodzaje kanałów: wejściowe (input) i wyjściowe (output). Moduł otrzymuje dane wysłane z innych modułów poprzez swoje kanały wejściowe. Do wysyłania danych dalej używa kanałów wyjściowych. Moduł skryptowy może pobrać listę nazw kanałów (odpowiednio wejściowych i wyjściowych) dzięki funkcjom antgetinputchannels oraz antgetoutputchannels. Kanały wejściowe posiadają bufory, których zadaniem jest przechowywanie nadesłanych danych, dopóki nie zostaną one przetworzone przez moduł. Aby uniknąć sytuacji, w której istniejący w module, lecz nie obsługiwany przez niego kanał zbiera dane bez końca, przeciążając tym samym system, domyślna długość tych buforów wynosi zero. Moduł może wskazać systemowi dane, z których kanałów wejściowych ma zamiar wykorzystywać dzięki funkcji antsetchannelcontrol. Dane umieszczone w buforze kanału wejściowego są dostępne dla skryptu dzięki funkcjom antgetchannelvaluescount oraz antgetchannelvalues. Jeśli przetworzone dane nie są już potrzebne, należy je usunąć przy użyciu funkcji antclearchannelvalues. Kanały wyjściowe nie posiadają bufora: informację można jedynie wysłać lub nie, po wysłaniu staje się niedostępna dla wysyłającego. Kanały w systemie służą do przesyłania informacji różnych typów: liczb całkowitych (byte, integer), liczb zmiennopozycyjnych (float, double), strumieni bajtowych (raw), łańcuchów tekstowych (string), czasu (time) oraz informacji z baz danych SQL (sql_query, sql_result). W zależności od typu kanału zmienia się format danych przekazywanych z i do funkcji obsługujących kanały wejściowe i wyjściowe. Opisują to tabele. Funkcja antclearchannelvalues antgetchannelvaluescount antsetchannelvalues antgetchannelvalues antgetoutputchannels antgetinputchannels antgetchanneltype antsetchannelcontrol Krótki opis czyści bufor danych kanału wejściowego zwraca rozmiar bufora danych ustawia wartości kanału wyjściowego pobiera wartości kanału wejściowego zwraca ilość kanałów wyjściowych zwraca ilość kanałów wejściowych zwraca typ kanału ustawia zachowanie kanału wejściowego Przykład odczyt Przykład wysyłanie ANT Sp z o.o. Strona 225

226 Funkcje obsługi kanałów antclearchannelvalues antclearchannelvalues channel_name?number_values? Funkcja służy do czyszczenia bufora kanału wejściowego. Użyta bez argumentu czyści cały bufor. Jeśli jest użyta z argumentem, powinna nim być ilość elementów do usunięcia. Elementy są usuwane w kolejności od najstarszego. Przykład: Jeżeli na kanale wejściowym mamy więcej niż 3 próbki usuwamy najstarsze, a 3 najnowsze przypisujemy do zmiennych D1 D2 D3 proc notifydata { channel_name } { set count [ antgetchannelvaluescount $channel_name ] if { 3 > $count } { antlog " ValuesCount = $count " return } set to_clear [ expr $count - 3 ] antclearchannelvalues $channel_name $to_clear set D1 [ lindex [ antgetchannelvalues $channel_name ] 0] set D2 [ lindex [ antgetchannelvalues $channel_name ] 1] set D3 [ lindex [ antgetchannelvalues $channel_name ] 2] antlog " D1= $D1 D2=$D2 D3=$D3 " } wróć do indeksu ANT Sp z o.o. Strona 226

227 antgetchannelvaluescount antgetchannelvaluescount channel_name Zwraca (jako liczbę stałoprzecinkową) rozmiar bufora kanału wejściowego Przykład: Do zmiennej count przypisujemy wartość bufora kanału wejściowego.z nadejściem nowej wartości na kanał wartość zmiennej wzrasta. set count [ antgetchannelvaluescount "kanal_in" ] antlog " ValuesCount = $count " wróć do indeksu ANT Sp z o.o. Strona 227

228 antsetchannelvalues antsetchannelvalues channel_name channel_values_list Zadaniem tej funkcji jest wysłanie do wyjściowego kanału channel_name wartości opisanych w channel_values_list. Argument ten powinien mieć typ zgodny z tabelą Typy kanałów systemu i typy danych TCL. Jedynym wyjątkiem są kanały SQL. W przypadku kanału sql_query należy użyć listy łańcuchów tekstowych, każdy z nich oznacza wtedy jedno polecenie SQL. W przypadku kanałów sql_result nie ma możliwości wysłania danych z poziomu skryptu (nie miałoby to większego sensu). Przykład: antsetchannelvalues "wyjscie_out" $zmienna wróć do indeksu ANT Sp z o.o. Strona 228

229 antgetchannelvalues antgetchannelvalues channel_name?sql_data_array_name? Funkcja zwraca wartości umieszczone w buforze kanału (jeśli są jakieś). Argument channel_name to nazwa kanału. Działanie funkcji zmienia się w zależności od typu kanału. Opcjonalny argument sql_data_array_name jest wykorzystywany jedynie w przypadku kanałów typu sql_query i sql_result. Opisuje to poniższa tabela: Typy kanałów systemu i typy danych TCL Byte Integer Float Double String Raw Timestamp sql_query sql_result Typ kanału Typ zwracanych danych (TCL) Lista liczb stałoprzecinkowych Lista liczb zmiennopozycyjnych Lista łańcuchów napisowych Jedna wartość typu byte_array Lista wartości czasowych zapisanych w postaci liczb zmiennopozycyjnych (patrz opis funkcji anttimetostring) Tablica haszująca o nazwie zawartej w argumencie sql_data_array_name zostaje wypełniona następującymi kluczami: query zwiera treść zapytania SQL sequence_number numer sekwencji Tablica haszująca o nazwie zawartej w argumencie sql_data_array_name zostaje wypełniona następującymi kluczami: status typ odpowiedzi SQL (możliwe wartości to error, update lub result ) sequence_number numer sekwencji error 1 komunikat błędu update_count 2 licznik zmian SQL row_count 3 licznik wierszy column_count licznik kolumn column_i_name nazwa i-tej kolumny column_i_type typ i-tej kolumny column_i_table_name nazwa w tabeli SQL dla i-tej kolumny rowi lista z zawartością i-tego wiersza (kolejno polami j-te pole listy to wartość w j-tej kolumnie) 1 Występuje wyłącznie wtedy, gdy klucz status ma wartość error 2 Występuje wyłącznie wtedy, gdy klucz status ma wartość update 3 Ten i następne klucze tylko dla klucza status równego result ANT Sp z o.o. Strona 229

230 antgetoutputchannels antgetoutputchannels Zwraca (w postaci listy łańcuchów tekstowych) listę nazw kanałów wyjściowych. antgetinputchannels antgetinputchannels Zwraca (w postaci listy łańcuchów tekstowych) listę nazw kanałów wejściowych. antgetchanneltype antgetchanneltype channel_name Zwraca (w postaci łańcucha tekstowego) typ kanału o nazwie channel_name. antsetchannelcontrol antsetchannelcontrol control_type Funkcja umożliwia zmianę zachowania bufora kanału wejściowego. Argumentem jest nazwa algorytmu kontroli bufora. Obecnie jedyny wspierany algorytm nazywa się save_and_notify. Bufor z tego rodzaju algorytmem dodaje nowe dane do początku (im świeższa dana, tym bliżej początku) i nie usuwa żadnych danych. Z tego względu, szczególnie ważne jest, aby od czasu do czasu używać funkcji antclearchannelbuffer dla takiego bufora. ANT Sp z o.o. Strona 230

231 Przykładowy moduł czytający dane Poniżej zamieszczono przykładowy moduł. Ma on dwa kanały wejściowe ( a i b ), którymi odczytuje liczby. Przy każdym nadejściu nowych danych moduł sprawdza czy ma dane w obu kanałach, jeśli tak wypisuje do logu systemu sumę najnowszych wartości z obu kanałów. Użytkownik może z łatwością zapoznać się z działaniem poniższego programu podłączając do obu kanałów wejściowych dwa pokrętła (knob). Dzięki temu, że TCL jest językiem bez ścisłej typizacji, zamieszczony poniżej skrypt może działać na dowolnych kanałach przesyłających liczby (czyli kanałach typu byte, integer, float lub double). A także na dowolnych kombinacjach typów kanałów. proc startup { } { # set channels control algorithm antsetchannelcontrol "a_in" save_and_notify antsetchannelcontrol "b_in" save_and_notify } proc shutdown { } { } proc notifydata { channel_name } { # data arrived on either b or a if {! [ antgetchannelvaluescount "a_in" ] } { antlog warning "No data in channel a_in" return } if {! [ antgetchannelvaluescount "b_in" ] } { antlog warning "No data in channel b_in" return } } # ok, we have data in both channels # clear all data but newest samples set ac [ expr [ antgetchannelvaluescount "a_in" ] - 1 ] set bc [ expr [ antgetchannelvaluescount "b_in" ] - 1 ] antclearchannelvalues "a_in" $ac antclearchannelvalues "b_in" $bc # now we have only one sample in each buffer, read it set av [ lindex [ antgetchannelvalues "a_in" ] 0 ] set bv [ lindex [ antgetchannelvalues "b_in" ] 0 ] # av and bv now contain values set sum [ expr $av + $bv ] antlog info "Currently, a + b = $sum" proc timerhook { hook_interval } { } ANT Sp z o.o. Strona 231

232 Przykładowy moduł wysyłający dane Skrypt zamieszczony poniżej generuje sinusoidę, wykorzystując zdarzenia czasowe. Należy zauważyć, że kształt sinusoidy zależy od obciążenia systemu (rysując sinusoidę zakładamy, że zdarzenia czasowe pojawiają się w idealnie równych odstępach). Microsoft Windows nie jest systemem czasu rzeczywistego, zatem założenie to nie jest prawdziwe. Wartości wysyłane są do kanału wyjściowego o nazwie sinus. set steps 0 set steps_per_period 20 set pi set amplitude 10 proc startup { } { antinstallhook "1/10 s" } proc shutdown { } { antremovehook "1/10 s" } proc notifydata { channel_name } { } proc timerhook { hook_interval } { global steps steps_per_period pi amplitude # calculate phase set phase [ expr $steps / $steps_per_period * $pi ] # calculate value set value [ expr $amplitude * sin( $phase ) ] # send value to output channel antsetchannelvalues "sinus_out" $value # increment steps variable incr steps } ANT Sp z o.o. Strona 232

233 Funkcje obsługi czasu Zdarzenia czasowe Zdarzenia zegarowe są jedną z metod zainicjowania jakiejś akcji w module skryptowym. Skrypt, który chce otrzymywać takie zdarzenia powinien zarejestrować się przy pomocy komendy antinstallhook i dostarczyć procedury timerhook, która będzie wywoływana przez system przy wystąpieniu zdarzenia zegarowego. Funkcja antinstallhook posiada jeden parametr, który określa jaki rodzaj zdarzenia skrypt ma otrzymywać. Parametrem może być dowolne zdarzenie czasowe zdefiniowane w katalogu Hooks drzewka konfiguracyjnego systemu ANT Studio. Moduł może zarejestrować się na więcej niż jedno zdarzenie zegarowe, dlatego też procedura timerhook posiada jeden argument, którym jest nawa zdarzenia jakie spowodowało dane wywołanie. Kiedy zdarzenia przestają być potrzebne można wyrejestrować moduł przy pomocy funkcji antremovehook. Funkcja ta przyjmuje jako argument nazwę zdarzenia które ma być wyrejestrowane. Poniżej pokazany został prosty skrypt, demonstracyjny obrazujący zasadę działania zdarzeń zegarowych w modułach skryptowych: proc startup { } { antinstallhook "1 s" antinstallhook "5 s" } proc shutdown { } { antremovehook "1 s" antremovehook "5 s" } proc timerhook { hook } { antlog "timerhook $hook" } W efekcie wykonania takiego skryptu w logach systemu (okienko DebugLog) pojawią się wpisy przedstawione na poniższym rysunku. ANT Sp z o.o. Strona 233

234 Uwaga! Wykorzystując w modułach skryptowych zdarzenia zegarowe należy pamiętać, że systemy operacyjne rodziny Windows nie są systemami czasu rzeczywistego. Okres zdarzenia zegarowego należy traktować jako przybliżenie rzeczywistego okresu wywoływania skryptu, który dodatkowo może się zmieniać wraz ze zmianą obciążenia systemu. ANT Sp z o.o. Strona 234

235 Czas w skryptach Oprogramowanie ANT Studio posiada własne API ułatwiające wykonywanie operacji na czasie. W odróżnieniu od większości systemów, które przechowują czas z dokładnością do sekund, ANT Studio przechowuje go z dokładnością do nanosekund. Wartość czasowa (timestamp) reprezentowana jest w postaci liczby zmiennoprzecinkowej. Przykładowo, oznacza dwie sekundy i trzysta tysięcy nanosekund. Taki format jest bardzo wygodny do obliczeń, które można wykonywać przy pomocy komendy expr TCL/Tk. Jeśli potrzebna jest duża precyzja zalecane jest użycie anttimeexpr, która wykonuje działania (+ i -) oraz porównania (>,>=,<,<=) bez utraty precyzji. Do pobrania aktualnego czasu, powyższym formacie służy komenda antgetcurrenttime. Wynik określa konkretną datę podając ilość czasu (w sekundach) jaki upłynął od 1 stycznia 1970 roku. Ponieważ liczba ta jest bardzo duża wyniki są nieczytelne. Dlatego też API systemu ANT Studio zostało wyposażone w funkcje, które umożliwiają konwersję czasu na postać bardziej czytelną, znaną z języka SQL, np :09: Funkcja ta to anttimetostring. Odwrotnej konwersji (z postaci SQL na timestamp) można dokonać funkcją antstringtotime. Obie te funkcje używają czasu lokalnego. Pozostałe funkcje obsługi czasu: anttimestampfromtimelocal oraz anttimestampfromtimeutc konstruują wartość czasową, ale wykorzystują w tym celu nie datę w formacie SQL, lecz bezpośrednio podany dzień, miesiąc rok i opcjonalnie godzinę, minutę, sekundę i nanosekundę. anttimefromtimestamplocal oraz anttimefromtimestamputc dokonują konwersji odwrotnej niż dwie wyżej opisane funkcje a wynik zwracają w postaci siedmielementowej listy (w kolejności od największej jednostki roku do najmniejszej nanosekundy) Funkcje z przyrostkiem Local działają na czasie lokalnym a UTC na czasie uniwersalnym. Poniżej przedstawiono przykładowy skrypt demonstracyjny obrazujący działanie funkcji konwersji czasu w systemie ANT Studio. proc startup { } { set t [ antgetcurrenttime ] antlog "Aktualny czas w formacie wewnetrznym ANT Insight: $t" antlog "Aktualny czas w formacie zewnetrznym ANT Insight (SQL): [ anttimetostring $t ]" antlog "Aktualny rok to [ lindex [ anttimefromtimestamplocal $t ] 0 ]" set t [ anttimestampfromtimelocal ] antlog "Wersja 2.0 systemu ANT Insight zostala ukonczona w okolicach [ anttimetostring $t ] czasu lokalnego" } proc shutdown { } { } ANT Sp z o.o. Strona 235

236 antsleep antsleep miliseconds Funkcja blokuje wykonanie skryptu na miliseconds milisekund. Co ważne, blokowane są wszelkie aktywności skryptu, np. póki skrypt śpi nie można go nawet wyłączyć. Dlatego warto używać tej funkcji z rozwagą, służy ona raczej do niewielkich opóźnień. antgetcurrenttime antgetcurrenttime Funkcja ta zwraca aktulną wartość czasu w formacie timestamp. Wynik określa konkretną datę podając ilość czasu (w sekundach) jaki upłynął od 1 stycznia 1970 roku. Wiecej informacji na temat obsługi czasu w modułach skryptowych można znaleźć w rozdziale:czas w skryptach antstringtotime antstringtotime "czas_w_formacie_sql" Funkcja ta służy do konwersji czasu z formatu znanego z języka SQL (np :09:41.30 ) na format timestamp. Wiecej informacji na temat obsługi czasu w modułach skryptowych można znaleźć w rozdziale:czas w skryptach anttimetostring anttimetostring timestamp Funkcja ta służy do konwersji czasu z formatu timestamp na bardziej czytelną postać, znaną z języka SQL, np :09: Wiecej informacji na temat obsługi czasu w modułach skryptowych można znaleźć w rozdziale:czas w skryptach ANT Sp z o.o. Strona 236

237 Funkcje komunikacji pomiędzy skryptami Zasadniczą formą komunikacji pomiędzy modułami systemu są kanały. Kanały służą do elastycznego łączenia modułów w złożone konfiguracje, umożliwiają przesyłanie różnych typów danych i ich skomplikowane, wieloetapowe przetwarzanie. Są jednak pewne zastosowania, dla których wykorzystanie samych kanałów nie wystarcza lub jest utrudnione. Typowym przypadkiem są wszystkie zastosowania transakcyjne. Moduł A chce przekazać pewne dane modułowi B. Ten powinien przetworzyć dane i odesłać je z powrotem. Dopiero wtedy moduł A będzie w stanie kontynuować pracę. Przykładowo załóżmy, że moduł A to klient bazy danych, skrypt wyświetlający pewne informacje, a moduł B to moduł ODBC, a więc obsługujący bazę danych. Użytkownik polecił odświeżyć dane zawarte w module A, zatem musi on wysłać polecenie SQL do modułu B. Moduł B musi się skontaktować z bazą danych, i po otrzymaniu odpowiedzi opakować ją odpowiednio i przesłać z powrotem do modułu A. Drugim bardzo popularnym zastosowaniem jest synchronizacja. Przypuśćmy, że pewien moduł D obsługuje urządzenie pomiarowe przy pomocy portu COM. Urządzenie przyjmuje jeden rozkaz, następnie wykonuje pomiary, co może potrwać jakiś czas. Po ukończeniu pomiarów urządzenie zwraca wyniki. Przypuśćmy też, że istnieje wiele modułów, chcących korzystać z urządzenia za pomocą modułu D. Nie mogą one wzajemnie sobie przeszkadzać (inicjować nowych pomiarów przed zakończeniem już rozpoczętych), wszystkie muszą uzyskać od czasu do czasu możliwość skorzystania z urządzenia, muszą także wiedzieć, kiedy urządzenie zakończyło pomiary. Oba wyżej opisane problemy są trudne do rozwiązania przy pomocy samych kanałów. Byłoby to skomplikowane, a więc trudne do niezawodnej realizacji. Aby umożliwić proste i wygodne rozwiązania tych i podobnych problemów, system został wyposażony w mechanizm wywoływania funkcji pomiędzy modułami. Mechanizm ten symuluje wywoływanie funkcji z innego modułu. Przypomina tym samym znane z systemów operacyjnych RPC (remote procedure calls) czy RMI (remote methods invocation) Javy. Moduł wywołujący jest wstrzymywany, a sterowanie jest przekazane do modułu wywołanego. Dopóki ten ostatni nie zakończy wykonywania, wywołujący czeka. Po zakończeniu, sterowanie powraca do modułu wywołującego. Drugą bardzo istotną cechą wywoływania funkcji systemu jest wzajemne wykluczanie (mutual exclusion). Oznacza to, że w danej chwili funkcja w module może być wywoływana co najwyżej raz. W razie większej ilości wywołań, są one kolejkowane w kolejności, w jakiej wystąpiły. Przypomina to nieco metody synchronizowane (synchronized) klas języka Java. Funkcja antcallfunction antcallfunctionbychannel antcallfunctionasync Krótki opis wywołuje funkcję ze wskazanego modułu wywołuje funkcję z modułu połączonego kanałem wywołuje asynchronicznie funkcję ze wskazanego modułu ANT Sp z o.o. Strona 237

238 antcallfunctionasyncbychannel antcallfunctionwithupdates antfunction antwaitforfunctionreturn antfunctionattachcommand antgetfunctionresults wywołuje asynchronicznie funkcję z modułu połączonego kanałem wywołuje funkcję ze wskazanego modułu. Podczas wykonywania funkcji odświeża ekran deklaracja wołanej funkcji czeka na powrót z asynchronicznie wywołanej funkcji ustanawia funkcję do obsługi powracającego wywolania pobiera rezultat asynchronicznie wywolanej funkcji Przykład skryptu wywoływanego Przykład skryptu wywyłującego ANT Sp z o.o. Strona 238

239 antcallfunction antcallfunction module_name function_name results?arguments? Powoduje wywołanie funkcji function_name z modułu module_name. Rezultaty (zwrócone wartości, jeśli będą jakieś) zostaną zapisane w lokalnej zmiennej o nazwie zawartej w results. Jeżeli wywoływana funkcja posiada argumenty, należy je przekazać kolejno po nazwie tej zmiennej. antcallfunction zwraca następujące kody powrotu: Kody powrotu funkcji antcallfunction Kod powrotu Znaczenie completed Wywołanie funkcji odbyło się poprawnie i zostało zakończone. UWAGA: przez poprawne wywołanie należy rozumieć poprawność z punktu widzenia systemu, tj. moduł został odnaleziony, odpowiednia liczba argumentów przekazana, kod wykonany i rezultaty zwrócone. System nie rozumie tego, co się w funkcji dzieje, a opisanie tego odpowiednim rezultatem jest zadaniem użytkownika. interrupted Wywołanie funkcji zostało rozpoczęte, ale zanim zdążyło się skończyć, zostało przerwane. Przykładowo, wywoływany lub wywołujący moduł został wyłączony. execution_error W wywoływanym module wystąpił błąd w trakcie wykonania. Np: moduł rzucił wyjątek. module_not_found bad_function bad_arguments Nie ma takiego modułu. Podany moduł istnieje, ale nie ma funkcji o podanej nazwie. Zła ilość lub typ argumentów. Uwaga: Wywołanie antcallfunction i antcallfunctionbychannel nie jest dozwolone w procedurach startup i shutdown skryptu. ANT Sp z o.o. Strona 239

240 apiantcallfunctionbychannel antcallfunctionbychannel input_channel_name function_name results?arguments? Funkcja identyczna z antcallfunction, ale do adresowania używa nie nazwy modułu, lecz nazwy kanału wejściowego, który jest podłączony do kanału modułu, będącego adresatem wywołania. antcallfunctionasync antcallfunctionasync module_name function_name?arguments? Zwraca identyfikator wywoływanej funkcji. Powoduje asynchroniczne wywołanie funkcji function_name z modułu module_name. Funkcja występuje w ścisłej współpracy z następującymi funkcjami: antfunctionattachcommand, antwaitforfunctionreturn, antgetfunctionresults Przykład: set call_id [antcallfunctionasync Modul Funkcja Argument] Wywołuje funkcję Funkcja z argumentami Argument modułu Moduł i identyfikator wywołania umieszcza w zmiennej call_id. antcallfunctionasyncbychannel antcallfunctionasyncbychannel input_channel_name function_name?arguments? Funkcja identyczna z antcallfunctionasync, ale do adresowania używa nie nazwy modułu, lecz nazwy kanału wejściowego, który jest podłączony do kanału modułu, będącego adresatem wywołania. ANT Sp z o.o. Strona 240

241 antcallfunctionwithupdates antcallfunctionwithupdates module_name function_name results?arguments? Funkcję tę stosuje się dokładnie tak samo jak antcallfunction, z tą różnicą, że funkcja ta wołana przez skrypty graficzne, powoduje odświeżanie ich okien, podczas wywołania funkcji. Można przyjąć, że funkcję tę można zawsze stosować do wywołania funkcji z modułów, niezależnie do tego czy jest ona wołana ze skryptu graficznego czy nie. Skrypt graficzny, jest tu rozumiany jako skrypt, który osadza okno w systemie i używa funkcji graficznych zarządzających grafiką umieszczaną w oknach. antfunction antfunction function_name function_arguments function_body Funkcje, które mają być dostępne dla zewnętrznego wywoływania muszą być zadeklarowane w specjalny sposób. Robi się to zamieniając w zwykłym wywołaniu komendę proc języka TCL na antfunction. Składnia jest identyczna. ANT Sp z o.o. Strona 241

242 Przykład skryptu wywływanego Poniższy skrypt dostarcza funkcji gettimestamp w formacie odpowiednim dla skryptu z poprzedniego przykładu. Uruchomienie przez użytkownika obu tych skryptów pozwoli przetestować komunikację, a także różne błędy pojawiające się np. przy wyłączeniu jednego ze skryptów. proc startup { } { } proc shutdown { } { } proc notifydata { channel_name } { } proc timerhook { hook_interval } { } antfunction gettimestamp { } { antlog info "I m called :-)" set text [ anttimetostring [ antgetcurrenttime ] ] return $text } Przykład skryptu wywyłującego Poniższy skrypt używa funkcji gettimestamp skryptu nazywanego TimerService do zdobywania co minutę informacji o dacie i czasie. proc startup { } { antinstallhook "1 m" } proc shutdown { } { antremovehook "1 m" } proc notifydata { channel_name } { } proc timerhook { hook_interval } { # call function, preserve status set status [ antcallfunction "logger" "logmessage" "ts" ] if { $status == "completed" } { # call completed successfully antlog info "Current date and time is \"$ts\"" } else { antlog warning "Function call status: \"$status\"" } } ANT Sp z o.o. Strona 242

243 antwaitforfunctionreturn antwaitforfunctionreturn call_id milliseconds_delay Komenda czeka na zakończenie powrotu funkcji o identyfikatorze wywołania call_id i zwraca 1, gdy wywołanie zakończy się przed upływem czasu?milliseconds_delay? podanego w milisekundach lub 0, gdy powrót nie nastąpi w tym czasie. Zobacz także: antcallfunctionasync, antfunctionattachcommand, antgetfunctionresults antfunctionattachcommand antfunctionattachcommand call_id command Komenda ustanawia funkcję command, która zostanie wywołana po zakończeniu wykonywania asynchronicznie wywołanej funkcji o identyfikatorze wywołania call_id. przykład: set call_id [antcallfunctionasync Modul Funkcja Argument] antfunctionattachcommand $call_id notify proc notify {} { antlog "Wrocilem z asynchronicznego wywolania." } Zobacz także: antcallfunctionasync, antwaitforfunctionreturn, antgetfunctionresults ANT Sp z o.o. Strona 243

244 antgetfunctionresults antgetfunctionresults call_id results Komenda wpisuje rezultat wywołania asynchronicznie wywołanej funkcji o identyfikatorze wywołania call_id do zmiennej results. Funkcja zwraca następujące kody powrotu: Kod powrotu Znaczenie execution_error W wywoływanym module wystąpił błąd w trakcie wykonania. Np: moduł rzucił wyjątek. interrupted Wywołanie funkcji zostało rozpoczęte, ale zanim zdążyło się skończyć, zostało przerwane. Przykładowo, wywoływany lub wywołujący moduł został wyłączony. completed Wywołanie funkcji odbyło się poprawnie i zostało zakończone. UWAGA: przez poprawne wywołanie należy rozumieć poprawność z punktu widzenia systemu, tj. moduł został odnaleziony, odpowiednia liczba argumentów przekazana, kod wykonany i rezultaty zwrócone. System nie rozumie tego, co się w funkcji dzieje, a opisanie tego odpowiednim rezultatem jest zadaniem użytkownika. call_in_progress Wywołanie jeszcze się nie zakończyło. bad_function Podany moduł istnieje, ale nie ma funkcji o podanej nazwie. przykład: set call_id [antcallfunctionasync Modul Funkcja Argument] antfunctionattachcommand $call_id notify } proc notify {} { global call_id set status [antgetfunctionresult $call_id result] if { $status == "completed"} { antlog "Wrocilem z wynikiem $result" } else { antlog "Blad wywolania: $status" } Zobacz także: antcallfunctionasync, antwaitforfunctionreturn, antfunctionattachcommand ANT Sp z o.o. Strona 244

245 Funkcje dostępu do konfiguracji Moduły systemu nie powinny interesować się całą konfiguracją systemu. Zakłada się bowiem, że moduł stanowi czarną skrzynkę, oddzieloną od innych, między innymi dla prostoty konfiguracji. Czasem jednak korzystne jest udostępnienie całej konfiguracji systemu modułowi skryptowemu, np. w celu tworzenia inteligentnych modułów umiejących reagować na ustawienia innych modułów. Konfiguracja systemu ma postać drzewa. W skład tego drzewa wchodzą węzły. Węzły zawierają inne węzły i ustawienia (są to wartości widoczne w tabeli w lewym dolnym rogu okna systemu). Węzły podzielono na klasy węzły tej samej klasy mają taką samą zawartość, odpowiadają za konfigurację elementów tego samego typu. Pomiędzy klasami węzłów istnieją zależności dziedziczenia, np. ScriptedModuleCfg dziedziczy z ModuleCfg. Niektóre typy węzłów wymieniono w poniższej tabeli. Niektóre klasy węzłów konfiguracji Nazwa klasy ModuleCfg ChannelCfg InputChannelCfg OutputChannelCfg ScriptedModuleCfg Rodzaj węzła Konfiguracja modułu Konfiguracja kanału Konfiguracja kanału wejściowego Konfiguracja kanału wyjściowego Konfiguracja modułu skryptowego Wymienione poniżej funkcje pozwalają przeszukiwać drzewo w poszukiwaniu węzłów określonego typu, odczytywać wartości ustawień z zadanego węzła oraz odszukiwać konfigurację samego skryptu. Funkcja antcfgfindallof antcfggetitemvalue antcfggetownpath Krótki opis zwraca listę wszystkich elementów drzewa wskazanego typu zwraca wartość itemu zwraca ścieżkę do fragmentu drzewa konfiguracyjnego opisującego dany moduł Przykład ANT Sp z o.o. Strona 245

246 antcfgfindallof antcfgfindallof initial_tree_path class_name Zwraca listę ścieżek w drzewie do wszystkich elementów klasy class_name znajdujących się poniżej węzła o ścieżce initial_tree_path. antcfggetitemvalue antcfggetitemvalue tree_path item_name Zwraca wartość ustawienia o nazwie item_name, znajdującego się w węźle o ścieżce tree_path. antcfggetownpath antcfggetownpath Zwraca ścieżkę do węzła będącego głównym węzłem konfiguracyjnym modułu skryptowego, w którym wykonuje się skrypt. ANT Sp z o.o. Strona 246

247 Przykład Poniższy przykład demonstruje w jaki sposób można wykorzystać funkcje dostępu do konfiguracji systemu w celu odszukania wszystkich aktywnych modułów. proc findactivemodules { } { # find all active modules right from the top of the tree foreach m [ antcfgfindallof {} "ModuleCfg" ] { # check whether m is active if { [ antcfggetitemvalue $m "Active" ] } { # active, log name antlog info "\"[ antcfggetitemvalue $m "Name" ]\"" } } } Przykład ponizej wyszukuje w konfiguracji moduł portu szeregowego i zmienia wybrane parametry w jego konfiguracji #wyszukiwanie modułu portu szeregowego foreach m [ antcfgfindallof {} "ComDriverCfg" ] { #odczytanie parametrów konfiguracyjnych set Name [ antcfggetitemvalue $m "Name" ] set baund [ antcfggetitemvalue $m "BaudRate" antlog "name: $Name baund: $baund" #ustawienie nowych parametrów antcfgsetitemvalue $m "BaudRate" antcfgsetitemvalue $m "Name" PortSerial } Zakładka "Properties" przed i po zmianach ANT Sp z o.o. Strona 247

248 Funkcje dostępu do ustawień skryptu Jak wspomniano powyżej, skrypt raczej nie powinien sięgać do globalnej konfiguracji systemu. Oczywiście, moduły skryptowe, tak jak i wszystkie inne moduły, mogą potrzebować własnej konfiguracji. Konfiguracja modułów skryptowych różni się nieco od konfiguracji wszystkich pozostałych modułów systemu. Wynika to z faktu, iż w przypadku skryptów nie sposób przewidzieć, do czego zechce je wykorzystać twórczy użytkownik. Każda predefiniowana struktura konfiguracji mogłaby okazać się sztywna i niewystarczająca. W celu rozwiązania tego problemu, system posiada specjalną dynamiczną konfigurację dla modułów, w postaci dowolnie budowanego drzewa. Korzeń tego drzewa znajduje się w podwęźle Configuration węzła ModuleScript konfiguracji skryptu. Użytkownik może dowolnie rozbudowywać drzewo konfiguracyjne skryptu dodając foldery i wartości. Przykładowe drzewo konfiguracyjne skryptu, oraz jego położenie w konfiguracji systemu pokazano na rysunku. Przykładowa konfiguracja skryptu Funkcja antgetsetting antgetsubfolders antgetsubsettings Krótki opis pobiera wartość ustawienia konfiguracyjnego zwraca listę wszystkich ustawień konfiguracyjnych położonych w danej ścieżce zwraca foldery znajdujące się w danej ścieżce ANT Sp z o.o. Strona 248

249 antgetsetting antgetsetting path Funkcja ta pobiera wartość ustawienia konfiguracyjnego skryptu o ścieżce określonej przez argument wywołania funkcji. Dla przykładu zamieszczonego na powyższym rysunku użytkownik mógłby np wywołać funkcję: antgetsetting " Folder0 Folder1 Long1 ", chcąc uzyskać wartość ustawienia o nazwie Long1. proc startup { } { # pobieramy wartosci ustawien z folderu Configuration set A [ antgetsetting "A" ] set B [ antgetsetting "B" ] # pobieramy wartości ustawień z podfolderu Parametr } set Par1 [ antgetsetting "Paramert Par1"] set Par2 [ antgetsetting "Parametr Par2"] ANT Sp z o.o. Strona 249

250 antgetsubfolders antgetsubfolders path Funkcja działa podobnie do poprzedniej, lecz zwraca nie ustawienia konfiguracyjne, ale foldery znajdujące się w danej ścieżce. Wywołanie: antgetsubfolders {} zwróciłoby listę postaci: { Folder0 } antgetsubsettings antgetsubsettings path Funkcja ta zwraca listę wszystkich ustawień konfiguracyjnych położonych w danej ścieżce konfiguracyjnej. Wywołanie: antgetsubsettings {} zwróciłoby dla powyższego przypadku listę postaci: { Double Long0 String0 }, gdyż te właśnie ustawienia znajdują się w korzeniu drzewa konfiguracji skryptu. antcfgsetitemvalue antcfgsetitemvalue module parameter value Funkcja zmienia wartość value ustawienia wybranego parametru parameter modułu module. ANT Sp z o.o. Strona 250

251 Przykład Skrypt zamieszczony poniżej odczytuje wartości z drzewa konfiguracyjnego Configuration i wykonuje na nich proste operacje arytmetyczne. proc startup { } { global A B # pobieramy liste dostepnych podfolderow w konfiguracji set GSF [antgetsubfolders { } ] # pobieramy wartosci ustawien z folderu Configuration set A [ antgetsetting "A" ] set B [ antgetsetting "B" ] # lista dostepnych parametrow w podfolderze set SS [ antgetsubsettings "$GSF" ] # pobieramy warosci ustawien z podfolderow set Par1 [ antgetsetting "$GSF Par1"] set Par2 [ antgetsetting "$GSF Par2"] antlog "Lista folderow $GSF" antlog "Lista dostepnych parametrow $SS" antlog "Par1=$Par1 Par2=$Par2" antinstallhook "5 s" } proc shutdown { } { antremovehook "5 s" } proc notifydata { channel_name } { } # wykonujemy operacje na pobranych parametrach proc timerhook { hook_name } { global A B set Suma [expr $A + $B] set Iloczyn [expr $A*$B] set Roznica [expr $A-$B] antlog "A= $A B=$B" antlog "A+B= $Suma, A*B= $Iloczyn, A-B= $Roznica" } ANT Sp z o.o. Strona 251

252 Funkcje współpracy z kodem C Język TCL pozwala na budowanie dużych i wyrafinowanych aplikacji, zwłaszcza w połączeniu z innymi modułami systemu. Niemniej jednak, czasem zachodzi potrzeba wywołania funkcji z zewnętrznej dynamicznie ładowanej biblioteki (DLL). Aby umożliwić współpracę skryptów języka TCL z takimi bibliotekami, system został wyposażony w stosowne funkcje. Opisanych poniżej funkcji nie należy mylić z natywnym dla języka TCL wsparciem dla ładowania dynamicznych modułów. Muszą one mieć pewną ściśle określoną formę, i jako takie, nadają się jedynie do użytkowania z dedykowanymi bibliotekami rozszerzającymi mechanizmy języka TCL. Ponieważ biblioteki DLL mogą być tworzone przy użyciu praktycznie dowolnego języka programowania, mechanizm obecny w systemie zapewnia współpracę z praktycznie dowolnym językiem. Ceną za takie możliwości jest niewielka wygoda korzystania z bibliotek DLL. Stanowią one niskopoziomowy mechanizm, i jeśli zrezygnować z pewnych (zbyt zawężających) założeń, korzystanie z nich wymaga dużej ilości niskopoziomowych operacji, takich jak ręczne przydzielanie/zwalnianie pamięci, czytanie/zapisywanie buforów na poziomie słów maszynowych, dokładne dopasowanie konwencji wywoływania (calling conventions) funkcji itd. Twórcy systemu dołożyli wszelkich starań, aby rozwiązać te problemy w sposób najbardziej dogodny dla użytkownika programisty skryptów. Niemniej jednak, wszędzie tam gdzie powstawał rozdźwięk pomiędzy wygodą użytkowania a możliwościami, decydowano się na większe możliwości kosztem wygody użytkowania. Wszystkie omówione w niniejszym rozdziale operacje są operacjami niskiego poziomu, bezpośrednio na pamięci operacyjnej procesu. Wywoływane funkcje pochodzą z zewnętrznych bibliotek. Ze względu na to, twórcy systemu nie bierą żadnej odpowiedzialności za wszelkie szkody, problemy i niedogodności wynikłe z wykorzystania tych funkcji. Od korzystającego z nich użytkownika oczekuje się wiedzy (w szczególności, dobrej znajomości problematyki bibliotek ładowanych dynamicznie i niskopoziomowych mechanizmów komputerów PC) i ostrożności. Funkcja antgetcallbackaddress antuninstallcallback antcalldll antunloaddll antloaddll antcfree antcstrdup antcmalloc antcstore antcload Krótki opis wyłanie funkcji z biblioteki DLL rozłączenie biblioteki DLL podłączenie biblioteki DLL usuwanie bloku pamięci alokacja bloku pamięci dla łańcucha alokacja bloku pamięci ustawianie wartości w bloku pamięci odczyt z bloku pamięci Przykład zastosowania wywołania zwrotnego Przykład wykorzystania funkcji z bibliotek DLL ANT Sp z o.o. Strona 252

253 antgetcallbackaddress antgetcallbackaddress callback_id Zarejestrowane w skrypcie wywołanie zwrotne nie jest jeszcze w żaden sposób rozpoznawane przez bibliotekę DLL. Każda biblioteka posiada funkcje, którym należy przekazać adresy wywołań zwrotnych. Stosowny adres dla wywołania zwrotnego o identyfikatorze callback_id jest zwracany właśnie przez omawianą funkcję. antuninstallcallback antuninstallcallback callback_id Wszystkie wywołania zwrotne zarejestrowane w skrypcie powinny zostać zwolnione po wykorzystaniu przy użyciu powyższej funkcji. antinstallcallback antinstallcallback tcl_function_name return_type?args? Część bibliotek DLL wymaga, w celu prawidłowego działania, stosowania wywołań zwrotnych (callback). Wywołania takie to procedury dostarczone przez program korzystający z biblioteki DLL, ale wykonywane przez funkcje z wnętrza tej biblioteki. System zawiera rodzaj bramki dla wywołań tego typu, pozwalając na konwersję ich z niskopoziomowego wywołania na funkcję w języku TCL. Po powrocie z tej funkcji, zwrócony wynik zostanie przekonwertowany z powrotem do niskopoziomowej postaci tak, jakby zakończyła się normalna funkcja asemblerowa. Bramka systemu obsługuje konwencję wywołania stdcall. Można wykorzystać do 32 wywołań zwrotnych jednocześnie. Funkcja antinstallcallback używa funkcji tcl_function_name, ta ostatnia powinna przyjmować tyle argumentów (i o takich typach) ile opcjonalnych argumentów znajduje się w wywołaniu (args), natomiast wynik jej działania zostanie przekonwertowany na typ return_type. Funkcja antinstallcallback zwraca jako wynik identyfikator wywołania zwrotnego (callback id). ANT Sp z o.o. Strona 253

254 antcalldll antcalldll dll_id function_name return_type?argument_type argument_value?... Wywołuje funkcję o nazwie function_name, z biblioteki o identyfikatorze dll_id, zwracającą wartość typu return_type. Argumenty przekazywane są za pomocą jednej lub więcej par argument_type argument_value, gdzie argument_type jest typem argumentu, natomiast argument_value jego wartością. Parametry te są przekazywane na stosie w konwencji stdcall, to jest w kolejności występowania. antunloaddll antunloaddll dll_id Usuwa z pamięci bibliotekę dynamiczną o identyfikatorze dll_id. antloaddll antloaddll dll_name Funkcja ładuje do pamięci procesu bibliotekę dynamiczną o nazwie dll_name. Zwraca identyfikator do tej biblioteki, który należy przekazywać do funkcji mających ją wykorzystywać. Należy pamiętać, aby usunąć bibliotekę po wykorzystaniu (funkcją antunloaddll). antcfree antcfree memory_block_address Podobnie jak funkcja free języka C, zwalnia blok pamięci (uprzednio przydzielony). Należy pamiętać, o zwalnianiu przydzielonej uprzednio pamięci, aby nie powodować przecieków pamięci (memory leaks). ANT Sp z o.o. Strona 254

255 antcstrdup antcstrdup string_to_copy Analogicznie do funkcji strdup języka C, funkcja ta przydziela dynamicznie blok pamięci o długości równej długości łańcucha znakowego, który jest jej argumentem, zwiększonej o jeden. Do tego bloku pamięci kopiowana jest potem zawartość łańcucha znakowego i znak ASCII o kodzie 0 (terminator). Funkcja zwraca adres bloku. Podobnie jak w przypadku poprzedniej funkcji, należy pamiętać o konieczności zwolnienia pamięci po jej wykorzystaniu. antcmalloc antcmalloc memory_block_size Analogicznie do funkcji malloc języka C, funkcja ta przydziela dynamicznie (ze sterty procesu) blok pamięci o długości memory_block_size bajtów. Zwraca adres nowo przydzielonego bloku. Należy pamiętać, że tego rodzaju pamięć należy po wykorzystaniu zwolnić przy pomocy funkcji antcfree. antcstore antcstore type address value Funkcja zapisuje w zmiennej typu type, umieszczonej pod adresem address wartość argumentu value. Podobnie jak poprzednia funkcja, antcstore zwraca adres powiększony o rozmiar zapisanej zmiennej. ANT Sp z o.o. Strona 255

256 antcload antcload type address variable Funkcja ta ładuje do zmiennej o nazwie umieszczonej w argumencie variable zawartość zmiennej o typie type spoczywającej w pamięci pod adresem address. Funkcja zwraca adres zmiennej zwiększony o jej rozmiar (a zatem, po prostu, adres kolejnej zmiennej tego typu w pamięci). Ułatwia to sekwencyjny dostęp do wszelkiego rodzaju tablic, buforów, itd. Typy danych, jakie obsługuje funkcja antcload opisano w poniższej tabeli. Lista typów może się wydawać uboga, należy jednak pamiętać, że język C konwertuje wartości w trakcie odkładania na stos do typów podstawowych. Typy języka C obsługiwane przez system Nazwa typu Nazwa typu (język C) 1 Opis int1 signed char Liczba stałoprzecinkowa ze znakiem, jeden bajt int2 signed short int Liczba stałoprzecinkowa ze znakiem, dwa bajty int4 Int Liczba stałoprzecinkowa ze znakiem, cztery bajty float4 Float Liczba zmiennoprzecinkowa, cztery bajty float8 Double Liczba zmiennoprzecinkowa o podwójnej precyzji, osiem bajtów const_c_string signed char * Wskaźnik na łańcuch znakowy zakończony zerem 2, taki jak używane w C, rozmiar cztery bajty 1 Przez język C autorzy rozumieją kod w języku C kompilowany 32-bitowym kompilatorem na platformie Intel x86 2 Null-terminated string ANT Sp z o.o. Strona 256

257 Przykład zastosowania wywołania zwrotnego Poniższy skrypt demonstruje zastosowanie wywołania zwrotnego w połączeniu z funkcjami z bibliotek DLL. Wykorzystuje biblioteki systemowe user32.dll (funkcja GetDC) oraz gdi32.dll (funkcja EnumFontFamiliesA). proc enumfonts { } { # prepare callback enumfontcallback returing int4 and # obtaining four int4 arguments set cid [ antinstallcallback enumfontscallback int4 \ int4 int4 int4 int4 ] # load user32.dll set udll [ antloaddll "user32.dll" ] # load gdi32.dll set gdll [ antloaddll "gdi32.dll" ] # dc = ::GetDC( 0 ) set dc [ antcalldll $udll GetDC int4 int4 0 ] # EnumFontFamilies( dc, 0, callback, 1234 ) antcalldll $gdll EnumFontFamiliesA int4 int4 $dc \ int4 0 int4 [ antgetcallbackaddress $cid ] int # remove callback antuninstallcallback $cid # unload user32.dll antunloaddll $udll # unload gdi32.dll antunloaddll $gdll } # this is callback called from withing windows API # EnumFromFamiliesA function proc enumfontscallback { log_font_ptr text_metrix_ptr font_type lparam if { [ catch { # offset to lffacename field set log_font_ptr [ expr $log_font_ptr + 7 * 4 ] antcload $log_font_ptr const_c_string face_name antlog info "lffacename: $face_name LPARAM: $lparam" } error ] } { antlog error \"Error during callback evaluation: \"$error\"" return 0 } return 1 } ANT Sp z o.o. Strona 257

258 Przykład wykorzystania funkcji z bibliotek DLL Poniższy skrypt wykorzystuje bibliotekę systemową user32.dll i zawartą w niej funkcję GetCursorPos w celu otrzymania aktualnych koordynat wskaźnika myszy. proc getcursorpos { } { # load user32.dll set udll [ antloaddll "user32.dll" ] # allocate memory for POINT structure ( 2 * 4 = 8 bytes ) set addr [ antcmalloc 8 ] # zero both x and y fields ( offsets 0 and 4 ) antcstore $addr int4 0 antcstore [ expr $addr + 4 ] int4 0 # call GetCursorPos windows function antcalldll $udll GetCursorPos int4 int4 $addr # get X and Y field of POINT structure # will be loaded into CursorX, CursorY variables antcload $addr int4 CursorX antcload [ expr $addr + 4 ] int4 CursorY antlog info "Mouse position: $CursorX, $CursorY" # delete memory of POINT structure antcfree $addr # unload user32.dll antunloaddll $udll } ANT Sp z o.o. Strona 258

259 Funkcje różne antexception antexception message Funkcja służy do rzucania wyjątku (exception throwing). Wyjątek powoduje natychmiastowe zatrzymanie skryptu, a komunikat tekstowy przekazany jako argument wywołania antexception można odczytać w zakładce Description drzewa konfiguracji systemu. Zazwyczaj mechanizm ten stosowany jest do zgłoszenia krytycznego błędu wykonania, uniemożliwiającego dalszą pracę skryptu antlog antlog level message Umożliwia skryptowi dostęp do okna logów systemu. Argument pierwszy (level) określa rodzaj komunikatu. Możliwe wartości to fatal, error, warning, info, debug określające kolejno komunikaty od najbardziej krytycznych ( fatal i error ), poprzez ostrzeżenie ( warning ) aż po dodatkowe informacje dla użytkownika ( info i debug ). Argument drugi to treść komunikatu. Typy komunikatów Typ komunikatu Rodzaj informacji Fatal Krytyczny błąd modułu, moduł nie jest w stanie funkcjonować Error Poważny błąd modułu, być może powodujący że nie jest on w stanie funkcjonować Warning Info Debug Ostrzeżenie: coś jest nie tak, ale moduł pracuje dalej Informacja dla użytkownika Rozszerzona informacja wykorzystywana zwykle podczas usuwania błędów (debugging) z skryptów ANT Sp z o.o. Strona 259

260 antlrepeat antlrepeat name length init_value Tworzy listę o nazwie name i długości length i wypełnia ją wartościami init_value. Stosowanie konstrukcji antlrepeat - lset jest zalecane zamiast funkcji lappend w przypadku wypełniania list o dużej długości. proc power2 { in_vec } { antlrepeat out_vec [llength $in_vec] 0.0 set i 0 foreach val $in_vec { lset out_vec $i [expr {$val * $val}] incr i } return $out_vec }, zamiast: proc power2 { in_vec } { set out_vec [list] foreach val $in_vec { lappend out_vec [expr {$val * $val}] } return $out_vec } ANT Sp z o.o. Strona 260

261 Przykład Wykorzystując informacje podane w tym rozdziale można napisać prosty skrypt. Wypisuje on komunikat Script initialized a po uruchomieniu zaczyna odliczać od 100 w dół, zmniejszając wartość licznika co sekundę (wykorzystuje do tego celu zdarzenie czasowe o interwale 1 s ). Nie dochodzi jednak do wyzerowania licznika, gdyż drugie z zainstalowanych zdarzeń czasowych (interwał 1 m ) wyłącza moduł po upływie jednej minuty przez rzucenie wyjątku: # Prepare counter set counter 100 proc startup { } { antinstallhook "1 s" antinstallhook "1 m" antlog info "Script initialized" } proc shutdown { } { antremovehook "1 s" antremovehook "1 m" antlog info "Script disabled" } proc notifydata { channel_name } { # not used } proc timerhook { hook_interval } { global counter if { "1 s" == $hook_interval } { # One second hook # log message antlog info "Countdown counter value $counter" # decrement counter incr counter -1 } else { # One minute hook, throw exception antexception "Time expired!!!" } } ANT Sp z o.o. Strona 261

262 Funkcje modułów komunikacji z urządzeniami Funkcje udostępnione przez moduły komunikacji z urządzeniami: ModbusMaster ModbusSlave MultiLon MitsubishiMX Funkcje tę są wbudowane w moduły na podobnej zasadzie jak funkcje udostępniane przez skrypty. Ich wywołanie odbywa się przez funkcję antcallfunction lub antcallfunctionwithupdates Należy odróżnić te funkcje od funkcji api ACQ - antio..., które mogą być wołane jedynie w skryptach urządzeń. Uwaga: Wywołując funkcje: ReadIOBlock, WriteChannel, ReadChannel należy się upewnić czy IOBlock w którym znajduje się wskazany kanał jest ustawiony w trybie ExecutionMode = callback lub continous and callback Funkcja ReadIOBlock ReadDevice ReadChannel GetChannelValue GetDeviceChannelsValues Scan WriteChannel Break Krótki opis odczyt kanałów ze wskazanego bloku kanałów odczyt kanałow zdefiniowanych w urządzeniu odczyt wskazanego kanału odczyt ostatniej wartości wskazanego kanału odczyt listy ostatnich wartości kanałów z urządzenia rozpoczęcie wyszukiwania urządzeń zapis do wskazanego kanału przerwanie bieżącej akcji ANT Sp z o.o. Strona 262

263 ReadIOBlock ReadIOBlock name Funkcja odczytuje wartości wszystkich kanałów zdefiniowanych we wskazanym bloku o nazwie name. Wartości są umieszczone w kanałach wyjściowych. Przykład zastosowania można znaleźć w temacie odczyt wartości kanałów. ReadDevice ReadDevice device_name Funkcja odczytuje wartości wszystkich kanałów, zdefiniowanych w urządzeniu device_name. Odczytane wartości wysyłane są po kanałach systemu. Jak używać funkcji ReadChannel, GetChannelValue, ReadIOBlock, GetDeviceChannelsValues, ReadDevice. ReadChannel ReadChannel name Funkcja odczytuje bieżącą wartość kanału o nazwie name. Wartość odczytana z kanału zwracana jest jako wynik funkcji. Przykład odczytu kanału ModbusMaster0.N13.IO32.U1 z urządzenia N13 zdefiniowanego w module ModbusMaster0. Wartość kanału dostępna jest w zmiennej U1. set status [antcallfunction "ModbusMaster0" "ReadChannel" U1 "ModbusMaster0.N13.IO32.U1"] Jak używać funkcji ReadChannel, GetChannelValue, ReadIOBlock, GetDeviceChannelsValues, ReadDevice. ANT Sp z o.o. Strona 263

264 GetChannelValue GetChannelValue name Funkcja odczytuje ostatnią odczytaną wartość kanału o nazwie name. Wartość odczytana z kanału zwracana jest jako wynik funkcji. Przykład odczytu kanału ModbusMaster0.Device0.IOblock0.Channel1_out z urządzenia Device0 zdefiniowanego w module ModbusMaster0. Wartość kanału dostępna jest w zmiennej Channel1_out, zdefiniowanej w bloku IOblock0. proc getchannelvalues { } { set status [ antcallfunctionwithupdates ModbusMaster0 GetChannelValue results ModbusMaster0.Device0.IOblock0.Channel1_out } Jak używać funkcji ReadChannel, GetChannelValue, ReadIOBlock, GetDeviceChannelsValues, ReadDevice. GetDeviceChannelsValues getdevicechannelsvalues device Odczytuje ostatnie wartości z kanałów wskazanego urządzenia. Jak używać funkcji ReadChannel, GetChannelValue, ReadIOBlock, GetDeviceChannelsValues, ReadDevice. ANT Sp z o.o. Strona 264

265 WriteChannel WriteChannel name value Funkcja zapisuje wartość do kanału o nazwie name wartość value. Przykład funkcji zapisującej dane do kanału channel znadującego się w module ModbusMaster modbusmodule. proc ModbusWrite { modbusmodule channel value } { set status [ antcallfunction $modbusmodule WriteChannel results $channel $value ] if {$status!= "completed" } { antlog error "ModbusWrite $channel $value $status" } } Scan Scan dotyczy: ModbusMaster Rozpoczęcie wyszukiwania urządzeń. Break Break Wywołanie funkcji powoduje przerwanie bieżącej akcji: wyszukiwania urządzeń odczytu bloku Funkcja znajduje zastosowanie przy przerywaniu wyszukiwania urządzeń, rozpoczętego wywołaniem funkcji Scan Funkcja ma znaczenie identyczne z komendą użytkownika break. ANT Sp z o.o. Strona 265

266 Odczyt wartości kanałów dotyczy: GetChannelValue,ReadChannel, ReadIOBlock,GetDeviceChannelsValues, ReadDevice Wartości kanałów z urządzeń zdefiniowanych w modułach akwizycji danych typu PLCModules, mogą być przekazywane poprzez zmapowane ze sobą kanały oraz mogą być odczytywane za pomocą funkcji przez moduły skryptowe. Użycie funkcji ReadDevice, ReadIOBlock powoduje odczytanie danych z urządzenia i umieszczenie ich wartości w kanałach wyjściowych zdefiniowanych dla urządzenia. Jeśli kanały takie są zmapowane do kanałów wejściowych innych modułów, to po wywołaniu z niezależnego modułu skryptowego tych funkcji zostanie do tych kanałów przekazana nowo odczytana wartość. ANT Sp z o.o. Strona 266

267 W powyższym przykładzie kanał ModbusMaster0.IPS-01.Read.Chn1_out został zmapowany do kanały wejściowego kontrolki Gauge0. Jeśli w module skryptu nazwanego w przykładzie ReadChannels, wywołany funkcje ReadDevice lub ReadIOBlock odcztujące dane z urządzenie IPS-01, zdefiniowanego w kanale Chn1_out, to odczytana wartość zostanie wysłana do Gauge0. Odczytana z urządzenia ostatnia wartość kanału jest zapamiętywana, i może zostać odczytana przez funkcję GetChannelValue lub GetDeviceChannelsValues. Różnica pomiedzy funkcjami GetChannelValue a ReadChannel polega na tym, że wywołanie ReadChannel powoduje odczyt danych z urządzenia, natomiast GetChannelValue przekazuje ostatnio odczytaną wartość. W związku z tym, wywołanie GetChannelValue natychmiast wraca, natomiast wywołanie ReadChannel może trwać nawet przez czas równy ustawieniu TimeOut na urządzeniu. Aby odczytać wszystkie wartości z urządzenia można wywołać funkcję ReadDevice, która spowoduje odczytanie i ustawienie odczytanych wartości dla wszystkich kanałów zdefiniowanych dla danego urządzenia. Po wykonaniu takiej funkcji, możemy bezpośrednio funkcją GetChannelValue odwoływać się do poszczególnych kanałów. Funkcja GetDeviceChannelsValues zwraca listę kanałów wybranego urządzenia oraz ich wartości. Są to podobnie jak w przypadku funkcji GetChannelValue, ostatnio odczytane wartości. Aby odczytać najświeższe należy wywołanie tej funkcji poprzedzić funkcją ReadDevice. Ustawienie IOBlocków ExecutionMode na continous and callback powoduje, cykliczny odczyt wartości z urządzenia. Wtedy wywołując funkcję ReadDevice, lub GetDeviceValues zwracane są wartości odczytane podczas ostatniego, poprawnego cyklu akwizycji. ANT Sp z o.o. Strona 267

268 Funkcje komunikacji z bazą danych W systemie ANT Studio znaleźć można gotowy moduł SQLArchive służący do komunikacji z bazą danych. Jego przeznaczeniem jest odczyt i zapis trendów, jest specjalizowany do wykonywania jednego zadania. W systemie ANT Studio położono nacisk na łatwość posługiwania się językiem SQL z poziomu skryptu. Moduł skryptowy, który ma korzystać z SQLowej bazy danych powinien zostać wyposażony w kanał wejściowy typu sql_result. Do kanału tego należy zmapować kanał "result" modułu ODBC lub SQLLite. Do komunikacji z bazą danych wykorzystywane są dwie procedury: antsqlquery i antsqlcheck zdefiniowane w pakiecie antutility, który należy dołączyć na początku skryptu poleceniem: package require antutility Poniżej przedstawiono krótki skrypt realizujący komunikację z bazą danych wraz z objaśnieniem poszczególnych elementów. package require antutility proc startup { } { antsetchannelcontrol sql_result_in save_and_notify antsetchannelcontrol input_in save_and_notify } proc shutdown { } { } proc notifydata { channel_name } { if { "sql_result_in" == $channel_name } { return } if { "input_in" == $channel_name } { set value [ lindex [ antgetchannelvalues "input_in" ] 0 ] antclearchannelvalues "input_in" set t [ anttimetostring [ antgetcurrenttime ] ] antsqlquery sql_result_in answer "UPDATE tabela SET wartosc = $value, czas = \'$t\' WHERE nazwa = \'ZeSkryptu\'" antsqlcheck answer update } } ANT Sp z o.o. Strona 268

269 W procedurze startup tworzone są kolejki obu kanałów wejściowych. Istotne elementy znajdują się w procedurze notifydata: do obsługi zapytań SQL wykorzystywana jest procedura antsqlquery więc wszelkie dane przesyłane na kanał sql_result_in należy ignorować; pobierana jest najświeższa dana z kanału input_in, oraz czas systemowy, który konwertowany jest do postaci zrozumiałej dla języka SQL; wywołanie procedury antsqlquery, wykonującej zapytanie SQL. Jej parametry to kolejno: o nazwa kanału prowadzącego do bazy danych (w tym przypadku sql_result_in ); o nazwa zmiennej, która będzie przechowywała odpowiedź (tutaj będzie to zmienna answer ); o zapytanie SQL; po wykonaniu zapytania sprawdzany jest typ odpowiedzi zapisanej w zmiennej. Przy tego rodzaju zapytaniu spodziewamy się odpowiedzi typu update. Procedura antsqlcheck sprawdza to i jeśli wystąpią jakieś niezgodności zgłosi błąd. Powyższy przykład realizuje funkcje zapisu do bazy danych. Poniżej przedstawiono przyklad odczytujący wartości z bazy i wysyłający je na kanały wyjściowe modułu. package require antutility proc startup { } { antsetchannelcontrol sql_result_in save_and_notify antinstallhook "1 s" } proc shutdown { } { } proc notifydata { channel_name } { } proc timerhook { hook_name } { antsqlquery sql_result_in answer "SELECT nazwa, czas, wartosc FROM tabela WHERE nazwa = \'ZeSkryptu\'" antsqlcheck answer result antsetchannelvalues "output_out" [ lindex $answer(row0) 2 ] } W skrypcie tym użyte zostało zapytanie SELECT, na które odpowiedź jest typu result, co zostało uwzględnione w procedurze antsqlcheck. Ostatnia linijka procedury timerhook realizuje odczyt danych ze zmiennej answer i wysyłanie ich na kanał wyjściowy. Ważnym elementem jest opis struktury zmiennej answer. Jest ona tablicą wypełnianą w zależności od potrzeb. Odpowiedzi w języku zapytań SQL mogą należeć do jednego z trzech typów: Rezultat (result) takich odpowiedzi udziela baza jeśli zadano pytanie zwracające dane (SELECT) i wszystko poszło dobrze (tablica istnieje, posiada odpowiednie kolumny, itd); Zmiana (update) takich odpowiedzi udziela baza jeśli zapytanie modyfikowało w jakiś sposób bazę danych (INSERT, UPDATE) i nie wystąpił błąd; ANT Sp z o.o. Strona 269

270 Błąd tego rodzaju odpowiedź może pojawić się przy każdego typu zapytaniu, jeśli tylko wystąpi jakaś nieprawidłowość (np. SELECT dotyczy nieistniejącej tabeli, INSERT nie zawiera odpowiedniej liczby kolumn, itd) Tak więc rodzaj odpowiedzi bazy danych jest najistotniejszą sprawą przy jej opisie. Jest on przechowywany w polu status. Może mieć wartość: error, update lub result. Jeżeli status ma wartość error, to dodatkowe pole error przechowuje opis błędu, przesłany przez bazę danych. Jeżeli status ma wartość update, to dodatkowe pole update_count zawiera licznik zmian (np. wierszy wstawionych do tabeli, wierszy zmienionych itd). W przypadku odpowiedzi typu result, pól jest więcej: row_count zawiera ilość wierszy w odpowiedzi; coulmn_count zawiera ilość kolumn; column_i_name zawiera nazwę i-tej kolumny w odpowiedzi; column_i_table_name zawiera oryginalną nazwę i-tej kolumny w tabeli (inna jeśli użyto klauzuli AS w zapytaniu SQL); column_i_type zawiera typ i-tej kolumny w odpowiedzi; rowi zawiera dane i-tego wiersza odpowiedzi w postaci listy TCL; Tak więc komenda [ lindex $answer(row0) 2 ] z przykładowego skryptu pobiera trzeci element pierwszego wiersza. Przykładowy skrypt, który odczytuje wszystkie możliwe informacje o tabeli może wyglądać następująco: package require antutility proc startup { } { antsetchannelcontrol sql_result_in save_and_notify antinstallhook "1 s" } proc shutdown { } { } proc notifydata { channel_name } { } proc timerhook { hook_name } { antsqlquery sql_result_in answer "SELECT * FROM tabela" antsqlcheck answer result antlog "Wynik zawiera $answer(column_count) kolumn i $answer(row_count) wierszy" for { set i 0 } { $i < $answer(column_count) } { incr i } { antlog "Kolumna $i: nazwa \"$answer(column_$i\_name)\", nazwa w tabeli \"$answer(column_$i\_table_name)\",typ \"$answer(column_$i\_type)\"" } for { set i 0 } { $i < $answer(row_count) } { incr i } { antlog "Wiersz $i: \"$answer(row$i)\"" } } ANT Sp z o.o. Strona 270

271 Kilka uwag do powyższego przykładu: Nazwy kolumn w tabeli to właściwość nie wspierana przez SQLLite, którego tutaj użyto. W większości baz danych pojawią się tutaj oryginalne nazwy kolumn. Dane z kolumny czas wyglądają nietypowo, gdyż są w formacie czasu używanym w skryptach TCL systemu ANT Studio (notacja: sekundy.ułamki_sekund). Do przekonwertowania ich na czytelny format SQL można użyć funkcji anttimetostring. ANT Sp z o.o. Strona 271

272 antsqlquery antsqlquery channel answer query Jest to funkcja wykonująca zapytanie SQL. Jej parametry to kolejno: o nazwa kanału prowadzącego do bazy danych (najczęściej jest to sql_result_in ); o nazwa zmiennej, która będzie przechowywała odpowiedź; o zapytanie SQL; Więcej informacji na temat komunikacji z bazą danych z poziomu modułu skryptowego można znaleźć w rozdziale: Komunikacja z bazą danych antsqlcheck antsqlcheck answer Funkcja ta sprawdza rodzaj odpowiedzi z bazy danych i jeśli wystąpią jakieś niezgodności zgłosi błąd. Odpowiedzi w języku zapytań SQL mogą należeć do jednego z trzech typów: Rezultat (result) takich odpowiedzi udziela baza jeśli zadano pytanie zwracające dane (SELECT) i wszystko poszło dobrze (tablica istnieje, posiada odpowiednie kolumny, itd); Zmiana (update) takich odpowiedzi udziela baza jeśli zapytanie modyfikowało w jakiś sposób bazę danych (INSERT, UPDATE) i nie wystąpił błąd; Błąd tego rodzaju odpowiedź może pojawić się przy każdego typu zapytaniu, jeśli tylko wystąpi jakaś nieprawidłowość (np. SELECT dotyczy nieistniejącej tabeli, INSERT nie zawiera odpowiedniej liczby kolumn, itd) Więcej informacji na temat komunikacji z bazą danych z poziomu modułu skryptowego można znaleźć w rozdziale: Komunikacja z bazą danych ANT Sp z o.o. Strona 272

273 Przykład operacji na bazie Skrypt wykonujący operacje tworzenie tabeli, zapisu i odczytu package require antutility set FIRST_HOOK 1 proc startup { } { # pobieramy liste kanalow wejsciowych foreach channel [ antgetinputchannels ] { antsetchannelcontrol $channel save_and_notify } antinstallhook "5 s" } proc shutdown { } { antremovehook "5 s" } proc notifydata { channel_name } { global FIRST_HOOK if { "sql_result_in" == $channel_name } { return } if { $FIRST_HOOK == 1 } { return } #wartosc przychodzaca z danego kanalu zapisujemy do bazy set value [ lindex [ antgetchannelvalues $channel_name ] 0 ] antclearchannelvalues $channel_name set t [ anttimetostring [ antgetcurrenttime ] ] antsqlquery sql_result_in answer "insert into tabela values ('$value','$t','$channel_name')" antsqlcheck answer update } proc timerhook { hook_name } { global FIRST_HOOK #przy pierwszym wykonaniu skryptu zakladamy tabele z kolumnami wartosc czas nazwa if { $FIRST_HOOK } { antsqlquery sql_result_in answer "create table tabela ( wartosc varchar(10), czas varchar(30), nazwa varchar (20) )" if { [catch {antsqlcheck answer update}] } { antsqlquery sql_result_in answer "create table tabela ( wartosc varchar(10), czas varchar(30), nazwa varchar (20) )" } set FIRST_HOOK 0 } ANT Sp z o.o. Strona 273

274 #polecenie wyswietlenia wszystkich elementow tabeli antsqlquery sql_result_in answer "SELECT * FROM tabela" antsqlcheck answer result antlog "Wynik zawiera $answer(column_count) kolumn i $answer(row_count) wierszy" #Wyswietlamy w logach wystemowych zawartosci poszczegolnych wierszy #i kolumn for { set i 0 } { $i < $answer(column_count) } { incr i } { antlog "Kolumna $i: nazwa \"$answer(column_$i\_name)\", nazwa w tabeli \"$answer(column_$i\_table_name)\", typ \"$answer(column_$i\_type)\"" } for { set i 0 } { $i < $answer(row_count) } { incr i } { antlog "Wiersz $i: \"$answer(row$i)\"" } } ANT Sp z o.o. Strona 274

275 DDE Moduł DDE umożliwia utworzenie jednego lub więcej serwerów bądź klientów protokołu DDE wewnątrz systemu. Wyboru czy konfigurowany moduł ma być serwerem czy klientem DDE dokonuje się ustawiająć pole ClientOrSerwer w ustawieniach modułu. Jeden moduł umożliwia wymianę danych zdefiniowanych w wielu tematach ( topic ). Ustawienie konfiguracyjne modułu Active Parametr Wartość moduł wyłączony ClientOrServer Name Separator ServerName TimeOut moduł włączony wybór, czy moduł ma być klientem czy serwerem nazwa modułu sposób rozdzielenia części dziesiętnych liczby "," lub "." nazwa serwera lub klienta DDE limit czasu odpowiedzi Przekroczenie tego czasu powoduje sygnalizację braku połączenia oraz podejmowanie prób wznowienia połączenia. ANT Sp z o.o. Strona 275

276 Ustawienie konfiguracyjne kanału Parametr Comment Disable opis kanału Wartość kanał aktywny Item Name Topic Type kanał aktywny nazwa itemu DDE nazwa kanału w systemie nazwa tematu (topic) w którym udotępniany jest dany item typ kanału w systemie Zobacz przykładową konfiguracje w Example Configurations DDE ANT Sp z o.o. Strona 276

277 KONTROLKI GRAFICZNE DO WIZUALIZACJI System wykrywania stanów alarmowych AlarmLogger Moduł służy do wykrywania wartości alarmowych na kanałach wejściowych. Wykrywane są zarówno początki jak i końce alarmów. Alarmy logowane są do bazy danych. Do przeglądania alarmów oraz ich akceptacji służy moduł AlarmViewer Kanały wejściowe Kanał wejściowy, którego wartość jest monitorowana według zakresów w alarmie o nazwa podanej w polu Comment. W tym przypadku alarm Example alarm Kanał łączący moduł z bazą danych (SQLite, ODBC) ANT Sp z o.o. Strona 277

278 Baza danych Konfiguracja współpracy z bazą danych Nazwa tabeli w bazie danych do której logowane będą alarmy Język komunikacji z bazą danych Default - PostgreSQL, SQLite Alarm Katalog zawierający definicję alarmów. Każdy podkatalog to alarm. Przykładowy zdefiniowany alarm. Każdy podkatalog to zakres. Szablon wiadomości do wysłania w przypadku wystąpienia lub ustąpienia alarmu. Jesli w szablonie wystąpi jeden z poniższych ciągów znaków zostanie on zastąpiony odpowienią informacją. I tak: #Alarm - nazwą alarmu (Example alarm) #Range - nazwą zakresu, #Time - czasem wystąpienia (zakończenia), #Value - wartością która wywołała (zakończyła) alarm, #Priority - priorytetem zakresu, #Channel - nazwą kanału na którym wystąpił alarm, #State - stanem alarmu: początek - Begin, koniec - End. UWAGA! Zakończenie alarmu będzie odnotowane tylko w przypadku wystąpienia #State. Wysłanie wiadomości o rozpoczęciu/zakończeniu alarmu On - wiadomośc będzie wysyłana Off - wiadomość NIE będzie wysłana Zakres Alarm w którym zdefiniowany jest zakres Nazwa folderu to zarazem nazwa zakresu. Dolna granica zakresu alarmowego == - alarm zostanie wywołany jeśli na wejściu pojawi się wartość równa wartości From!= - alarm zostanie wywołany jeśli na ANT Sp z o.o. Strona 278

279 wejściu pojawi się wartość różna od wartości From >=, <=, <, > - alarm zostanie wywołany jeśli na wejściu pojawi się wartość spełniająca nierówność Górna granica zakresu alarmowego >=, <=, <, > - alarm zostanie wywołany jeśli na wejściu pojawi się wartość spełniająca nierówność Czas martwy - alarm zostanie wywołany/zakończony jeśli będzie przebywać w zakresie/poza zakresem dłużej od tego czasu Priorytet alarmu Kanały wyjściowe Wyjście mapowane do modułu AlarmViewera Wyjście wiadomości tekstowej alarmu Odświeżanie Częstotliwość egzaminowania wartości kanałów wejściowych Zasada logowania alarmów Każdemu z wejść modułu przypisać należy alarm, poprzez wpisanie jego nazwy w pole Comment wejścia. Pojawiające się na wejściu wartości będą egzaminowane z częstotliwością zależną od ustawienia Hook. Jeśli okaże się, że wartość spełnia (nie spełnia) warunki zakresu przez czas dłuższy od DeadTime to zostaje zalogowany początek (koniec) alarmu do bazy danych. Do przegladania alarmów oraz ich akceptacji służy moduł AlarmViewer Można wyróznić następujące kombinacji ustawienia zakresu. Przez Value oznaczona zostanie wartość, która pojawiła się na wejściu. UWAGA! Wartość w polu From zawsze musi być mniejsza od wartości w polu To (chyba że To jest puste) Dalej przez nazwę ustawienia będzie rozumiana jego wartość. Natomiast Value to wartość na kanale wejściowym. ANT Sp z o.o. Strona 279

280 1. FromRange równe "==" ("!=") i ToRange puste Jeśli Value jest równa (różna) od From występuje alarm. 2. FromRange równe ">" (">=") i ToRange "<" ("<=") Jeśli Value większe (więsze lub równe) od From i Value mniejsze (mniejsze lub równe) od To występuje alarm. 3. FromRange równe "<" ("<=") i ToRange ">" (">=") Jeśli Value mniejsze (mniejsze lub równe) od From lub Value większe (większe lub równe) od To występuje alarm. 4. FromRange równe "<" lub "<=" (">" lub ">=") i ToRange puste ANT Sp z o.o. Strona 280

281 Jesli Value mniejsze lub mniejsze i równe (większe lub większe i równe) od From to alarm. Krócej można warunki przedstawić w ten sposób 1. ToRange puste Jeśli Value FromRange From to alarm, gdzie FromRage : [ ==!= <= < >= >] 2. ToRange : [ <= < ] i FromRange = [ >= >] Jeśli Value ToRange To i Value FromRange From to alarm 3. ToRange : [ >= > ] i FromRange = [ <= <] Jeśli Value ToRange To lub Value FromRange From to alarm ANT Sp z o.o. Strona 281

282 AlarmViewer Moduł słuzy do prezentacji alarmów logowanych przez moduł AlarmLogger oraz do ich akceptacji. W skład podstawowej konfiguracji wchodzą: AlarmLogger AlarmViewer wyświetlającej alarmy Diode wskazujący czy w występują alarmy niezaakceptowane Na to jakie informacje widoczne są w tabeli wpływ mają: tabela alarmów wskazana w module AlarmLogger trendy wymienione w folderze Trends Widok okna modułu wraz z diodą informującą o występowaniu alarmu niezaakceptowanego. ANT Sp z o.o. Strona 282

283 Konfiguracja Kanał wejściowy Kanały wejściowe Kanał zmapowany do data_out modułu AlarmLogger Kanał wyjściowy Wyjście przyjmujące dwie wartości: 1 - są niezaakceptowane alarmy w tabeli 0 - wszystkie alarmy zaakceptowane Podstawowa konfiguracja Limit danych pobieranych z bazy danych Przesunięcie przeglądanych danych 0, -1, -2 * InitPeriod Okres przeglądanych alarmów. Hour - godzina Day - dzień Week - tydzień Month - miesiąc Język komunikatów PL - polski EN - angielski ANT Sp z o.o. Strona 283

284 On - Tylko do odczytu Off - Możliwe akceptowanie alarmów Okres odżwieżania informacji o alarmach. Tytuł tabeli Konfiguracja tabeli z alarmami Konfiguracja tabeli Domyślne sortowanie tabeli Domyślne sortowanie Kolumna domyślengo sortowania Kierunek domyślnego sortowania ASC - rosnąco DESC - malejąco Kolory elementów tabeli Kolory różnych elementów tabeli Elementy wyboru zakresu wyświetlanych alarmów Zaakceptowany i ukończony alarm Niezaakceptowany alarm Zaakceptowany ale NIE ukończony alarm Nagłówki kolumn Kolumny tabeli Konfiguracja kolumn widocznych w taeli Użytkownik / Akceptuj Szerokość kolumny w pikselach Pozycja kolumny Liczba - pozycja w tabeli Puste - Brak w tabeli Nagłówek kolumny Wartość która spowodowała włączenie alarmu Definicja alarmu Czas akceptacji alarmu Kanał na którym wystąpił alarm Priorytet alarmu Czas ustąpienia alarmu Nazwa alarmu Nazwa zakresu Czas wystąpienia alarmu ANT Sp z o.o. Strona 284

285 Wartość, która spowodowała ustąpienie alarmu Trendy Trendy wyświetlane w tabeli. Jeśli brak elementów w folderze - wyświetlane wszystkie alarmy wyświetlone zostaną alarmy które wystąpiły na kanale example_in moduły AlarmLogger Obsługa 1. Zakres widocznych danych 2. Wybór przedziału czasu. W celu zmiany zakresu czasu za jaki wyświetlane są alarmy należy kliknąć dwa razy. Do wyboru są: Obecna Godzina Obecny Dzień Obecny Tydzień Obecny Miesiąc 3. Wybór wcześniejszego przedziału w zależności od wyboru w polu Wybór póżniejszego przedziału w zależności od wyboru w polu Zaakceptowanie wszystkich widocznych alarmów, 6. Nagłówek kolumny. Klikając dokonujemy sortowania danych. Informuje o tym znak +/- umieszczony przed nazwą kolumny. Trzecie kliknięcie spowoduje powrót do domyślego sortowania. 7. Akceptacja alarmu 8. Nazwa użytkownika, który zaakceptował alarm. ANT Sp z o.o. Strona 285

286 Przykładowa konfiguracja Przykładowa konfiguracja obrazująca wykorzystanie systemu alarmów składa się z modułów: 1. Knob- zadajnik wartości 2. SQLite - bazy danych 3. AlarmLogger (loguje alarmy do bazy danych) 4. Display (wyświetla komunikaty AlarmLoggera) 5. AlarmViewer (wyświetla alarmy) 6. Diode (wyświetla czy występują niezaakceptowane alarmy w bazie) Tworzenie konfiguracji. Dodaj do konfiguracji trzy moduły: Knob, AlarmLogger i SQLite ANT Sp z o.o. Strona 286

287 Dokonaj odpowiednich mapowań: Połącz moduł AlarmLogger z modułem bazy danych. W tym przypadku jest to SQLite, ale może to być również ODBC. ANT Sp z o.o. Strona 287

288 Zmapuj wyjście modułu Knob do wejścia example_in modułu AlarmLogger. Od tego momentu wartość ustawiana na Knob jest monitorowana i jeśli wejdzie w któryś z zakresów zdefiniowanych w przykładowym alarmie (Example alarm) jego wystąpienie zostanie zalogowane. Aby zobrazować moment wykrycia i logowania alarmu dodaj moduł DisplayTk i dołącz do niego wyjście message_out modułu AlarmLogger. Zmieniaj pozycję pokrętła i obserwuj na wyświetlaczu pojawianie się napisów sformatowanych według wzorca zawartego w ustawieniu MessageFormat. ANT Sp z o.o. Strona 288

289 ANT Sp z o.o. Strona 289

290 Teraz dodaj moduł AlarmViewer, aby móc obserwować alarmy oraz je akceptować. ANT Sp z o.o. Strona 290

291 Następnie zmapuj wyjście data_out modułu AlarmLogger do wejścia data_in modułu AlarmViewer (dopóki tego nie zrobisz w tytule modułu będzie widoczny komunikat informujący o błędzie połączenia z bazą danych). Po tych czynnościach możesz przeglądać i akceptować alarmy widoczne w tabeli. ANT Sp z o.o. Strona 291

292 ANT Sp z o.o. Strona 292

293 Dodatkowo możesz wykorzystać stan wyjścia notaccepted_out do przezentacji informacji o tym, czy w bazie występują niezaakceptowane alarmy. Jeśli tak, to na wyjściu pojawia się wartość 1, w przeciwnym przypadku 0. Do przedstawienia stanu wyjścia możesz uzyć modułu Diode. Dodaj go do konfiguracji i umieść w oknie. ANT Sp z o.o. Strona 293

294 Następnie dokonaj mapowania. i skonfiguruj dwa zakresy Range dla wejścia według przykładu niżej: Accepted - wszystkie alarmy zaakceptowane Notaccepted - występuje alarm niezaakceptowany ANT Sp z o.o. Strona 294

295 W efekcie otrzymasz konfigurację w postaci: ANT Sp z o.o. Strona 295

296 Wyświetlanie danych ArchivePlot Ustawienia konfiguracyjne kontrolki ANT Sp z o.o. Strona 296

297 Active Parametr Wartość kontrolka wyłączona Caption CursorColor kontrolka włączona Tytuł kontrolki, wyświetlany na górze Kolor kursora CursorShape Font InitialControlMode InitialResolution InitialTimeAxisWidth Name PlotAreaFont PlotBackgroundColor ShowLengend UpdateWhenInvisible VerticalTimeAxis Rodzaj kursora Czcionka Tryb pracy po uruchomieniu kontroki Początkowa rozdzielczość wykresu Początkowy zakres osi czasu Nazwa kontrolki w systemie Wybór czcionki Kolor tła kontrolki włączone okno legendy po uruchomieniu kontrolki włączone odświeżanie wartości kontrolki nawet w przypadku gdy nie jest ona w danej chwili widoczna włączona pionowa oś czasu Przykłady ustawień kontrolki Tryby pracy - RealTime i Viewer Kontrolka pracująca w trybie RealTime prezentuje dane o zakresie czasu InitialTimeAxisWidth lub innym ustawionym przez użytkownika do chwili obecnej. Dane są na bieżąco aktualizowane. Przykład pokazuje kontrolkę w trybie pracy RealTime, z włączoną legendą oraz aktywnymi kursorami. ANT Sp z o.o. Strona 297

298 Tryb Viewer umożliwia przeglądanie danych, Kontrolka wyświetla zadany przez użytkownika okres danych, który wybiera sie za pomocą suwaka oraz kontrolek ustawiania daty z lewej i prawej strony. ANT Sp z o.o. Strona 298

299 ANT Sp z o.o. Strona 299

300 Pionowa oś czasu - VerticalTimeAxis Kursory ANT Sp z o.o. Strona 300

301 Wybierając tryb Cursor, zarówno w trybie RealTime jak i Viewer, możemy wyznaczyć wartość wskazanego punktu na trendzie. Rozdzielczość prezentowanego trendu ANT Sp z o.o. Strona 301

302 Kontroka umożliwia ustawienie rozdzielczości z jaką prezentowane są dane. Wybór rozdzielczości jest automatycznie dostosowywany do aktualnie wybranego zakresu czasu. Przykładowe ustawienie 0.05 second oznacza, że kontrolka wyświetli kolejne punkty trendu, ale nie częściej niż co 0.05 sekundy. Oznacza to, że nie zostaną wyświetlone punkty ( piki ) o czasie krótszym niż 0.05 s. Wybór rozdzielności można wykonywać wieloktrotnie, przy czym system nie umożliwi narysowania trendu ze zbyt dużej chwili czasowej o maksymalnej rozdzielności. Przesuwanie trendów Polecenia z menu kontrolki : Pan Time Axis Pan Value Axis Pan Time and Value Axes umożliwiają przesuwanie trendów. Po wybraniu tych opcji można "chwycić" za wybrany trend i przesunąć go: w górę, w dół, w prawo bądź w lewo. Powiększanie osi czasu i wartości Podczas przeglądania danych w trybie Viewer, można powiększać wybrane fragmenty trendów wybierając polecenie Zoom Value Axis, Zoom Time Axis lub Zoom Time and Value Axes Przykład użycia Zoom Time and Value Axes ANT Sp z o.o. Strona 302

303 Powiększony fragment trendu Przywracanie paramentów początkowych Aby powrócić do ustawień paramentów początkowych, zdefiniowanych przez parametry kontrolki należy wybrać polecenie Restore defaults. ANT Sp z o.o. Strona 303

304 Ustawienia kolorów oraz stylu wyświetlanych trendów Każdemu wyświetlanemu przez kontrolkę trendowi odpowiada para InputChannel oraz Plot. Poprzez zdefiniowanie kanału ( InputChannel ) wskazujemy źródło danych. Kanałowi przyporządkujemy Plot, który definiuje sposób przedstawienia danego kanału na kontrolce. Definijąc plot możemy przydzielić mu oś wartości Y. Wiele plotów może korzystać z tej samej osi wartości, ale w zależności od potrzeb można każdemu plotowi przyporządkować osobną oś wartości. Parametr Caption ChannelName Color LineStyle LineWidth PointColor PointStyle YAxisName Wartość Nazwa plotu wyświetlana na legendzie wykresu Kanał danych do których konfigurowany jest plot Kolor plotu Styl prezentowania linii Grubość linii Kolor zaznaczonych na wykresie punktów Styl zaznaczonych na wykresie punktów Oś wartości zdefiniowana dla danego plota ANT Sp z o.o. Strona 304

305 Drag and Drop - szybkie konfigurowanie kontrolki Przeciągając wybrany trend z Achiwum ( w tym przypadku SQLArchive0 ) na kontrolkę ArchivePlot automatycznie dodawany jest kanał i plot trendu. Drugim sposobem na dodanie do kontrolki kanału jest wybranie z menu trendu polecenia Show on plot ANT Sp z o.o. Strona 305

306 Usuwanie trendów z kontrolki Aby usunąć z konfiguracji kontrolki trend można użyć polecenia Remove plot, które usuwa kanał i plot wskazanego trendu. ANT Sp z o.o. Strona 306

307 Bar Ustawienia konfiguracyjne kontrolki Active Parametr Wartość kontrolka wyłączona BackgroundColor Caption CustomBackgroundColor CustomForegroundColor kolor tła opis kontrolki kontrolka włączona ustawienie tła nieaktywne ustawienie tła aktywne ustawienie czcionki nieaktywne ANT Sp z o.o. Strona 307

308 ForegroundColor Name Style ustawienie czcionki aktywne kolor czcionki nazwa kontrolki / unikalna w systemie thermometer tank hprogress vprogress hgraduated ValueExpirationColor ValueExpirationPeriod vgraduated kolor alarmu od przekroczenia czasu odświeżania wartości na kontrolce maksymalny okres, co jaki musi zmieniać się wartość wyświetlana na kontrolce ANT Sp z o.o. Strona 308

309 Chart Chart wyświetla wartości bieżące kanałów wejściowych w postaci wykresu słupkowego (Bar) lub kołowego (Pie). Aby zdefniniować wyświetlany kanał należy dodać nowy kanał wejściowy, lub przeciągnąć na folder InputChannels kanał wyjściowy innego modułu. Podpisy pod słupkami lub częściami koła można ustawić w polu Caption konfiguracji kanałów. Gdy Caption jest puste, to do podpisu użyta jest nazwa kanału. Wykres słupkowy Wykres kołowy Konfiguracja Podstawowa Tytuł pojawiający się nad wykresem Częstotliwość odświeżania Typ wykresu: Pie - wykres kołowy Bar - wykres słupkowy ANT Sp z o.o. Strona 309

310 Kanały wejściowe W polu Canal kanału można wpisać jego zastępczą nazwę (tutaj "In1") Skalowanie wykresu słupkowego Minimalna wartość Maksymalna wartość Autoskalowanie On - włączone Off - wyłączone Legenda Format wyświatlania nazw kanałów short - krótkie, usunięcie końcówki "_in" Format wyświetlania wartości "*.*f" - liczba zmiennoprzecinkowa "i" - liczba całkowita Styl Szerokość krawędzi modułu Kolor tła Kolor czcionki Czcionka, np.: "Arial 10" lub "Times 5" Przykładowa konfiguracja Zbudowana jest z dwóch typów wykresów, kołowego i słupkowego, oraz trzech modułów Knob którymi zadawane są wartości. Widać, że na wykresach widoczne są nazwy zastępcze kanałów, które zdefiniowano w polach Comment kanałów wejściowych. ANT Sp z o.o. Strona 310

311 ANT Sp z o.o. Strona 311

312 Display Ustawienia konfiguracyjne kontrolki Parametr Caption FontScale Format RefreshHook Title Unit ValueExpirationPeriod ValueExpirationColor Style\Border Style\Background Style\Foreground Wartość Etykieta wyświetlana przed wartością Skala wielkości czcionki Format wyświetlania wartości "%*.*f" - liczba zmiennoprzecinkowa "%i", - liczba całkowita "%s" - tekst "Time" - czas ostatniej wartości na kanale "Date" - data ostatniej wartości na kanale "DateAndTime" - data i czas ostatniej wartości na kanale Częstotliwość odświeżania wyświetlanych danych Tytuł kontrolki wyświetlany powyżej wartości. Jednostka wyświetlana za wartością Czas po którym wartość zostanie uznana za nieakualną. Jeśli 0 to nieskończony. Kolor tła dla nieaktualnej wartości. Szerokość ramki kontrolki Kolor tła Kolor czcionki ANT Sp z o.o. Strona 312

313 Diode Ustawienia konfiguracyjne kontrolki Active Parametr Wartość kontrolka wyłączona BackgroundColor Caption CustomBackgroundColor kolor tła opis kontrolki kontrolka włączona ustawienie tła nieaktywne DefaultColor Horn Name Style ustawienie tła aktywne kolor początkowy, przed ustawieniem się na zdefiniowany zakres głośnik alarmu nieaktywny głośnik alarmu aktywny nazwa kontrolki / unikalna w systemie round ValueExpirationColor ValueExpirationPeriod square kolor alarmu od przekroczenia czasu odświeżania wartości na kontrolce maksymalny okres, co jaki musi zmieniać się wartość wyświetlana na kontrolce ANT Sp z o.o. Strona 313

314 Ustawienia zakresu Range Parametr ChannelName Color From FromRange Name To RangeTo Wartość nazwa kanału dla którego defioniwany jest zakres kolor diody gdy spełniony jest warunek wartość dolnej granicy zakresu, może być wartość tekstowa znak zawierania nazwa zakresu wartość górnej granicy znak zawierania Ustawienie alarmu dźwiękowego Horn Parametr Delay Duration Frequency Mute Wartość odstęp czasu pomiędzy kolejnym sygnałem w ms czas trwania sygnału w ms częstotliwość dźwięku w Hz głośnik aktywny głośnik nieaktywny ANT Sp z o.o. Strona 314

315 Gauge Kontrolka umożliwa przedstawienie na jednej skali wielu wzkazań. Konfiguracja kontrolki składa się z listy kanałów wejściowych Input Channels, przydzielonych im wskaźników Pointers, oraz współnej osi Axis. Kontrolka obsługuje aktywne przeciąganie kanałów Przeciągniecie kanału wyjściowego na moduł kontrolki w drzewku konfiguracyjnym powoduje automatyczne dodanie kanału wejściowego i jego zmapowanie, dodatnie nowego wskaźnika i jego przykładowe ustawienie. Niezależnie od tego, czynności te można wykonać ręcznie, dodając kanał, i konfigurując dla niego wskaźnik. Ustawienia konfiguracyjne kontrolki Active Parametr BackgroundColor kolor tła Wartość kontrolka wyłączona kontrolka włączona ANT Sp z o.o. Strona 315

316 CustomBackgroundColor CustomForegroundColor ForegroundColor Name Style ustawienie tła nieaktywne ustawienie tła aktywne ustawienie czcionki nieaktywne ustawienie czcionki aktywne kolor czcionki nazwa kontrolki / unikalna w systemie round top bottom left right ValueExpirationColor ValueExpirationPeriod kolor alarmu od przekroczenia czasu odświeżania wartości na kontrolce maksymalny okres, co jaki musi zmieniać się wartość wyświetlana na kontrolce ANT Sp z o.o. Strona 316

317 Ustawienia skali Axis Parametr AutoScale Caption Color MajorGrid opis osi kolor osi skali Wartość autoskalowanie wyłączone autoskalowanie aktywne głowna podziałka aktywna MajorGridColor Maximum Minimum MinorGrid MinorGridColor Name głowna podziałka nieaktywna kolor głownej podziałki wartość maksymalna skali wartość minimana skali drobna podziałka aktywna drobna podziałka nieaktywna kolor drobnej podziałki nazwa skali Ustawienia konfiguracyjne wskaźnika Pointer Parametr ChannelName Color Name nazwa kolor nazwa wskaźnika Wartość ANT Sp z o.o. Strona 317

318 Grid Tabela umożliwia prezentację wartości bieżących, czasów pomiaru oraz opisów. Tabelę można konfigurować za pomocą autokonfiguratorów, tworzących tabelę dla wszystkich kanałów w systemie lub dla kanałów z folderu InputChannels. Możliwe jest również tworzenie przez użytkownika własnych tabel, konfigurując indywidualnie każde pole. Tabela ze wszystkimi kanałami w systemie Taką tabelę można wykonać, wybierając polecenie Show all channels. W tabeli zostaną umieszczone 4 kolumny, nazwa modułu, nazwa kanału, wartość oraz czas pomiaru ANT Sp z o.o. Strona 318

319 W poniższym przykładzie dodano wcześniej połączenie OPCclient, udostępniające kanały z serwera. Tabela z kanałami InputChannels Użytkownik może wybrać kanały, które będą przedstawione w tabeli, dodając je do folderu InputChannels i wybierając polecenie Show local channels. W ten sposób powstaje 3 klumnowa tabela: nazwa kanału, wartość i czas pomiaru. ANT Sp z o.o. Strona 319

320 W tabeli 3 kolumnowej będą widoczne kanały z folderu InputChannels Ustawienia konfiguracyjne tabeli Active Parametr Wartość kontrolka wyłączona kontrolka włączona BackgroundColor numer kolumny licząc od lewej od 0 CustomBackgroundColor kolor tła nieaktywny ANT Sp z o.o. Strona 320

321 FixedColumns FixedRows LineColor Name kolor tła aktywny Ilość stałych kolumn Ilość stałych wierszy Kolor lini Nazwa tabeli w systemie Konfiguracja użytkownika Konfigurowanie dowolnej tabeli polega na stworzeniu jej rozkładu kolumn i definiowaniu w ich obrębie pól. Tworzenie kolumny Wbierajać polecenie insert>new column do tabeli dodana zostaje kolumna, która posiada następujące ustawienia konfiguracyjne: Parametr Wartość Name nazwa kolumny w drzewku konfiguracyjnym Position numer kolumny licząc od lewej od 0 Width auto - automatyczny dobór szerokości kolumny W obrębie kolumny definiujemy pola cell ANT Sp z o.o. Strona 321

322 Ustawienia konfiguracyjne pola kolumny Parametr BackgroundColor Content CustomBackgroundColor Kolor tła pola Zawartość pola Wartość kolor tła nie aktywny Font Name OutputChannel kolor tła aktywny Wybór czcionki Nazwa pola w konfiguracji Nazwa kanału wyjściowego, przyporządkowana dla danego pola Position Numer wiersza w tabeli, licząc od góry od 0 Precision Ilość zer po przecinku Type Typ pola tekstowego text - w polu będzie umieszczony tekst zdefiniowany w polu Content value - w polu będzie umieszczona wartość kanału wejściowego zdefiniowanego w polu Content timestamp - w polu będzie umiszczony znacznik czasu dla kanału zdefiniowanego w polu Content ANT Sp z o.o. Strona 322

323 Aby wyświetlić Content jako tekst należy wybrać Type = text. Aby wyświetlić Wartość kanału, należy dodać kanał do folderu kanałów InputChannels, wskazać wybrany kanał w polu Content oraz ustawić Type na value. Podobnie należy postąpić chcąc wyświetlić znacznik czasu pomiaru, z tym że należy wybrać Type = timestamp. Pole tabeli może mieć przypisany kanał z folderu OutputChannels, który umożliwia wysyłanie do systemu wartości wpisywanych przez użytkownika. Kanał wyjściowy można dodać wybierając polecenie Create output channel lub zdefiniować w folderze OutputChannels kanał i wskazać go w konfiguracji pola tabeli. ANT Sp z o.o. Strona 323

324 GridTk Tabela wartości bieżących GridTk służy do prezentacji wartości bieżących na kanałach wejściowych modułu oraz ich czasów pomiarów wraz z dodatkowymi informacjami, takimi jak nazwa kanału, jednostka, wartość minimalna, maksymalna oraz wykres słupkowy. Możliwe jest również zadawanie wartości. Wiersz tabeli odpowiada kanałowi wejściowemu. W kolumnach prezentowane są odpowiednie dane. Jeśli występuje para kanałów wejściowywyjściowy o tej samej nazwie (różniąca się postfiksem _in lub _out) to możliwe jest zadawanie wartości w kolumnie Edit. Wartość zostanie wysłana przez kanał wyjściowy. ANT Sp z o.o. Strona 324

325 Widoczne mogą być następujące kolumny: Name* Value Unit* Edit Actualize Min* Bar Max* Kolumna nazwa kanału wartość pomiaru jednostka Opis pole edycyjne (aktywne jeśli obecny kanał wyjściowy) czas ostatniego pomiaru wartość minimalna wartości * stała zdefiniowana w konfiguracji wykres słupkowy wartość pomiaru (w zakresie od Min do Max) wartość maksymalna wartości Tabela z widocznymi podstawowymi kolumnami Tabela z widocznymi wszystkimi kolumnami Konfiguracja Podstawowa Podstawowa konfiguracja skryptu ANT Sp z o.o. Strona 325

326 Style Parametr Styl tabeli Opis Style\Border Szerokość krawędzi tabeli (Default = 2) Style\Foreground Style\Background RefreshRate Title FontScale Kolor czcionki w tabeli (Default - dopasowany do tła okna) Kolor tła tabeli (Default - dopasowany do tła okna) Interwał odświeżania tabeli Tytuł tabeli Scala wielkości czcionki Kanał wejściowy (InputChannel) Konfiguracja kanału wejściowego polega na wypełnieniu pola Comment według wzoru: [Nazwa opcjonalna kanału];[nazwa elementu];[pozycja w tabeli] Parametr Nazwa opcjonalna kanału Nazwa elementu Pozycja w tabeli Opis Pojawi się w kolumnie Name Nazwa elementu, który zostanie użyty do prezentacji kanału. Jeśli pusty zostanie użyty element Default. Kanały zostaną umieszczone w tabeli w kolejności rosnącej tego parametru. Elementy (Items) Zdefiniowane są w katalogu konfiguracji Items. Elementy pozwalają grupować cechy kanałów wejściowych. Nazwy elementu należy używać przy konfiguracji kanału wejściowego. Dla każdego elementu dostępne są parametry ujęte w tabeli poniżej. Będą one wykorzystywane przy prezentacji wartości bieżącej kanału w tabeli. Parametr Unit Min Max Precision Scale Opis Jednostka Wartość minimalna Wartość maksymalna Ilość miejsc po przecinku Skala wartości wejściowej ANT Sp z o.o. Strona 326

327 Color Editor Step Kolor wiersza. Może być podany w dwóch formach: - liczba szesnastkowa, np.: #cc nazwa koloru, np.: red Typ edytora wartość: - Text - pole tekstowe, - Spiner - wartości zmieniane z krokiem zdefiniowanym w parametrze Step Krok wartości dla edytora Spiner. Na podstawie wartości Min i Max obliczana jest wykresu słupa widocznego w kolumnie Bar. Kolumny (Columns) Parametr Visible On Off W katalogu konfiguracji Table\Columns\ dla każdej kolumny zdefiniowane są następujące ustawienia: Opis Kolumna widoczna Kolumna niewidoczna Width Liczba Szerokość kolumny w pikselach Name Tekst Nazwa kolumny ANT Sp z o.o. Strona 327

328 Numeric Ustawienia konfiguracyjne kontrolki Active Parametr Wartość kontrolka wyłączona BackgroundColor Caption Font Justify Name Precision Scale Style Unit ValueExpirationColor ValueExpirationPeriod kontrolka włączona wybór koloru tła opis kontrolki wybór czcionki wyrównanie nazwa kontrolki w systemie pozycja kropki skala styl kontrolki: 2D, 3D jednostka kolor alarmu od przekroczenia czasu odświeżania wartości na kontrolce maksymalny okres, co jaki musi zmieniać się wartość wyświetlana na kontrolce ANT Sp z o.o. Strona 328

329 XYGraph Ustawienia konfiguracyjne kontrolki ANT Sp z o.o. Strona 329

330 Active Parametr Wartość kontrolka wyłączona Caption MaxPlotLength Mode Name PlotBackgroundColor XChannelName kontrolka włączona tytuł kontrolki, wyświetlany na górze maksymalna ilość punktów jednego wykresu wyświetlana na ekranie tryb pracy Continous - dodaje do wykresu kolejne punkty Buffer - wyświetla na nowo każdy przysłany bufor danych nazwa kontrolki / unikalna w systemie kolor tła wykresu kanał reprezentujący oś x ANT Sp z o.o. Strona 330

331 Zadawanie wartości Button Ustawienia konfiguracyjne kontrolki Active Parametr Wartość kontrolka wyłączona BackgroundColor CustomBackgroundColor kolor tła kontrolka włączona ustawienie tła nieaktywne InitialState Name OffCaption OffColor OffString OffTextColor OnCaption ustawienie tła aktywne stan początkowy po włączeniu kontrolki On lub Off nazwa kontrolki / unikalna w systemie opis stanu Off na kontrolce kolor stanu Off na kontrolce wartość wysyłana na kanał output w stanie Off (wartość numeryczna lub string w zależności od typu kanału) kolor tekstu na kontrolce w stanie Off opis stanu On na kontrolce ANT Sp z o.o. Strona 331

332 OnColor OnString OnTextColor RefreshPeriodically kolor stanu On na kontrolce wartość wysyłana na kanał output w stanie On kolor tekstu na kontrolce w stanie On okresowe odświeżanie wyjścia wyłączone SendOff SendOn włączone okresowe odświeżanie wyjścia blokada wysłania wartości Off wysyłanie wartości Off aktywne blokada wysłania wartości Off wysyłanie wartości Off aktywne commandbutton horizontal slide vertical slide horizontal toggle vertical toggle Style push button horizontal rocker vertical rocker horizontal slide switch vertical slide switch ANT Sp z o.o. Strona 332

333 toggle on/off W zależności od stylu kontrolki Button może ona działać na dwa sposoby. Styl CommandButton sprawia, że przycisk jest monostabilny, tj. po wciśnięciu wraca sam do położenia wyjściowego, jeżeli użytkownik puści lewy klawisz myszy. Wszystkie pozostałe style charakteryzują się bistabilną pracą przycisku, gdzie przejście między stanami osiąga się przyciskając lewy przycisk myszy na kontrolce. ANT Sp z o.o. Strona 333

334 ComboBox Ustawienia konfiguracyjne Parametr BackgroundColor ForegroundColor Relief kolor tła kolor kontroki wygląd kontrolki: flat Wartość ANT Sp z o.o. Strona 334

335 groove raised ridge solid sunken LabelFont czcionka etykiety ( caption ) TextFont czcionka pola tekstowego Caption Etykieta wyświetlana na kontrolce Items Możliwe do wyboru wartości Item1 - wartość, Item2 - wartość Wybrane przez kontrolkę wartości są wysyłane kanałami OutputChannels. ANT Sp z o.o. Strona 335

336 Knob Ustawienia konfiguracyjne kontrolki Active Parametr Wartość kontrolka wyłączona BackgroundColor Caption CustomBackgroundColor CustomForegroundColor kolor tła opis kontrolki kontrolka włączona ustawienie tła nieaktywne ustawienie tła aktywne ustawienie czcionki nieaktywne ForegroundColor HoldingTime ustawienie czcionki aktywne kolor czcionki okres nieczulości na kanał wejściowy po wysterowaniu ANT Sp z o.o. Strona 336

337 InitialValue Name Precision RefreshOnChange RefreshPeriodically SetInitialValue wyjścia wartość początkowa po uruchomieniu kontrolki nazwa kontrolki / unikalna w systemie ilość miejsc po przecinku ustawiania wartości przy zmianie okresowe ustawienie wartości zezwolenie na ustawianie wartości początkowej ANT Sp z o.o. Strona 337

338 NumericEdit Ustawienia konfiguracyjne kontrolki Active Parametr Wartość kontrolka wyłączona BackgroundColor Font HoldingTime InitialValue Name Precision RefreshOnChange RefreshPeriodically kontrolka włączona Wybór koloru tła Wybór czcionki Czas podtrzymania wysterowanej wartości, w sekundach Wartość początkowa Nazwa kontrolki w systemie Pozycja kropki dziesiętnej Zmiana wartości kanału wysyłana po każdej zmianie ustawienia kontrolki Wysyłanie wartości kontrolki okresowo. Okres wysyłania danych ustawiony jest w ustawieniach RefreshPeriod ANT Sp z o.o. Strona 338

339 SetInitialValue Style Unit kontrolka nie ustawia przy włączeniu wartości InitialValue kontrolka ustawia przy włączeniu wartość InitialValue Styl kontrolki: 2D, 3D Jednostka ANT Sp z o.o. Strona 339

340 Slider Ustawienia konfiguracyjne kontrolki Active Parametr BackgroundColor kolor tła Wartość kontrolka wyłączona kontrolka włączona ANT Sp z o.o. Strona 340

341 Caption CustomBackgroundColor CustomForegroundColor opis kontrolki ustawienie tła nieaktywne ustawienie tła aktywne ustawienie czcionki nieaktywne ForegroundColor HoldingTime InitialValue Name Precision RefreshOnChange RefreshPeriodically SetInitialValue ustawienie czcionki aktywne kolor czcionki okres nieczulości na kanał wejściowy po wysterowaniu wyjścia wartość początkowa po uruchomieniu kontrolki nazwa kontrolki / unikalna w systemie ilość miejsc po przecinku ustawiania wartości przy zmianie okresowe ustawienie wartości zezwolenie na ustawianie wartości początkowej vslide Style hslide hfill vfill ANT Sp z o.o. Strona 341

342 GotoURLButton Ustawienia konfiguracyjne kontrolki Kontrolka służy do uruchamiania podanej w ustawieniach strony WWW: Parametry konfiguracyjne: name: nazwa przycisku widoczna w oknie url: adres uruchamianej strony W folderze Style mamy możliwość graficznej modyfikacji kontrolki. ANT Sp z o.o. Strona 342

343 SetValue Ustawienia konfiguracyjne kontrolki Kanały wejściowe: SP_in do kanału podpinamy kanał wyjściowy z kontrolek typu SetPoints CV_in do kanału podpinamy kanał z odczytaną aktualną wartością nastawy Kanały wyjściowe: LastValue_out - na kanał wystawiana jest ostatnio prawidłowo ustawiona wartość Set_out po naciśnięciu przycisku SET na kanał wystawiana jest wartość ustawiona kontrolką typu Setpoints" TimeOut czas oczekiwania na potwierdzenie ustawienia wartości Zasada działania: Na kanał SP_in dostajemy wartości nastawiane przy pomocy SetPoints. Wartość ta jest wysyłana w momencie naciśniecia przycisku SET. W oczekiwaniu na zmianę wartości nastawy kolor pola OK zmienia się na ciemno szary. Gdy w czasie określonym przez parametr TimeOut, wartość nastawiona jest prawidłowa pole zmienia kolor na zielony. W przypadku niepowodzenia pole to jest czerwone. ANT Sp z o.o. Strona 343

344 Raporty ArchiveReport Kontrolka tworząca raport z danych archiwalnych, z wybranych trendów, w wybranym okresie ze wskazaną rozdzielczością. Raport może być eksportowany bezpośrednio do arkusza kalkulacyjnego MS Excel, lub zapisany do pliku ANT Sp z o.o. Strona 344

345 Konfigurowanie modułu polega na dodaniu kanałów wejściowych trendów z modułów SQLArchive. Trendy takie można dodać przeciągając je z Archiv'ów do folderu InputChannels modułu ArchiveReport. Konfiguracja separator części dziesiętnej. W MS Excel -, wyświetlana ilość znaków po kropce dziesiętnej Język modułu EN - angielski PL - polski Tytuł raportu ANT Sp z o.o. Strona 345

346 Obsługa modułu 1. Tytuł i okres czasu z jakiego pochodzą dane w tabeli. 2. Wybór początku okresu danych. Klikając na ikonę kalendarza wybieramy początkowy dzień danych. 3. Przesunięcie w czasie wstecz o widoczny okres. 4. Przesunięcie w czasie w przód o widoczny okres. 5. Wybór końca okresu widocznych danych. 6. Rozdzielczość, z jaką prezentowane są dane. Minimalna wartość ustalana jest na podstawie długości wybranego okresu. Im dłuższy okres tym mniejsza rozdzielczość (większy minimalny odstęp czasowy między prezentowanymi próbkami). 7. Okres czasu za jaki widoczne są dane ( od jednego roku do jednej sekundy). 8. Uaktualnienie widocznych danych. 9. Eksport widocznych danych do programu Microsoft Office Excel. 10. Export widocznych danych do pliku tekstowego. Moduł ArchiveReport jest napisany w języku TCL\Tk i jego funkcjonalność może zostać zmodyfikowana przez użytkownika. Źródło programu znajduje się w pliku ScriptedModules\ArchiveReport.tcl ANT Sp z o.o. Strona 346

347 Reports Tree ReportsTreeConfig ReportsTreeConfig służy do konfigurowania systemu raportowego. Definiujemy tutaj rodzaje, grupy raportów, wskazujemy trendy, z których mają być zrobione raporty. Tworzymy strukturę drzewa raportu widoczną w module ReportTreeInterface Konfiguracja kanały wejścia, wyjścia: kanał wejściowy ReportsInterface_in musi być podłączony do Wyjścia modułu ReportTreeInterface. ANT Sp z o.o. Strona 347

348 Templates - konfigurowane są tutaj wzorce raportów. wzorcem raportu jest folder zawierający określone ustawienia. Ustawienia dla całego folderu Templates to: ReportDir - zawiera nazwę katalogu w którym przechowywane są wygenerowane raporty TemplatesDir - nazwa folderu, w którym przechowywane są szablony raportów ChartTitleStrategy strategia tytułowania raportu wartość: ParentToNode Strategia ta nadaje raportowi tytuł będący ścieżką od korzenia struktury po węzeł z którego generowany jest raport TemplateFile wskazuje szablon, z którym skojarzony jest dany raport wartość: Nazwa jednego ze zdefiniowanych z katalogu ReportTemplates szablonów RowwiseOperationStrategy strategia operacji międzywierszowych wartości: nop nie wykonuj żadnych operacji min wybierz minimum z próbek max policz maksimum z próbek mean policz średnią z próbek TrendOperationStrategy strategia operacji arytmetycznych między trendami wartości: sum -otrzymujemy jedną serie danych, która jest sumą wszystkich trendów w węźle sumincategories- suma poszczególnych trendów znajdujących się w podkatalogach suminsubcategories- suma poszczególnych trendów w węźle average- otrzymujemy jedną serie danych, która jest średnią arytmetyczną wszystkich trendów w węźle averageincategories- średnia arytmetyczna ANT Sp z o.o. Strona 348

349 poszczególnych trendów znajdujących się w podkatalogach nop strategia nooperation TaskCreationRoutine sposób przetwarzania danych w systemie wartości: sqlarithmetic dane według wybranej rozdzielczości sqlincremental dane przyrostowe, według wybranej rozdzielczości rawsqlarithmetic- wszystkie próbki z bazy, rawsqlincremental -wszystkie próbki z bazy, dane przyrostowe MultipleSeries określa czy w raporcie użyte będą te same trendy w różnych okresach (np. dane porównawcze) wartości: 1 każdy trend tylko w jednym interwale czasowym >1 każdy trend w dwóch interwałach czasowych SeriesNameStrategy strategia nazywania serii wartości: Categories nazwij serie jak podfoldery raportowanego węzła Subcategories nazwij serie jak podfoldery kolejnych podfolderów raportowanego węzła NodeName nazwij serie jak raportowany węzeł NodeNameDoubledWithSuffix nazwij pierwszą serie jak raportowany węzeł, a drugą jak raportowany węzeł z dołączonym sufiksem suffix Nodes nazwij serie jak poszczególne trendy ReportName nazwa raportu, która zostanie wyświetlona przez interfejs przy wyborze raportu wartość: dowolny tekst ReportTemplates typ raportu, tabela wykres wartości: Table, Chart ANT Sp z o.o. Strona 349

350 Konfiguracja ReportsTree ReportsTree zawiera informacje o strukturze raportowanych trendów, ich przynależności do poszczególnych kategorii. Każdy zdefiniowany folder musi zawierać ustawienie OrderNumber, które określa kolejność folderów w drzewie. Wartości OrederNumber zaczynają się od 0. Reports zawiera nazwy typów raportu jaki można zrobić z danego trendu lub grupy trendów Reports zawiera listę raportów, które można sporządzić z danego trendu (raporty zdefiniowane w katalogu Templates) OrderNumber ustal kolejność wyświetlania elementów w systemie raportowym(numerowanie rozpoczynamy od 0) SqlArchiveName określa nazwę archiwum w którym zdefiniowany jest trend SqlTrendName nazwa trendu, z którego ma być robiony raport Unit zawiera jednostkę wielkości danego trendu Tworzenie własnych templatów. Istnieje możliwość tworzenia własnych szablonów. W przypadku szablonu typu tabela musi być zachowane następujące nazwy poszczególnych pól. ANT Sp z o.o. Strona 350

351 Zakres obejmowania pola definiujemy wybierając w programie Excel z menu : Wstaw-> Nazwa-> Definiuj.. Przy zdefiniowanej nazwie podajemy komórki do których się dany tup pola odwołuje. ANT Sp z o.o. Strona 351

352 ReportsTreeInterface ReportConfig_in - mapujemy w wyjsciem modułu ReportsTreeConfig Title- nazwa dla modułu raportów Language - języka modułu PL polski, EN angilelski Style\Border -szerokość ramki Style\Background - kolor tła Style\Foregraund - kolor czcionki Style\Font - wybór czcionki ReportsTreeInterface musi być połączony z modułem ReportsTreeConfig. Moduł ten służy do tworzenia raportów z wybranych przez użytkownika danych. 1.Wybór danych. Użytkownik dokonuje wyboru danych zaznaczając interesujący go węzeł drzewa oraz naciskając przycisk Dalej. Raport może zostać stworzony dla pojedynczego pomiaru lub dla zdefiniowanej w węźle. ANT Sp z o.o. Strona 352

353 Jeśli dla wybranego węzła nie ma zdefiniowanego w systemie raportu, użytkownik zostanie o tym poinformowany stosownym komunikatem. 2.Wybór rodzaju raportu. Wybór rodzaju raportu zdefiniowanych dla wybranego węzła w module ReportsTreeConfig. Wybór typu danych tworzących raport: dane -dane zalogowane do bazy mininum -minimalna wartość z okresu o ustawionej rozdzielczości maksimum -maksymalna wartość z okresu o ustawionej rozdzielczości średnia -średnia wartość próbek za okres o ustawionej rozdzielczości ilość próbek- ilość próbek najbliższa- próbka zalogowana najbliżej wybranej rozdzielczości raportowania 3.Wybór okresu raportowego. Definiujemy z jakiego okresu i z jaką rozdzielczością ma być stworzony raport. ANT Sp z o.o. Strona 353

354 Przy wyborze typu raportu Inny podajemy datę początku i końca raportu. Jeżeli tworzymy raport z względem daty bazowej, zaznaczamy odpowiednie pole i wybieramy datę danych bazowych. 4. Podsumowanie wyboru raportu. ANT Sp z o.o. Strona 354

355 Przed generacją raportu mamy możliwość podejrzenia dokonanych wyborów. Klikając na przycisk "Generuj" rozpoczynamy generowanie raportu 5.Generowanie raportu. ANT Sp z o.o. Strona 355

356 Po zakończeniu generowania raportu wybieramy funkację zapisu lub otworzenia pliku raportem oraz do którego kroku tworzenia raportu chcemy po wykonaniu wybranej operacji. ANT Sp z o.o. Strona 356

357 Kontrolki współpracujące z bazą danych SQLGrid Moduł SQLGrid służy do prezentacji danych przechowywanych w bazie danych w formie tabelarycznej. Dane prezentowane w tabeli są wynikiem działania dowolnie konfigurowalnej kwerendy, którą użytkownik definiuje w konfiguracji modułu. Tabela może zawierać drugą podtabelę umieszczoną pod ostatnim wierszem, która służyć może do zaprezentowania np. podsumowania tabeli głównej. Zapytanie wykonywane jest synchronicznie z zadanym okresem oraz asynchronicznie, gdy na kanałach wejściowych pojawią się nowe dane. Kanały modułu Jedynie kanał sql_result_in musi występować w konfiguracji. Kanał ten mapujemy z kanałem wyjściowym modułu ODBC lub SQLite komunikującymi się z bazą danych, której zawartość chcemy pokazać. Funkcjonalnością pozostałych kanałów jest wpływanie na treść zapytania do bazy danych. Poprzez wprowadzenie odpowiednich znaczników treść, która znajduje się w kanale, stanie się częścią zapytania. Przy użyciu modułu SQLPeriod można podać na kanały graniczne daty dla zapytania, a za pomocą modułu SQLCombo niemal dowolną treść. ANT Sp z o.o. Strona 357

358 Konfiguracja modułu Parametr Hook Language ColumnNamesColor ColumnNamesFontScale ColumnsColor ColumnsWidth GridFontColor GridFontScale Query TableBackground Title TitleFontScale wwwpagerows Wartość określa, co ile będzie odświeżana zawartość tabeli. Musi być jednym ze znajdujących sie w folderze Hooks konfiguracji. Język menu: EN lub PL kolor komórek wiersza tytułowego tabeli skala czcionki wiersza tytułowego tabeli kolory kolumn z danymi zapisane w formacie kolor1;kolor2;kolor3, gdzie ilość kolorów rozdzielonych średnikami musi być równa ilości kolumn zwracanych przez zapytanie do bazy procentowa szerokość kolumn z danymi zapisane w formacie szerokość1;szerokość2;szerokość3, gdzie ilość wartości rozdzielonych średnikami musi być równa ilości kolumn zwracanych przez zapytanie do bazy, a ich suma musi być równa 100 kolor czcionki zawartości tabeli skala czcionki zawartości tabeli zapytanie do bazy danych kolor tła tabeli tytuł tabeli skala czcionki tytułu tabeli zmienna określająca, ile wierszy z tabeli będzie widocznych na wizualizacji www bez przewiajania ANT Sp z o.o. Strona 358

359 Tworzenie zapytania Foldery konfiguracyjne tabeli głównej oraz tabeli podsumowującej zawierają ustawienie Query. Jego wypełnienie jest obowiązkowe dla tabeli głównej. Pozostawienie tego ustawienia pustego dla tabeli podsumowującej sprawi, iż nie będzie ona rysowana. Ustawienie Query może mieć dwie formy: -s tresc zapytania -f sciezka_do_pliku W przypadku zapytań bardziej złożonych zalecane jest dla wygody edytowania umieszczanie ich w pliku i korzystanie z drugiej formy. Zapytanie może być dowolną kwerendą typu SELECT obsługiwaną przez bazę danych skomunikowaną z modułem SQLGrid. Zapytanie może zawierać specjalne znaczniki, w miejsce których wstawiane zostaną dane z kanałów wejściowych modułu. Dla przykładu, zapytanie o treści: select * from money where (data < '$to_in' and data > '$from_in') ORDER BY data DESC spowoduje zwrócenie wszystkich wierszy z tabeli money, dla których zawartość kolumny data zawiera się pomiędzy wartościami z kanałów from_in oraz to_in. Eksport do pliku Moduł SQLQuery umozliwia eksport danych z tabeli do pliku xls lub csv. Menu zapisu do pliku dostępne jest po przyciśnięciu prawego klawisza myszy na obszarze tabeli. Ponadto wyskakujące menu umożliwia wymuszenie odświeżenia tabeli. Zobacz rownież pomoc dla modułów SQLQuery, SQLPeriod, SQLFileImport, SQLForm, SQLCombo ANT Sp z o.o. Strona 359

360 SQLForm Moduł SQLForm służy do wprowadzania danych przez uzytkownika do bazy. Wprowadzenie danych dokonuje się poprzez wybranei odpowiedniej komendy z wyskakującego menu dostępnego po przyciśnięciu prawym klawiszem myszy na obszarze modułu. Kanały modułu Kanał wejściowy sql_result_in, który jako jedyny musi występować w konfiguracji, powinien być połączony z modułem ODBC lub SQLite. Konfiguracja modułu ANT Sp z o.o. Strona 360

361 Parametr InitialRows Language ColumnNames ColumnNamesColor ColumnNamesFontScale ColumnsColor ColumnsWidth GridFontScale Query TableBackground Title TitleFontScale wwwpagerows Wartość określa, ile wierszy będzie mieć tabela po uruchomieniu; jeżeli potrzeba jednorazowo wprowadzić więcej wierszy, za pomocą wyskakującego menu można zwiększyć ilość dostępnych do edycji wierszy Język menu: EN lub PL nazwy kolumn z danymi zapisane w formacie data1;data2;data3 kolor komórek wiersza tytułowego tabeli skala czcionki wiersza tytułowego tabeli kolory kolumn z danymi zapisane w formacie kolor1;kolor2;kolor3 procentowa szerokość kolumn z danymi zapisana w formacie szerokość1;szerokość2;szerokość3, gdzie suma wartości rozdzielonych średnikami musi być równa 100 skala czcionki zawartości tabeli zapytanie do bazy danych kolor tła tabeli tytuł tabeli skala czcionki tytułu tabeli zmienna określająca, ile wierszy z tabeli będzie widocznych na wizualizacji www bez przewiajania Tworzenie zapytania Ustawienie Query może mieć dwie formy: -s tresc zapytania -f sciezka_do_pliku W przypadku zapytań bardziej złożonych zalecane jest dla wygody edytowania umieszczanie ich w pliku i korzystanie z drugiej formy. Zapytanie może być dowolną kwerendą typu INSERT lub UPDATE obsługiwaną przez bazę danych skomunikowaną z modułem SQLForm. Zapytanie zawiera specjalne znaczniki symbolizujące indeks kolumny w tabeli, z której pobrane zostaną dane. Dla przykładu, zapytanie o treści: insert into Money (Data, GRB, EUR, USD, CHF, LTL) values ('$0', '$1', '$2', '$3', '$4', '$5') spowoduje wywołanie dla każdego wiersza w tabeli modułu kwerendy typu insert, która wstawi do bazy danych dane z komórek. Kolejność tych danych ustalona jest specjalne znaczniki symbolizujące numer kolumny, zaczynajace się od znaku $. Zobacz rownież pomoc dla modułów SQLQuery, SQLPeriod, SQLFileImport, SQLGrid, SQLCombo ANT Sp z o.o. Strona 361

362 SQLFileImport Moduł SQLFileImport służy do wprowadzania danych przez uzytkownika do bazy. Wprowadzenie danych dokonuje się poprzez wczytanie pliku xls lub csv. Menu otwarcia pliku oraz zapisu do bazy dostępne jest po przyciśnięciu prawym klawiszem myszy na obszarze modułu. Kanały modułu Kanał wejściowy sql_result_in, który jako jedyny musi występować w konfiguracji, powinien być połączony z modułem ODBC lub SQLite. ANT Sp z o.o. Strona 362

363 Konfiguracja modułu Parametr FirstRowAsTitle Language LastRowAsSumary ColumnNamesColor ColumnNamesFontScale ColumnsColor ColumnsWidth GridFontScale Query TableBackground Title TitleFontScale wwwpagerows Wartość określa, czy traktować pierwszy wiersz w pliku jako tytułowy (1-tak, 0-nie) Język menu: EN lub PL określa, czy traktować ostatni wiersz w pliku jako podsumowanie (1-tak, 0-nie); opcja przydatna dla plików utworzonych przy pomocy modułu SQLGrid kolor komórek wiersza tytułowego tabeli skala czcionki wiersza tytułowego tabeli kolory kolumn z danymi zapisane w formacie kolor1;kolor2;kolor3 procentowa szerokość kolumn z danymi zapisana w formacie szerokość1;szerokość2;szerokość3, gdzie suma wartości rozdzielonych średnikami musi być równa 100 skala czcionki zawartości tabeli zapytanie do bazy danych kolor tła tabeli tytuł tabeli skala czcionki tytułu tabeli zmienna określająca, ile wierszy z tabeli będzie widocznych na wizualizacji www bez przewiajania ANT Sp z o.o. Strona 363

364 Tworzenie zapytania Ustawienie Query może mieć dwie formy: -s tresc zapytania -f sciezka_do_pliku W przypadku zapytań bardziej złożonych zalecane jest dla wygody edytowania umieszczanie ich w pliku i korzystanie z drugiej formy. Zapytanie może być dowolną kwerendą typu INSERT lub UPDATE obsługiwaną przez bazę danych skomunikowaną z modułem SQLFileImport. Zapytanie zawiera specjalne znaczniki symbolizujące indeks kolumny w tabeli, z której pobrane zostaną dane. Dla przykładu, zapytanie o treści: insert into Money (Data, GRB, EUR, USD, CHF, LTL) values ('$0', '$1', '$2', '$3', '$4', '$5') spowoduje wywołanie dla każdego wiersza w tabeli modułu kwerendy typu insert, która wstawi do bazy danych dane z komórek. Kolejność tych danych ustalona jest specjalne znaczniki symbolizujące numer kolumny, zaczynajace się od znaku $. Zobacz rownież pomoc dla modułów SQLQuery, SQLPeriod, SQLForm, SQLGrid, SQLCombo ANT Sp z o.o. Strona 364

365 SQLPeriod Moduł SQLPeriod współpracuje z modułami SQLGrid oraz SQLQuery i służy do zadawania granic czasowych dla zdefiniowanych w nich zapytań. Zadawanie dat odbywa się poprzez wybór trybu pracy modułu oraz okresu czasu. a) tryb prosty W trybie tym możliwy jest wybór jedynie spośród predefiniowanych okresów czasu: - obecny tydzień - ostatnie 7 dni - ostatni pełny tydzień - obecny miesiąc - ostatni pełny miesiąc - pełna historia b) tryb złożony W tym trybie możliwy jest wybór następujących długości okresów czasu: - tydzień - miesiąc - kwartał - ręcznie Okna czasowe można przesuwać przy uzyciu strzałek. W trybie złożonym dozwolona jest ręczna edycja dat. Ręczne wpisanie jednej z nich powoduje, iż druga jest samoczynnie przeliczana z uwzględnieniem zdefiniowanej długości okna czasowego. Nie dotyczy to ustawienia "ręcznie", gdzie obie daty należy wprowadzić z klawiatury. ANT Sp z o.o. Strona 365

366 Kanały modułu Moduł posiada dwa kanały wyjściowe, na których pojawiają się daty początkowa i końcowa, zadane przez użytkownika. Konfiguracja modułu Parametr Language PeriodBarBackground PeriodBarFontColor PeriodBarFontsize TimeBackground TimeFontsize Title TitleBackground TitleFontColor Wartość język modułu: EN lub PL kolor przycisków wyboru trybu pracy i okresu kolor czcionki wyboru trybu pracy i okresu skala czcionki przycisków wyboru trybu pracy i okresu kolor komórek zawierających daty skala czcionki komórek zawierających daty tytuł tabeli kolor tła tytułu kolor czcionki tytułu Zobacz rownież pomoc dla modułów SQLQuery, SQLFileImport, SQLForm, SQLGrid, SQLCombo ANT Sp z o.o. Strona 366

367 SQLQuery Moduł SQLQuery służy do pobierania danych z bazy i wystawiania ich na kanałach wyjściowych modułu. Zapytanie wykonywane jest synchronicznie z zadanym okresem oraz asynchronicznie, gdy na kanałach wejściowych pojawią się nowe dane. Kanały modułu a) wejściowe Jedynie kanał sql_result_in musi występować w konfiguracji. Kanał ten mapujemy z kanałem wyjściowym modułu ODBC lub SQLite komunikującymi się z bazą danych, której zawartość chcemy pokazać. Funkcjonalnością pozostałych kanałów jest wpływanie na treść zapytania do bazy danych. Poprzez wprowadzenie odpowiednich znaczników treść, która znajduje się w kanale, stanie się częścią zapytania. Przy użyciu modułu SQLPeriod można podać na kanały graniczne daty dla zapytania, a za pomocą modułu SQLCombo niemal dowolną treść. b) wyjściowe Użytkownik może zdefiniować dowolną ilość kanałów wyjściowych typu string o dowolnych nazwach. Dana, która pojawi się na kanale wyjściowym jest zdeterminowana przez odpowiednie ustawienie pola Comment w konfiguracji kanału. Należy umieścić tam nazwę kolumny poprzedzoną znakiem $, z której wartość ma się pojawić. Jeżeli zapytanie zwróciło więcej niż jeden wiersz, na kanale wyjściowym pojawi się lista wartości z danej kolumny. ANT Sp z o.o. Strona 367

368 W tym przypadku, po wykonaniu zapytania, na kanale wyjściowym pojawi się lista danych reprezentująca kolumnę GRB. Konfiguracja modułu Hook Query Parametr Wartość określa, co ile odświeżane będą wyjścia. Musi być jednym ze znajdujących sie w folderze Hooks konfiguracji. zapytanie do bazy danych Tworzenie zapytania Ustawienie Query może mieć dwie formy: -s tresc zapytania -f sciezka_do_pliku W przypadku zapytań bardziej złożonych zalecane jest dla wygody edytowania umieszczanie ich w pliku i korzystanie z drugiej formy. Zapytanie może być dowolną kwerendą typu SELECT obsługiwaną przez bazę danych skomunikowaną z modułem SQLGrid. Zapytanie może zawierać specjalne znaczniki, w miejsce których wstawiane zostaną dane z kanałów wejściowych modułu. Dla przykładu, zapytanie o treści: ANT Sp z o.o. Strona 368

369 select * from money where (data < '$to_in' and data > '$from_in') ORDER BY data DESC spowoduje zwrócenie wszystkich wierszy z tabeli money, dla których zawartość kolumny data zawiera się pomiędzy wartościami z kanałów from_in oraz to_in oraz wystawienie danych na odpowiednio skonfigurowanych kanałach wyjściowych. Zobacz rownież pomoc dla modułów SQLPeriod, SQLFileImport, SQLForm, SQLGrid, SQLCombo ANT Sp z o.o. Strona 369

370 SQLCombo Moduł SQLCombo umożliwia pobranie danych z bazy, prezentację ich w postaci rozwijalnej listy wartości do wyboru oraz wysłanie na podstawie tego wyboru odpowiednio sformatowanych danych na kanał wyjściowy. Moduł współpracować może z modułami SQLGrid oraz SQLQuery. Kanały modułu a) wejściowe Jedynie kanał sql_result_in musi występować w konfiguracji. Kanał ten mapujemy z kanałem wyjściowym modułu ODBC lub SQLite komunikującymi się z bazą danych, której zawartość chcemy pokazać. b) wyjściowe Użytkownik może zdefiniować dowolną ilość kanałów wyjściowych typu string o dowolnych nazwach. Dana, która pojawi się na kanale wyjściowym pochodzi z wiersza wybranego z rozwijanej listy i jest zdeterminowana przez odpowiednie ustawienie pola Comment w konfiguracji kanału. Należy umieścić tam string zawierający nazwę kolumny poprzedzoną znakiem $, z której wartość ma się pojawić. Pole comment może zawierać odwołania do więcej niż jednej nazwy kolumny w tabeli. Dla przykładu, jeżeli pole Comment danego kanału wyjściowego ustawiono następująco: pracownik $id - $name, po wybraniu wiersza z rozwijanej listy na kanale pojawi się string, który w miejscu parametrów rozpoczynających się od $ będzie zawierał dane z kolumn id oraz name, jeżeli takie zostaną zwrocone w wyniku zapytania do bazy danych. ANT Sp z o.o. Strona 370

371 Konfiguracja modułu Parametr ComboBackground ComboFontColor Query SelectionFormat Title TitleBackground TitleFontColor TitleFontScale TitlePosition Wartość kolor tła modułu kolor czcionki rozwijanej listy zapytanie do bazy danych format wiersza rozwijanej listy nazwa modułu skala czcionki nazwy modułu kolor tła nazwy modułu kolor czcionki nazwy modułu pozycja nazwy modułu względem rozwijanej listy, dostępne wartości to: n, s, e, w Formatowanie rozwijanej listy Wykonanie zapytania z ustawienia Query powoduje zwrócenie tabeli wynikowej, której każdy z wierszy ma swoją reprezentację w postaci wiersza rozwijanej listy. Przy formatowaniu pozycji listy obowiązują te same reguły, co przy konfiguracji pola Comment w kanale wyjściowym. Należy w pole SelectionFormat wpisać dowolny string zawierający nazwy kolumn poprzedzone znakiem $. Znacznik nazwy kolumny w każdym wierszu wypełniony zostanie wartością pobraną z bazy danych. Tworzenie zapytania Ustawienie Query może mieć dwie formy: -s tresc zapytania -f sciezka_do_pliku W przypadku zapytań bardziej złożonych zalecane jest dla wygody edytowania umieszczanie ich w pliku i korzystanie z drugiej formy. ANT Sp z o.o. Strona 371

372 Zapytanie może być dowolną kwerendą typu SELECT obsługiwaną przez bazę danych skomunikowaną z modułem SQLGrid. Zapytanie może zawierać specjalne znaczniki, w miejsce których wstawiane zostaną dane z kanałów wejściowych modułu. Dla przykładu, zapytanie o treści: select * from money where (data < '$to_in' and data > '$from_in') ORDER BY data DESC spowoduje zwrócenie wszystkich wierszy z tabeli money, dla których zawartość kolumny data zawiera się pomiędzy wartościami z kanałów from_in oraz to_in oraz wystawienie danych na odpowiednio skonfigurowanych kanałach wyjściowych. Zobacz rownież pomoc dla modułów SQLQuery, SQLPeriod, SQLFileImport, SQLForm, SQLGrid ANT Sp z o.o. Strona 372

373 SERWER WWW Httpd Moduł Httpd (moduł serwera www) umożliwia udostępnienie stworzonej przez użytkownika konfiguracji w postaci strony www dostępnej z dowolnego komputera znajdującego się w sieci. Jest to moduł skryptowy i do jego prawidłowego funkcjonowania niezbędne jest prawidłowe ustawienie parametrów konfiguracyjnych, znajdujących się w jego drzewku konfiguracyjnym. Parametr Wartość ANT Sp z o.o. Strona 373

374 DefaultWindowHeight wysokość okna w przeglądarce www (wartość w pikselach) DefaultWindowWidth szerokość okna w przeglądarce www (wartość w pikselach) HttpHost adres IP hosta, na którym uruchomiony jest serwer www HttpPort numer portu hosta na którym będzie dostępny serwis HttpsHost adres IP hosta dla połączenia szyfrowanego HttpsPort numer portu hosta dla połączenia szyfrowanego KeepAliveTimeout czas, w milisekundach po którym serwer zamyka socket, nawet jeśli limit transakcji (określony przez ustawienie KeepAliveTransactionLimit) nie został osiągnięty KeepAliveTransactionLimit określa maksymalną ilość transakcji przypadającą na jeden socket, po której socket zostanie zamknięty Log ustawienie logowania (0 logowanie wyłączone, 1- logowanie włączone) LogFilesFolder folder wraz z prefixem nazwy pliku, do którego logowane są zdarzenia z serwera (np jeśli ustawimy wartość na: KatalogLogowania/prefix, wtedy pliki z logami zapisywane będą do katalogu KatalogLogowania i będą one miały nazwę z prefixem prefix ) LogLevel poziom logowania (0-20) RefreshInterval czas odświeżania serwisu www podany w sekundach SSLCertificateFileName plik certyfikatu ssl serwera SSLKeyFileName plik klucza szyfrowania serwera ShowBanners wyświetlanie baneru (1- włączone, 0- wyłączone) ShowButtons ShowLogo ShowStatus ServiceName wyświetlanie paska przycisków (1- włączone, 0- wyłączone) wyświetlanie loga wyświetlanie paska statusu (1- włączone, 0- wyłączone) nazwa serwisu widoczna na banerze (1- włączone, 0- wyłączone) Istotnym elementem drzewa konfiguracyjnego modułu jest katalog Users, w którym użytkownik definiuje, w postaci kolejnych podkatalogów, użytkowników korzystających z serwisu. Użytkownikowi można dodać parametr ServiceName. Nazwa tam podana zostanie wyświetlona na banerze i będzie mieć wyższy priorytet niż ta zdefiniowana w ustawieniach głównych. Obok nazwy serwisu wyświetlana jest nazwa aktualnego okna. ANT Sp z o.o. Strona 374

375 W katalogu każdego z użytkowników musi znaleźć się podkatalog Windows, w którym zdefiniowane są okna konfiguracji dostępne dla danego użytkownika. Oprócz okien, w katalogu użytkownika musi zostać zdefiniowane jego hasło dostępowe do serwisu oraz nazwa domyślnego okna (okna głównego, wyświetlającego się jako pierwsze po zalogowaniu się użytkownika do systemu). Jeżeli do użytkownika nie przypiszemy okien, w przeglądarce zostaną wyświetlone wszystkie okna Widok okna w przeglądarce ANT Sp z o.o. Strona 375

376 TELEMETRIA TelemetryClient Moduł TelemetryClient umożliwia wymianę danych z modemami GPRS obsługiwanymi przez serwer telemetrii ANT GPRS. Ustawienia konfiguracyjne modułu Active Parametr Wartość moduł wyłączony Name RemoteAddress RemotePort moduł włączony nazwa modułu w systemie adres serwera telemetrii ANT GPRS numer portu serwera telemetrii ANT GPRS Po rozwinięciu modułu i kliknięciu na modem, pod drzewem konfiguracyjnym dostępna jest tabela z jego ustawieniami. Parametr ActivactionCode Disable Name Wartość Kod aktywacyjny z nalepki na modemie moduł aktywny moduł nie aktywny nazwa kanału GPRS Wszelkie nieprawidłowości w działaniu elementów systemu sygnalizowane są symbolem wykrzyknika na ikonie elementu generującego błąd oraz modułu nadrzędnego. ANT Sp z o.o. Strona 376

377 Opis błędu uzyskać można przechodząc na zakładkę Description pod drzewem konfiguracyjnym ANT Studio. Najczęstszym błędem występującym przy konfiguracji modułu TelemetryClient jest mylnie wpisany kod aktywacyjny, co ilustruje powyższy komunikat. Jeżeli konfiguracja przebiegła pomyślnie i modem podłączony jest do sieci, można sprawdzić czy działa, wybierając opcję Ping modem z menu kontekstowego modemu. ANT Sp z o.o. Strona 377

378 Odpowiedź Modem not connected sugeruje, iż modem nie jest zalogowany w systemie telemetrycznym. Brak jakiejkolwiek odpowiedzi w przeciągu kilku sekund oznacza, iż modem jest zalogowany, lecz z różnych przyczyn nie podejmuje komunikacji. W celu sprawdzenia połączenia internetowego z serwerem telemetrii należy wykonać polecenie Ping server. Brak odpowiedzi pozytywnej oznacza problemy z nawiązaniem połączenia z serwerem. Jeżeli inne aplikacje korzystające z Internetu na komputerze użytkownika nie sygnalizują braku połączenia z siecią internet, oznacza to, iż port 121 używany do łączenia się z serwerem telemetrii jest zajęty przez inną aplikację. Opcja Get information pozwala sprawdzić numer telefoniczny karty zainstalowanej w modemie, poziom sygnału sieci w miejscu pracy modemu oraz stan i ważność konta w przypadku kart typu prepaid. ANT Sp z o.o. Strona 378

379 Komunikat zwrotny od modemu powinien ukazać się po upływie około pół minuty od wybrania opcji Get information. W tym czasie urządzenie zbiera i analizuje informacje o swym stanie, więc wymiana danych jest wtedy zawieszona, a połączenie GPRS tymczasowo rozłączone. Nie należy nadużywać tego polecenia również dlatego, iż każde rozłączenie i ponowne połączenie z siecią skutkuje rozpoczęciem naliczania nowej jednostki taryfikacyjnej za transfer danych. Przykładowe okno z komunikatem: ANT Sp z o.o. Strona 379

380 Modem Configurator EZ10Configurator Moduł ModemConfigurator pozwala na skonfigurowanie modemu do pracy w systemie telemetrii ANT GPRS. Dostępny jest z menu Start systemu Windows w postaci konfiguracji programu ANT Studio lub jako samodzielny plik wykonywalny. Uruchamianie konfiguratora Możliwe jest także dodanie konfiguratora do drzewa konfiguracyjnego z poziomu aplikacji ANT Studio i przeciągnięcie go na wolne okno. Po uruchomieniu aplikacji, należy wykonać następujące czynności w poszczególnych zakładkach konfiguratora. ANT Sp z o.o. Strona 380

381 Zakładka Connection Zakładka ta służy do ustanowienia połączenia z modemem w trybie konfiguracji. Należy wybrać port szeregowy komputera, do którego podłączony jest modem oraz tryb, w jakim użytkownik zamierza konfigurować modem. Wybranie trybu Advanced rozszerza możliwości konfiguracyjne o debugowanie oraz aktualizację firmware i nie jest wskazane jego używanie do celów zwykłej konfiguracji oraz przez osoby nie posiadającej dogłębnej wiedzy na temat działania modemów i systemu telemetrycznego. Po włączeniu zasilania modemu wyświetlone zostają komunikaty o uzyskaniu połączenia, modelu urządzenia i jego numerze seryjnym. W przypadku uzyskania komunikatu Disconnected, Com port opened. W okienku State, należy sprawdzić zasilanie kontrolując stan zielonej diody na modemie oraz połączenie modem komputer. W przypadku, gdy modem jest zasilony poprawnie, a połączenia nie daje się uzyskać, należy sprawdzić, czy kabel łączący komputer z modemem jest typu 1:1. ANT Sp z o.o. Strona 381

382 Komunikat Disconnected, Unable to open port : couldn't open "\\.\com1": permission denied sugeruje, iż wybrany przez użytkownika port COM jest zajęty przez inny program. Jeżeli połączenie z modemem przebiegnie pomyślnie, możliwe jest przejście do następnego kroku konfiguracji naciskając przycisk Next. Zakładka Settings W tej zakładce dokonujemy ustawienia parametrów operatora sieci komórkowej, karty SIM, serwera telemetrii (dla modemów z firmwere obsługującym tę funkcjonalność) oraz portu RS232 modemu. Konfiguracja modemu po raz pierwszy powinna rozpocząć się od wypełnienia zaciemnionych pól wartościami domyślnymi przy pomocy przycisku Default. Ręczna edycja tych pól możliwa jest jedynie w zaawansowanym trybie konfiguracji. ANT Sp z o.o. Strona 382

383 Z rozwijanej listy należy wybrać używanego operatora sieci komórkowej, okno Server uzupełni się samo adresem serwera wybranego operatora. W przypadku, gdy na liście nie ma dostawcy, którego kartę SIM użytkownik chce zastosować, w oknie Server należy ręcznie wpisać jego APN. Wybór typu zastosowanej karty jest ważny ze względu na możliwość sprawdzania stanu konta modemu pracującego z kartą prepaid. Dla kart abonamentowych, taka funkcjonalność nie jest udostępniana. Należy wybrać z menu Card type opcję Subscription. Po wybraniu opcji Prepaid okno Credit check code uzupełni się predefiniowanym dla danego operatora kodem sprawdzającym ważność konta i pozostałą do wykorzystania kwotę. Parametr ten można edytować ręcznie poprzez wpisanie do okna Credit check code, gdy użytkownik korzysta z usług operatora, którego parametry nie są predefiniowane w konfiguratorze. W modemach, których wersja firmware obsługuje tę funkcjonalność, możliwe jest wprowadzenie do trzech adresów i portów serwerów telemetrii, do których będzie usiłował łączyć się modem. Domyślnym ustawieniem jest pojedynczy serwer telemetrii firmy ANT. Po wpisaniu numeru PIN używanej karty oraz ustawieniu parametrów pracy portu RS232 modemu można zapisać jego ustawienia przyciskiem Save to modem. Przycisk Load from modem powoduje załadowanie parametrów z jakimi dotychczas skonfigurowany był modem. Po dokonaniu zmian należy z powrotem zapisać ustawienia w modemie. Próba zapisania niekompletnych parametrów do modemu powoduje wystąpienie komunikatu błędu. Wyjście z zakładki Settings bez uprzedniego zapisania zmienionych parametrów konfiguracyjnych skutkuje wystąpieniem zapytania, czy zapisać zmienione dane konfiguracyjne. Brak wystąpienia komunikatu błędu podczas zapisu konfiguracji na modem oraz zniknięcie okienka o treści Saving configuration to modem oznacza, iż proces przebiegł prawidłowo i możliwe jest przejście do następnego kroku przy pomocy przycisku Next. Przycisk Next jest aktywny tylko wtedy, gdy użytkownik odczytał z modemu lub zapisał na modem poprawną konfigurację. Komunikat Error: Save configuration to modem failed! sugeruje wystąpienie problemu podczas zapisu danych konfiguracyjnych. Spowodowane jest to, gdy podjęto próbę zapisu w czasie, gdy modem jest chwilowo zajęty przetwarzaniem komunikatów od komputera. Należy ponowić próbę zapisu, a gdy ta znowu się nie powiedzie, zrestartować zasilanie modemu i powtórzyć proces konfiguracji od początku. ANT Sp z o.o. Strona 383

384 Widok zakładki Settings przykładowo skonfigurowanego modemu: ANT Sp z o.o. Strona 384

385 Zakładka Activation W zakładce tej należy odczytać kod aktywacyjny modemu, który jest niezbędny do nawiązania z nim połączenia. Numer ten, po odczytaniu przez naciśnięcie przycisku Load from modem należy zapisać, zapamiętać lub skopiować do innego pliku gdyż będzie on niezbędny podczas dalszej konfiguracji połączenia. Numer aktywacji modemu jest dodatkowo naklejony na modemie, obok tabliczki znamionowej. ANT Sp z o.o. Strona 385

386 Zakładka Test Zakładka ta umożliwia sprawdzenie poprawności wpisanego kodu PIN oraz jakości sygnału w miejscu, w którym znajduje się modem. Do poprawnej pracy modemu wartość ta powinna być nie mniejsza niż 20. W przypadku mniejszych wartości mogą występować zerwania połączeń z siecią GPRS lub powtarzanie transmisji pakietów spowodowane błędami transmisji. Dla modemów obsługujących tę funkcjonalność możliwe jest ściągnięcie loga informującego o restartach zasilania, zalogowaniu i wylogowaniu do serwera, itp. W przypadku, gdy w okienku status połączenia wyświetlony w polu State to Disconnected, należy sprawdzić poprawność wpisanego numeru PIN. Jeżeli modem skonfigurowany jest z poprawnym numerem PIN karty, a połączenia nie daje się uzyskać, sugeruje to niewystarczająco silny sygnał sieci komórkowej w miejscu, gdzie znajduje się modem. ANT Sp z o.o. Strona 386

387 Zakładka Usage Po poprawnym przejściu przez wszystkie kroki konfiguracji modemu użytkownik dociera do zakładki, która przedstawia dalszy sposób postępowania z zaprogramowanym modemem. Zaprogramowany modem należy odłączyć od zasilania oraz od komputera, podłączyć odpowiednim kablem z urządzeniem, z którym modem ma współpracować oraz podłączyć zasilanie do modemu. Po około 10 sekundach modem powinien połączyć się z serwisem telemetrycznym i rozpocząć wymianę danych. ANT Sp z o.o. Strona 387

388 Dodatkowa funkcjonalność dostępna w trybie Advanced : Ostrzeżenie:!!! Używanie trybu Advanced i dodatkowych funkcji przez niego dostarczanych zaleca się tylko użytkownikom po odpowiednim przeszkoleniu, gdyż nieumiejętne posługiwanie się konfiguratorem w tym trybie może doprowadzić do uszkodzenia oprogramowania modemu i w konsekwencji uniemożliwić jego dalszą pracę!!! Zakładka Settings W trybie Advanced użytkownik uzyskuje dostęp do szeregu dodatkowych, zaawansowanych opcji konfiguracyjnych modemu. Dostępne do ręcznej edycji stają się pola, które w trybie Basic były nieaktywne. Widoczne stają się dwa dodatkowe przyciski odsyłające użytkownika do zakładki Debug lub zakładki Firmware. ANT Sp z o.o. Strona 388

389 - TCPConnect: limit czasu na połączenie z serwerem - Reconnect delay: czas, po jakim podejmowana jest kolejna próba połączenia z serwerem w wypadku niepowodzenia poprzedniej - Keep alive period: czas, co jaki wysyłany jest przez modem wiadomość podtrzymująca połączenie, jeżeli nie są wymieniane dane - Keep alive retries: ilość nieudanych prób podtrzymania połączenia przed rozłączeniem się modemu od serwera - Debug mode: tryb serwisowy umożliwiający diagnostykę modemu i lokalizację przyczyn jego ewentualnego niepoprawnego działania Zakładka Debug W tej zakładce użytkownik może diagnozować pracę modemu poprzez analizę komunikatów pojawiających się w polu tekstowym. Aby uruchomić modem w trybie debug, należy w zakładce Settings zaznaczyć opcję Debug mode, zapisać konfigurację na modem, przejść do zakładki Debug i na kilka sekund odłączyć zasilanie modemu. Po upływie kilku sekund od ponownego załączenia zasilania w polu tekstowym pojawią się informacje na temat stanu uruchamiającego się modemu. ANT Sp z o.o. Strona 389

390 Analiza pojawiających się komunikatów ma kluczowe znaczenie dla zdiagnozowania przyczyn nieprawidłowości w działaniu modemu, dlatego warto je zachować w pliku tekstowym. Zakładka Firmware W tej zakładce użytkownik może dokonać wymiany oprogramowania modemu na nowszą wersję dostarczoną przez ANT sp. z o. o. Operacja ta powinna być przeprowadzana wyłącznie w normalnym trybie pracy modemu, próba wymiany firmware podczas pracy w trybie debug spowoduje wystąpienie komunikatu o błędzie. Po wybraniu ścieżki do nowego oprogramowania, w oknie tekstowym pojawia się lista plików w wybranym katalogu. Należy zwrócić uwagę, czy znajdują się tam wyłącznie pliki o rozszerzeniach py oraz pyo. Po naciśnięciu przycisku Upload pojawia się ostrzeżenie, iż operacja wymiany oprogramowania skasuje stare wersje plików z modemu. Po zatwierdzeniu widoczny staje się pasek postępu kasowania starych oraz kopiowania nowych plików na modem. ANT Sp z o.o. Strona 390

391 W przypadku braku wystąpienia komunikatu o błędzie, uznać można, iż proces wymiany zakończył się powodzeniem. Należy wtedy sprawdzić poprawność parametrów konfiguracyjnych naciskając Load from modem na zakładce Settings i dokonać ewentualnych poprawek. Jeżeli weryfikacja przebiegnie pomyślnie, po wyłączeniu zasilania modemu i podłączeniu go do urządzenia docelowego podejmie on pracę z nowym oprogramowaniem. W przypadku wystąpienia komunikatu błędu podczas procedury wymiany firmware należy ponowić wciśnięcie przycisku Upload. Gdy powtórna próba nie przyniesie pozytywnego rezultatu, należy odłączyć na kilka sekund zasilanie modemu, a następnie podjąć kolejną próbę. ANT Sp z o.o. Strona 391

392 TelemetryServerTk Moduł TelemetryServerTk jest samodzielnym serwerem telemetrii ANT. Do jego działania wymagane jest posiadanie conajmniej jednego portu TCP dostępnego z sieci Internet. W zależności od ustawienia Embedded, moduł może występować w wersji z tabelką (Embedded = On) lub bez (Embedded = Off). Użycie tabeli z podglądem daje możliwość szybkiej weryfikacji stanu połączenia, czasu ostatniej aktywności, a także wykonania pingu modemu i sprawdzenia środków na koncie. Kanały modułu Moduł dysponuje modyfikowalnym w zależności od liczby posiadanych modemów i ich przeznaczenia zestawem kanałów wejściowych i wyjściowych. a) kanały danych Są to pary kanałów typu raw (wejściowy i wyjściowy o takiej samej nazwie) odpowiadające pojedynczemu modemowi. Ich obecność jest konieczna w konfiguracji. Przypisanie konkretnego ANT Sp z o.o. Strona 392

393 modemu do pary kanałów odbywa się poprzez wpisanie jego kodu aktywacji do pola Comment kanału wejściowego. b) kanały GPIO Wyjściowe kanały GPIO tworzy się poprzez dodanie do nazwy kanału z daną członu GPIOx poprzedzonego kropką, gdzie x to cyfra z zakresu 0-3 odpowiadająca jednemu z wejść binarnych modemu. Nie jest wymagane umieszczanie w konfiguracji kompletu kanałów binarnych dla danego modemu. Kanały GPIO tworzy się jako typ integer. Ich stan odświeżany jest synchronicznie z okresem definiowanym globalnie dla danego modemu. Okres odświeżania definiuje się podając nazwę hooka po średniku w polu Comment kanału wejściowego danego modemu. Z uwagi na stosunkowo niską prędkość transmisji i długie opóźnienia generowane przez GPRS, nie zaleca się, by stan wyjść binarnych odświeżać częściej, niż co 10 sekund. Konfiguracja modułu Port Timeout Parametr Wartość numer portu, na którym moduł oczekuje na połączenia od modemów okres (w sekundach) braku aktywności modemu, po którym połączenie jest resetowane ANT Sp z o.o. Strona 393

394 API modułu isconnected activation_code Zwraca logiczną prawdę, jeżeli modem o zadanym kodzie aktywacyjnym jest zalogowany do serwera, a fałsz w przeciwnym wypadku. Jeżeli modemu o zadanym activation_code nie ma w konfiguracji, zwracany jest komunikat "invalid_channel". readgpio activation_code Wymusza odczyt stanu wejść binarnych modemu o zadanym kodzie aktywacyjnym i zwraca logiczną prawdę, jeżeli udało się wysłać zapytanie. Jeżeli modemu o zadanym activation_code nie ma w konfiguracji, zwracany jest komunikat "invalid_channel", zaś jeżeli zapytanie dotyczy modemu, który aktualnie nie jest zalogowany, zwracany jest komunikat "modem_disconnected". ANT Sp z o.o. Strona 394

395 UŻYTKOWNICY, LOGOWANIE I TRYBY PRACY Konta użytkowników System umożliwia zarządzanie użytkownikami, hasłami i uprawnieniami. Konfiguracja użytkowników znajduje się w drzewku konfiguracyjnym w zakładce Users. Dodawanie nowego użytkownika Klikając na folderze Users prawym klawiszem myszy wybieramy z menu Insert Guest lub SuperUser. Ustawienia konfiguracyjne użytkownika Parametr CanDeiconizeFromTray CanExit CanIconizeToTray CanSwitchFullScreenOff Wartość użytkownik może otworzyć okno programu z ikonki SysTray użytkownik może wyłączyć program użytkownik może zminimalizować program do ikonki SysTray pełnoekranowego użytkownik wyłączyć program z trybu ANT Sp z o.o. Strona 395

396 CanSwitchFullScreenOn ConfigurationAccess DebugLogAccess DebugTreeAccess Name Password PasswordRequired użytkownik może przełączyć program do trybu pełnoekranowego konfiguracji systemu użytkownik ma pełny dostęp do użytkownik ma dostęp do logów użytkownik ma dostęp do drzewka DebugTree Nazwa użytkownika Hasło użytkownika hasła logowanie użytkownika przez podanie Dostęp do konfiguracji W systemach SCADA definiuje się zazwyczaj administratora - inżyniera, który ma uprawnienia do zmieniania konfiguracji systemu, oraz operatora który ma przygotowaną aplikację i może wykonywać udostępnione przez administratora czynności, związane z przeglądaniem danych, zmienianiem nastaw itp. W systemie można również zdefiniować użytkownika domyślnego, który będzie logowany w chwili uruchomienia systemu. W ustawieniach konfiguracyjnych, w polu DefaultUser wybiera się użytkownika domyślnego. Przeczytaj więcej o uruchamianiu programu. ANT Sp z o.o. Strona 396

397 Logowanie użytkownika Aby zalogować się w systemie należy wybrać z listy użytkownika i podać hasło. Aby wylogować użytkownika należy wybrać polecenie z menu Users Logout. Konfigurowanie kont użytkowników ANT Sp z o.o. Strona 397

398 Uruchamianie programu Program uruchamiamy wybierając z menu programów Program ANT Studio wymaga istnienia w tym samym katalogu pliku z konfiguracją o nazwie default.cfg. Brak tego pliku powoduje błąd i brak możliwości pracy z systemem. Po zainstalowaniu programu plik default.cfg zawiera pustą konfigurację pierwotną. Użytkownik może podmienić ten plik na inny, zawierający konfigurację systemu. Drugim sposobem jest uruchomienie i wskazanie pliku ANT Studio.exe <nazwa pliku konfiguracji.cfg> Sposób uruchomienia programu można konfigurować we właściwościach drzewka konfiguracyjnego. Parametr AnonymousExit DefaultUser DefaultWindow Wartość zgoda na wyłączenie programu przez niezalogowanego użytkownika Użytkownik logowany po uruchomienia programu Ekran synoptyczny ustawiany po uruchomieniu programu ANT Sp z o.o. Strona 398

399 InitialWidnowPosition LogFilesDirectory LoggingEnable MuteAllAlarms TabFont ToolWindowsTitleFont Wielkość okna po uruchomieniu programu. Scieżka do folderu, względem katalogu instalacyjnego, w którym będą zapisywane logi Uruchomienie logowania Wyciszenie alarmów dźwiękowych Czcionka w tytułach okien synoptycznych Czcionka w tytułach paneli programu Wielkość okna po uruchomieniu programu - InitialWindowPosition Minimized to tray - program uruchamia się zminimalizowany do ikonki systray. FullScreen - program po uruchomieniu zajmuje cały ekran i uniemożliwia uruchamianie innych aplikacji Maximized - okienko programu rozszerza się do pełnego okna Last user position - ostatnie ustawienie wielkości okna programu ANT Sp z o.o. Strona 399

400 Wielkość i styl okna programu Wielkość oraz styl okna programu może zostać skonfigurowana w następujący sposób: Tryb pracy Normal: Maximized Last user position Full screen Minimized to tray Właściwości System uruchamia się w standardowym oknie systemu Windows, jako okno: Maximized - zmaksymalizowane do całości Pulpitu, Last user position - ostatnia pozycja jaką ustawił użytkownik, podczas ostatniego uruchomienia programu Tryb pracy pełnoekranowej, dedykowany dla operatora o najniższych uprawnieniach Tryb pracy w ikonce sys-tray właściwy dla systemów pracujących w tle, serwerów, systemów wymiany danych. Ustawienia początkowe definiuje się w tabeli dostępnej po zaznaczeniu Solution. Pełną funkcjonalność związaną z wyborem stylu okna uzyskuje się w połączeniu z konfiguracją użytkowników. ANT Sp z o.o. Strona 400

401 Uwaga: Przy tworzeniu kont użytkowników, należy pamiętać o tym, żeby był przynajmniej jeden użytkownik o prawach administratora systemu. Full screen - tryb pracy operatora systemu, o najniższych uprawnieniach: Ustawienie okna - Full screen Parametr CanDeiconizeFromTray CanExit CanIconizeToTray CanSwitchFullScreenOff CanSwitchFullScreenOn ConfigurationAccess DebugLogAccess DebugTreeAccess Name Password PasswordRequired Nazwa użytkownika Hasło użytkownika Wartość Ustawienia takie dają operatorowi jedynie prawo do przeglądania i ustawiania wartości na ekranach synoptycznych. ANT Sp z o.o. Strona 401

402 DODATKOWE INFORMACJE Telemetria ANT GPRS TELEMETRIA ANT GPRS Podstawowy system telemetryczny składa się z następujących składników: Pewnej liczby modemów GPRS Telit z oprogramowaniem firmy ANT Klienta telemetrycznego (modułu TelemetryClient systemu ANT Sentry) Serwera telemetrycznego (dedykowanego oprogramowania serwerowego, zainstalowanego na komputerze dostępnym z publicznej sieci Internet) Terminologia APN (Access Point Name). Jest to mechanizm, dzięki któremu urządzenia GPRS mogą łączyć się z siecią Internet lub Intranet. Sieci GSM udostępniają dwa rodzaje APN: publiczne i prywatne. Publiczne APN są darmowe i dostępne dla wszystkich i umożliwiają dostęp do publicznej sieci Internet. Prywatne APN są droższe, i umożliwiają dostęp bezpośrednio do Intranetu zamawiającego (po zakupieniu dedykowanego łącza fizycznego). Rozwiązania telemetryczne firmy ANT domyślnie oparte są o APN publiczny. Zaletą takiego rozwiązania jest obniżenie kosztów utrzymania systemu i brak przywiązania do konkretnego operatora (jeden system telemetryczny może korzystać z kart SIM wielu operatorów, co z kolei ułatwia dopasowanie do istniejących sieci i zmniejsza koszty przy znacznym geograficznym rozproszeniu systemu). Punkt pomiarowy. Jednym punktem pomiarowym w systemie telemetrycznym nazywa się parę modem klient połączoną przy pomocy serwera. Ten sam modem może być elementem jednego punktu pomiarowego. Klient przeciwnie, może należeć do wielu punktów pomiarowych. Dostęp do punktu pomiarowego (zarówno od strony klienta jak i modemu) jest zabezpieczony hasłami (różnymi dla klienta modemu). SIM. Subscriber Identity Module. Karta identyfikująca abonenta w sieci GSM. Firmware umieszczony na modemach jest w stanie obsługiwać wersje z normalnym PIN jak i bezpinowe. Aby modem mógł pracować w sieci GPRS, abonent do którego należy karta musi mieć aktywną usługę GPRS. TLS. Transport Layer Security. Najnowsza wersja protokołu szyfrującego SSL (używanego między innymi do zabezpieczania transakcji w bankach internetowych). ANT Sp z o.o. Strona 402

403 Modem GPRS Modem może być zainstalowany w dowolnym miejscu w zasięgu sieci GSM, przy czym może być to sieć dowolnego operatora. Modem powinien być wyposażony w kartę SIM, która umożliwia transmisję danych poprzez GPRS. Modem zawiera oprogramowanie (firmware) firmy ANT. Oprogramowanie to pozwala na funkcjonowanie modemu w systemie telemetrycznym. Jego zadaniem jest utrzymywanie połączenia z serwerem, odbieranie od niego danych, przesyłanie ich na port RS-232, a także przesyłanie odpowiedzi z powrotem. Firmware umożliwia również diagnostykę i usuwanie błędów dzięki pracy w specjalnym trybie debug. Do modemu można podłączyć dowolne urządzenie obsługujące interfejs RS-232 w wersji modemowej (kontrola przepływu jak w zwykłym modemie dla łączy komutowanych). W szczególności może to być np. konwerter RS 232/485. Najważniejsze parametry konfiguracji modemu to: Kod PIN karty Nazwa APN. Kod aktywacyjny modemu (nadawany przez operatora systemu telemetrycznego) Prawidłowo skonfigurowany i włączony modem stara się utrzymywać cały czas aktywne połączenie z serwerem, co umożliwia wymianę danych w dowolnej chwili. Klient telemetryczny Moduł TelemetryClient umożliwia korzystanie z urządzeń podłączonych do modemów GPRS. W tym celu musi nawiązać połączenie z serwerem telemetrycznym (połączenie to jest, dla bezpieczeństwa danych, szyfrowane przy użyciu TLS 1.0). Przy użyciu tego połączenia zgłasza serwerowi chęć obsłużenia opisanych w swojej konfiguracji punktów telemetrycznych. Serwer odpowiada przyznając dostęp do punktów o prawidłowo skonfigurowanych nazwach i hasłach. Od tego momentu możliwa jest wymiana danych pomiędzy serwerem, a klientem. Klient może przetestować działanie serwera (opcja Ping serwer dostępna z menu modułu) oraz modemu (opcja Ping modem, dostępna z menu punktu). Jeśli serwer działa i połączenie jest aktywne, powinien bardzo szybko odpowiedzieć na polecenie Ping serwer. Nieco inaczej zachowuje się w przypadku polecenia Ping modem. Jeśli modem nie był podłączony do tego serwera, serwer odpowiada zgłaszając, że modem nie jest podłączony Jeśli modem jest podłączony do serwera, to serwer przesyła odwołanie do modemu. Modem natychmiast po otrzymaniu tego odwołania odpowiada jeśli taka odpowiedź dotrze do serwera, to ten z kolei przesyła informację do klienta że modem jest w porządku ( Modem OK. ). ANT Sp z o.o. Strona 403

404 Serwer telemetryczny Zadaniem serwera telemetrycznego jest pośredniczenie pomiędzy klientami a modemami GPRS, szyfrowanie danych przychodzących z sieci GSM aby zapewnić im bezpieczną transmisję w Internecie, a także uwierzytelnianie zarówno modemów jak i klientów dla ochrony przed możliwymi atakami. Uwagi Testując działanie systemu telemetrycznego a w szczególności modemów GPRS należy mieć na uwadze specyfikę sieci GSM: GPRS działa tym lepiej, im mniejszy ruch w sieci. Z tego względu funkcjonuje znakomicie w obszarach o niewielkim natężeniu komunikacji GSM (poza centrami miast, dużymi skupiskami ludzi, w nocy), może natomiast działać słabo (wolno lub w ogóle odmawiać działania), kiedy sieć zbliża się do granicy swoich możliwości. Rozmowy głosowe mają priorytet nad wymianą danych, i wymiana danych zawsze przestaje działać pierwsza! Jest to problem dobrze znany użytkownikom modemów GPRS do laptopów. Fizyczne łącze GPRS oferuje stosunkowo niewielką przepustowość. Z drugiej strony, internetowa część łącza ma znaczną pojemność (bufory w komputerach nadających dane, serwerze telemetrycznym oraz bramkach Internet/GPRS mogą pomieścić sporą ilość danych). Należy tak dobrać parametry transmisji danych (np. zapytań w protokole MODBUS) aby nie zalać łącza. W trakcie testów obserwowano sytuacje, w których modem otrzymywał dane długo po wyłączeniu nadawania po stronie klienta. Sama natura rozwiązania telemetrycznego (dane muszą pokonać długą drogę: część internetowa, następnie bramki Internet/GPRS, sieć szkieletowa GPRS, łącze radiowe i z powrotem) powoduje dosyć duże opóźnienia: należy oczekiwać opóźnień rzędu 2 sekund (round-trip) i większych. ANT Sp z o.o. Strona 404

405 Modbus Interfejs MODBUS jest standardem przyjętym przez producentów sterowników przemysłowych dla asynchronicznej, znakowej wymiany informacji pomiędzy urządzeniami systemów pomiarowo kontrolnych. Cechy protokołu komunikacja master - slave zabezpieczenie przesyłanych komunikatów przed błędami, potwierdzenie wykonywania rozkazów zdalnych i sygnalizacja błędów, struktura danych nawiązująca do sterowników PLC Kontrolery urządzeń pracujących w systemie MODBUS komunikują się ze sobą przy wykorzystaniu protokołu typu master-slave, w którym tylko jedno urządzenie może inicjalizować transakcje (jednostka nadrzędna-master), a pozostałe (jednostki podrzędne- slave) odpowiadają jedynie na zdalne zapytania jednostki nadrzędnej. Transakcja składa się z polecenia wysyłanego z jednostki master do slave oraz z odpowiedzi przesyłanej w odwrotnym kierunku. Odpowiedź zawiera dane żądane przez master lub potwierdzenie realizacji jego polecenia. Master może przesyłać informację do pojedynczych odbiorców lub informacje rozgłoszeniowe (broadcast), przeznaczone dla wszystkich urządzeń podrzędnych w systemie (na polecenia rozgłoszeniowe master nie otrzymuje odpowiedzi). Format przesyłanych informacji jest następujący: master - slave: adres odbiorcy, kod reprezentujący żądane polecenie, dane, słowo kontrolne zabezpieczające przesyłaną wiadomość, slave-master: adres nadawcy, potwierdzenie realizacji rozkazu, dane żądane przez master, słowo kontrolne zabezpieczające odpowiedź przed błędami. Diagram przebiegu procesu komunikacji, w przypadku gdy Slave nie zgłasza błędu. ANT Sp z o.o. Strona 405

406 W przypadku wykrytego błędu, przesyłana jest informacja o wyjątku (exception) Jeżeli urządzenie slave wykryje błąd przy odbiorze wiadomości, lub nie może wykonać polecenia, przygotowuje specjalny komunikat o wystąpieniu błędu i przesyła go jako odpowiedź do mastera. Urządzenia pracujące w protokole MODBUS mogą być ustawione na komunikację przy użyciu jednego z dwóch trybów transmisji: ASCII lub RTU. Użytkownik wybiera żądany tryb wraz z parametrami portu szeregowego (prędkość transmisji, jednostka informacyjna), podczas konfiguracji każdego urządzenia. W systemie MODBUS przesyłane wiadomości są zorganizowane w ramki o określonym początku i końcu. Pozwala to urządzeniu odbierającemu na odrzucenie ramek niekompletnych i sygnalizację związanych z tym błędów. ANT Sp z o.o. Strona 406

407 Za pomocą żądania zdefiniowanego w protokole Modbus można wymieniać dane z podstawowymi blokami danych urządzenia, do których należą: wejścia dyskretne - input discrete, cewki - coils, rejestry wejściowe - input registers, rejestry wewnętrzne - holding registers. Modbus umożliwia również transfer danych z kolejek FIFO oraz plików. W systemie zaimplementowano funkcję obsługującą odczyt z FIFO. W systemie został zaimplementowany protokół Modbus, na podstawie specyfikacji organizacji Modbus Modbus Aplication Protocol Specification V1.1 Konfigurując rejestry należy brać pod uwagę to, że zgodnie z protokołem Modbus numeracja cewek, wejść cyfrowych i rejestów rozpoczyna się od 1. ANT Sp z o.o. Strona 407

408 W tabelach adresów dostarczanych przez producentów urządzeń często numeracja ta nie jest zachowana, co powoduje błędy w danych lub nawet brak transmisji. Protokół Modbus został zaprojektowany do przesyłania 16 bitowych wartości, zapisanych w dwóch bajtach. Niemniej jednak możliwe jest przesyłanie danych 32 bajtowych typu całkowitego i zmiennoprzecinkowego. Wprowadzone zostały modyfikacje protokołu, w których dane zdefiniowane są w 4 sąsiednich rejestrach odpytywanych jednym żądaniem. Innym sposobem na 32 bitowe wartości jest ich zapis w 2 sąsiednich 16 bitowych rejestrach. System obsługuje oba wymienione sposoby. Przeczytaj o konfigurowaniu modułu ModbusMaster. ANT Sp z o.o. Strona 408

409 OPC OPC (OLE for Process Control) jest to standard przemysłowy stworzony przy współpracy wielu wiodących producentów sprzętu i oprogramowania, a firmą Microsoft. Standard ten tworzy typowe połączenie dla komunikowania się pomiędzy różnymi urządzeniami kontrolującymi procesy technologiczne. Celem jest uniezależnienie oprogramowania monitorującego lub kontrolującego od producenta sprzętu i oprogramowania. Dzięki temu można spiąć w jeden system sterowniki różnych producentów. W standardzie OPC wymiana danych opiera się głównie na ustalonej architekturze client i serwer. OPC Client jest programem, który pobiera, żąda informacje. OPC Server jest to program, który dostarcza, udostępnia informacje do OPC Client. Program ten może być OPC klientem dla niektórych OPC serwerów lub OPC serwerem dla niektórych OPC klientów. Client i Serwer są zdolne do porozumiewania się każdy z każdym oraz innymi programami zgodnymi ze specyfikacją OPC. Zgodność ze specyfikacją zapewnia połączenie różnych clientów wielu producentów z jednym OPC serwerem. Podobnie, standard pozwala podłączyć serwery wielu różnych producentów do jednego prostego clienta. ANT Sp z o.o. Strona 409

410 Przeczytaj na temat konfigurowania połączenia OPC. OPC Client jest aplikacją, która prezentuje klienta jako część komunikacji między OPC. Przy tworzeniu połączeń z urządzeniami zewnętrznymi, za pomocą OPC, system najczęściej jest konfigurowany jako OPC klient i przetwarza dane z jednego lub wielu urządzeń komunikujących się za pomocą OPC Server-a. OPC Server jest zwykle dostarczany pod konkretny protokół i dla danego typu urządzenia. OPC Client może połączyć się z OPC Server-em dostarczanym przez jednego lub różnych producentów. Poza tym OPC Client może pracować jako moduł, który pozwala aplikacjom MS Office (np. Excel) korzystać z danych OPC. OPC Server jest to program, którego zadaniem jest niezawodne, szybkie i efektywne wymienianie danych pomiędzy aplikacjami a światem rzeczywistym ( sterownik PLC <-> Server <-> SCADA). OPC Server zawiera zwykle wszystkie lub wybrane elementy zgodnie z OPC. Standardowo funkcjonalność serwera zapewnia zdolność komunikowania się ze sterownikiem PLC używając jego zastrzeżonego protokołu oraz udostępnia zbiór standardowych funkcji zgodnych ze specyfikacją OPC. Serwery są dedykowane do protokołów komunikacyjnych sterowników PLC, ale aplikacje wykorzystujące OPC Server są hardwarowo i protokołowo niezależne. Różne firmy dostarczają OPC Server-y. Jednak komunikacja pomiędzy różnymi programami korzystającymi ze standardu OPC nie nastręcza żadnych problemów. OPC klienci korzystają z usług różnych OPC serwerów które udostępniają im własne dane. ANT Sp z o.o. Strona 410

411 Standard OPC wykorzystuje mechanizm wymiany informacji DCOM (DCOM - Distributed Component Object Model). OPC Client może być zainstalowany na tym samym PC co OPC Server (local) lub mogą być zainstalowane na oddzielnych PC (remote). W lokalnej klienckiej aplikacji DCOM jest używany jako mechanizm komunikacyjny pomiędzy klientem a serwerem. DCOM jest niezbędny do komunikacji pomiędzy OPC serwerem a OPC klientami dla systemów Windows 95/98 i Me. W systemach Win NT 4.0/2000 jest dostarczany standardowo z systemem. Chociaż OPC zostało zaprojektowane dla udostępniania danych ze sterowników PLC, to dzięki swojej uniwersalności aktualne zastosowania są bardzo szerokie. Wykorzystując mechanizmy sieciowe, które udostępniają dane z serwera sieciowego można budować systemy hierarchiczne, czy kaskadowe. Przykład struktury takiego systemu pokazano na rys. ANT Sp z o.o. Strona 411

412 Inna zaleta OPC pojawia się kiedy system SCADA jest OPC klientem i OPC serwerem. Może wtedy dostarczać dane z PLC lub dystrybuować je innemu systemowi np. dużemu systemowi informacyjnemu, czy do systemu kompletnej kontroli produkcji itd. ANT Sp z o.o. Strona 412

413 DDE Protokół DDE (Dynamic Data Exchange) jest zbiorem komunikatów (messages), reguł i wskazówek. Polega głównie na przesyłaniu komunikatów pomiędzy aplikacjami, które dzielą dane oraz wykorzystywaniu wspólnej pamięci (shared data - pamięć dzielona) do wymiany tychże danych. Aplikacja może wykorzystywać protokół DDE do jednorazowej transmisji danych jak i do ciągłej pracy, kiedy to aplikacje odświeżają udostępnione dane, gdy tylko nastąpią zmiany. Z protokołu DDE korzysta wiele popularnych aplikacji systemu Windows, m.in. Excel. Połączenie DDE definiuje się pomiędzy klientami i serwerami DDE. Aplikacje te wymieniają itemy (kanały z danymi) zdefiniowane w grupach - tematach (topic). DDE lokalne i sieciowe Protokół DDE został stworzony jako sposób na komunikowanie się aplikacji pracujących na tym samym komputerze. Z czasem możliwości DDE zostały rozszerzone o usługę NETDDE, polegającą na udostępnianiu połączeń DDE w sieci. Informacje na ten temat można znaleźć w sieci Internet oraz w pomocy do systemu Windows. ANT Sp z o.o. Strona 413

414 Wznawiania połączenia DDE Moduł DDE posiada właściwość wznawiania połączenia. Oznacza to, że w przypadku kiedy serwer nie odpowiada w ciągu określonego w parametrze TimeOut limitu czasu następuje reinicjalizacja połączenia. Próby te są ponawiane aż do momentu ustanowienia połączenia. Udostępnianie danych po DDE z arkuszem Excel Excel jest klientem DDE i może pobierać dane z serwerów. Konfigurowanie połączenia po stronie Exela: 1. Zaznacz komórkę, z której ma zostać poprowadzone połączenie. 2. Wprowadź formułę, używając następującej składni: nazwa aplikacji; temat lub nazwa dokumentu; zakres komórek, wartość, pole lub dane, do których tworzone jest odwołanie. Poniższy przykład pokazuje części formuły odwołania zdalnego i znaki rozdzielające. 3. Naciśnij klawisz ENTER. Uwaga Jeśli nazwa aplikacji, dokumentu, tematu lub elementu danych zawiera spacje lub znaki takie jak dwukropek (:) lub minus ( ), które w formułach mają specjalne zastosowanie lub jeśli nazwa jest podobna do odwołania do komórki, nazwę taką należy ująć w znaki cudzysłowu pojedynczego. Zobacz przykładową konfigurację połączenia DDE do MS Excel ANT Sp z o.o. Strona 414

415 ODBC ODBC Open Database Connectivity to metoda komunikacji aplikacji z bazami danych. Serwery baz danych, posiadają drivery ODBC, które instaluje się w systemie jako źródła danych ODBC. Po zainstalowaniu sterownika ODBC, należy go dodać do źródeł danych DSN. Źródła danych konfiguruje się jako DSN systemowe, dostępne dla wszystkich użytkowników w systemie, lub jako DSN użytkownika. Źródło danych ODBC konfiguruje indywidualnie, w zależności od zainstalowanego sterownika. Należy wskazać komputer na którym pracuje serwer bazy danych, nazwę bazy, nazwę użytkownika i hasło dostępu do bazy. Jedno źródło ODBC umożliwia korzystanie z tabel zdefiniowanych w danej bazie danych. ANT Sp z o.o. Strona 415

416 Zastosowanie ODBC daje pełne możliwości udostępniania danych w sieci, oraz umożliwia wymianę danych z popularnymi aplikacjami, m.in. Excel czy Access. ANT Sp z o.o. Strona 416

1. Opis. 2. Wymagania sprzętowe:

1. Opis. 2. Wymagania sprzętowe: 1. Opis Aplikacja ARSOFT-WZ2 umożliwia konfigurację, wizualizację i rejestrację danych pomiarowych urządzeń produkcji APAR wyposażonych w interfejs komunikacyjny RS232/485 oraz protokół MODBUS-RTU. Aktualny

Bardziej szczegółowo

Konfiguracja panelu ASTRAADA HMI z sterownikiem ASTRADA ONE

Konfiguracja panelu ASTRAADA HMI z sterownikiem ASTRADA ONE Konfiguracja panelu ASTRAADA HMI z sterownikiem ASTRADA ONE Na przykładzie panelu ASTRAADA HMI AS43TFT1525 i Sterownika ASTRAADA ONE ECC2220 Poniższy dokument ma na celu pokazanie przykładowej konfiguracji

Bardziej szczegółowo

Konfigurowanie sterownika CX9000 firmy Beckhoff wprowadzenie

Konfigurowanie sterownika CX9000 firmy Beckhoff wprowadzenie Konfigurowanie sterownika CX9000 firmy Beckhoff wprowadzenie Stanowisko laboratoryjne ze sterownikiem CX9000 Sterownik CX9000 należy do grupy urządzeń określanych jako komputery wbudowane (Embedded-PC).

Bardziej szczegółowo

Konfigurowanie sterownika CP6601 firmy Beckhoff wprowadzenie

Konfigurowanie sterownika CP6601 firmy Beckhoff wprowadzenie Konfigurowanie sterownika CP6601 firmy Beckhoff wprowadzenie Stanowisko laboratoryjne ze sterownikiem CP6601 Sterownik CP6601 należy do grupy urządzeń określanych jako komputery przemysłowe (Industrial

Bardziej szczegółowo

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem. WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy

Bardziej szczegółowo

Konfigurowanie sterownika CX1000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem CX1000

Konfigurowanie sterownika CX1000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem CX1000 Konfigurowanie sterownika CX1000 firmy Beckhoff wprowadzenie Stanowisko laboratoryjne ze sterownikiem CX1000 Sterownik CX1000 należy do grupy urządzeń określanych jako komputery wbudowane (Embedded-PC).

Bardziej szczegółowo

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji. 1 Moduł Modbus TCP Moduł Modbus TCP daje użytkownikowi Systemu Vision możliwość zapisu oraz odczytu rejestrów urządzeń, które obsługują protokół Modbus TCP. Zapewnia on odwzorowanie rejestrów urządzeń

Bardziej szczegółowo

Ćwiczenia z S7-1200. Komunikacja S7-1200 z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Ćwiczenia z S7-1200. Komunikacja S7-1200 z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP. Ćwiczenia z S7-1200 Komunikacja S7-1200 z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP FAQ Marzec 2012 Spis treści 1 Opis zagadnienie poruszanego w ćwiczeniu. 3 1.1 Wykaz

Bardziej szczegółowo

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego 2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego produktu. 23 czerwca 2014 Spis treści 3 Spis treści...5

Bardziej szczegółowo

Pracownia internetowa w szkole ZASTOSOWANIA

Pracownia internetowa w szkole ZASTOSOWANIA NR ART/SBS/07/01 Pracownia internetowa w szkole ZASTOSOWANIA Artykuły - serwery SBS i ich wykorzystanie Instalacja i Konfiguracja oprogramowania MOL Optiva na szkolnym serwerze (SBS2000) Artykuł opisuje

Bardziej szczegółowo

Konfigurowanie sterownika BX9000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy ze sterownikiem BX9000

Konfigurowanie sterownika BX9000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy ze sterownikiem BX9000 Konfigurowanie sterownika BX9000 firmy Beckhoff wprowadzenie 1. Konfiguracja pakietu TwinCAT do współpracy ze sterownikiem BX9000 Stanowisko laboratoryjne ze sterownikiem BX9000 Sterownik BX9000 należy

Bardziej szczegółowo

Komunikacja Master-Slave w protokole PROFIBUS DP pomiędzy S7-300/S7-400

Komunikacja Master-Slave w protokole PROFIBUS DP pomiędzy S7-300/S7-400 PoniŜszy dokument zawiera opis konfiguracji programu STEP7 dla sterowników S7 300/S7 400, w celu stworzenia komunikacji Master Slave z wykorzystaniem sieci PROFIBUS DP pomiędzy sterownikami S7 300 i S7

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania KOMPUTEROWE SYSTEMY STEROWANIA (KSS)

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania KOMPUTEROWE SYSTEMY STEROWANIA (KSS) Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania KOMPUTEROWE SYSTEMY STEROWANIA (KSS) Temat: Platforma Systemowa Wonderware cz. 2 przemysłowa baza danych,

Bardziej szczegółowo

Instrukcja obsługi serwera FTP v.28.12.2010

Instrukcja obsługi serwera FTP v.28.12.2010 Instrukcja obsługi serwera FTP v.28.12.2010 1. Dostęp klienta do konta FTP 1.1. Wprowadzić do przeglądarki adres ftp://87.204.185.42 lub alternatywny adres IP ftp://82.11.1160.114 1.2. Wprowadzić nazwę

Bardziej szczegółowo

Minimalna wspierana wersja systemu Android to 2.3.3 zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

Minimalna wspierana wersja systemu Android to 2.3.3 zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4. Dokumentacja dla Scandroid. Minimalna wspierana wersja systemu Android to 2.3.3 zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4. Scandroid to aplikacja przeznaczona

Bardziej szczegółowo

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe Fiery Remote Scan Program Fiery Remote Scan umożliwia zarządzanie skanowaniem na serwerze Fiery server i drukarce ze zdalnego komputera. Programu Fiery Remote Scan można użyć do wykonania następujących

Bardziej szczegółowo

1. Wstęp Niniejszy dokument jest instrukcją użytkownika dla aplikacji internetowej DM TrackMan.

1. Wstęp Niniejszy dokument jest instrukcją użytkownika dla aplikacji internetowej DM TrackMan. Instrukcja korzystania z aplikacji TrackMan wersja WEB 1. Wstęp... 1 2. Logowanie... 1 3. Główny interfejs aplikacji... 2 3.1. Ogólny opis interfejsu... 2 3.2. Poruszanie się po mapie... 2 3.3. Przełączanie

Bardziej szczegółowo

Spis treści 1. Wstęp Logowanie Główny interfejs aplikacji Ogólny opis interfejsu Poruszanie się po mapie...

Spis treści 1. Wstęp Logowanie Główny interfejs aplikacji Ogólny opis interfejsu Poruszanie się po mapie... Spis treści 1. Wstęp... 2 2. Logowanie... 2 3. Główny interfejs aplikacji... 2 3.1. Ogólny opis interfejsu... 2 3.2. Poruszanie się po mapie... 3 3.3. Przełączanie widocznych warstw... 3 4. Urządzenia...

Bardziej szczegółowo

FAQ: 00000042/PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

FAQ: 00000042/PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200 Spis treści 1 Opis zagadnienia omawianego w dokumencie.. 2 2 Wstęp do nowego projektu..... 3 2.1 Nowy projekt... 3 2.2 Dodanie nowego urządzenia... 4 3 Program w main... 6 4 Program PC Access.... 8 4.1

Bardziej szczegółowo

FAQ: 00000041/PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0

FAQ: 00000041/PL Data: 09/06/2012. Zastosowanie zmiennych Raw Data Type WinCC v7.0 Zmienne typu Raw Data są typem danych surowych nieprzetworzonych. Ten typ danych daje użytkownikowi możliwość przesyłania do oraz z WinCC dużych ilości danych odpowiednio 208 bajtów dla sterowników serii

Bardziej szczegółowo

Materiały dodatkowe. Konfiguracja sterownika programowalnego Siemens do obsługi protokołu MODBUS. Opracowali: mgr inż.

Materiały dodatkowe. Konfiguracja sterownika programowalnego Siemens do obsługi protokołu MODBUS. Opracowali: mgr inż. Katedra Inżynierii Systemów Sterowania Materiały dodatkowe Konfiguracja sterownika programowalnego Siemens do obsługi protokołu MODBUS Opracowali: mgr inż. Tomasz Karla Data: Luty, 2017 r. Dodatkowe informacje

Bardziej szczegółowo

FlowSoft02. Przeznaczenie programu

FlowSoft02. Przeznaczenie programu FlowSoft02 Przeznaczenie programu FlowSoft02 jest programem przeznaczonym do obsługi systemu zdalnych odczytów w systemach opartych o magistralę MBUS. Program jest przygotowany dla systemu Windows. Wymagania

Bardziej szczegółowo

podstawowa obsługa panelu administracyjnego

podstawowa obsługa panelu administracyjnego podstawowa obsługa panelu administracyjnego Poniższy dokument opisuje podstawowe czynności i operacje jakie należy wykonać, aby poprawnie zalogować się i administrować środowiskiem maszyn wirtualnych usługi

Bardziej szczegółowo

Synchronizator plików (SSC) - dokumentacja

Synchronizator plików (SSC) - dokumentacja SZARP http://www.szarp.org Synchronizator plików (SSC) - dokumentacja Wersja pliku: $Id: ssc.sgml 4420 2007-09-18 11:19:02Z schylek$ > 1. Witamy w programie SSC Synchronizator plików (SZARP Sync Client,

Bardziej szczegółowo

Rozpoczęcie pracy z programem.

Rozpoczęcie pracy z programem. Rozpoczęcie pracy z programem. Po zainstalowaniu programu należy przygotować program do wykonywania kopii zapasowej baz danych. W tym celu należy uruchomić z menu start Panel sterowania a następnie wybrać

Bardziej szczegółowo

Product Update 2013. Funkcjonalność ADR dla przemienników Częstotliwości PowerFlex 750 oraz 525 6

Product Update 2013. Funkcjonalność ADR dla przemienników Częstotliwości PowerFlex 750 oraz 525 6 Product Update 2013 Funkcjonalność ADR dla przemienników Częstotliwości PowerFlex 750 oraz 525 6 Str. 2 / 15 Funkcjonalność ADR dla przemienników PF 750 Temat: Celem niniejszego ćwiczenia, jest zapoznanie

Bardziej szczegółowo

Podstawy konfiguracji środowiska graficznego. Umieszczamy kursor na pustym obszarze na pulpicie i naciskamy prawy guzik:

Podstawy konfiguracji środowiska graficznego. Umieszczamy kursor na pustym obszarze na pulpicie i naciskamy prawy guzik: Umieszczamy kursor na pustym obszarze na pulpicie i naciskamy prawy guzik: Wybieramy myszką opcję Utwórz aktywator. Na ekranie ukaże się okno tworzenia nowego aktywatora: Strona 1 z 12 Możemy utworzyć

Bardziej szczegółowo

Instrukcja EQU Kantech

Instrukcja EQU Kantech Instrukcja EQU Kantech Pobranie konfiguracji Konfiguracje Kantecha do IFTER EQU pobieramy za pomocą opcji we właściwościach integracji Kantech wskazując lokalizacje katalogu..\data\kantech. Po wskazaniu

Bardziej szczegółowo

1 Moduł Modbus ASCII/RTU

1 Moduł Modbus ASCII/RTU 1 Moduł Modbus ASCII/RTU Moduł Modbus ASCII/RTU daje użytkownikowi Systemu Vision możliwość komunikacji z urządzeniami za pomocą protokołu Modbus. Moduł jest konfigurowalny w taki sposób, aby umożliwiał

Bardziej szczegółowo

Moduł Ethernetowy. instrukcja obsługi. Spis treści

Moduł Ethernetowy. instrukcja obsługi. Spis treści Moduł Ethernetowy instrukcja obsługi Spis treści 1. Podstawowe informacje...2 2. Konfiguracja modułu...4 3. Podłączenie do sieci RS-485 i LAN/WAN...9 4. Przywracanie ustawień fabrycznych...11 www.el-piast.com

Bardziej szczegółowo

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA Laboratorium nr 8 PODSTAWY OBSŁUGI PROGRAMU WONDERWARE INTOUCH 10.1 Opracował: mgr inż. Marcel Luzar Cel: Konfiguracja

Bardziej szczegółowo

Spis treści 1. Oprogramowanie wizualizacyjne IFTER EQU Dodanie integracji CKD Wprowadzanie konfiguracji do programu EQU... 6 a.

Spis treści 1. Oprogramowanie wizualizacyjne IFTER EQU Dodanie integracji CKD Wprowadzanie konfiguracji do programu EQU... 6 a. Spis treści 1. Oprogramowanie wizualizacyjne IFTER EQU... 3 2. Dodanie integracji CKD-500... 6 3. Wprowadzanie konfiguracji do programu EQU... 6 a. Wprowadzanie kontrolerów... 6 b. Wprowadzenie przejść...

Bardziej szczegółowo

FS-Sezam SQL. Obsługa kart stałego klienta. INFOLINIA : tel. 14/698-20-02, kom. 608/92-10-60. edycja instrukcji : 2013-11-25

FS-Sezam SQL. Obsługa kart stałego klienta. INFOLINIA : tel. 14/698-20-02, kom. 608/92-10-60. edycja instrukcji : 2013-11-25 FS-Sezam SQL Obsługa kart stałego klienta INFOLINIA : tel. 14/698-20-02, kom. 608/92-10-60 edycja instrukcji : 2013-11-25 Aplikacja FS-Sezam SQL jest programem służącym do obsługi kart stałego klienta.

Bardziej szczegółowo

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC. 1 Moduł OPC Moduł OPC pozwala na komunikację z serwerami OPC pracującymi w oparciu o model DA (Data Access). Dzięki niemu można odczytać stan obiektów OPC (zmiennych zdefiniowanych w programie PLC), a

Bardziej szczegółowo

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1 Instrukcja obsługi aplikacji 1 1./ instalacja aplikacji. Aplikacja służy do zarządzania, konfigurowania i testowania modułów firmy Advance Electronic wyposażonych w RS485 pracujących w trybie half-duplex.

Bardziej szczegółowo

Gromadzenie danych. Przybliżony czas ćwiczenia. Wstęp. Przegląd ćwiczenia. Poniższe ćwiczenie ukończysz w czasie 15 minut.

Gromadzenie danych. Przybliżony czas ćwiczenia. Wstęp. Przegląd ćwiczenia. Poniższe ćwiczenie ukończysz w czasie 15 minut. Gromadzenie danych Przybliżony czas ćwiczenia Poniższe ćwiczenie ukończysz w czasie 15 minut. Wstęp NI-DAQmx to interfejs służący do komunikacji z urządzeniami wspomagającymi gromadzenie danych. Narzędzie

Bardziej szczegółowo

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp VComNet Podręcznik użytkownika Wstęp VComNet przeznaczony jest do wdrażania aplikacji komunikacyjnych uruchomionych na komputerze PC z systemem Windows z urządzeniami połączonymi poprzez RS485 (RS422/RS232)

Bardziej szczegółowo

Instrukcja użytkownika Dell Display Manager

Instrukcja użytkownika Dell Display Manager Instrukcja użytkownika Dell Display Manager Informacje ogólne Dell Display Manager to aplikacja Windows wykorzystywana do zarządzania monitorem lub grupą monitorów. Umożliwia ona ręczną regulację wyświetlanego

Bardziej szczegółowo

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http. T: Konfiguracja usługi HTTP w systemie Windows. Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http. HTTP (ang. Hypertext Transfer Protocol) protokół transferu plików

Bardziej szczegółowo

Ćwiczenia z S7-1200. S7-1200 jako Profinet-IO Controller. FAQ Marzec 2012

Ćwiczenia z S7-1200. S7-1200 jako Profinet-IO Controller. FAQ Marzec 2012 Ćwiczenia z S7-1200 S7-1200 jako Profinet-IO Controller FAQ Marzec 2012 Spis treści 1 Opis zagadnienie poruszanego w ćwiczeniu. 3 1.1 Wykaz urządzeń..... 3 2 KONFIGURACJA S7-1200 PLC.. 4 2.1 Nowy projekt.

Bardziej szczegółowo

Konfiguracja Połączenia

Konfiguracja Połączenia 2012.07.17Aktualizacja: 2012.10.11, 12:50 Konfiguracjaja klienta PPPoE w Windows 7 1. Klikamy na ikonę połączeń sieciowych przy zegarze i otwieramy "Centrum sieci i udostępniania". Aby wyłączyć protokół

Bardziej szczegółowo

Site Installer v2.4.xx

Site Installer v2.4.xx Instrukcja programowania Site Installer v2.4.xx Strona 1 z 12 IP v1.00 Spis Treści 1. INSTALACJA... 3 1.1 Usunięcie poprzedniej wersji programu... 3 1.2 Instalowanie oprogramowania... 3 2. UŻYTKOWANIE

Bardziej szczegółowo

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator Wspomagamy procesy automatyzacji od 1986 r. Skrócony przewodnik OPROGRAMOWANIE PC MultiCon Emulator Wersja: od v.1.0.0 Do współpracy z rejestratorami serii MultiCon Przed rozpoczęciem użytkowania oprogramowania

Bardziej szczegółowo

Komunikacja sterownika PLC Fatek jako master w protokole ModBus RTU

Komunikacja sterownika PLC Fatek jako master w protokole ModBus RTU Komunikacja sterownika PLC Fatek jako master w protokole ModBus RTU 1. Konfiguracja portu komunikacyjnego - dokonuje się tego w oprogramowaniu narzędziowym WinProladder, z menu PLC->Setting->Port Parameter:

Bardziej szczegółowo

I. Program II. Opis głównych funkcji programu... 19

I. Program II. Opis głównych funkcji programu... 19 07-12-18 Spis treści I. Program... 1 1 Panel główny... 1 2 Edycja szablonu filtrów... 3 A) Zakładka Ogólne... 4 B) Zakładka Grupy filtrów... 5 C) Zakładka Kolumny... 17 D) Zakładka Sortowanie... 18 II.

Bardziej szczegółowo

I. Interfejs użytkownika.

I. Interfejs użytkownika. Ćwiczenia z użytkowania systemu MFG/PRO 1 I. Interfejs użytkownika. MFG/PRO w wersji eb2 umożliwia wybór użytkownikowi jednego z trzech dostępnych interfejsów graficznych: a) tekstowego (wybór z menu:

Bardziej szczegółowo

podstawowa obsługa panelu administracyjnego

podstawowa obsługa panelu administracyjnego podstawowa obsługa panelu administracyjnego Poniższy dokument opisuje podstawowe czynności i operacje jakie należy wykonać, aby poprawnie zalogować się i administrować środowiskiem maszyn wirtualnych usługi

Bardziej szczegółowo

1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7

1. Aplikacja LOGO! App do LOGO! 8 i LOGO! 7 1. Aplikacja do LOGO! 8 i LOGO! 7 1.1. Przegląd funkcji Darmowa aplikacja umożliwia podgląd wartości parametrów procesowych modułu podstawowego LOGO! 8 i LOGO! 7 za pomocą smartfona lub tabletu przez sieć

Bardziej szczegółowo

Oprogramowanie. DMS Lite. Podstawowa instrukcja obsługi

Oprogramowanie. DMS Lite. Podstawowa instrukcja obsługi Oprogramowanie DMS Lite Podstawowa instrukcja obsługi 1 Spis treści 1. Informacje wstępne 3 2. Wymagania sprzętowe/systemowe 4 3. Instalacja 5 4. Uruchomienie 6 5. Podstawowa konfiguracja 7 6. Wyświetlanie

Bardziej szczegółowo

Instalowanie certyfikatów celem obsługi pracy urządzenia SIMOCODE pro V PN z poziomu przeglądarki internetowej w systemie Android

Instalowanie certyfikatów celem obsługi pracy urządzenia SIMOCODE pro V PN z poziomu przeglądarki internetowej w systemie Android Instalowanie certyfikatów celem obsługi pracy urządzenia SIMOCODE pro V PN z poziomu przeglądarki internetowej w systemie Android Wstęp Dostępna od grudnia 2013 roku jednostka podstawowa SIMOCODE pro V

Bardziej szczegółowo

Przykładowa konfiguracja komunikacji pomiędzy oprogramowaniem Wonderware i Codesys z wykorzystaniem sieci LAN lub modułu GSM

Przykładowa konfiguracja komunikacji pomiędzy oprogramowaniem Wonderware i Codesys z wykorzystaniem sieci LAN lub modułu GSM Przykładowa konfiguracja komunikacji pomiędzy oprogramowaniem Wonderware i Codesys z wykorzystaniem sieci LAN lub modułu GSM Informator Techniczny Wonderware nr 159 07.11.2016 r. SPIS TREŚCI Konfiguracja

Bardziej szczegółowo

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami Dotyczy programów opartych na bazie BDE: Menedżer Pojazdów PL+ Ewidencja Wyposażenia PL+ Spis treści: 1. Wstęp...

Bardziej szczegółowo

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie Stanowisko laboratoryjne z modułem BK9050 Moduł BK9050 jest urządzeniem typu Bus Coupler, umożliwiającym instalację rozproszonych grup terminali

Bardziej szczegółowo

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie

Wstęp. Skąd pobrać program do obsługi FTP? Logowanie Wstęp FTP - (ang. File Transfer Protocol - protokół transmisji danych) jest to protokół typu klient-serwer, który umożliwia przesyłanie plików na serwer, oraz z serwera poprzez program klienta FTP. Dzięki

Bardziej szczegółowo

Instrukcja obsługi Konfigurator MLAN-1000

Instrukcja obsługi Konfigurator MLAN-1000 Instrukcja obsługi Konfigurator MLAN-1000 Strona 2 z 8 SPIS TREŚCI 1. Logowanie... 3 2. Diagnostyka... 4 3. Konfiguracja sterownika... 5 3.1 Konfiguracja sterownika aktualizacja oprogramowania... 5 4.

Bardziej szczegółowo

Włączanie/wyłączanie paska menu

Włączanie/wyłączanie paska menu Włączanie/wyłączanie paska menu Po zainstalowaniu przeglądarki Internet Eksplorer oraz Firefox domyślnie górny pasek menu jest wyłączony. Czasem warto go włączyć aby mieć szybszy dostęp do narzędzi. Po

Bardziej szczegółowo

Dell Display Manager - przewodnik użytkownika

Dell Display Manager - przewodnik użytkownika Dell Display Manager - przewodnik użytkownika Przegląd Dell Display Manager to aplikacja dla systemu Microsoft Windows, używana do zarządzania monitorem lub grupą monitorów. Umożliwia ręczną regulację

Bardziej szczegółowo

Pakiet informacyjny dla nowych użytkowników usługi Multimedia Internet świadczonej przez Multimedia Polska S.A. z siedzibą w Gdyni

Pakiet informacyjny dla nowych użytkowników usługi Multimedia Internet świadczonej przez Multimedia Polska S.A. z siedzibą w Gdyni Pakiet informacyjny dla nowych użytkowników usługi Multimedia Internet świadczonej przez Multimedia Polska S.A. z siedzibą w Gdyni Rozdział I Konfiguracja komputera do pracy w sieci Multimedia w systemie

Bardziej szczegółowo

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja. Kontrola topto Obsługa aplikacji Kontrola topto 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja. 5. Dodawanie, edycja i usuwanie przejść.

Bardziej szczegółowo

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Compas 2026 Vision Instrukcja obsługi do wersji 1.07 Compas 2026 Vision Instrukcja obsługi do wersji 1.07 1 2 Spis treści Integracja...5 1.Compas 2026 Lan...5 Logowanie...7 Użytkownicy...8 Raporty...10 Tworzenie wizualizacji Widoki...12 1.Zarządzanie widokami...12

Bardziej szczegółowo

Problemy techniczne SQL Server

Problemy techniczne SQL Server Problemy techniczne SQL Server Co zrobić, jeśli program Optivum nie łączy się poprzez sieć lokalną z serwerem SQL? Programy Optivum, które korzystają z bazy danych umieszczonej na serwerze SQL, mogą być

Bardziej szczegółowo

Samsung Universal Print Driver Podręcznik użytkownika

Samsung Universal Print Driver Podręcznik użytkownika Samsung Universal Print Driver Podręcznik użytkownika wyobraź sobie możliwości Copyright 2009 Samsung Electronics Co., Ltd. Wszelkie prawa zastrzeżone. Ten podręcznik administratora dostarczono tylko w

Bardziej szczegółowo

Zgrywus dla Windows v 1.12

Zgrywus dla Windows v 1.12 Zgrywus dla Windows v 1.12 Spis treści. 1. Instalacja programu. 2 2. Pierwsze uruchomienie programu.. 3 2.1. Opcje programu 5 2.2. Historia zdarzeń 7 2.3. Opisy nadajników. 8 2.4. Ustawienia zaawansowane...

Bardziej szczegółowo

4. Podstawowa konfiguracja

4. Podstawowa konfiguracja 4. Podstawowa konfiguracja Po pierwszym zalogowaniu się do urządzenia należy zweryfikować poprawność licencji. Można to zrobić na jednym z widżetów panelu kontrolnego. Wstępną konfigurację można podzielić

Bardziej szczegółowo

Instrukcja konfiguracji funkcji skanowania

Instrukcja konfiguracji funkcji skanowania Instrukcja konfiguracji funkcji skanowania WorkCentre M123/M128 WorkCentre Pro 123/128 701P42171_PL 2004. Wszystkie prawa zastrzeżone. Rozpowszechnianie bez zezwolenia przedstawionych materiałów i informacji

Bardziej szczegółowo

Spis treści. 1 Moduł Modbus TCP 4

Spis treści. 1 Moduł Modbus TCP 4 Spis treści 1 Moduł Modbus TCP 4 1.1 Konfigurowanie Modułu Modbus TCP................. 4 1.1.1 Lista elementów Modułu Modbus TCP............ 4 1.1.2 Konfiguracja Modułu Modbus TCP.............. 5 1.1.3

Bardziej szczegółowo

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych Ustawienia serwera 1. Uruchomić serwer KEPServerEX w trybie administracji 2. Wywołać ustawienia serwera 3. W zakładce Runtime Process ustawić opcję Process Mode w tryb Interactive 4. Zaakceptować ustawienia

Bardziej szczegółowo

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows. Bezpieczeństwo Systemów Informatycznych Firewall (Zapora systemu) Firewall (zapora systemu) jest ważnym elementem bezpieczeństwa współczesnych systemów komputerowych. Jego główną rolą jest kontrola ruchu

Bardziej szczegółowo

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows Spis treści Rozdział 1. Przegląd......... 1 Wstęp................. 1 Wdrażanie technologii Data Access........ 1 Źródła danych

Bardziej szczegółowo

Instrukcja obsługi programu PLOMP PLUS FM

Instrukcja obsługi programu PLOMP PLUS FM Instrukcja obsługi programu PLOMP PLUS FM Edata Polska Sp. z o.o. ul. Puławska 314 02-819 Warszawa Tel 22 545-32-40 Fax 22 678-60-29 biuro@edatapolska.pl Ver 1.04 Aplikacja PLOMP PLUS FM przeznaczona jest

Bardziej szczegółowo

RF-graph 1.2 POMOC PROGRAMU

RF-graph 1.2 POMOC PROGRAMU RF-graph 1.2 POMOC PROGRAMU Spis treśći 1. Komunikacja...3 1.1. Połączenie...3 1.2. Rozłączenie...3 1.3. Problemy z połączeniem...3 1.4. Ustawienia transmisji...4 2. Wykresy...4 2.1. Rysowanie siatek...4

Bardziej szczegółowo

ActionFX oprogramowanie do sterowania efektami platform i kin 7D V1.0.1

ActionFX oprogramowanie do sterowania efektami platform i kin 7D V1.0.1 Instrukcja obsługi ActionFX oprogramowanie do sterowania efektami platform i kin 7D V1.0.1 1 ActionFX to zaawansowane oprogramowanie umożliwiające sterowanie platformami efektowymi i efektami w kinach

Bardziej szczegółowo

VSS podgląd obrazów z rejestratora na żywo poprzez sieć komputerową, jak skonfigurować krótka instrukcja.

VSS podgląd obrazów z rejestratora na żywo poprzez sieć komputerową, jak skonfigurować krótka instrukcja. VSS podgląd obrazów z rejestratora na żywo poprzez sieć komputerową, jak skonfigurować krótka instrukcja. 1. Należy się zalogować do programu. Domyślnie użytkownik admin, hasło 123456. 2. Po zalogowaniu

Bardziej szczegółowo

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel etrader Pekao Podręcznik użytkownika Strumieniowanie Excel Spis treści 1. Opis okna... 3 2. Otwieranie okna... 3 3. Zawartość okna... 4 3.1. Definiowanie listy instrumentów... 4 3.2. Modyfikacja lub usunięcie

Bardziej szczegółowo

INSTRUKCJA UZUPEŁNIAJĄCA DO CENTRAL DUPLEX ZE STEROWANIEM RD4

INSTRUKCJA UZUPEŁNIAJĄCA DO CENTRAL DUPLEX ZE STEROWANIEM RD4 INSTRUKCJA UZUPEŁNIAJĄCA DO CENTRAL DUPLEX ZE STEROWANIEM RD4 Quatrovent Morska 242 Gdynia Tel. +48 58 3505995, fax +48 58 6613553 1 Spis treści I. Ustawienie orientacji wentylatorów...3 A. Za pomocą regulatora

Bardziej szczegółowo

K2 XVR-04, K2 XVR-08, K2 XVR-16, K2 XVR-24. Rejestrator Cyfrowy S E R I E: K2 XVR. DVR klient. Instrukcja użytkownika 2011.05.19.

K2 XVR-04, K2 XVR-08, K2 XVR-16, K2 XVR-24. Rejestrator Cyfrowy S E R I E: K2 XVR. DVR klient. Instrukcja użytkownika 2011.05.19. Rejestrator Cyfrowy S E R I E: K2 XVR DVR klient Instrukcja użytkownika 2011.05.19 Strona 1 / 5 1. Jak połączyć się z DVR poprzez sieć komputerową. K2 XVR-04, K2 XVR-08, K2 XVR-16, K2 XVR-24 (Rysunek 1)

Bardziej szczegółowo

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer; 14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi

Bardziej szczegółowo

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika asix 4 Edytor Bazy Zmiennych Podręcznik użytkownika asix 4 dokumentacja Edytor Bazy Zmiennych ASKOM i asix to zastrzeżone znaki firmy ASKOM Sp. z o. o., Gliwice. Inne występujące w tekście znaki firmowe

Bardziej szczegółowo

TM-47.1-2 PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T

TM-47.1-2 PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T LANEX S.A. ul. Ceramiczna 8 20-150 Lublin tel. (081) 444 10 11 tel/fax. (081) 740 35 70 TM-47.1-2 PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T LANEX S.A., ul.ceramiczna 8, 20-150

Bardziej szczegółowo

SKRó CONA INSTRUKCJA OBSŁUGI

SKRó CONA INSTRUKCJA OBSŁUGI SKRó CONA INSTRUKCJA OBSŁUGI dla systemu Windows Vista SPIS TREśCI Rozdział 1: WYMAGANIA SYSTEMOWE...1 Rozdział 2: INSTALACJA OPROGRAMOWANIA DRUKARKI W SYSTEMIE WINDOWS...2 Instalowanie oprogramowania

Bardziej szczegółowo

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer? Kadry Optivum, Płace Optivum Jak przenieść dane na nowy komputer? Aby kontynuować pracę z programem Kadry Optivum lub Płace Optivum (lub z obydwoma programami pracującymi na wspólnej bazie danych) na nowym

Bardziej szczegółowo

Instrukcja instalacji oraz konfiguracji sterowników. MaxiEcu 2.0

Instrukcja instalacji oraz konfiguracji sterowników. MaxiEcu 2.0 Instrukcja instalacji oraz konfiguracji sterowników. MaxiEcu 2.0 Wersja instrukcji 1.0.1 1 SPIS TREŚCI 1. Sprawdzenie wersji systemu Windows... 3 2. Instalacja sterowników interfejsu diagnostycznego...

Bardziej szczegółowo

Instrukcja podłączenia i konfiguracji BLUETOOTH NX. Interfejs. (instrukcja dostępna także na www.ac.com.pl) ver. 1.2 2014-12-18

Instrukcja podłączenia i konfiguracji BLUETOOTH NX. Interfejs. (instrukcja dostępna także na www.ac.com.pl) ver. 1.2 2014-12-18 Instrukcja podłączenia i konfiguracji BLUETOOTH NX Interfejs (instrukcja dostępna także na www.ac.com.pl) ver. 1.2 2014-12-18 SPIS TREŚCI 1. Dane techniczne... 3 2. Przeznaczenie... 3 3. Zasada działania...

Bardziej szczegółowo

Autorzy. Zespół SABUR Sp. Z o.o. Wydanie Data. Sierpień SABUR Sp. Z o. o. Wszelkie prawa zastrzeżone

Autorzy. Zespół SABUR Sp. Z o.o. Wydanie Data. Sierpień SABUR Sp. Z o. o. Wszelkie prawa zastrzeżone SMART RIO Autorzy Wydanie Data : : : Zespół SABUR Sp. Z o.o. 3.00 Sierpień 2013 2013 SABUR Sp. Z o. o. Wszelkie prawa zastrzeżone Bez pisemnej zgody firmy SABUR Sp. Z o.o. niniejszy materiał ani w całości,

Bardziej szczegółowo

1. Cel ćwiczenia. Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU.

1. Cel ćwiczenia. Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU. 1. Cel ćwiczenia Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU. 2. Porty szeregowe w sterowniku VersaMax Micro Obydwa porty szeregowe sterownika

Bardziej szczegółowo

Instrukcja instalacji Control Expert 3.0

Instrukcja instalacji Control Expert 3.0 Instrukcja instalacji Control Expert 3.0 Program Control Expert 3.0 jest to program służący do zarządzania urządzeniami kontroli dostępu. Dedykowany jest dla kontrolerów GRx02 i GRx06 oraz rozwiązaniom

Bardziej szczegółowo

Temat: Organizacja skoroszytów i arkuszy

Temat: Organizacja skoroszytów i arkuszy Temat: Organizacja skoroszytów i arkuszy Podstawowe informacje o skoroszycie Excel jest najczęściej wykorzystywany do tworzenia skoroszytów. Skoroszyt jest zbiorem informacji, które są przechowywane w

Bardziej szczegółowo

Ćwiczenie 1: Pierwsze kroki

Ćwiczenie 1: Pierwsze kroki Ćwiczenie 1: Pierwsze kroki z programem AutoCAD 2010 1 Przeznaczone dla: nowych użytkowników programu AutoCAD Wymagania wstępne: brak Czas wymagany do wykonania: 15 minut W tym ćwiczeniu Lekcje zawarte

Bardziej szczegółowo

Instrukcja konfiguracji programu TV Wall do zarządzania dekoderami IN-IP-5904-MP, IN-IP-5904

Instrukcja konfiguracji programu TV Wall do zarządzania dekoderami IN-IP-5904-MP, IN-IP-5904 Instrukcja konfiguracji programu TV Wall do zarządzania dekoderami IN-IP-5904-MP, IN-IP-5904 Aktualizacja 16.01.2012r Strona 1 Sterowanie dekoderami przez program TV WALL Kam 1 (FullHD) KAM 1 KAM 2 Strumień

Bardziej szczegółowo

Instrukcja użytkownika ARSoft-WZ1

Instrukcja użytkownika ARSoft-WZ1 05-090 Raszyn, ul Gałczyńskiego 6 tel (+48) 22 101-27-31, 22 853-48-56 automatyka@apar.pl www.apar.pl Instrukcja użytkownika ARSoft-WZ1 wersja 3.x 1. Opis Aplikacja ARSOFT-WZ1 umożliwia konfigurację i

Bardziej szczegółowo

1. Przypisy, indeks i spisy.

1. Przypisy, indeks i spisy. 1. Przypisy, indeks i spisy. (Wstaw Odwołanie Przypis dolny - ) (Wstaw Odwołanie Indeks i spisy - ) Przypisy dolne i końcowe w drukowanych dokumentach umożliwiają umieszczanie w dokumencie objaśnień, komentarzy

Bardziej szczegółowo

OPTIMA PC v2.2.1. Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA 255 2011 ELFON. Instrukcja obsługi. Rev 1

OPTIMA PC v2.2.1. Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA 255 2011 ELFON. Instrukcja obsługi. Rev 1 OPTIMA PC v2.2.1 Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA 255 Instrukcja obsługi Rev 1 2011 ELFON Wprowadzenie OPTIMA PC jest programem, który w wygodny sposób umożliwia konfigurację

Bardziej szczegółowo

Instrukcja użytkownika ARsoft-CFG WZ1 4.0

Instrukcja użytkownika ARsoft-CFG WZ1 4.0 05-090 Raszyn, ul Gałczyńskiego 6 tel. (+48) 22 101-27-31, 22 853-48-56 automatyka@apar.pl www.apar.pl Instrukcja użytkownika ARsoft-CFG WZ1 4.0 wersja 4.0 www.apar.pl 1 1. Opis Aplikacja ARsoft-CFG umożliwia

Bardziej szczegółowo

Fiery Remote Scan. Łączenie z serwerami Fiery servers. Łączenie z serwerem Fiery server przy pierwszym użyciu

Fiery Remote Scan. Łączenie z serwerami Fiery servers. Łączenie z serwerem Fiery server przy pierwszym użyciu Fiery Remote Scan Program Fiery Remote Scan umożliwia zarządzanie skanowaniem na serwerze Fiery server i drukarce ze zdalnego komputera. Programu Fiery Remote Scan można użyć do wykonania następujących

Bardziej szczegółowo

Dlaczego stosujemy edytory tekstu?

Dlaczego stosujemy edytory tekstu? Edytor tekstu Edytor tekstu program komputerowy służący do tworzenia, edycji i formatowania dokumentów tekstowych za pomocą komputera. Dlaczego stosujemy edytory tekstu? możemy poprawiać tekst możemy uzupełniać

Bardziej szczegółowo

Współpraca z platformą Emp@tia. dokumentacja techniczna

Współpraca z platformą Emp@tia. dokumentacja techniczna Współpraca z platformą Emp@tia dokumentacja techniczna INFO-R Spółka Jawna - 2013 43-430 Pogórze, ul. Baziowa 29, tel. (33) 479 93 29, (33) 479 93 89 fax (33) 853 04 06 e-mail: admin@ops.strefa.pl Strona1

Bardziej szczegółowo

1. Opis okna podstawowego programu TPrezenter.

1. Opis okna podstawowego programu TPrezenter. OPIS PROGRAMU TPREZENTER. Program TPrezenter przeznaczony jest do pełnej graficznej prezentacji danych bieżących lub archiwalnych dla systemów serii AL154. Umożliwia wygodną i dokładną analizę na monitorze

Bardziej szczegółowo

Dell P2018H Dell Display Manager Instrukcja użytkownika

Dell P2018H Dell Display Manager Instrukcja użytkownika Dell P2018H Dell Display Manager Instrukcja użytkownika Model monitora: P2018H Model - zgodność z przepisami: P2018Hc UWAGA: UWAGA oznacza ważną informację, która może pomóc w lepszym wykorzystaniu komputera.

Bardziej szczegółowo

Kopiowanie przy użyciu szyby skanera. 1 Umieść oryginalny dokument na szybie skanera stroną zadrukowaną skierowaną w dół, w lewym, górnym rogu.

Kopiowanie przy użyciu szyby skanera. 1 Umieść oryginalny dokument na szybie skanera stroną zadrukowaną skierowaną w dół, w lewym, górnym rogu. Skrócony opis Kopiowanie Kopiowanie Szybkie kopiowanie 3 Naciśnij przycisk na panelu operacyjnym 4 Po umieszczeniu dokumentu na szybie skanera dotknij opcji Zakończ zadanie, aby powrócić do ekranu głównego.

Bardziej szczegółowo