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