Pomoc oprogramowania ANT Studio Web 4...Pomoc oprogramowania ANT Studio Web 4.0 ANT Sp z o.o. Strona...

419
Pomoc oprogramowania ANT Studio Web 4.0 ANT Sp. z o.o. Nowy ANT Studio Web 4.0 z technologią AJAX Web 2.0 WYRÓŻNIAJĄCE SIĘ NA RYNKU OPROGRAMOWANIE HMI/SCADA, W KTÓRYM ZBUDUJESZ JAK Z KLOC KÓW APLIKACJĘ DO: WI ZUALIZACJI, LOGOWANIA, ALARMOWANIA I RAPORT OWANIA DOSTĘPNĄ TAKŻE W PRZEGLĄDARKACH WWW. ANT STUDIO WEB 4.0 ANT Sp.z o.o. Kraków ul.Wadowicka 8A [email protected]

Transcript of Pomoc oprogramowania ANT Studio Web 4...Pomoc oprogramowania ANT Studio Web 4.0 ANT Sp z o.o. Strona...

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp. z o.o.

Nowy ANT Studio Web 4.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.

AN

T S

TU

DIO

WE

B 4

.0

AN

T S

p.z

o.o

. K

rak

ów

ul.W

ad

ow

icka 8

A a

nt-iss

@an

t-iss.p

l

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 3

DANE TECHNICZNE

Parametr

Wizualizacja National Instruments - kontrolki Measurement Studio,

kontrolki użytkownika TCL\Tk

Serwer http Zintegrowany z oprogramowaniem, dostępny w wersji ANT

Studio WEB

OPC 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 DDE klient i DDE serwer. Możliwość stworzenie wielu

instancji serwerów i klientów w jednej aplikacji i ich

połączenia ze sobą.

Protokoły komunikacyjne

Modbus Modbus Master i Modbus Slave.

Tryby RTU, ASCII, TCP. Gotowe wzorce wielu urządzeń.

Gazmodem Gazmodem 1.0, wzorce urządzeń Plum, Common, El-tec.

Możliwość konfigurowania własnych.

M-Bus Wzorce popularnych liczników ciepła oraz możliwość

konfigurowania własnych.

Satchwell Sterowniki IAC-420 i IAC-620

Samsung (OEMax ) Sterowniki serii NX

Panasonic Sterowniki FP2

Mitsubishi Sterowniki serii Alpha i FX, wzorce poszczególnych wersji.

Danfoss Przetwornice częstotliwości serii VLT5000

Lonworks Lontalk®

IEC 62056 Liczniki energii elektrycznej

National Instruments DAQmx

SNMP monitoring i zarządzanie urządzeniami sieciowymi

Interfejsy komunikacyjne Port szeregowy, połączenie TCP\IP jako klient, serwer i

UDP, modemy PSTN, modemy GSM, modemy GPRS,

modemy ANT GPRS

Bazy danych

Wewnętrzna baza programu SQLite

Zewnętrzne bazy Połączenie przez ODBC z każdą dostępną bazą SQL.

Wsparcie modułu archiwizacji dla baz: MSSQL Server i

PostreSQL

Skrypty

Moduły skryptowe Tworzone przez użytkownika, umożliwiające przetwarzanie

danych, tworzenie interfejsów graficznych, oraz sterowanie

pracą programu.

Język skryptów TCL\Tk

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Opis

Configuration Tree Drzewo konfiguracji systemu

Property Panel Tabela właściwości wybranego elementu w drzewie

konfiguracji

Debug Tree Drzewo przedstawiające parametry pracy systemu

i niektórych modułów

Debug Log Tabela z logami systemu

UWAGA: dostęp do drzewa konfiguracji mają tylko uprawnieni użytkownicy.

Konfigurowanie systemu wykonuje się na drzewku konfiguracyjnym Configuration Tree.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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,

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 18

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 opis

double liczby zmiennoprzecinkowe podwójnej precyzji 8bajtów

integer liczby całkowite 4bajtowe

string łańcuchy znaków nieograniczonej długości

sql_query zapytanie języka SQL

sql_result odpowiedź na zapytanie w SQL

raw ciąg bajtów, m.in. w transmisji szeregowej

Przeczytaj o kanałach.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

BackgroundColor kolor tła okna

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 26

CustomBackgroundColor Wartość "On" powoduje ustawienie wskazanego

koloru tła

Grid Wartość "On" powoduje włączenie siatki widocznej

ułatwiającej rozmieszczenie kontrolek w oknie

GridSize rozmiar okna siatki w pikselach

Name niepowtarzalna nazwa okna

Picture ś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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 28

2. Przeciągamy kontrolki na stworzone wcześniej okno Window0

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 35

Przeciągnąć moduł Source

na folder Input channels modułu Target

Przeciągnięcie Efekt przeciągnięcia

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 37

Przeciągnięcie Efekt przeciągnięcia

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 39

Przeciągnięcie Efekt przeciągnięcia

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 41

Efekt po operacji

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 43

Efekt po operacji

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 50

Aplikacja WEB ze stacją operatorską - serwer WWW i stacja operatorska ANT Studio

Aplikacja wieloserwerowa - serwer akwizycji, serwer WWW i stacje operatorskie ANT Studio

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 51

System posiada następujące grupy modułów:

Grupa Opis

Exchange Moduły wymiany danych z urządzeniami, bazami danych

oraz OPC

Insight Graphical

Controlls

Moduły graficzne służące do wizualizacji oraz zadawania

wielkości występujących w systemie

Insight Web

Server

Moduł serwera WWW

Sentry Moduły związane z telemetrią ANT GPRS

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ń.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 58

Scale Type Linear

Wartość wystawiana na kanal wyjściowy po skalowaniu obliczana jest ze wzoru:

Range

Min

Range

Max

UnitRange

Min

UnitRange

Max

Wartość odczytana

Wa

rto

ść p

rze

ska

low

an

a

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 0...25 kPa z przetwornika ciśnienia (z sygnałem wyjściowym 4...20mA)

podłączonego do urządzenia konwertującego sygnał prądowy 4...20 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 60

Linear 32 bit skaluje liczbę zapisaną w rejestrze 32 bitowym na zakres UnitRangeMin

UnitRangeMax

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 62

Klikając prawym klawiszem na kanale OUT mamy do dyspozycji dwie funkcje

„Create 0..15 bit channels” „Create 0..31 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 = R1 + 10000 * 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 65

Po dodaniu kanału zmieniamy jego nazwę na L

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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" ] \

