Strona używa plików cookies, jeśli wyrażasz zgodę na używanie cookies, zostaną one zapisane w pamięci twojej przeglądarki. W przypadku nie wyrażenia zgody nie jesteśmy w stanie zagwarantować pełnej funkcjonalności strony! 

W jaki sposób TelWin SCADA -wykorzystując protokół GAZ-MODEM- pobiera dane archiwalne z konkretnej godziny ?

np. przez 2 dni nie działała  telemetria ze stacji X, a chcialbym przesłać dane archiwizowane w przeliczniku na X z okresu mnie interesującego. Poza tym czasem nie jestem np. zainteresowany przesyłaniem danych archiwalnych, bo wpływa to znaczaco na dlugość paczek a jakość łacza radiowego nie jest najlepsza.

Z poziomu serwera nie można zainicjować pobierania danych archiwalnych dla zmiennych bez zadeklarowanej archiwizacji "zdalnej", ale w kliencie ("TelWin SCADA") można zdefiniować akcję zbierania danych dla danej zmiennej nawet jeśli nie ma ona włączonej archiwizacji "zdalnej". (Oczywiście zmienna ta musi mieć zdefiniowany w serwerze numer na danej archiwalnej). Odświeżanie oznacza pobranie danych z całej doby (wg. czasu GMT), a uzupełnianie oznacza pobranie próbek młodszych od ostatniej już posiadanej próbki w danej dobie. Dla podanego przypadku jedynym rozwiązaniem jest "odświeżenie" danych z określonych dni. Niestety zawsze trzeba odświeżyć cała dobę (wg. czasu GMT).

Co dokładnie oznacza parametr "Maksymalny rozmiar ramki", czy jest to komenda wpływajaca na przelicznik gazu i każąca mu wysyłać odpowiedzi w blokach o określonej dlugości, jeśli tak to jaka jest to komenda Gaz-Modemu?

Na podstawie zadanego parametru "Maksymalny rozmiar ramki" sterowniki protokołów mogą oszacować liczbę danych, o którą można zapytać aby odpowiedź nie była dłuższa od zadanej wartości parametru "Maksymalny rozmiar ramki". W protokole Gaz-Modem wer. 1 można dokładnie obliczyć maksymalną wielkość ramki odpowiedzi na podstawie parametrów zapytania.

Czy parametry "Zmienna na liście danych raportowych" i "danych raportowych dobowych" dotyczą archiwizacji zmiennej już w Telwinie SCADA czy ma to zwiazek z przesyłaniem danych dobowych (komenda 1CH) i (komenda 1BH) Jeżeli dotyczy to przelicznika, to gdzie sie ustawia godzinę i dzień pobrania. Czy ustawienie ktoregoś z parametrów na -1 oznacza zaniechanie pobierania tych danych?

W protokole Gaz-Modem wer.1 występuje pojęcie danych bieżących, rejestrowanych i dobowych. Dane te odpowiadają odpowiednio danym bieżącym, archiwalnym i raportom godzinowym w systemie TelWin SCADA. Komentarza wymagają dane dobowe rejestrowane w przeliczniku o godz. 22.00. Ponieważ w ramce odpowiedzi z danymi dobowymi przesyłana jest godzina rejestracji, system TelWin SCADA traktuje te dane jako raport godzinowy. Z punktu widzenia systemu TelWin SCADA jest to po prostu szczególny przypadek, gdzie raport godzinowy jest tworzony co 24godz., a nie co 1 czy 2 godz. Parametr "zmienna na liście danych dobowych" nie jest wykorzystywany i powinien mieć wartość -1.

W jaki sposób sa przesyłane np. dane bieżące o numerze 1 i 30 , czy sa wybierane tylko pozycje 1 i 30 i włożone do przezsyłanej paczki, czy ida dwie paczki dla każdej danej, czy jest przesylana wielka paczka z zawartoscią zmiennych od nr 1 do 30?

