Typ wyliczeniowy

enumeration

Pewnie ucieszyłeś się na myśl, że to narzędzie jest również dostępne w środowisku TIA Portal, jeżeli wykorzystywałeś je w innych językach. Nowym programistom powiem, że typ wyliczeniowy tworzy listę stałych całkowitych. Wyliczenie umożliwia w wygodny sposób powiązać stałe wartości z nazwami w postaci opisu.

Typ wyliczeniowy

Zastanawiasz się teraz, do czego można wykorzystać taki typ. Pomyśl sobie, że tworzysz pewnego rodzaju menu. W takim przypadku definiujesz zmienną, która określa daną pozycję tego menu. Napisałeś sobie na kartce, że menu główne wynosi 0 oraz rozpisałeś sobie pozostałe składniki i ich wartości. Podczas pisania kodu musisz ciągle zaglądać do tej kartki, ponieważ menu jest rozbudowane i nie pamiętasz wszystkich wartości. A co się stanie, gdy karteczka się zgubi? W takim wypadku lepiej wykorzystać typ wyliczeniowy. Muszę Cię teraz trochę zmartwić, ponieważ nie można tego zrobić w sposób bezpośredni jak zdefiniowanie typu np. Int. Jednak jest to równie łatwe.

W pierwszej kolejności należy utworzyć strukturę. Przykładową strukturę określającą menu pokazano na poniższym rysunku.

enumStruktura zawiera składniki wchodzące w skład menu wraz z przypisanymi do nich wartościami. Dzięki temu będzie możliwość posługiwania się opisami słownymi, zamiast wartościami. Wówczas wartości nie będą już tak bardzo istotne.

W celu posługiwania się tymi elementami struktury należy zdefiniować zmienną tego typu w bloku danych DB. Na poniższym rysunku przedstawiono taką definicję.

enum-W ten sposób zdefiniowano typ wyliczeniowy o nazwie Menu. Teraz możesz wykorzystywać tę zmienną w ten sam sposób, jak inne. Przykład sprawdzenia, czy użytkownik wybrał przejście do menu Error, jest na poniższym listingu.

IF (#UserSelect = ″Enum″.Menu.Error) THEN
;//do something
END_IF;

Wartość zmienna UserSelect zostaje przypisana poprzez panel HMI. Następuje sprawdzenie, co zostało wybrane. Jeżeli warunek porównania jest prawdziwy, to zostanie zrealizowana jakaś czynność (w tym wypadku włączenie diody LED).

Teraz karteczka z rozpisanym menu nie jest Ci już potrzebna. Jeżeli potrzebujesz dodać jeszcze jeden element, który będzie wchodził do menu, dodajesz kolejny składnik do struktury stt_EnumMenu. Kolejną zaletą jest zwiększenie czytelności kodu.

Typ wyliczeniowy powinien być w kodzie tylko odczytywany. Zatem należy pamiętać, aby nie przypisywać innych wartości do bloku danych o nazwie Enum. Dodatkowo po otwarciu właściwości bloku danych w zakładce Attributes można zaznaczyć opcję Data block write­protected in the device. Wówczas każda próba zapisu zostanie zauważona przez kompilator, co spowoduje pojawieniem się ostrzeżenia The tag is read­only.

//————-

Kurs-wideo-CZPP

Więcej w kursie wideo: Chcę zostać programistą PLC

Nagrania są dostępne w wersji online jak również na płytach DVD. Napisz mailem, jaką wersje wybierasz.

Podziel się tym wpisem na:
  • Facebook
  • Google Bookmarks
  • Twitter
  • Wykop

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>