Codesys: Wprowadzenie do zmiennych w CODESYS – Part #5

controlbyte.pl 1 tydzień temu

Darmowy zarys kursu CODESYS

  1. Lekcja #1: Czym jest? Dlaczego powinieneś go znać?! – PART 1
  2. Lekcja #2: Jak zainstalować Codesys? – PART 2
  3. Lekcja #3: Napisz swój pierwszy program w Codesys: Structured Text – Part #3
  4. Lekcja #4: Jak stworzyć wizualizację Codesys w aplikacji? – Part #4
  5. Lekcja #5: Wprowadzenie do zmiennych w CODESYS – Part #5
  6. Lekcja #6: Struktury danych w CODESYS: Praktyczne zastosowanie tablic i struktur – Part #6
  7. Lekcja #7: Zaawansowane typy danych. Wyliczenia i zmienne lokalne vs. globalne – Part #7
  8. Lekcja #8: Operatory – Wprowadzenie i praktyczne zastosowania – Part #8
  9. Lekcja #9: Kontrola przepływu programu: IF, CASE i pętle – Part #9

W programowaniu PLC, zwłaszcza w CODESYS, najważniejsze jest zrozumienie, jak dane są przechowywane i organizowane w pamięci sterownika. Prawidłowe zarządzanie zmiennymi pozwala na optymalne wykorzystanie zasobów sprzętowych i zapewnia poprawne działanie programu sterującego. W tym artykule omówimy podstawowe jednostki pamięci, typy zmiennych oraz stałe używane w aplikacjach PLC.

Jednostki pamięci w CODESYS

CODESYS działa na pamięci podzielonej na jednostki o różnych rozmiarach:

  • Bit – najmniejsza jednostka pamięci, która może przechowywać wartość logiczną 1 (TRUE) lub 0 (FALSE). Używana do przechowywania prostych sygnałów cyfrowych, takich jak stany przełączników.
  • Bajt (Byte) – składa się z 8 bitów, z których każdy może przechowywać indywidualną wartość logiczną. Służy do przechowywania małych wartości liczbowych lub znaków ASCII.
  • Słowo (Word) – składa się z 16 bitów (2 bajtów). Powszechnie stosowane w PLC do przechowywania wartości całkowitych i adresów pamięci.
  • Podwójne słowo (Double Word, DWORD) – składa się z 32 bitów (4 bajtów, czyli dwóch słów). Używane do przechowywania większych wartości, takich jak liczby zmiennoprzecinkowe.

Pamięć w CODESYS jest organizowana w słowa o rozmiarze 16 bitów. Do bardziej zaawansowanych operacji wykorzystuje się podwójne słowa (DWORD), które umożliwiają przechowywanie większych wartości liczbowych oraz bardziej złożonych struktur danych.

Tip

Aby efektywnie zarządzać pamięcią, ważne jest zrozumienie jej struktury oraz różnych metod adresowania. Pomaga to uniknąć marnowania pamięci i optymalizuje zarządzanie zasobami w projektach PLC. Dodatkowo, w bardziej zaawansowanych aplikacjach, skuteczne zarządzanie adresowaniem zmiennych zapobiega nadpisywaniu krytycznych danych. W CODESYS adresy pamięci dla zmiennych mogą być precyzyjnie definiowane, co jest najważniejsze przy pracy ze sprzętem fizycznym.

Na przykład, przemyślane przydzielanie pamięci dla zmiennych może zoptymalizować wydajność sterownika. Używanie odpowiednio dobranych typów zmiennych minimalizuje zużycie pamięci i zwiększa efektywność aplikacji sterującej.

Zmienne i stałe w CODESYS

Definicja zmiennej

Najprościej mówiąc, zmienna to obszar pamięci w PLC, w którym przechowywane są dane. Każda zmienna ma następujące atrybuty:

  1. Typ danych – np. Boolean, Integer, Real.
  2. Nazwa – nadana przez programistę, np. xLamp (Boolean) lub iTemperature (Integer).
  3. Adres pamięci – unikalna lokalizacja, w której zmienna jest przechowywana w pamięci PLC.

Zmienna może zmieniać swoją wartość podczas wykonywania programu, co czyni ją podstawowym elementem sterowania procesami w PLC. Umożliwia przechowywanie wyników obliczeń, stanów czujników oraz innych kluczowych danych niezbędnych w aplikacjach sterujących.

W CODESYS zmienne można deklarować na różne sposoby, w zależności od ich przeznaczenia i kontekstu. Obejmują one:

Zmiennie systemowe – używane do komunikacji z urządzeniami zewnętrznymi.