Sterownik Gaz-Modem optymalizuje zapytania w ten sposób, że w jednej ramce odpowiedzi nigdy nie występuje więcej niż 10 kolejnych parametrów nie wykorzystywanych w systemie TelWin SCADA. Np. jeżeli pobieramy dane o numerach 1,12,15 to zostaną one pobrane w jednej iteracji, natomiast 1,13,15 w dwóch.

Jak umożliwić współdzielenie jednego przerwania przez wiele portów szeregowych w Windows NT?

Wymaga to zmiany w ustawieniu rejestru. Procedura:

  • Zalogować się jako administrator
  • Zdefiniować nowe porty szeregowe - Panel sterowania -> porty
  • Uruchomić edytor rejestru (regedit.exe). Zachować ostrożność - modyfikacje rejestru mogą się skończyć tragicznie
  • Wyszukać ciąg znaków "PermitShare" - Menu->Edycja->Znajdź (Wyszukiwanie wartości).
  • Znaleziona wartość powinna być w kluczu (wyświetlanym w pasku statusowym edytora rejestru): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial
  • Jeśli klucz ma w nazwie ControlSet00x, szukać dalej (F3).
  • Jeśli wartość klucza "PermitShare" nie zotała znaleziona to zadzwonić (601)762572
  • Jeśli wartość klucza "PermitShare" zotała znaleziona w kluczu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial należy zmodyfikować dane wartości z "0" na "1"  Menu->Edycja->Modyfikuj
  • Zamknąć program edytora rejestru
  • Zrestartować system

Jak ustawiać strefy czasowe?

Wszystkie współpracujące w ramach systemu TelWin SCADA komputery muszą mieć ustawioną tę samą strefę czasową i tak samo ustawioną opcję czasu letniego.

Ponieważ wszystkie dane archiwalne i raportowe są pamiętane wg czasu UTC, należy zadbać o to, aby strefa czasowa była odpowiednio ustawiona. Jeśli strefa nie będzie poprawnie ustawiona to stemple  czasowe danych archiwalnych i raportowych nie będą zapamiętane wg czasu UTC, co może powodować kłopoty w ich późniejszej interpretacji (patrz następne pytanie).

W Polsce zimą mamy przesunięcie o plus 1 godz. do czasu UTC a latem o 2 godz.

Aplikacje 16 bitowe, system Windows NT

Aplikacje 16 bitowe nie pobierają strefy z panelu Właściwości: Data/Godzina.
Musi być ustawiona zmienna środowiskowa TZ. Można to zrobić w zbiorze
Autoexec.bat lub w panelu sterowania system->środowisko (wymaga
restartu systemu)
Nie należy stosować automatycznego przejścia na czas letni (np. SET TZ=GMT-1PDT)
ponieważ przejście na czas letni i odwrotnie następuje w niewłaściwym terminie.
w Polsce należy ustawić strefę czasową następująco:
SET TZ=GMT-1
Latem należy ręcznie przestawić czas w komputerze.

Czas lokalny wyświetlany w pasku zadań jest też czasem lokalnym dla aplikacji 16 bitowych.

Aplikacje 32 bitowe, system Windows NT

Aplikacje 32 bitowe pobierają strefę z ustawień panelu Właściwości: Data/Godzina pod warunkiem że nie jest ustawiona zmienna środowiskowa TZ. Jeżeli zmienna TZ jest zdefiniowana to jej ustawienia mają pierwszeństwo (wymaga restartu systemu).

W przypadku ustawienia zmiennej TZ, czas lokalny wyświetlany w pasku zadań jest też czasem lokalnym dla aplikacji 32 bitowych, pod warunkiem, że nie jest włączone automatyczna uwzględnianie czasu letniego. W przeciwnym wypadku mogą wystąpić różnice i z tego względu NIE NALEŻY  STOSOWAĆ ZMIENNEJ TZ dla aplikacji 32 bitowych.