+ 10000 * [ 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:

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 67

Dla lepszego zilustrowania przykładu, zmodyfikowano skrypt tak, aby do wartości L była

dodawana stała wartość 100 000, modyfikując funkcję antIOSetDeviceChannel użytą w

poprzednim skrypcie.

antIOSetDeviceChannel L [expr [ set "Current.L0" ] \

+ 10000 * [ set "Current.L1" ] \

+ 100000 ]

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"] - 273.15]

set RH [set "$block_name.CH1"]

# saturation vapor pressure over water

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 68

set EW [expr (0.66077+(7.5*$T/(237.3+$T))+(log10($RH)-2))]

# calculate dewpoint

set DP [expr ((0.66077-$EW)*237.3) / ($EW-8.16077) ]

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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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"

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 72

notifyIODeviceChannel { channel_name } - gdy zostanie podana wartość do kanału

wejściowego z folderu InputChannels.

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 73

IOAPI

Funkcje rozszerzonego API dla skryptów obsługi urządzeń

Funkcja Krótki opis

antIOSetDeviceChannel ustawia wartość kanału wirtualnego

antIOLog pisze do okienka DebugLog

antIOPreSetBlockChannel ustawia do zapisu wartość na kanale

antIOReadBlockChannel odczytuje wartość kanału z bloku

antIOReadBlock odczytuje wszystkie wartości kanałow z bloku

antIOWriteBlockChannel zapisauje kanał bloku

antIOWriteBlock zapisuje wszystkie kanały bloku, ustawione wcześniej

funkcją antIOPreSetBlockChannel

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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]

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 }

{

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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”

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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)

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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”.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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”

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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”.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 99

IEC 62056-21

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 62056-21 ->

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”

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ć

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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”

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 } {

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 { } {

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 } {

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 65535

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

###################################

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 114

SDAPI

Funkcje z rozszerzonego API modułów SDDevice.

Funkcje SDMaster

Funkcja Krótki opis

antIOSetBlockChannel ustawia wartość kanału

antIOSerialExchange wysyła ramkę komunikacyjną i oczekuje na

odpowiedź

Funkcje SDSlave

Funkcja Krótki opis

antIOSetBlockChannel ustawia wartości kanałów z danego bloku

antIOInstallWaitable instaluje akcje oczekiwania na wartości kanału

antIOSendFrame wysyła ramkę komunikacyjną

Opisane funkcje operują na ramce w postaci binarnych łańcuchów, które są obsługiwane przez

funkcje TCL - binary

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

# 0 1 2 3 4 5 6 7

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 ]

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

#

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

# 0 1 2 3 4 5 6 7

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

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 122

Ustawienia konfiguracyjne modułu

Parametr Wartość

Active moduł wyłączony

moduł włączony

ConnectionMode tryb połączenia (ciągły/modem)

DefaultTimeOut domyślny czas na odpowiedź

Name nazwa slave

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 123

Ustwienia konfiguracyjne urządzenia

Parametr Wartość

Active urządzenie wyłączone

urządzenie włączone

Address Adres urządzenia z zakresu 1..254 w podsieci Modbus

IOType typ urządzenia ModbusSlave

Identyfication ciąg bajtów identyfikujący dane urządzenie zwracany przez

funkcję 0x11h Report Slave ID, jeśli jest ona wspierana

przez urządzenie.

Mode wybór trybu Modbus ASCII lub Modbus RTU

Name 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 124

Ustawienia konfiguracyjne bloku danych

Parametr Wartość

Active blok nieaktywny

blok aktywny

DataType możliwe typy danych przypisane blokowi

opis pod tabelką

ExecutionMode 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

Name nazwa bloku danych

RangeFrom dolny zakres rejestów

RangeTo 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

coil wartość binarna 0,1

Discrete Inputs 0x02 Read Discrete

Inputs

discrete input wartość binarna 0,1

Holding Registers 0x03 Read Holding

Registers

0x06 Write Single

Register

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 << 16 + 0xFFFF

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 125

Input Registers 0x04 Read Input

Registers

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 << 16 + 0xFFFF

Queues 0x18 Read FIFO Queue raw ciąg bajtów

Konfigurowanie kanałów wykonuje się tak samo jak w przypadku kanałów modułu ModbusMaster.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 128

Parametr Wartość

Active moduł wyłączony

moduł włączony

ConnectionMode tryb połączenia (ciągły/modem)

DefaultTimeOut domyślny czas na odpowiedź

Name 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 129

Odpytane zostaną wszystkie urządzenia z zakresu 1..254.

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

Active urządzenie wyłączone

urządzenie włączone

Address Adres urządzenia z zakresu 1..254 w podsieci Modbus

IOType typ urządzenia ModbusMaster

Identification 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 131

Mode wybór trybu Modbus ASCII lub Modbus RTU

Name nazwa urządzenia w konfiguracji programu

Retries ilość ponowień zapytania w przypadku braku odpowiedzi

TimeBetweenFrames Czas pomiędzy otrzymaniem odpowiedzi na ramkę, a

wysłaniem następnej

TimeOut nieprzekraczalny czas odpowiedzi urządzenia

TimeTrendCache

TimeOut 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 0x02 ---

input registers / rejestry wejściowe 0x04 ---

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 4000...4032 oraz 7000...7120 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

Active blok obsługinany

blok nieobsługiwany

DataType możliwe typy danych przypisane danej funkcji

opis pod tabelką

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 133

ExecutionMode 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

ExtraTimeOut 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 Function funkcja modbus

Name nazwa bloku danych

RangeFrom dolny zakres rejestów

RangeTo 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

0x05 WriteSingleCoil

coil wartość binarna 0,1

0x02 Read Discrete Inputs discrete input wartość binarna 0,1

0x03 Read Holding Registers

0x04 Read Input Registers

0x06 Write Single Register

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 << 16 + 0xFFFF

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 134

Konfigurowanie kanałów

Należy dodać odpowiednią ilość kanałów.

Ustawienia konfiguracyjne kanału.

Parametr Wartość

Comment komentarz

Disable kanał nie aktywny

kanał aktywny

Name nazwa kanału, tworzona w części automatycznie

Register rejest w urządzeniu przypisany do kanału

Type typ danych systemu

ValueType reprezentacja liczby

Reprezentacja liczby ValueType związana jest z typem danych bloku - DataType

DataType ValueType Opis

coil

discrete input

bit wartość dyskretna 0,1 zapisana

na 1 bicie

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 135

16 bit register 16 bit integer wartość całkowita 0x0...0xFFFF

32 bit register

32 bit (1234) integer

(1234) float

32 bit (3412) integer

(3412) float

msb

1

2

3

lsb

4

msb

3

4

1

lsb

2

2x16 bit register 32 bit (1234) integer

(1234) float

32 bit (3412) integer

(3412) float

msb

1

2

3

lsb

4

register 1 register 2

msb

1

2

3

lsb

4

register 1 register 2

raw raw 1 2 ... 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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)

SNMP

UDP

IP

Program zarządzający Urządzenia zarządzane

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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 137

Active włącz wyłącz moduł

Name nazwa bloku

Retries liczba prób wysłania zapytania

Timeout czas oczekiwania na odpowiedź (w ms)

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ń.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 142

Ustawienie konfiguracyjne modułu GazModemMaster

Parametr Wartość

Active moduł wyłączony

moduł włączony

ConnectionMode tryb połączenia (ciągły/modem)

DefaultTimeOut 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 143

Parametr Wartość

Active urządzenie wyłączone

urządzenie włączone

