Skip to content

switch

Opis

Bloczek switch steruje przekazywaniem zmian odebranych na wejściu oznaczonym jako tag1. Gdy wejście sterujące tag2 ma wartość true, bloczek przepuszcza dalej zmiany z tag1. Gdy tag2 ma wartość false, bloczek blokuje przekazywanie tych zmian.

Bloczek posiada dwa wejścia oznaczane za pomocą bloczka tag oraz jedno wyjście. Obsługuje wszystkie typy wartości logicznych na wejściu tag1. Wejście tag2 służy wyłącznie do sterowania stanem przełącznika i przyjmuje tylko wartości logiczne true albo false.

Parametry konfiguracyjne

Nazwa parametru Wartość
Ustaw wyjście na NULL gdy nieaktywny (nullIfInactive) Obowiązkowa wartość logiczna true albo false. Gdy ustawione jest true, wyłączenie bloczka przez tag2 = false powoduje wysłanie na wyjście wartości null. Gdy ustawione jest false, wyłączenie bloczka zmienia tylko stan bloczka bez wysyłania dodatkowej wartości.
Pamiętaj ostatnią wartość (rememberLastValue) Obowiązkowa wartość logiczna true albo false. Gdy ustawione jest true, ostatnia wartość odebrana na tag1 podczas nieaktywnego stanu bloczka zostaje zapamiętana i zostanie wysłana po ponownym włączeniu przez tag2 = true. Gdy ustawione jest false, wartości odebrane po ustabilizowaniu projektu podczas stanu nieaktywnego są ignorowane.

Obsługa wejścia

Bloczek wymaga dokładnie jednego połączenia tag1 oraz dokładnie jednego połączenia tag2.

Numer i nazwa wejścia Opis działania
tag1: Wejście danych Na to wejście można podać dowolny typ wartości logicznej. Jeśli bloczek jest aktywny, odebrana zmiana zostaje przekazana na wyjście. Jeśli bloczek jest nieaktywny, zmiana może zostać zapamiętana albo zignorowana, zależnie od parametru rememberLastValue.
tag2: Sterowanie przełącznikiem To wejście przyjmuje tylko wartości logiczne. Wysłanie true włącza przekazywanie zmian z tag1. Wysłanie false wyłącza przekazywanie zmian z tag1. Wartości innego typu są ignorowane. Ponowne wysłanie tej samej wartości logicznej nie zmienia stanu bloczka.

Szczegółowe zasady działania:

  • jeśli tag1 dostarczy zmianę, gdy bloczek jest aktywny, zmiana zostaje natychmiast przekazana na wyjście
  • jeśli tag1 dostarczy zmianę, gdy bloczek jest nieaktywny i rememberLastValue = true, bloczek zapamiętuje tylko ostatnią taką zmianę
  • jeśli tag1 dostarczy zmianę, gdy bloczek jest nieaktywny i rememberLastValue = false, po ustabilizowaniu projektu zmiana jest ignorowana
  • podczas uruchamiania projektu ostatnia zmiana z tag1 może zostać zapamiętana do późniejszego wysłania nawet wtedy, gdy rememberLastValue = false
  • jeśli po zapamiętaniu wartości wejście tag2 przełączy bloczek na stan aktywny, zapamiętana zmiana zostanie wysłana na wyjście
  • jeśli nullIfInactive = true, przełączenie na stan nieaktywny powoduje dodatkowo wysłanie wartości null

Przypadki ignorowane:

  • wartości z wejścia tag2, które nie są typu logicznego
  • kolejne wartości z tag2, które nie zmieniają aktualnego stanu aktywności bloczka
  • wartości z tag1 odebrane podczas stanu nieaktywnego, jeśli nie podlegają zapamiętaniu

Wyjścia bloczka

Bloczek posiada jedno wyjście.

Na wyjściu pojawia się ta sama zmiana, która wcześniej dotarła na tag1, jeśli w chwili odbioru bloczek był aktywny albo jeśli zmiana została wcześniej zapamiętana i następnie bloczek został włączony.

Jeżeli nullIfInactive = true, to przy przejściu do stanu nieaktywnego bloczek wysyła na wyjście wartość null.

Opis widoczny pod bloczkiem odzwierciedla bieżący stan, na przykład:

  • idle po utworzeniu bloczka, zanim pojawi się pierwsza istotna aktywność
  • active gdy bloczek jest włączony, ale nie ma tekstowej reprezentacji ostatniej wysłanej wartości
  • inactive gdy bloczek jest wyłączony i parametr nullIfInactive nie wysyła null
  • active: true albo active: 23 gdy ostatnio wysłana wartość daje się przedstawić tekstowo
  • inactive: null gdy bloczek został wyłączony przy włączonym nullIfInactive

Błędy widoczne dla użytkownika

Bloczek może pokazywać następujące komunikaty błędów:

Kod błędu Opis błędu
Invalid null_if_inactive configuration. Parametr nullIfInactive ma niepoprawną wartość i nie może zostać odczytany jako true albo false.
Invalid remember_last_value configuration. Parametr rememberLastValue ma niepoprawną wartość i nie może zostać odczytany jako true albo false.
Too many tag1 connections. Do wejścia tag1 podłączono więcej niż jeden bloczek tag.
Missing tag1 block connection. Do wejścia tag1 nie podłączono żadnego bloczka tag.
Too many tag2 connections. Do wejścia tag2 podłączono więcej niż jeden bloczek tag.
Missing tag2 block connection. Do wejścia tag2 nie podłączono żadnego bloczka tag.

Przykłady działania

  • Jeśli tag2 otrzyma true, a następnie na tag1 pojawi się zmiana false -> true, ta sama zmiana zostanie przekazana na wyjście.
  • Jeśli tag2 ma wartość false, rememberLastValue = true i na tag1 kolejno pojawią się wartości 10, 20, 30, to po ponownym włączeniu bloczka na wyjście zostanie wysłana tylko ostatnia zapamiętana zmiana, czyli związana z wartością 30.
  • Jeśli tag2 ma wartość false i nullIfInactive = true, to w chwili wyłączenia bloczek wyśle na wyjście wartość null.
  • Jeśli tag2 otrzyma tekst albo liczbę zamiast wartości logicznej, taka wiadomość zostanie zignorowana i stan bloczka nie zmieni się.