W Polsce należy ustawić strefę czasową w panelu Właściwości: Data/Godzina na (GMT+01:00) Warszawa, Praga , Budapeszt z automatycznym uwzględnianiem czasu letniego.

Aplikacje 16 bitowe, system Windows 95

Aplikacje 16 bitowe nie pobierają strefy z panelu Właściwości: Data/Godzina. Musi być ustawiona zmienna środowiskowa TZ. Trzeba to zrobić w zbiorze Autoexec.bat (wymaga restartu systemu).

Nie należy stosować automatycznego przejścia na czas letni (np. SET TZ=GMT-1PDT) ponieważ przejście na czas letni i odwrotnie następuje w niewłaściwym terminie. W Polsce należy ustawić strefę czasową następująco:
SET TZ=GMT-1
Latem należy ręcznie przestawić czas w komputerze.

Czas lokalny wyświetlany w pasku zadań jest też czasem lokalnym dla aplikacji 16 bitowych.

Aplikacje 32 bitowe, system Windows 95

Aplikacje 32 bitowe pobierają strefę z ustawień panelu Właściwości: Data/Godzina pod warunkiem że nie jest ustawiona zmienna środowiskowa TZ. Jeżeli zmienna TZ jest zdefiniowana to jej ustawienia mają pierwszeństwo.

W przypadku ustawienia zmiennej TZ, czas lokalny wyświetlany w pasku zadań jest też czasem lokalnym dla aplikacji 32 bitowych, pod warunkiem, ze nie jest włączone automatyczna uwzględnianie czasu letniego. W przeciwnym wypadku mogą wystąpić różnice i z tego względu NIE NALEŻY STOSOWAĆ ZMIENNEJ TZ dla aplikacji 32 bitowych.

W Polsce należy ustawić strefę czasową w panelu Właściwości: Data/Godzina na (GMT+01:00) Warszawa, Praga, Budapeszt z automatycznym uwzględnianiem czasu letniego.

Jak pamiętany jest czas w plikach danych archiwalnych i raportowych?

Od wersji 1.x stemple czasowe są pamiętane jako liczba sekund jaka upłyneła od 1.1.1970 r. czasu UTC. Jednakże, ze względu na ograniczenia systemu DOS/Windows dla aplikacji 16 bitowych nie zawsze możliwe jest poprawne określenie czsu UTC. Wynika to z następujących przyczyn. Czas UCT obliczany jest na podstawie czasu lokalnego przez skorygowanie go o odpowiednią liczbę sekund, wynikającą z ustawionej w systemie strefy czasowej. Jeżeli strefa jest ustawiona niepoprawnie, to obliczony czas UTC będzie odbiegał od rzeczywistego czasu UTC. Drugim problemem jest to, że dla aplikacji 16 bitowych niepoprawnie wyznaczany jest termin przejścia na czas letni. Z tego względu  zalecanym ustawieniem sterfy czasowej dla systemu 16 bitowego (wersje 1.x) było GMT-1 względnie GMT0. Przejście na czas letni musiało być realizowane ręcznie przez operatora. Takie ustawiania miały następujące konsekwencje. Zimą stemple czasowe były zapamiętywane wg. czasu UTC jeśli ustawiona była strefa GMT-1 lub z przesunięciem 1 godz. jeśli ustawiona była strefa GMT0. Latem natomiast stemple czasowe były zapamiętywane z 1 godz. lub 2 godz. przesunięciem (odpowiednio dla ustawienia strefy GMT-1 i GMT0).

Jak przechowywane są dane archiwalne i raportowe?

Dane archiwalne