Address Adres urządzenia z zakresu 0..0xffff w podsieci

GazModem

IOType typ urządzenia GazModem

Identification unikalna nazwa urządzenia

Name nazwa urządzenia

Retries ilość prób wykonania transmisji w przypadku błędów

TimeBetweenFrames Czas pomiędzy otrzymaniem odpowiedzi na ramkę, a

wysłaniem następnej

TimeOut maksymalny czas oczekiwania na odpowiedź

urządzenia

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 145

Ustawienia konfiguracyjne bloku danych

Parametr Wartość

Active blok obsługiwany

blok nieobsługiwany

ExecutionMode 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

Name nazwa bloku

Ustawienia konfiguracyjne kanału

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 146

Parametr Wartość

Comment Komentarz, w przypadku wybrania zdefiniowanej w

standardzie GazModem danej (DataNumber)

wpisywany jest komentarz opisujący wybraną daną

DataNumber numer danej odczytywanej w tym kanale, zgodnie ze

specyfikacji protokołu GazModem

Disable kanał aktywny

kanał wyłączony, nie aktywny

Name nazwa kanału

Type typ wartości

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 147

Parametr Wartość

DataNumber Numer danej archiwalnej zgodnie ze specyfikacją

protokołu GazModem, lub danymi producenta

urządzenia.

Disable trend włączony

trend wyłączony

Name nazwa trendu

TrendType typ trendu

Registered - dane rejestrowane

Daily - dane dobowe

Alarm - stany alarmowe

Type 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

Active moduł wyłączony

moduł włączony

Name Nazwa modułu w systemie

dllName Nazwa biblioteki komunikacyjnej z serwerem MultiLon

Ustawienia konfiguracyjne połączenia z serwerem MultiLon

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 149

Parametr Wartość

Active połączenie nie aktywne

połączenie aktywne

IOType MultiLon

Name Nazwa połączenia

Retries Ilość prób ponowienia komunikacji

ServerName Nazwa komputera na którym pracuje Mutilon Server

UserName Nazwa użytkownika serwera

UserPassword 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Active moduł wyłączony

moduł włączony

Name nazwa modułu

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

Comment Opis kanału

Disable kanał nie aktywny

kanał aktywny Name 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 155

Parametr Wartość

Active moduł wyłączony

moduł włączony

BrowseMode 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 2.0 - 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 157

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 2000.

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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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).

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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/2000

4. 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 )

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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:

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 165

Parametr Wartość

Active moduł wyłączony

moduł włączony

ConnectionMethod 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

ConnectionString opis powyżej.

DataSource Nazwa źródła danych, z którym konfigurowane jest

połączenie

Name Nazwa modułu

Password Hasło użytkownika

User 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 167

Parametr Wartość

Active moduł wyłączony

moduł włączony

ErrorMessages kolor lini, w których opisany jest błąd

LinesInBuffer ilość lini w terminalu

Mode 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

Name Nazwa modułu

Responses kolor lini z odpowiedziami serwera

SniffedQueries kolor poglądanego dialogu

TypedQueries kolor wpisanych ręcznie z terminala zapytań

Połączenia terminala:

kanał połączenie

query_snifer z kanałem po którym zadawane są zapytania

result z modułem ODBC - result

query jeśli terminal pracuje w trybie terminal, query należy połączyć

z kanałem wejściowym query z modułu ODBC

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Active moduł wyłączony

moduł włączony

DatabaseFile Ścieżka do pliku bazy danych

Name Nazwa modułu w systemie

Synchronization 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Active moduł wyłączony

moduł włączony

DefaultTrendType Typ logowanych danych

Dialect 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 173

Parametr wartość

FlushPeriod Okres fizycznego zapisu danych na dysk

MaxTimeSpan Czas przechowywania danych w bazie

Policy Wybór trybu logowania danych wejściowych

Resolution Rozdzielczość logowania danych

TrimmingEnabled Usuwanie najstarszych danych z bazy

TrimmingInterval 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 174

Schemat połączeń z bazą danych.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Active moduł wyłączony

moduł włączony

DefaultTrendType Typ logowanych danych

Dialect 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 179

Dostęp do konfiguracji logowania utworzonych trendów do bazy zapewnia tabela parametrów

dostępna po wybraniu elementu Logging.

Parametr wartość

FlushPeriod Okres fizycznego zapisu danych na dysk

MaxTimeSpan Czas przechowywania danych w bazie

Policy Wybór trybu logowania danych wejściowych

Resolution Rozdzielczość logowania danych

TrimmingEnabled Usuwanie najstarszych danych z bazy

TrimmingInterval 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 180

Schemat połączeń z bazą danych.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Active moduł wyłączony

moduł włączony

Name Nazwa modułu w systemie

OutputRefreshInterval Okres co który wysyłane są dane bieżące do kanałów

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

FlushPeriod Okres fizycznego zapisu danych na dysk.

Policy Logging

ReplicationRequestInterval bez znaczenia

ReplicationRequestWidth bez znaczenia

Resolution Rozdzielczość zapisu danych

Ustawienia replikacji.

Parametr Wartość

FlushPeriod Okres fizycznego zapisu danych na dysk.

Policy Replication

ReplicationRequestInterval Okres pomiędzy kolejnym odpytywaniem

ReplicationRequestWidth Ilość danych ( okres ), pobierany podczas kolejnego

cyklu replikacji.

Resolution Rozdzielczość zapisu danych

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 185

Modemy, SMS, Email

Modem

Połączenia wdzwaniane oraz wysyłanie i odbieranie wiadomości tekstowych realizowane są przez

moduł Modem

Ustawienia konfiguracyjne

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 186

Parametr Wartość

Pin 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.

HardwareReset Zezwolenie na sprzętowy reset zasilania modemu. Opcja

dostępna przy współpracy z modemami dostarczonymi

przez ANT.

1 - włączone

0 - wyłączone ReadDevices 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 ConnectionAttempts Maksymalna ilość prób wykonania połączenia z danym

numerem, w przypadku, gdy modem docelowy nie odbiera.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 187

Disconnect 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 MaxConnectionTime 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. ConnectionRetryInterval Okres pomiędzy nieudaną próbą zestawienia połączenia, a

próbą ponowną.

ConnectionAttempts Maksymalna ilość prób wykonania połączenia z danym

numerem, w przypadku, gdy modem docelowy nie odbiera.

Hook Okres, co jaki sprawdzane jest, czy przyszły nowe

wiadomości tekstowe, np. 10 s, 30 s, 1 m, etc.

Mode Tryb, w jakim odbierane i wysyłane będą wiadomości

tekstowe. Dostępne opcje: Pdu, Txt

Remove Usuwanie wiadomości po ich odczytaniu i przekazaniu na

kanał wyjściowy.

1 - włączone

0 - wyłączone Read Periodyczne, z okresem zależnym od opcji Hook,

sprawdzanie, czy przyszły nowe wiadomości tekstowe.

1 - włączone

0 - wyłączone

folder Numbers 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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. 606123456_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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 195

