Reklama: Chcesz umieścić tutaj reklamę? Zapraszamy do kontaktu »
Veichi
Powrót do listy artykułów Aktualizowany: 2021-02-26
Typy danych w Codesys, rodzaje zmiennych, sposoby ich tworzenia |Kurs programowania w Codesys odc. 4

Z tego artykułu dowiesz się:

  • jakie typy zmiennych obsługuje Codesys,
  • jak je definiować,
  • czym są zmienne lokalne i globalne.


Witaj w kolejnym, czwartym już odcinku kursu Codesys od podstaw. Tym razem skupimy się nieco bardziej na teorii niż praktyce, ponieważ przedstawimy Ci typy zmiennych, jakie możesz wykorzystywać w Codesysie, a także jak je definiować i z nich korzystać.

Zabierzmy się w takim razie do pracy!

Po co definiować typ zmiennej?

Zacznijmy od fundamentalnego pytania – po co w ogóle definiować typ zmiennej? Przecież jest to najczęściej po prostu liczba, którą wpisujemy w pamięć sterownika. Pytanie może wydawać się błahe, jednak odpowiedź na nie niesie ze sobą sporo wiedzy.

1_Astraada_one_codesys_kurs_ASTOR_1_01.jpgSterownik PLC Astraada One realizujący program sterowania serwonapędami, źródło: ASTOR

Jak zapewne wiesz, sterownik PLC zapamiętuje dane w formie binarnej, a więc przy pomocy 0 i 1. Jedna taka 1 czy 0 to jeden bit. Pamięć może być dzielona na konkretne fragmenty: 1-bitowe, 8-bitowe, 16-bitowe, 32-bitowe, a nawet 64-bitowe. Wszystko zależy od możliwości sterownika, a także właśnie od definicji zmiennej.

Załóżmy, że wprowadzamy do pamięci kontrolera liczbę 65. Sterownik widzi tą liczbę jako 8-bitowe słowo: 0100 0001 – jest to zapis liczby w języku binarnym. W związku z tym jak kontroler ma je odczytać? Tutaj właśnie pojawia się sens definicji zmiennych – bowiem jeżeli zdefiniujemy, że to słowo, to:

  • zmienna liczbowa decymalna – to wtedy sterownik odczyta szyk 0 i 1 tak, jak wpisaliśmy z klawiatury, a więc: 65,
  • stan I/O, czyli zmienna logiczna – kontroler wystawi w stan wysoki wejście, bądź wyjście 1 oraz 7,
  • zmienna liczbowa heksadecymalna – sterownik odczyta jako 41,
  • zmienna tekstowa STRING – wtedy kontroler zdefiniuje wprowadzone dane jako literę A.

Oczywiście przykładów tutaj może być tyle, co rodzajów zmiennych, ale sens już powinien się wyklarować. Wprowadzenie danej to dopiero połowa sukcesu – konieczne jest pokazanie sterownikowi, jak ma odczytać podane informacje. Liczba 65, czy też słowo bitowe 0100 0001 może mieć wiele postaci. To od nas zależy, która konkretnie jest nam potrzebna.

Rodzaje i typy zmiennych

Rodzajów i typów zmiennych jest bardzo dużo. W związku z tym bardzo dobrą praktyką jest odpowiednie ich wykorzystywanie. Upraszcza to program i upłynnia jego działanie, ponieważ chronimy tym samym sterownik przed zbędnym zaśmiecaniem pamięci. Podstawowe rodzaje zmiennych są określone przez normę IEC 61131-3.

Według tej normy każdy sterownik PLC, a co za tym idzie, każde oprogramowanie musi obsługiwać zmienne:

  • logiczne, a więc prawda/fałsz, czy też 1/0,
  • liczbowe całkowite jak i zmiennoprzecinkowe,
  • tekstowe,
  • czasu.

Jak to wygląda w Codesys? Omówmy wszystko po kolei.

Zmienne całkowite