Kolejne wartości danej zmiennej są zapamiętywane w plikach obejmujących wszystkie próbki z okresu jednej doby wg. czasu UTC. Jeśli jednak strefa czasowa jest ustawiona niepoprawnie to wyznaczony czas UTC różni się od rzeczywistego czasu UTC i podział na pliki bedzie innny. Przykładowo, przy  poprawnie ustewionej strefie czasowej w Polsce jeden plik obejmuje dane z okresu od godz. 1.00 (czasu lokalnego) do godz 1.00 dnia następnego w zimie i od godz. 2.00 do godz 2.00 dnia następnego latem. (Odpowiada to okresowi od godz. 0 do godz. 0 dnia następnego czasu UTC niezależnie od pory roku). Jeżeli ustawiona jest strefa GMT-1 to jeden plik obejmuje dane z okresu od godz. 1.00 (czasu lokalnego) do godz 1.00 dnia następnego nezależnie od pory roku. Jeżeli ustawiona jest strefa GMT0 to jeden plik obejmuje dane z okresu jednej doby czasu lokalnego.

Nazwa pliku, w którym zapamiętywane są wartości archiwalne danej zmiennej jest wyznaczana przez dodanie do nazwy zmiennej rozrzerzenia "arc". (W systemie 16 bitowym ze względu na ograniczenia w systemie plików, zrchiwizować można było tylko zmienne, których nazwy miały nie więcej niż 8  znaków). Pliki danych archiwalnych umieszczane są w podkatalogach, których nazwa określa datę próbek (wg czasu UTC).

Raporty godzinowe

Pliki raportów godzinowych obejmują raporty wszystkich zmiennych z okresu pełnej doby wg czasu UTC. Nazwa pliku określa datę (wg czasu UTC) raportów pamiętanych w tym pliku. Podobnie jak w przypadku danych archiwalnych niepoprawnie określona strefa czasowa powoduje, iż alokacja raportów w plikach będzie inna.

Wersja 2.2 (i wersje wyższe) zawierają zmienione mechanizmy generacji raportów, zapewniające poprawne ich generowanie dla dni, w których następuje przejście z czasu zimowego na letni i odwrotnie. (System 32 bitowy umożliwia korzystania z opcji automatycznego uwzględniania czasu letniego). Zasady generowania raportu w tych dniach są następujące. W momencie zmiany czasu polegającej na przesunięciu zagarów do przodu, raport na godzinę zmiany czasu jest generowany jedynie wtedy, gdy nowa godzina (po przesunięciu) jest godziną raportową. W momencie zmiany czasu polegającej na przesunięciu zagarów do tyłu, raport generowany jest tylko na godziny w czasie zimowym (w Polsce jest to późniejsza godzina druga).

Zmiany wprowadzone w wersji 2.2 umożliwiają ustawienie poprawnej strefy czasowej w panelu Właściwości: Data/Godzina, z automatycznym uwzględnianiem czasu letniego.

W związku z powyższym od wersji 2.2 zalecanym ustawieniem strefy czasowej jest (GMT+01:00) Warszawa, Praga, Budapeszt (panel Właściwości: Data/Godzina)

Zmienna środowiskowa TZ nie powinna być stosowana.

Aby zapewnić poprawną interpretację danych zgromadzonych przez system gdy ustawiona była strefa czasowa nie uwzględniająca czasu letniego (np. GMT-1 czy GMT0) należy w dialogu konfiguracyjnym serwara systemu określić stosowaną uprzednio strefę czasową oraz moment przejścia na poprawną strefę.

Współpraca modułów MK z wersji 16 bitowej z 32 bitową na protokole IPX/SPX.

W systemie 32 bitowym rozmiar ramki musi mieć wartość o 42 większą od tej ustawionej w module 16 bitowym.

Dostęp do zasobów WindowsNT z Windows95

W systemie Windows 95 należy zalogować się na konto i z hasłem identycznym z tym w Windows NT. Gdy warunek ten nie jest spełniony pojawia się pytanie o hasło do zasobu IPC$ (Chodzi tu o hasło użytkownika Windows 95 w systemie NT) Nazwa użytkownika w Dial-up może być inna (oczywiście użytkownik ten musi mieć prawo do łączenia się przez RAS w Windows NT)