Parametr Wartość

HardwareReset Zezwolenie na sprzętowy reset zasilania modemu. Opcja

dostępna przy współpracy z modemami dostarczonymi

przez ANT.

1 - włączone

0 - wyłączone

MaxConnectionTime 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. ConnectionRetryInterval Okres pomiędzy nieudaną próbą zestawienia połączenia, a

próbą ponowną.

ConnectionAttempts Maksymalna ilość prób wykonania połączenia z danym

numerem, w przypadku, gdy modem docelowy nie odbiera.

folder Priorities Wyższa wartość w jednym z ustawień Hook lub External

daje przyporządkowanemu mu wywołaniu wyższy

priorytet.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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".

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 22.00

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 198

EmailSender

Moduł EmailSender służy do wysyłania komunikatów alarmowych od systemu za pomocą

wiadomości e-mail. 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 Wartość

Password Hasło serwera poczty wychodzącej

User Nazwa konta na serwerze poczty wychodzącej

SmtpPort Port, po którym moduł będzie łączył się z serwerem

pocztowym (standardowo 25)

SmtpServer Adres serwera pocztowego

To Adresat wiadomości zapisany w formacie:

Nazwa Adresata <nazwa@domena>

From Nadawca wiadomości zapisany w formacie:

Nazwa Nadawcy <nazwa@domena>

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 EmailSender 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 e-mail (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 Wartość

HighStateDelay Nieprzerwany czas trwania stanu wysokiego na wejściu, po

którym wysłana zostanie wiadomość

HighStateMessage Treść wiadomości wysyłanej po przejściu wejścia w stan

wysoki

LowStateDelay Nieprzerwany czas trwania stanu niskiego na wejściu, po

którym wysłana zostanie wiadomość

LowStateMessage Treść wiadomości wysyłanej po przejściu wejścia w stan

niski

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

RecipientNumber 9-cyfrowy numer telefonu odbiorcy

ResetWatchdog 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

HighStateDelay Nieprzerwany czas trwania stanu wysokiego na wejściu, po

którym wysłana zostanie wiadomość

HighStateMessage Treść wiadomości wysyłanej po przejściu wejścia w stan

wysoki

LowStateDelay Nieprzerwany czas trwania stanu niskiego na wejściu, po

którym wysłana zostanie wiadomość

LowStateMessage Treść wiadomości wysyłanej po przejściu wejścia w stan

niski

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 203

Ustawienia konfiguracyjne

Parametr Wartość

Active moduł wyłączony

moduł włączony

AutoReset nieaktywny

aktywny

AutoResetDelay czas pomiędzy kolejnymi resetami portu

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 204

BaudRate

prędkość transmisji w b/s

Byte size

ilość bitów danych

DtrControl

kontrola przepływu

InputBufferSize wielkość bufora danych wejściowych

MaxTimeBetweenChars limit czasu pomiędzy kolejnymi znakami w transmisji

Name nazwa modułu w systemie

OutputBufferSize wielkość bufora danych wyjściowych

Parity sprawdzanie parzystości nie aktywne

aktywne

ParityType

rodzaj kontroli parzystości

PortName nazwa portu com np. com1, com2....com256

RtsControl kontrola RTS nie aktywna

aktywna

StopBits

ilość bitów stopu

TimeOutConstant stały cześć odstępu czasu pomiędzy kolejnymi ramkami

danych

TimeOutMultiplier mnożnik długości czasu oczekiwana na ramkę i długości

bufora wejściowego

Type typ modułu

Czas oczekiwania na ramkę = TimeOutConstant

+ TimeOutMultiplier x InputBufferSize

Maksymalna prędkość odpowiedzi portu:

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Active moduł wyłączony

moduł włączony

Name nazwa modułu w systemie

PortName nazwa tworzonego wirtualnego portu szeregowego np.

com1, com2....com256

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

ExpirationPeriod 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.

ListeningPort Port, na którym moduł czeka na połączenia od zdalnych

peerów.

Type 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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:

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 212

Parametr Wartość

Active moduł wyłączony

moduł włączony

CharactersPerLine ilość znaków umieszczanych w linii

Font wybór czcionki

LinesInBuffer ilość lini w buforze terminala

Name nazwa modułu

Responses kolor odpowiedzi - danych połączonych do kanału input

SniffedMessages kolor podglądanyc danych - połączonych do kanału

input_sniffer

TypedMessages 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

ala123

41 4c 41 31 32 33

Ctrl-1 Ctrl-fe <01> <fe> 1 fe

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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".

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

Active moduł wyłączony

moduł włączony

Embedded moduł nie tworzy okna interfejsu

graficznego

moduł tworzy okno

Name nazwa modułu

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ń.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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: http://www.tcl.tk

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-1.7.0

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 { } {

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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"

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Krótki opis

antClearChannelValues czyści bufor danych kanału wejściowego

antGetChannelValuesCount zwraca rozmiar bufora danych

antSetChannelValues ustawia wartości kanału wyjściowego

antGetChannelValues pobiera wartości kanału wejściowego

antGetOutputChannels zwraca ilość kanałów wyjściowych

antGetInputChannels zwraca ilość kanałów wejściowych

antGetChannelType zwraca typ kanału

antSetChannelControl ustawia zachowanie kanału wejściowego

Przykład odczyt

Przykład wysyłanie

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Typ kanału Typ zwracanych danych (TCL)

Byte Lista liczb stałoprzecinkowych

Integer

Float Lista liczb zmiennopozycyjnych

Double

String Lista łańcuchów napisowych

Raw Jedna wartość typu byte_array

Timestamp Lista wartości czasowych zapisanych w postaci liczb

zmiennopozycyjnych (patrz opis funkcji

antTimeToString)

sql_query 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

sql_result 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”

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 } {

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 3.1415

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

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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, 2.0003 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. „2008-10-03 12:09:41.30”. 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 2005 6 30 ]

antLog "Wersja 2.0 systemu ANT Insight zostala ukonczona w

okolicach [ antTimeToString $t ] czasu lokalnego"

}

proc shutdown { } {

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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. „2008-10-03

12: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. „2008-10-03 12:09:41.30”.

Wiecej informacji na temat obsługi czasu w modułach skryptowych można znaleźć w rozdziale:Czas

w skryptach

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Krótki opis

antCallFunction wywołuje funkcję ze wskazanego modułu

antCallFunctionByChannel wywołuje funkcję z modułu połączonego

kanałem

antCallFunctionAsync wywołuje asynchronicznie funkcję ze

wskazanego modułu

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 238

antCallFunctionAsyncByChannel wywołuje asynchronicznie funkcję z

modułu połączonego kanałem

antCallFunctionWithUpdates wywołuje funkcję ze wskazanego modułu.

Podczas wykonywania funkcji odświeża

ekran

antFunction deklaracja wołanej funkcji

antWaitForFunctionReturn czeka na powrót z asynchronicznie

wywołanej funkcji

antFunctionAttachCommand ustanawia funkcję do obsługi

powracającego wywolania

antGetFunctionResults pobiera rezultat asynchronicznie wywolanej

funkcji

Przykład skryptu wywoływanego

Przykład skryptu wywyłującego

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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” Nie ma takiego modułu.

„bad_function” Podany moduł istnieje, ale nie ma funkcji o podanej

nazwie.

„bad_arguments” Zła ilość lub typ argumentów.

Uwaga: Wywołanie antCallFunction i antCallFunctionByChannel nie jest dozwolone w

procedurach startup i shutdown skryptu.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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\""

}

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Rodzaj węzła