Zmiennie lokalne – dostępne tylko w obrębie określonego programu.

Zmiennie globalne – dostępne w całym projekcie.

Stałe

Stałe to wartości, które nie zmieniają się podczas wykonywania programu. Podobnie jak zmienne, mają określony typ danych i symboliczną nazwę. Przykładem stałej jest liczba Pi = 3.14, która pozostaje niezmienna. Stałe są często używane do przechowywania parametrów konfiguracyjnych lub wartości referencyjnych, które nie powinny być modyfikowane przez użytkownika.

Deklarowanie stałych w kodzie upraszcza zarządzanie projektem i zwiększa jego czytelność. Zamiast wielokrotnego wpisywania wartości, można odwoływać się do stałych po nazwie, co ułatwia modyfikacje.

Deklaracja zmiennej Boolean w CODESYS

Krok 1: Tworzenie nowego projektu

  1. Otwórz CODESYS i utwórz nowy projekt.
  2. Przejdź do PLC_PRG.

Krok 2: Dodawanie zmiennej

  1. W pierwszej linii wpisz nazwę zmiennej, używając notacji węgierskiej: xVar := TRUE;
  2. x oznacza typ Boolean.
  3. Var to nazwa zmiennej.
  4. := to operator przypisania w Structured Text (ST).
  5. TRUE to wartość początkowa.
  6. Każda linia w Structured Text musi kończyć się średnikiem (;).

Krok 3: Dodawanie komentarza

Dodawanie komentarzy zwiększa czytelność kodu:

Krok 4: Użycie funkcji „Auto Declare”

  1. Naciśnij Enter – pojawi się okno „Auto Declare”.
  2. Wypełnij pola:
    • Nazwa: xVar
    • Typ danych: BOOL
    • Zakres: Local Variable
    • Inicjalizacja: FALSE
  3. Kliknij OK, aby dodać zmienną do programu.

Typ danych Integer

Zrozumienie typów danych całkowitych w CODESYS jest najważniejsze dla efektywnego programowania PLC. CODESYS oferuje różne typy liczb całkowitych, które różnią się zakresem oraz tym, czy obejmują wartości ze znakiem czy bez znaku. Te typy są niezbędne do skutecznego wykonywania operacji numerycznych i unikania błędów związanych z przepełnieniem danych.

Rodzaje typów danych całkowitych w CODESYS

CODESYS obsługuje następujące typy danych całkowitych:

  • Signed Integer (INT) – standardowa liczba całkowita obejmująca wartości ujemne. Zakres: -32 768 do 32 767, zajmuje 16 bitów pamięci.
  • Short Integer (SINT) – mniejsza liczba całkowita ze znakiem, zakres: -128 do 127, zajmuje 8 bitów pamięci.
  • Double Integer (DINT) – większa liczba całkowita, zakres: -2 147 483 648 do 2 147 483 647, zajmuje 32 bity pamięci.
  • Unsigned Short Integer (USINT) – liczba całkowita bez znaku, zakres: 0 do 255, zajmuje 8 bitów.
  • Unsigned Integer (UINT)16-bitowa liczba całkowita bez znaku, zakres: 0 do 65 535.
  • Unsigned Double Integer (UDINT)32-bitowa liczba całkowita bez znaku, zakres: 0 do 4 294 967 295.

Aby uzyskać więcej informacji na temat typów całkowitych w CODESYS, możesz skorzystać z CODESYS Help w sekcji:

Reference -> Programming -> Data Types -> Integer Data Types.

Przydział pamięci i limity

Każdy typ danych całkowitych ma inny rozmiar pamięci i zakres. Na przykład:

  • Signed Integer (INT): Zajmuje 16 bitów, zakres od -32 768 do 32 767.
  • Unsigned Integer (UINT): Zajmuje 16 bitów, zakres od 0 do 65 535.
  • Signed Byte (SINT): Zajmuje 8 bitów, zakres od -128 do 127.
  • Unsigned Byte (USINT): Zajmuje 8 bitów, zakres od 0 do 255.

Oznacza to, iż wybór odpowiedniego typu całkowitego jest najważniejszy dla uniknięcia przepełnienia danych oraz optymalizacji wykorzystania pamięci w programach PLC.

Deklarowanie zmiennych całkowitych w CODESYS

Krok 1: Otwarcie projektu

  1. Otwórz CODESYS i utwórz nowy projekt.
  2. Przejdź do PLC_PRG.

Krok 2: Deklarowanie zmiennych całkowitych