Powyższe rezultaty uzyskano experymentalnie. Wszystko sprowadza się najprawdopodobniej do błędnego działania opcji "Zaloguj się do sieci" w dial-up Windows 95. (Windows 95 zawsze próbuje się zalogować jako użytkownik którego nazwę podano przy logowaniu do systemu Windows 95).  

Zależność czasu ważności danych od częstotliwości ich zbierania

W przypadku braku łączności z obiektem (poprzez sterowniki protokołów ???drv.exe) dane opatrzone zostają statusem "błąd transmisji". Na ekranach klienta wizualizacji TelWin SCADA objawia się to znakiem zapytania przy wartości (gdy opcja ta jest włączona). Od wersji 2.0 wprowadzono nowy mechanizm zapobiegający prezentowaniu wartości które nie były przez długi czas odświeżone. (zapobiega to ewentualnym błędnym decyzjom operatora podjentym w oparciu o nieaktualne dane). Mechanizm ten polega na opatrzeniu danej dodatkowym statusem "wartość nieznana", co powoduje iż wartość danej nie jest dłużej prezentowana dyspozytorowi. Czas po którym dana jest uznawana za nieważną jest uzależniony od częstotliwości jej pobierania w następujący sposób:

Częstość uaktualnianiaCzas ważności danej
0 (inicjacja ręczna) 25 godzin
-1 (maksymalna możliwa częstotliwość) 1 min.
od 1 sek.  do 59 sek. 5 min.
od 60 sek. do 299 sek. 15 min.
od 300 sek. do 899 sek. 30 min.
od 900 sek. 2*częstość uaktualniania

Sposób funkcjonowania opcji automatycznego odświeżania raportów

W serwerze systemu TelWin SCADA istnieje możliwość włączenia opcji automatycznego odświeżania danych raportowych godzinowych i dobowych (opcja "Aut. odśw." w definicji profilu raportów godzinowych lub dobowych). Mechanizm ten polega na tym, że każdy serwer (TelSrv) wysyła do wszystkich swoich klientów (w tym innych serwerów TelSrv) powiadomienie o zmianie w raportach godzinowych lub dobowych (następuje to po przeliczeniu raportów) z podaniem godziny lub doby w której nastąpiła zmiana. Serwer TelSrv, po odebraniu takiego powiadomienia, inicjuje pobieranie rapotów z danej godziny lub doby dla wszystkich profili raportów godzinowych lub dobowych, które nie są inicjowane lokalnie i mają włączoną opcję automatycznego odświeżania. Do wersji 2.67 inicjowane były wszystkie profile raportów niezależnie od źródła zmiennych wchodzących w skład profilu. Powodowało to problemy w przypadku wzajemnego pobierania raportów przez dwa serwery. Od  wersji 2.68 mechanizm ten został zmodyfikowany w ten sposób, że profil raportów jest inicjowany tylko wtedy, gdy zmienne wchodzące w skład profilu mają swoje źródło w serwerze, z którego przyszło powiadomienie. Ponieważ jednak nie są sprawdzane wszystkie zmienne, wymagane jest aby przy włączonej opcji automatycznego odświeżania, wszystkie zmienne wchodzace w skład profilu były pobierane z tego samego serwera.

Raporty godzinowe - inicjacja "przyrost licznika"

Inicjacja raportów godzinowych "przyrost licznika" została wprowadzona w celu rozwiązania problemu przewijania licznika. Przy tym sposobie inicjacji, należy podać minimalną i maksymalną wartość licznika. Dzięki tym informacjom serwer może prawidłowo obliczyć przyrost licznika nawet w przypadku jego "przewinięcia". Ten sposób działa tylko dla liczb czałkowitoliczbowych. W przypadku gdy wartość licznika wykracza poza deklarowany przedział, sygnalizowany jest błąd obliczenia.

Przeliczanie raportów godzinowych