„ModuleCfg” Konfiguracja modułu

„ChannelCfg” Konfiguracja kanału

„InputChannelCfg” Konfiguracja kanału wejściowego

„OutputChannelCfg” Konfiguracja kanału wyjściowego

„ScriptedModuleCfg” 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 Krótki opis

antCfgFindAllOf zwraca listę wszystkich elementów drzewa

wskazanego typu

antCfgGetItemValue zwraca wartość itemu

antCfgGetOwnPath zwraca ścieżkę do fragmentu drzewa

konfiguracyjnego opisującego dany moduł

Przykład

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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" 19200

antCfgSetItemValue $m "Name" PortSerial

}

Zakładka "Properties" przed i po zmianach

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Krótki opis

antGetSetting pobiera wartość ustawienia konfiguracyjnego

antGetSubfolders zwraca listę wszystkich ustawień

konfiguracyjnych położonych w danej ścieżce

antGetSubsettings zwraca foldery znajdujące się w danej ścieżce

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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"]

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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"

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Krótki opis

antGetCallbackAddress

antUninstallCallback

antCallDll wyłanie funkcji z biblioteki DLL

antUnloadDll rozłączenie biblioteki DLL

antLoadDll podłączenie biblioteki DLL

antCFree usuwanie bloku pamięci

antCStrdup alokacja bloku pamięci dla łańcucha

antCMalloc alokacja bloku pamięci

antCStore ustawianie wartości w bloku pamięci

antCLoad odczyt z bloku pamięci

Przykład zastosowania wywołania zwrotnego

Przykład wykorzystania funkcji z bibliotek DLL

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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).

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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).

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

zerem2, 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 ] int4 1234

# 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

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Ostrzeżenie: coś jest nie tak, ale moduł pracuje dalej

Info Informacja dla użytkownika

Debug Rozszerzona informacja wykorzystywana zwykle podczas

usuwania błędów (debugging) z skryptów

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 !!!"

}

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Krótki opis

ReadIOBlock odczyt kanałów ze wskazanego bloku kanałów

ReadDevice odczyt kanałow zdefiniowanych w urządzeniu

ReadChannel odczyt wskazanego kanału

GetChannelValue odczyt ostatniej wartości wskazanego kanału

GetDeviceChannelsValues odczyt listy ostatnich wartości kanałów z

urządzenia

Scan rozpoczęcie wyszukiwania urządzeń

WriteChannel zapis do wskazanego kanału

Break przerwanie bieżącej akcji

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ść.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

}

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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;

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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)\""

}

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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)\""

}

}

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Active moduł wyłączony

moduł włączony

ClientOrServer wybór, czy moduł ma być klientem czy serwerem

Name nazwa modułu

Separator sposób rozdzielenia części dziesiętnych liczby

"," lub "."

ServerName nazwa serwera lub klienta DDE

TimeOut limit czasu odpowiedzi

Przekroczenie tego czasu powoduje sygnalizację braku

połączenia oraz podejmowanie prób wznowienia

połączenia.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 276

Ustawienie konfiguracyjne kanału

Parametr Wartość

Comment opis kanału

Disable kanał aktywny

kanał aktywny

Item nazwa itemu DDE

Name nazwa kanału w systemie

Topic nazwa tematu (topic) w którym udotępniany jest dany

item

Type typ kanału w systemie

Zobacz przykładową konfiguracje w Example Configurations DDE

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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)

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 2.

4. Wybór póżniejszego przedziału w zależności od wyboru w polu 2.

5. 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 289

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 290

Teraz dodaj moduł AlarmViewer, aby móc obserwować alarmy oraz je akceptować.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 292

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 295

W efekcie otrzymasz konfigurację w postaci:

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 296

Wyświetlanie danych

ArchivePlot

Ustawienia konfiguracyjne kontrolki

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 297

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

Caption Tytuł kontrolki, wyświetlany na górze

CursorColor Kolor kursora

CursorShape Rodzaj kursora

Font Czcionka

InitialControlMode Tryb pracy po uruchomieniu kontroki

InitialResolution Początkowa rozdzielczość wykresu

InitialTimeAxisWidth Początkowy zakres osi czasu

Name Nazwa kontrolki w systemie

PlotAreaFont Wybór czcionki

PlotBackgroundColor Kolor tła kontrolki

ShowLengend włączone okno legendy po

uruchomieniu kontrolki

UpdateWhenInvisible włączone odświeżanie wartości

kontrolki nawet w przypadku gdy nie jest ona w danej

chwili widoczna

VerticalTimeAxis 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 299

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 300

Pionowa oś czasu - VerticalTimeAxis

Kursory

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 301

Wybierając tryb Cursor, zarówno w trybie RealTime jak i Viewer, możemy wyznaczyć wartość

wskazanego punktu na trendzie.

Rozdzielczość prezentowanego trendu

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

Caption Nazwa plotu wyświetlana na legendzie wykresu

ChannelName Kanał danych do których konfigurowany jest plot

Color Kolor plotu

LineStyle Styl prezentowania linii

LineWidth Grubość linii

PointColor Kolor zaznaczonych na wykresie punktów

PointStyle Styl zaznaczonych na wykresie punktów

YAxisName Oś wartości zdefiniowana dla danego plota

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 307

Bar

Ustawienia konfiguracyjne kontrolki

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor kolor tła

Caption opis kontrolki

CustomBackgroundColor ustawienie tła nieaktywne

ustawienie tła aktywne

CustomForegroundColor ustawienie czcionki nieaktywne

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 308

ustawienie czcionki aktywne

ForegroundColor kolor czcionki

Name nazwa kontrolki / unikalna w systemie

Style

thermometer

tank

hprogress

vprogress

hgraduated

vgraduated

ValueExpirationColor kolor alarmu od przekroczenia czasu odświeżania

wartości na kontrolce

ValueExpirationPeriod maksymalny okres, co jaki musi zmieniać się wartość

wyświetlana na kontrolce

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 311

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 312

Display

Ustawienia konfiguracyjne kontrolki

Parametr Wartość

Caption Etykieta wyświetlana przed wartością

FontScale Skala wielkości czcionki

Format 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

RefreshHook Częstotliwość odświeżania wyświetlanych danych

Title Tytuł kontrolki wyświetlany powyżej wartości.

Unit Jednostka wyświetlana za wartością

ValueExpirationPeriod Czas po którym wartość zostanie uznana za

nieakualną. Jeśli 0 to nieskończony.

