14.1 Kontrola stanu i obsługa pojedynczych alarmów

 

W przykładzie pokazany zostanie typowy mechanizm sygnalizacji alarmu przy pomocy obiektu klasy Obraz. Stan obiektu będzie kontrolowany przy pomocy funkcji IsAlarm, IsAlarmUnaccepted i IsAlarmExcluded. Dodatkowo obiekt będzie służył do potwierdzania alarmu przy pomocy akcji operatorskiej AcceptAlarm. Inne akcje operatorskie związane z obsługą alarmów, to: ExcludeAlarm i IncludeAlarm.

 

Właściwości stanowe, stan podstawowy

 

Widoczny

Nie

 

Nazwa obrazu

 

Właściwości stanowe, stan 1

 

Warunek stanu

=IsAlarm(A1001)

 

Widoczny

=!IsAlarmExcluded(A1001)

 

Nazwa obrazu

AlrRed

Właściwości stanowe, stan 2

 

Warunek stanu

=IsAlarmUnaccepted(A1001)

 

Widoczny

=!IsAlarmExcluded(A1001)

 

Nazwa obrazu

=IsBlinkOff()?AlrYellow:null

Zdarzenia

 

Kliknięcie prawym przyciskiem

^AcceptAlarm(null,A1001)

 

W stanie podstawowym obrazek pozostaje niewidoczny. Stan  numer 1 włącza się, gdy alarm o identyfikatorze A1001 zmieni stan na aktywny (rozpoczęty). Stan  numer 2 włącza się, gdy alarm jest niepotwierdzony.  Ponieważ stan o wyższym numerze ma pierwszeństwo, to w okresie, w którym alarm pozostaje niepotwierdzony (niezależnie od tego czy jest zakończony), wyświetlany jest obraz AlrYellow. Dodatkowo, wykorzystanie wyrażenia warunkowego z funkcją IsBlinkOff powoduje migotanie obrazka. Jeżeli alarm jest aktywny, ale potwierdzony, to wyświetlany jest obrazek AlrRed. Należy pamiętać o tym, że kontrola stanu alarmów zakończonych zależy od użytego trybu pracy logu alarmów aktywnych. Jeżeli alarm zakończony zostanie usunięty z logu (po upłynięciu czasu przechowania alarmów zakończonych), to funkcja  IsAlarmUnaccepted zwróci wartość false nawet wtedy, gdy alarm nie jest potwierdzony.

Ponieważ funkcje IsAlarm i IsAlarmUnaccepted zwracają rzeczywisty stan alarmu niezależnie od tego, czy został on przez operatora wykluczony z obsługi, to konieczne jest użycie funkcji IsAlarmExcluded we właściwości Widoczny. Jeżeli w aplikacji wykluczenia nie byłyby  stosowane, to wystarczałoby użycie w we właściwości Widoczny obu  stanów wartości Tak.

Akcja AcceptAlarm w obsłudze zdarzenia Kliknięcie prawym przyciskiem powoduje potwierdzenie alarmu A1001.

W przykładzie założono, że w aplikacji jest zdefiniowana tylko jedna domena alarmowa. Gdyby tak nie było, to należałoby użyć wariantów funkcji IsAlarm itp. z jawnym podaniem nazwy domeny.

Powyższy przykład, chociaż poprawny, ma jedną istotną wadę. Próba użycia obiektu, do kontroli innego alarmu wymaga modyfikacji pięciu właściwości. Zalecaną procedurą jest przekształcenie obiektu we wzorzec z parametrem określającym identyfikator alarmu i wywołanie funkcji Parameter wszędzie tam, gdzie identyfikator został użyty. Można też postąpić zgodnie z poniższym przykładem.

 

Właściwości podstawowe

 

Główna zmienna

A1001

Właściwości stanowe, stan podstawowy

 

Widoczny

Nie

 

Nazwa obrazu

 

Właściwości stanowe, stan 1

 

Warunek stanu

=IsAlarm(LocalProperty(MainVar))

 

Widoczny

=!IsAlarmExcluded(LocalProperty(MainVar))

 

Nazwa obrazu

AlrRed

Właściwości stanowe, stan 2

 

Warunek stanu

=IsAlarmUnaccepted(LocalProperty(MainVar))

 

Widoczny

=!IsAlarmExcluded(LocalProperty(MainVar))

 

Nazwa obrazu

=IsBlinkOff()?AlrYellow:null

Zdarzenia

 

Kliknięcie prawym przyciskiem

^AcceptAlarm(null, LocalProperty(MainVar))

 

Ten wariant działa dokładnie tak samo jak poprzedni. Identyfikator alarmu został jednak podany wyłącznie we właściwości  Główna zmienna. Fakt, że taka zmienna nie istnieje, nie ma znaczenia. Decydujący jest kontekst użycia właściwości. W tym przypadku wartość właściwości jest pobierana przy pomocy funkcji LocalProperty i używana jako identyfikator alarmu.