Raporty godzinowe powinny przeliczone zawsze wtedy, gdy zmieniają się wartości raportowe godzinowe zmiennych będących podstawą do obliczenia wartości raportowych godzinowych innych zmiennych. Jednakże, dla zmniejszenia obciążenia serwera systemu TelWin SCADA i uniknięcia zjawiska ciągłego przeliczania raportów, wprowadzono następujące optymalizacje:
1) Raporty są przeliczane nie częściej niż co 30 sekund.
2) Raporty są przeliczane dopiero wtedy, gdy wszystkie procesy inicjowania i pobierania danych raportowych godzinowych  zostaną zakończone. (Domniemuje się przypadek, w którym do jednego wzoru wchodzą zmienne mające różne profile raportów godzinowych. Przeliczenie takiego wzoru daje właściwy wynik dopiero po pobraniu wartości wszystkich argumentów.)

Opóźnienie przeliczenia raportów godzinowych do momentu pobrania wszystkich zdalnych raportów godzinowych może być niekorzystne, w przypadku gdy proces pobierania danych jest dlugotrwały. W takim przypadku można wymusić każdorazowe przeliczanie raportów po pobraniu wartości raportowych z każdego profilu. W tym celu należy w pliku telsrv.ini, w sekcji [Konfiguracja] umieścić parametr HRC i nadać mu wartość "1". (Wartość "0" powoduje opóźnienie przeliczania raportów do momentu zakończenia wszystkich procesów inicjowania i pobrania raportów godzinowych).

 

[Konfiguracja]
HRC=1

Wzór W=AssignOnCtrl(Ctrl,Val)

W przypadku gdy etykieta czasowa zmiennej W jest starsza  od etykiety zmiennej Ctrl, zmiennej W         przypisywana jest wartość zmiennej Val, przy czym etykieta czasowa zmiennej W jest taka jak etykkieta zmiennej Ctrl. W przypadku gdy etykieta czasowa zmiennej W nie jest starsza od etykiety zmiennej Ctrl, Wartość zmiennej W nie zmienia się, a status wartości jest uzupełniany o flagę "Błąd obliczenia". (Flaga "Błąd obliczenia" zapobiega wykonaniu sterowania dla zmiennej klasy "Obliczenie ze sterowaniem".)
Uwaga: Zmiennym klasy "Obliczenie ze sterowaniem"  przypisywana jest wartośćz obliczenia, ale także wartość otrzymane ze źródła. Nie należy więc bezpośrednio stosować tego wzoru do wymuszenia sterowania zmienną w obiekcie, jeśli zmienna Ctrl ma źródło w tym samym obiekcie.

Wzór W=NewVal(Z)

Wzór przypisuje zmiennej W wartość zmiennej Z, przy czym etykieta czasowa zmiennej W zmienia się tylko w przypadku gdy zmianie ulega również status lub wartość liczbowa.

Zmienne predefiniowane

Zmienna CO_<nazwa źródła> - wartość bieżąca zmiennej określa stan połączenia ze źródłem:

    2    - łączenie ze źródłem
    3    - połączenie nawiązane
    4    - rozłączanie
    5    - połączenie rozłączone
    6    - brak połączenia

Zmienna AR_<profil archiwizacji>
    Wartość bieżąca wskazuje stan procesu pobierania archiwów (% pobranych zmiennych)

Zmienna HR_<profil raportów godzinowych>
    Wartość raportowa godzinowa różna od zera blokuje automatyczne pobieranie raportów.
    Wartość bieżąca wskazuje stan procesu pobierania raportów
        -1    - błąd utworzenia pliku raportów godzinowych
                - próba inicjacji pobierania na niewłaściwą godzinę
                - błąd pobrania raportu
        -2    - raport godzinowy nieprzygotowany
        0 -100 - zaawansowanie procesu pobierania raportów (%)

Zmienna DR_<profil raportów dobowych>
    Wartość raportowa dobowa różna od zera blokuje automatyczne pobieranie raportów.
    Wartość bieżąca wskazuje stan procesu pobierania raportów
        -1    - błąd utworzenia pliku raportów dobowych
                - błąd pobrania raportu
        -2    - raport dobowy nieprzygotowany
        0 -100 - zaawansowanie procesu pobierania raportów (%)