ValueExpirationColor Kolor tła dla nieaktualnej wartości.

Style\Border Szerokość ramki kontrolki

Style\Background Kolor tła

Style\Foreground Kolor czcionki

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 313

Diode

Ustawienia konfiguracyjne kontrolki

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor kolor tła

Caption opis kontrolki

CustomBackgroundColor ustawienie tła nieaktywne

ustawienie tła aktywne

DefaultColor kolor początkowy, przed ustawieniem się na

zdefiniowany zakres

Horn głośnik alarmu nieaktywny

głośnik alarmu aktywny

Name nazwa kontrolki / unikalna w systemie

Style

round

square

ValueExpirationColor kolor alarmu od przekroczenia czasu odświeżania

wartości na kontrolce

ValueExpirationPeriod maksymalny okres, co jaki musi zmieniać się wartość

wyświetlana na kontrolce

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 314

Ustawienia zakresu Range

Parametr Wartość

ChannelName nazwa kanału dla którego defioniwany jest zakres

Color kolor diody gdy spełniony jest warunek

From wartość dolnej granicy zakresu, może być wartość

tekstowa

FromRange znak zawierania

Name nazwa zakresu

To wartość górnej granicy

RangeTo znak zawierania

Ustawienie alarmu dźwiękowego Horn

Parametr Wartość

Delay odstęp czasu pomiędzy kolejnym sygnałem w ms

Duration czas trwania sygnału w ms

Frequency częstotliwość dźwięku w Hz

Mute głośnik aktywny

głośnik nieaktywny

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor kolor tła

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 316

CustomBackgroundColor ustawienie tła nieaktywne

ustawienie tła aktywne

CustomForegroundColor

ustawienie czcionki nieaktywne

ustawienie czcionki aktywne

ForegroundColor kolor czcionki

Name nazwa kontrolki / unikalna w systemie

Style

round

top

bottom

left

right

ValueExpirationColor kolor alarmu od przekroczenia czasu odświeżania

wartości na kontrolce

ValueExpirationPeriod maksymalny okres, co jaki musi zmieniać się wartość

wyświetlana na kontrolce

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 317

Ustawienia skali Axis

Parametr Wartość

AutoScale autoskalowanie wyłączone

autoskalowanie aktywne

Caption opis osi

Color kolor osi skali

MajorGrid głowna podziałka aktywna

głowna podziałka nieaktywna

MajorGridColor kolor głownej podziałki

Maximum wartość maksymalna skali

Minimum wartość minimana skali

MinorGrid drobna podziałka aktywna

drobna podziałka nieaktywna

MinorGridColor kolor drobnej podziałki

Name nazwa skali

Ustawienia konfiguracyjne wskaźnika Pointer

Parametr Wartość

ChannelName nazwa

Color kolor

Name nazwa wskaźnika

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 320

W tabeli 3 kolumnowej będą widoczne kanały z folderu InputChannels

Ustawienia konfiguracyjne tabeli

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor numer kolumny licząc od lewej od 0

CustomBackgroundColor kolor tła nieaktywny

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 321

kolor tła aktywny

FixedColumns Ilość stałych kolumn

FixedRows Ilość stałych wierszy

LineColor Kolor lini

Name 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 322

Ustawienia konfiguracyjne pola kolumny

Parametr Wartość

BackgroundColor Kolor tła pola

Content Zawartość pola

CustomBackgroundColor kolor tła nie aktywny

kolor tła aktywny

Font Wybór czcionki

Name Nazwa pola w konfiguracji

OutputChannel 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ściowy-

wyjś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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 325

Widoczne mogą być następujące kolumny:

Kolumna Opis

Name* nazwa kanału

Value wartość pomiaru

Unit* jednostka

Edit pole edycyjne (aktywne jeśli obecny kanał wyjściowy)

Actualize czas ostatniego pomiaru

Min* wartość minimalna wartości

Bar wykres słupkowy wartość pomiaru (w zakresie od Min do

Max)

Max* wartość maksymalna wartości

* stała zdefiniowana w konfiguracji

Tabela z widocznymi podstawowymi kolumnami

Tabela z widocznymi wszystkimi kolumnami

Konfiguracja

Podstawowa

Podstawowa konfiguracja skryptu

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 326

Parametr Opis

Style Styl tabeli

Style\Border Szerokość krawędzi tabeli (Default = 2)

Style\Foreground Kolor czcionki w tabeli (Default - dopasowany do

tła okna)

Style\Background Kolor tła tabeli (Default - dopasowany do tła okna)

RefreshRate Interwał odświeżania tabeli

Title Tytuł tabeli

FontScale 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 Opis

Nazwa opcjonalna kanału Pojawi się w kolumnie Name

Nazwa elementu Nazwa elementu, który zostanie użyty do

prezentacji kanału. Jeśli pusty zostanie użyty

element Default.

Pozycja w tabeli 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 Opis

Unit Jednostka

Min Wartość minimalna

Max Wartość maksymalna

Precision Ilość miejsc po przecinku

Scale Skala wartości wejściowej

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 327

Color Kolor wiersza. Może być podany w dwóch formach:

- liczba szesnastkowa, np.: #cc1256

- nazwa koloru, np.: red

Editor Typ edytora wartość:

- Text - pole tekstowe,

- Spiner - wartości zmieniane z krokiem zdefiniowanym

w parametrze Step

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)

W katalogu konfiguracji Table\Columns\ dla każdej

kolumny zdefiniowane są następujące ustawienia:

Parametr Opis

Visible On

Off

Kolumna widoczna

Kolumna niewidoczna

Width Liczba Szerokość kolumny w pikselach

Name Tekst Nazwa kolumny

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 328

Numeric

Ustawienia konfiguracyjne kontrolki

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor wybór koloru tła

Caption opis kontrolki

Font wybór czcionki

Justify wyrównanie

Name nazwa kontrolki w systemie

Precision pozycja kropki

Scale skala

Style styl kontrolki: 2D, 3D

Unit jednostka

ValueExpirationColor kolor alarmu od przekroczenia czasu odświeżania

wartości na kontrolce

ValueExpirationPeriod maksymalny okres, co jaki musi zmieniać się wartość

wyświetlana na kontrolce

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 329

XYGraph

Ustawienia konfiguracyjne kontrolki

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 330

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

Caption tytuł kontrolki, wyświetlany na górze

MaxPlotLength maksymalna ilość punktów jednego wykresu

wyświetlana na ekranie

Mode tryb pracy

Continous - dodaje do wykresu kolejne punkty

Buffer - wyświetla na nowo każdy przysłany bufor

danych

Name nazwa kontrolki / unikalna w systemie

PlotBackgroundColor kolor tła wykresu

XChannelName kanał reprezentujący oś x

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 331

Zadawanie wartości

Button

Ustawienia konfiguracyjne kontrolki

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor kolor tła

CustomBackgroundColor ustawienie tła nieaktywne

ustawienie tła aktywne

InitialState stan początkowy po włączeniu kontrolki On lub Off

Name nazwa kontrolki / unikalna w systemie