Zmienne całkowite, czyli po angielsku Integer, można rozbić na dwie grupy: binarne i liczbowe. W grupie binarnych znajdują się typy, które odczytują dane jako ciąg 0 i 1. Może to być najbardziej popularny BOOL o wielkości 1 bita, lub też BYTE wielkości 8 bitów. Pełen spis znajdziesz w tabeli poniżej.

image-3.pngZmienne logiczne, źródło: Codesys

Powyższe typy to zmienne logiczne, a więc sterownik zawsze odczyta je jako ciąg PRAWDA/FAŁSZ. Dla przykładu, jeśli podasz wartość 2 dla zmiennej typu BYTE, sterownik odczyta to jako 0000 0010, czyli FAŁSZ/FAŁSZ/FAŁSZ/FAŁSZ FAŁSZ/FAŁSZ/PRAWDA/FAŁSZ – nie będzie tutaj mowy o żadnej 2.

Kolejną grupą są zmienne liczbowe. Wykorzystuje się je do obliczeń matematycznych lub też po prostu do pracy na konkretnych liczbach całkowitych lub zmiennoprzecinkowych. Tak więc jeżeli chcesz zdefiniować konkretną liczbę np. 59 w celu dalszych obliczeń, albo nawet zwykłego jej wyświetlenia – musisz skorzystać z tej grupy zmiennych.

Zmienne te różnią się od siebie przede wszystkim rozmiarem. Jest to kluczowe dla poprawnego działania programu, o którym wspominane było we wstępie do podrozdziału. Przykładowo, gdy mamy do zdefiniowania liczbę 13, najlepiej użyć najmniejszego typu, a więc SINT, dzięki temu zajmiemy w pamięci zaledwie 8 bitów – 0000 1101. Definiując taką liczbę jako LINT, zajmiemy aż 64 bity, z czego zdecydowana większość bitów będzie po prostu wynosiła 0 – 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1101. Spowolni to odczyt liczby i zajmie niepotrzebne miejsce w pamięci. Pełną tabelę znajdziesz poniżej.

image.pngZmienne liczbowe, źródło: Codesys

Zmienne tekstowe

Jak zaprezentować tekst przy pomocy liczb? Do tego służą specjalne zmienne tekstowe. Każdy znak alfabetu posiada swój unikalny kod binarny, tak więc należy tylko dać informacje sterownikowi, które bity musi odczytać jako właśnie tekst.

W środowisku Codesys wyróżniamy dwa typy zmiennych tekstowych STRING oraz WSTRING. Zmienna typu STRING służy do zapisywania klasycznego tekstu pisanego. Mowa tutaj o literach alfabetu i niektórych znakach specjalnych – wszystko to jest zawarte w ustandaryzowanej tabeli ASCII. Zmienna STRING zajmuje w pamięci 8 bitów.

Drugi typ, a więc WSTRING, służy do zapisywania znaków w nowoczesnym, bardziej zaawansowanym standardzie UNICODE. Dostarcza on znacznie więcej możliwości od klasycznej tabeli ASCII – zmienna zajmuje 16 bitów w pamięci.

Zmienne czasu

Ostatnim rodzajem zmiennych dostępnych w Codesys, są zmienne czasu. Dzięki nim sterownik jest w stanie śledzić upływ czasu w jednostkach, w których robimy to na co dzień, a więc sekundach, minutach, godzinach, a nawet dniach czy latach. Poniżej tabela z tymi właśnie zmiennymi. Zmienne te wykorzystuje się najczęściej w timerach odmierzających czas, lub też w zegarach do wizualizacji.

image-2.pngZmienne czasu, źródło: Codesys

Tworzenie zmiennych

Przeczytaj pełną wersję artykułu na Poradniku Automatyka >>>

Sprawdż kurs programowania w środowisku Codesys >>>

 

Autor:
Rafał Pilch
Źródło:
Poradnik Automatyka
Dodał:
ASTOR Sp. z o.o.