Import definicji zmiennych do serwera TGSrv - format pliku tekstowego z opisem zmiennych

Każdy wiersz pliku tekstowego pzwiera definicję jednej zmiennej
Pola w wierszu muszą być rozdzelone znakami tabulacji

nr polaopis
1 numer linii - pole nie jest interpretowane
2 short name  - opis zmiennej
3 long name - opis zmiennej (w nawiasach)
4 typ zmiennej:
                     M - float
                     S - sygnalizacja
5 źródło - pole nie jest interpretowane
6 protocol number - numer parametru
7 processing - pole nie jest interpretowane
8 destination - pole nie jest interpretowane
9 reference name - nazwa w TelWin SCADA (do wersji 2.69/0 źródło zawsze "ODG", od wersji 2.69/1 nazwa źródła jest brana z pierwszej pozycji listy źródeł)
10 fetch cycle - pole nie jest interpretowane
11 2 hour trans. -
    "x" lub "+"    - dana równiweż raportowa jeśli brak znaku - tylko wartości bieżące
12 controlable -
      "x" lub "+"    - sterowanie - dane do TelWina SCADA

    brak znaku - dane pomiarowe - dane z TelWina SCADA

Import należy wywołać dwukrotnie - raz dla danych bieżących i raz dla raportowych

Pobieranie listy zdarzeń z przelicznika z protokołem GazModem

W celu pobrania z przelicznika listy zdarzeń, należy zdefiniować w serwerze zmienną z archiwizacją zdalną. Definicja nazwy w źródle powinna wskazywać na zmienną archiwalną o numerze 1000 ( numer zmiennej bieżącej i raportowej należy ustawić na -1). Każde pobranie danych archiwalnych (zainicjowane ręcznie lub automatyczne - z profilu) powoduje pobranie całej listy zdarzeń i zapisanie jej jako kolejnych wartości archiwalnych zdefiniowanej zmiennej. Wszystkie kolejne wartości mają identyczną etykietę czasową - wskazującą na moment pobrania listy. Każda z wartości jest typu tekstowego i zawiera dane o zdarzeniu, zgodne z informacjami otrzymanymi z przelicznika:

GazModem: "Zdarzenie nr xx; P:yyyy-mm-dd gg:mm.ss K:yyyy-mm-dd gg:mm.ss, DVn=xxx"

Zdarzenie, Zd. - numer zdarzenia (z w przypadku pierwszej wersji protokołu GazModem, różne typy przeliczników mają różne kody zdarzeń, przez co nie można ich opisać słownie)

P - czas początku zdarzenia

K - czas końca zdarzenia (jeśli zakończone)

DVn - przyrost licznika

Innymi słowy każde pobranie listy alarmów powoduje zapamiętanie w archiwum zmiennej bieżącego stanu listy alarmów z przelicznika.

Do wizualizacji listy zdarzeń można wykorzystać program TelView. Na schemacie należy zdefiniować przycisk z funkcją "Przeglądanie listy danych archiwalnych" i typem danych "Lista zdarzeń Gaz-Modem".

Zaimplementowany i przedstawiony powyżej mechanizm pobierania zdarzeń z przelicznika odbiega nieco od modelu danych archiwalnych w systemie TelWin SCADA (gdzie każde zdarzenie jest zapamiętane z etykietą czasu wystąpienia). Wynika to ze sposobu zdefiniowania i przesyłania zdarzeń w protokole GazModem. Jedna pozycja na liście opisuje tam bowiem dwa zdarzenia (początek i koniec). Monitorowanie zmian na liście wymagałoby ciągłego pobierania całej listy (zdarzena są nie tylko dopisywane na końcu listy ale powodują też modyfikację informacji na innych pozycjach - zdarzenia typu "koniec") i porównywania zawartości kolejno pobranych list. Biorąc pod uwagę fakt, że pobranie listy alarmów wymaga kilkudziesięciu interakcji z przelicznikiem (każda pozycja przesyłana jest w oddzielnej ramce) byłby to proces bardzo nieefektywny. (Funkcja odpowiedniego filtrowania kolejno pobranych list jest realizowana w programie TelView).