OffCaption opis stanu Off na kontrolce

OffColor kolor stanu Off na kontrolce

OffString

wartość wysyłana na kanał output w stanie Off

(wartość numeryczna lub string w zależności od typu

kanału)

OffTextColor kolor tekstu na kontrolce w stanie Off

OnCaption opis stanu On na kontrolce

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 332

OnColor kolor stanu On na kontrolce

OnString wartość wysyłana na kanał output w stanie On

OnTextColor kolor tekstu na kontrolce w stanie On

RefreshPeriodically okresowe odświeżanie wyjścia

wyłączone

okresowe odświeżanie wyjścia

włączone

SendOff

blokada wysłania wartości Off

wysyłanie wartości Off aktywne

SendOn

blokada wysłania wartości Off

wysyłanie wartości Off aktywne

Style

commandbutton

horizontal slide

vertical slide

horizontal toggle

vertical toggle

push button

horizontal rocker

vertical rocker

horizontal slide switch

vertical slide switch

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 334

ComboBox

Ustawienia konfiguracyjne

Parametr Wartość

BackgroundColor kolor tła

ForegroundColor kolor kontroki

Relief wygląd kontrolki:

flat

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 336

Knob

Ustawienia konfiguracyjne kontrolki

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor kolor tła

Caption opis kontrolki

CustomBackgroundColor

ustawienie tła nieaktywne

ustawienie tła aktywne

CustomForegroundColor

ustawienie czcionki nieaktywne

ustawienie czcionki aktywne

ForegroundColor kolor czcionki

HoldingTime okres nieczulości na kanał wejściowy po wysterowaniu

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 337

wyjścia

InitialValue wartość początkowa po uruchomieniu kontrolki

Name nazwa kontrolki / unikalna w systemie

Precision ilość miejsc po przecinku

RefreshOnChange

ustawiania wartości przy zmianie

RefreshPeriodically

okresowe ustawienie wartości

SetInitialValue zezwolenie na ustawianie wartości początkowej

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 338

NumericEdit

Ustawienia konfiguracyjne kontrolki

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor Wybór koloru tła

Font Wybór czcionki

HoldingTime Czas podtrzymania wysterowanej wartości, w

sekundach

InitialValue Wartość początkowa

Name Nazwa kontrolki w systemie

Precision Pozycja kropki dziesiętnej

RefreshOnChange Zmiana wartości kanału wysyłana

po każdej zmianie ustawienia kontrolki

RefreshPeriodically Wysyłanie wartości kontrolki

okresowo. Okres wysyłania danych ustawiony jest w

ustawieniach RefreshPeriod

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 339

SetInitialValue kontrolka nie ustawia przy

włączeniu wartości InitialValue

kontrolka ustawia przy włączeniu

wartość InitialValue

Style Styl kontrolki: 2D, 3D

Unit Jednostka

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 340

Slider

Ustawienia konfiguracyjne kontrolki

Parametr Wartość

Active kontrolka wyłączona

kontrolka włączona

BackgroundColor kolor tła

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 341

Caption opis kontrolki

CustomBackgroundColor

ustawienie tła nieaktywne

ustawienie tła aktywne

CustomForegroundColor

ustawienie czcionki nieaktywne

ustawienie czcionki aktywne

ForegroundColor kolor czcionki

HoldingTime okres nieczulości na kanał wejściowy po wysterowaniu

wyjścia

InitialValue wartość początkowa po uruchomieniu kontrolki

Name nazwa kontrolki / unikalna w systemie

Precision ilość miejsc po przecinku

RefreshOnChange

ustawiania wartości przy zmianie

RefreshPeriodically

okresowe ustawienie wartości

SetInitialValue zezwolenie na ustawianie wartości początkowej

Style

vslide

hslide

hfill

vfill

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 355

Przed generacją raportu mamy możliwość podejrzenia dokonanych wyborów.

Klikając na przycisk "Generuj" rozpoczynamy generowanie raportu

5.Generowanie raportu.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ść.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 358

Konfiguracja modułu

Parametr Wartość

Hook określa, co ile będzie odświeżana zawartość tabeli.

Musi być jednym ze znajdujących sie w folderze Hooks

konfiguracji.

Language Język menu: EN lub PL

ColumnNamesColor kolor komórek wiersza tytułowego tabeli

ColumnNamesFontScale skala czcionki wiersza tytułowego tabeli

ColumnsColor 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

ColumnsWidth 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

GridFontColor kolor czcionki zawartości tabeli

GridFontScale skala czcionki zawartości tabeli

Query zapytanie do bazy danych

TableBackground kolor tła tabeli

Title tytuł tabeli

TitleFontScale skala czcionki tytułu tabeli

wwwPageRows zmienna określająca, ile wierszy z tabeli będzie

widocznych na wizualizacji www bez przewiajania

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 361

Parametr Wartość

InitialRows 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

Language Język menu: EN lub PL

ColumnNames nazwy kolumn z danymi zapisane w formacie

data1;data2;data3

ColumnNamesColor kolor komórek wiersza tytułowego tabeli

ColumnNamesFontScale skala czcionki wiersza tytułowego tabeli

ColumnsColor kolory kolumn z danymi zapisane w formacie

kolor1;kolor2;kolor3

ColumnsWidth 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

GridFontScale skala czcionki zawartości tabeli

Query zapytanie do bazy danych

TableBackground kolor tła tabeli

Title tytuł tabeli

TitleFontScale skala czcionki tytułu tabeli

wwwPageRows 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 363

Konfiguracja modułu

Parametr Wartość

FirstRowAsTitle określa, czy traktować pierwszy wiersz w pliku jako

tytułowy (1-tak, 0-nie)

Language Język menu: EN lub PL

LastRowAsSumary 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

ColumnNamesColor kolor komórek wiersza tytułowego tabeli

ColumnNamesFontScale skala czcionki wiersza tytułowego tabeli

ColumnsColor kolory kolumn z danymi zapisane w formacie

kolor1;kolor2;kolor3

ColumnsWidth 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

GridFontScale skala czcionki zawartości tabeli

Query zapytanie do bazy danych

TableBackground kolor tła tabeli

Title tytuł tabeli

TitleFontScale skala czcionki tytułu tabeli

wwwPageRows zmienna określająca, ile wierszy z tabeli będzie

widocznych na wizualizacji www bez przewiajania

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

Language język modułu: EN lub PL

PeriodBarBackground kolor przycisków wyboru trybu pracy i okresu

PeriodBarFontColor kolor czcionki wyboru trybu pracy i okresu

PeriodBarFontsize skala czcionki przycisków wyboru trybu pracy i okresu

TimeBackground kolor komórek zawierających daty

TimeFontsize skala czcionki komórek zawierających daty

Title tytuł tabeli

TitleBackground kolor tła tytułu

TitleFontColor kolor czcionki tytułu

Zobacz rownież pomoc dla modułów SQLQuery, SQLFileImport, SQLForm, SQLGrid, SQLCombo

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 368

