Darmowy zarys kursu CODESYS
- Lekcja #1: Czym jest? Dlaczego powinieneś go znać?! – PART 1
- Lekcja #2: Jak zainstalować Codesys? – PART 2
- Lekcja #3: Napisz swój pierwszy program w Codesys: Structured Text – Part #3
- Lekcja #4: Jak stworzyć wizualizację Codesys w aplikacji? – Part #4
- Lekcja #5: Wprowadzenie do zmiennych w CODESYS – Part #5
- Lekcja #6: Struktury danych w CODESYS: Praktyczne zastosowanie tablic i struktur – Part #6
- Lekcja #7: Zaawansowane typy danych. Wyliczenia i zmienne lokalne vs. globalne – Part #7
- Lekcja #8: Operatory – Wprowadzenie i praktyczne zastosowania – Part #8
- Lekcja #9: Kontrola przepływu programu: IF, CASE i pętle – Part #9
W programowaniu PLC zrozumienie, jak używać wyliczeń (ENUM) oraz rozróżnienie między zmiennymi lokalnymi a globalnymi, jest najważniejsze dla pisania wydajnego i strukturalnego kodu. Ta sekcja omawia zastosowanie wyliczeń w CODESYS, jak je zadeklarować oraz ich zalety w projektach programistycznych.
Wyliczenia w danych CODESYS
Wyliczenie (ENUM) to zdefiniowany przez użytkownika typ danych, który składa się z zestawu nazwanych stałych. Wyliczenia poprawiają czytelność kodu, czynią program łatwiejszym do utrzymania i zmniejszają prawdopodobieństwo popełnienia błędów spowodowanych używaniem dowolnych liczb. Zamiast używać standardowych wartości całkowitych, które mogą być mylące, wyliczenia zapewniają sposób reprezentacji stanów lub opcji w sposób zrozumiały dla człowieka.
Wyliczenia są szczególnie przydatne w programowaniu PLC, gdy mamy do czynienia z maszynami stanowymi, sekwencjami sterowania lub ustawieniami konfiguracyjnymi, gdzie powinno być używane tylko ograniczone zestaw wartości. Definiując wyliczenie, zapewniamy, iż zmienne przyjmują tylko prawidłowe wartości, co zmniejsza ryzyko nieoczekiwanego zachowania programu.
Deklarowanie wyliczenia w CODESYS
Aby zdefiniować wyliczenie, użyj następującej składni:
Tutaj definiujemy wyliczenie o nazwie E_TrafficLight, które zawiera trzy stany: Yellow, Green i Red. Każdemu stanowi przypisana jest wartość numeryczna dla reprezentacji wewnętrznej. Te wartości służą jako stałe odniesienia w programie i pomagają zapewnić spójność przy odwoływaniu się do konkretnych warunków.
Deklarowanie i używanie zmiennej wyliczenia
Po utworzeniu wyliczenia, możemy zadeklarować zmienną używając tego typu:
Pozwala to na przechowywanie i manipulowanie wartościami wyliczenia, zachowując jednocześnie czytelność i strukturalność kodu.
Przypisywanie i używanie wartości wyliczeń w programach
Możemy przypisać wartości do zmiennej wyliczenia w następujący sposób:
To przechowuje numeryczny odpowiednik eTrafficLights w zmiennej całkowitej iColor. Jest to szczególnie przydatne przy pracy z interfejsami sprzętowymi lub funkcjami, które oczekują wartości numerycznych.
Używanie wyliczenia w programie PLC
Wyliczenia są przydatne w zarządzaniu stanami i programowaniu strukturalnym. Poniżej znajduje się przykład, jak wyliczenia pomagają w zarządzaniu stanami świateł drogowych:
Używanie wyliczeń w ten sposób zapewnia, iż wszystkie możliwe wartości są z góry zdefiniowane i obsługiwane w sposób kontrolowany. Eliminuje to potrzebę porównywania surowych wartości całkowitych, co sprawia, iż program jest łatwiejszy do debugowania i utrzymania.
Przypisywanie wartości wyliczenia z listy rozwijanej
CODESYS oferuje przydatną funkcję, która umożliwia wybór wartości wyliczenia z listy rozwijanej w interfejsie. Pomaga to programistom wybierać spośród prawidłowych opcji, bez konieczności manualnego wprowadzania wartości, co zmniejsza ryzyko błędów.
Na przykład, podczas przypisywania nowej wartości do zmiennej wyliczenia w edytorze CODESYS, pojawia się lista rozwijana, wyświetlająca dostępne opcje (Yellow, Green, Red). Ta funkcja przyspiesza programowanie i zapobiega przypadkowemu przypisaniu nieprawidłowych wartości.
Zastosowania wyliczeń w rzeczywistych aplikacjach
Wyliczenia są szeroko stosowane w automatyce przemysłowej, szczególnie w następujących scenariuszach:
- Kontrola stanu maszyny: Reprezentowanie stanów takich jak Idle, Running, Error i Maintenance.
- Wybór trybu: Konfigurowanie urządzeń do pracy w różnych trybach, takich jak Manual, Automatic lub Semi-Automatic.
- Obsługa alarmów i usterek: Definiowanie kodów błędów i poziomów alarmów, np. LowAlarm, HighAlarm, CriticalAlarm.
- Sterowanie światłami drogowymi: Zarządzanie stanami sygnałów świetlnych, jak pokazano w naszym poprzednim przykładzie.
Używając wyliczeń zamiast surowych liczb, znacznie poprawia się czytelność i niezawodność kodu, co sprawia, iż system staje się łatwiejszy do utrzymania i skalowania.
Zalety używania wyliczeń
- Poprawiona czytelność: Zamiast używać dowolnych liczb, przypisane są nazwy do określonych wartości, co sprawia, iż program jest łatwiejszy do zrozumienia.
- Zapobieganie błędom: Zapobiega używaniu nieprawidłowych wartości, zapewniając, iż używane są tylko z góry zdefiniowane stany.
- Uproszczone debugowanie: Ułatwia identyfikację tego, co reprezentuje każda wartość, zmniejszając zamieszanie.
- Spójność w projektach: Zapewnia jednolitą konwencję nazewnictwa dla stałych, czyniąc projekt bardziej uporządkowanym.
- Szybszy rozwój: Redukuje potrzebę nadmiernych komentarzy i dokumentacji, ponieważ nazwy wyliczeń bezpośrednio opisują ich funkcje.
Zrozumienie zmiennych lokalnych i globalnych w CODESYS
W programowaniu PLC zrozumienie różnicy między zmiennymi lokalnymi a globalnymi jest najważniejsze dla tworzenia strukturalnego, efektywnego i łatwego w utrzymaniu kodu. Ta sekcja omówi ich różnice, najlepsze praktyki oraz praktyczne zadanie, które pomoże utrwalić te pojęcia.
Czym są zmienne lokalne?
Zmienne lokalne są zadeklarowane w obrębie konkretnej jednostki organizacyjnej programu (POU), takiej jak blok funkcyjny, funkcja lub program. Te zmienne są dostępne tylko w tej jednostce i nie mogą być używane w innych miejscach.
Przykład deklaracji zmiennej lokalnej
Tutaj iLocalVar to lokalna zmienna całkowita, która może być dostępna tylko w programie Test_PRG.
Czym są zmienne globalne?
Zmienne globalne, z drugiej strony, mogą być dostępne z dowolnej części projektu. Zwykle są zadeklarowane w Globalnej Liście Zmiennych (GVL) i używane do wymiany danych między różnymi jednostkami organizacyjnymi programu (POU).
Przykład deklaracji zmiennej globalnej
Zmienne globalne zapewniają wygodną wymianę danych, ale muszą być używane ostrożnie, aby uniknąć niezamierzonych modyfikacji i zależności.
Kiedy używać zmiennych lokalnych a kiedy globalnych?
Najlepsze praktyki używania zmiennych lokalnych
- Enkapsulacja: Przechowuj zmienne w odpowiednich blokach programowych, aby zapobiec niezamierzonym modyfikacjom.
- Czytelność: Łatwiej śledzić użycie zmiennych i zapobiegać konfliktom.
- Efektywność pamięci: Zmienne lokalne są aktywne tylko wtedy, gdy ich funkcja lub program jest wykonywany, minimalizując zużycie pamięci.
Kiedy używać zmiennych globalnych?
- Wymiana danych między POU: Gdy różne programy muszą wymieniać dane, zmienne globalne pomagają ułatwić komunikację.
- Parametry konfiguracyjne: Zmienne globalne są przydatne do przechowywania ustawień lub parametrów, które muszą utrzymywać swoją wartość przez cały czas wykonywania programu.
- Mapowanie I/O: Często używane do definiowania zmiennych powiązanych z fizycznymi wejściami i wyjściami.
Zadanie praktyczne: Praca ze zmiennymi
Aby utrwalić pojęcia zmiennych lokalnych i globalnych, postępuj zgodnie z poniższymi instrukcjami i ukończ wyzwanie programistyczne.
Krok 1: Zadeklaruj zmienne
Utwórz nowy projekt CODESYS i zadeklaruj następujące zmienne:
Zmienne lokalne
Każda zmienna reprezentuje inny typ danych:
- iDate: Przechowuje dzień i miesiąc jako liczbę całkowitą.
- wDate: Przechowuje datę w formacie binarnym.
- uiYear: Przechowuje rok w formacie ósemkowym.
- sDay: Przechowuje dzień tygodnia jako łańcuch znaków.
- rTemperature: Przechowuje temperaturę jako liczbę zmiennoprzecinkową.
Krok 2: Przypisz wartości do zmiennych
Użyj dzisiejszej daty i przypisz wartości w różnych formatach numerycznych:
To ćwiczenie pomaga utrwalić reprezentację danych w różnych systemach numerycznych.
Krok 3: Praca z tablicami
Następnie zadeklaruj tablicę z trzema elementami do przechowywania komponentów daty: Dzień, Miesiąc, Rok.
Teraz przypisz wartości do tablicy:
Krok 4: Wykonywanie operacji matematycznych na tablicach
Używając tych wartości daty, wykonaj prostą kalkulację:
To sumuje dzień i rok, a następnie odejmuje miesiąc, pokazując podstawowe operacje arytmetyczne przy użyciu tablic.
Krok 5: Testowanie programu w CODESYS
- Skompiluj program i uruchom symulację.
- Upewnij się, iż wszystkie zmienne są prawidłowo zainicjowane i wyświetlane.
- Zmień wartości i obserwuj, jak zmiany wpływają na obliczenia.
Podsumowanie
W programowaniu PLC zrozumienie wyliczeń (ENUM) oraz różnicy między zmiennymi lokalnymi a globalnymi jest najważniejsze dla pisania wydajnego i strukturalnego kodu. Wyliczenia w CODESYS poprawiają czytelność kodu, minimalizują błędy i ułatwiają zarządzanie stanami w systemach automatyki. Są szczególnie przydatne w aplikacjach takich jak kontrola stanów maszyny, wybór trybów i obsługa alarmów.
Dodatkowo, odpowiednie użycie zmiennych lokalnych i globalnych wpływa na strukturę kodu i bezpieczeństwo. Zmienne lokalne poprawiają enkapsulację i efektywność pamięci, podczas gdy zmienne globalne umożliwiają bezproblemową wymianę danych między różnymi jednostkami programowymi. Artykuł zawiera również praktyczne ćwiczenia dotyczące deklaracji zmiennych, przypisania wartości, tablic oraz operacji matematycznych.
Opanowanie tych pojęć w CODESYS pozwala programistom tworzyć bardziej zorganizowane, skalowalne i niezawodne programy automatyki, zapewniając lepszą utrzymywalność systemu i wydajność.
Darmowy zarys kursu CODESYS
- Lekcja #1: Czym jest? Dlaczego powinieneś go znać?! – PART 1
- Lekcja #2: Jak zainstalować Codesys? – PART 2
- Lekcja #3: Napisz swój pierwszy program w Codesys: Structured Text – Part #3
- Lekcja #4: Jak stworzyć wizualizację Codesys w aplikacji? – Part #4
- Lekcja #5: Wprowadzenie do zmiennych w CODESYS – Part #5
- Lekcja #6: Struktury danych w CODESYS: Praktyczne zastosowanie tablic i struktur – Part #6
- Lekcja #7: Zaawansowane typy danych. Wyliczenia i zmienne lokalne vs. globalne – Part #7
- Lekcja #8: Operatory – Wprowadzenie i praktyczne zastosowania – Part #8
- Lekcja #9: Kontrola przepływu programu: IF, CASE i pętle – Part #9