Formatowanie etykiety czasowej we wzorze W=TS(Z,F)

Stała F może zawierać ciągh formatujący np. %H:%M %d-%m-%Y

Lista wszystkich kodów formatujących:

%a - Abbreviated weekday name

%A - Full weekday name

%b - Abbreviated month name

%B - Full month name

%c - Date and time representation appropriate for locale

%d - Day of month as decimal number (01 - 31)

%H - Hour in 24-hour format (00 - 23)

%I - Hour in 12-hour format (01 - 12)

%j - Day of year as decimal number (001 - 366)

%m - Month as decimal number (01 - 12)

%M - Minute as decimal number (00 - 59)

%p - Current locale's A.M./P.M. indicator for 12-hour clock

%S - Second as decimal number (00 - 59)

%U - Week of year as decimal number, with Sunday as first day of week (00 - 53)

%w - Weekday as decimal number (0 - 6; Sunday is 0)

%W - Week of year as decimal number, with Monday as first day of week (00 - 53)

%x - Date representation for current locale

%X - Time representation for current locale

%y - Year without century, as decimal number (00 - 99)

%Y - Year with century, as decimal number

%z, %Z - Time-zone name or abbreviation; no characters if time zone is unknown

%% - Percent sign

Obsługa powiadomień SMS,FAX w serwerze alarmów

Powiadomienia w serwerze alarmów są definiowane za pomocą mechanizmu profili powiadomień. Każda definicja zdarzenia/alarmu w serwerze alarmów może być powiązana z pojedyńczym profilem powiadomień. W ramach profilu powiadomień definiujemy listę zawierającą typ powiadomienia (SMS,FAX) oraz adresata (numer telefonu).

Powiadomienia FAX wymagają dostępu w systemie Windows do funkcji wysyłania faxów. W przypadku systemów Windows 2000 i Windows XP są to standardowe usługi systemu operacyjnego (pod warunkiem zainstalowania odpowiedniego faxmodemu). Systemy Windows NT4 i Windows 98 wymagają zainstalowania dodatkowych modułów odsługi faxów. Wyłączenie obsługi faxów w serwerze alarmów sprowadza się do usunięcia biblioteki faxdll.dll z katalogu EXE systemu.

Powiadomienia SMS wymagają dołączenia do komputera na którym pracuje serwer alarmów telefonu GSM realizującego wysyłanie faxów za pomocą komendy AT+CMGS (np. Siemens S45, ME45). Telefon powinien być dołaczony do jednego z interfejsów COM1 lub COM2. Parametry pracy interfejsu należy ustawić w konfiguracji systemu Windows. Jeśli wybrany został interfejs COM2 to przed numerem telefonu adresata w definicji profilu powiadomień należy dodać prefiks COM2: (np COM2:+48601702641).

Wartości "statusu" wartości zmiennej

Z wartością każdego parametru związany jest jej "status", określający cechy wartości - jej ważność, pochodzenie, informacje o błędach itp. Status jest polem bitowym, w którym poszczegóne bity mają następujące znaczenie (BIT0 oznacza najmniej znaczący bit):

   BIT0 - wartość nieznana
   BIT1 - błąd transmisji
   BIT2 - alarm (tylko dla serwera alarmów)
   BIT3 - alarm potwierdzony (tylko dla serwera alarmów)
   BIT4 - wartość pomiarowa
   BIT5 - nastawa ręczna
   BIT6 - błąd obliczenia
   BIT7 - raport pobrany
   BIT8 - raport zainicjowany
   BIT9 - blokada