W tym przypadku, po wykonaniu zapytania, na kanale wyjściowym pojawi się lista danych

reprezentująca kolumnę GRB.

Konfiguracja modułu

Parametr Wartość

Hook określa, co ile odświeżane będą wyjścia. Musi być

jednym ze znajdujących sie w folderze Hooks

konfiguracji.

Query 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:

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 371

Konfiguracja modułu

Parametr Wartość

ComboBackground kolor tła modułu

ComboFontColor kolor czcionki rozwijanej listy

Query zapytanie do bazy danych

SelectionFormat format wiersza rozwijanej listy

Title nazwa modułu

TitleBackground skala czcionki nazwy modułu

TitleFontColor kolor tła nazwy modułu

TitleFontScale kolor czcionki nazwy modułu

TitlePosition 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ść

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 wyświetlanie paska przycisków

(1- włączone, 0- wyłączone)

ShowLogo wyświetlanie loga (1- włączone, 0- wyłączone)

ShowStatus wyświetlanie paska statusu

(1- włączone, 0- wyłączone)

ServiceName nazwa serwisu widoczna na banerze

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 376

TELEMETRIA

TelemetryClient

Moduł TelemetryClient umożliwia wymianę danych z modemami GPRS obsługiwanymi przez serwer

telemetrii ANT GPRS.

Ustawienia konfiguracyjne modułu

Parametr Wartość

Active moduł wyłączony

moduł włączony

Name nazwa modułu w systemie

RemoteAddress adres serwera telemetrii ANT GPRS

RemotePort 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 Wartość

ActivactionCode Kod aktywacyjny z nalepki na modemie

Disable moduł aktywny

moduł nie aktywny

Name 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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:

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 384

Widok zakładki „Settings” przykładowo skonfigurowanego modemu:

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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”.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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ę.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Parametr Wartość

Port numer portu, na którym moduł oczekuje na połączenia

od modemów

Timeout okres (w sekundach) braku aktywności modemu, po

którym połączenie jest resetowane

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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".

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

CanDeiconizeFromTray użytkownik może otworzyć okno

programu z ikonki SysTray

CanExit użytkownik może wyłączyć program

CanIconizeToTray użytkownik może zminimalizować

program do ikonki SysTray

CanSwitchFullScreenOff użytkownik wyłączyć program z trybu

pełnoekranowego

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 396

CanSwitchFullScreenOn użytkownik może przełączyć program

do trybu pełnoekranowego

ConfigurationAccess użytkownik ma pełny dostęp do

konfiguracji

DebugLogAccess użytkownik ma dostęp do logów

systemu

DebugTreeAccess użytkownik ma dostęp do drzewka

DebugTree

Name Nazwa użytkownika

Password Hasło użytkownika

PasswordRequired logowanie użytkownika przez podanie

hasła

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

AnonymousExit zgoda na wyłączenie programu

przez niezalogowanego użytkownika

DefaultUser Użytkownik logowany po uruchomienia programu

DefaultWindow Ekran synoptyczny ustawiany po uruchomieniu

programu

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 399

InitialWidnowPosition Wielkość okna po uruchomieniu programu.

LogFilesDirectory Scieżka do folderu, względem katalogu instalacyjnego,

w którym będą zapisywane logi

LoggingEnable Uruchomienie logowania

MuteAllAlarms Wyciszenie alarmów dźwiękowych

TabFont Czcionka w tytułach okien synoptycznych

ToolWindowsTitleFont 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 400

Wielkość i styl okna programu

Wielkość oraz styl okna programu może zostać skonfigurowana w następujący sposób:

Tryb pracy Właściwości

Normal:

Maximized

Last user position

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

Full screen Tryb pracy pełnoekranowej, dedykowany dla operatora

o najniższych uprawnieniach

Minimized to tray 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 Wartość

CanDeiconizeFromTray

CanExit

CanIconizeToTray

CanSwitchFullScreenOff

CanSwitchFullScreenOn

ConfigurationAccess

DebugLogAccess DebugTreeAccess

Name Nazwa użytkownika

Password Hasło użytkownika

PasswordRequired

Ustawienia takie dają operatorowi jedynie prawo do przeglądania i ustawiania wartości na ekranach

synoptycznych.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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).

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.”).

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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 www.modbus.org

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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 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.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 417

Zasady licencjonowania

Tryb demonstracyjny

System zabezpieczony jest kluczem USB.

Uruchomienie systemu bez klucza ogranicza czas jego pracy do 2h.

Po tym czasie program wyłącza się. Po ponownym uruchomieniu programu system działa przez

kolejne 2h.

Praca w trybie demonstracyjnym umożliwia wszystkie funkcje programu.

Licencje na moduły

Klient kupuje licencje na poszczególne pakiety.

Licencja na pakiet umożliwia wielokrotne wykorzystanie każdego z modułów pakietu na jednym

komputerze.

Liczba kanałów licencji to ogólna liczba niepowtarzalnych mapowań kanałów ze wszystkich

uruchomionych modułów programu. Każdy z pakietów sprzedawany jest z określoną liczbą

gratisowych kanałów. Ilość tych kanałów dodaje się do ogólnej liczby kanałów w systemie.

Użycie modułu, na który nie zakupiono licencji, lub przekroczenie ilości kanałów powoduje przejście

programu do trybu demonstracyjnego

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 418

Zaawansowane uruchamianie

Podstawową metodą uruchamia systemu jest uruchamianie pliku antstudio.exe.

Wczytywana wtedy jest bazowa konfiguracja default.cfg, znajdująca się w katalogu

uruchomieniowym programu.

Jeśli chcemy aby uruchamiał się program z przygotowaną aplikacją można skonfigurować to w

następujący sposób:

1. Podmienić plik default.cfg na plik ze skonfigurowaną aplikacją

- opcja nie zalecana

2. Skonfigurować skrót do pliku antstudio.exe i uzupełnić pole "Element docelowy" ścieżką do pliku

konfiguracyjnego umieszczoną wewnątrz cudzysłowu, np.

"C:\Program Files\ANT Studio\ANT Studio.exe" "User Projects\config.cfg"

Uruchomienie programu ANT Studio.exe <nazwa pliku konfiguracji.cfg> powoduje

uruchomienie programu z załadowaniem wskazanej konfiguracji.

Pomoc oprogramowania ANT Studio Web 4.0

ANT Sp z o.o. Strona 419

Instalowanie nowszej wersji

Aby zainstalować nowszą wersję oprogramowania należy:

1. Zarchiwizować pliki konfiguracyjne *.cfg

2. Odinstalować obecną wersję programu

3. Zainstalować nowszą wersję programu

4. Uruchomić program w pustej konfiguracji, bazujący na nowym pliku default.cfg i poleceniem

Load Configuration załadować poprzednie konfiguracje.

Program zaproponuje konwersję poprzednich konfiguracji do nowej wersji.

5. Przeglądnięcie ustawień konfiguracyjnych modułów, pod kątem mogących mieć miejsce zmian (

dodanie lub usunięcie opcji konfiguracyjnych ).