Aby zadeklarować zmienną całkowitą, wykonaj następujące kroki:

  1. Znajdź prefiks dla zmiennych całkowitych w tabeli referencyjnej.
  2. Użyj notacji węgierskiej do nazwania zmiennej, na przykład: iVar := 5000;
  3. i oznacza zmienną całkowitą.
  4. Var to wybrana nazwa.
  5. := służy do przypisania wartości, a polecenie kończy się średnikiem (;).
  6. Naciśnij Enter, aby otworzyć okno Auto Declare.

Krok 3: Ustawienie typu danych

  1. W oknie Auto Declare ustaw typ danych na INT.
  2. Lokalizacja w pamięci oraz zakres zmiennej (lokalny/globalny) zostaną określone automatycznie.
  3. Kliknij OK, aby potwierdzić deklarację.
xVar := TRUE; // writing True value to boolean variable (* Integer data types examples*) // INT range(16 bits): -32767 to +32767 // DINT range (32 bits): -2 147 483_648 to +2 147 483 647 // LINT range (64 bits): -9 223 372 036 854 775 808 to +9 223 372 036 854 775_807 // USINT range (8 bits): 0 to 255 iVar := 5000;

Obsługa przepełnienia liczb całkowitych

Co się stanie, jeżeli przekroczysz maksymalną wartość dla danego typu całkowitego? Przetestujmy to:

  1. Zadeklaruj zmienną całkowitą z wartością przekraczającą 32 767: iVar := 40000;
  2. Kliknij Kompiluj. Otrzymasz błąd informujący, iż wartość przekracza zakres typu całkowitego.
  3. Aby to rozwiązać, zmień typ danych na DINT (Double Integer): diVar := 40000;
  4. Zaktualizuj również prefiks z i na di.

Korzystając z DINT, program będzie teraz obsługiwał większy zakres wartości bez błędów.

Deklarowanie zmiennych typu Unsigned Integer

Zmienne typu całkowitego bez znaku (unsigned) nie dopuszczają wartości ujemnych. Zadeklarujmy teraz typ całkowity bez znaku krótkiej długości (Unsigned Short Integer – USINT):

  1. Otwórz okno deklaracji i wprowadź: usiVar : USINT := 200;
  2. Ta zmienna może przechowywać wartości w zakresie od 0 do 255.
  3. Jeśli spróbujesz przypisać -10, w kompilatorze pojawi się ostrzeżenie: usiVar := -10;
  4. Kompilator powiadomi cię o problemie z implicitzną konwersją, ponieważ wartości ujemne nie są dozwolone.
  5. Uruchomienie symulacji pokaże, iż zapisana wartość jest interpretowana inaczej z powodu ograniczenia typu bez znaku.

Optymalizacja użycia pamięci

Dlaczego nie zawsze używać dużych typów całkowitych? Powód jest związany z efektywnością pamięci. Na przykład:

  • SINT (8-bit) zużywa mniej pamięci niż INT (16-bit).
  • UINT (16-bit) jest bardziej efektywny niż DINT (32-bit) do przechowywania małych liczb dodatnich.
  • Jeśli pamięć jest dobrze zoptymalizowana, programy PLC działają szybciej, co jest najważniejsze w automatyce.

Rozważne używanie typów całkowitych zapewnia efektywne zarządzanie pamięcią i poprawia wydajność aplikacji przemysłowych.

Podsumowanie

Efektywne zarządzanie pamięcią i zmiennymi w CODESYS jest najważniejsze dla optymalizacji zasobów PLC i zapewnienia prawidłowego działania programu. Artykuł ten omawia podstawowe jednostki pamięci, typy zmiennych i metody deklaracji, podkreślając znaczenie wyboru odpowiednich typów danych dla wydajności systemu i jego stabilności.

Darmowy zarys kursu CODESYS

  1. Lekcja #1: Czym jest? Dlaczego powinieneś go znać?! – PART 1
  2. Lekcja #2: Jak zainstalować Codesys? – PART 2
  3. Lekcja #3: Napisz swój pierwszy program w Codesys: Structured Text – Part #3
  4. Lekcja #4: Jak stworzyć wizualizację Codesys w aplikacji? – Part #4
  5. Lekcja #5: Wprowadzenie do zmiennych w CODESYS – Part #5
  6. Lekcja #6: Struktury danych w CODESYS: Praktyczne zastosowanie tablic i struktur – Part #6
  7. Lekcja #7: Zaawansowane typy danych. Wyliczenia i zmienne lokalne vs. globalne – Part #7
  8. Lekcja #8: Operatory – Wprowadzenie i praktyczne zastosowania – Part #8
  9. Lekcja #9: Kontrola przepływu programu: IF, CASE i pętle – Part #9
Idź do oryginalnego materiału