Typy danych

Każda zmienna w sterowniku automatyzacji (SPS) otrzymuje automatycznie odpowiedni typ danych. Przekształcenie musi być ustawione tylko w interfejsie. W tym rozdziale wyjaśniane są poszczególne typy z Antcas Control.

Wartość logiczna BOOL

Ten typ może mieć tylko dwa stany. Prawda lub fałsz. W aplikacji można zamiast zmiennej określić wartość TRUE (prawda) lub FALSE (fałsz).

Ponadto używany jest specjalny typ NULL. Ten stan jest ustawiany podczas inicjalizacji zmiennej, czyli niezapisanej. Ponadto za pomocą NULL możliwe są funkcje specjalne. Na przykład, gdy żadna wartość nie może być komunikowana przez interfejs.

Liczby całkowite INT (Integer)

Całkowita liczba to liczba całkowita, taka jak np. 0 lub 26. Ponadto wartość może być ujemna. Antcas Control pracuje z 64-bitowym sterownikiem automatyzacji (SPS), który umożliwia obliczanie bardzo dużych liczb. Największa liczba jest określona stałą INT_MAX (9223372036854775807). Najmniejsza liczba znajduje się w INT_MIN lub INT_MAX+1, ponieważ znak używa jednego bitu. Wszystkie liczby poza zakresem są stosowane w liczbie zmiennoprzecinkowej z wykładnikiem. Obliczenia są wtedy nieprecyzyjne.

Liczba całkowita może otrzymać wartość -0, która nie jest równa FALSE. Jednak sprawdzenie funkcją EQ(-0,0) daje wynik TRUE. -0 Może być zdefiniowane tylko jako ciąg znaków '-0'.

Można również bezpośrednio zdefiniować wartość heksadecymalną. Zaczyna się ona od 0x lub 0X. Na przykład, z 0xFF staje się 255.

Liczby zmiennoprzecinkowe REAL (Float)

Liczba zmiennoprzecinkowa lub wartość rzeczywista to liczba dziesiętna, taka jak np. 0.1 lub 22.005 (z kropką). Wspierane są również wykładniki. Na przykład, 10E2 dla 1'000 lub 10e-2 dla 0.1. Wielkość liter nie ma znaczenia. Spróbujemy przekształcić liczbę w całkowitą, ponieważ obliczenia są prostsze dla sterownika automatyzacji (SPS). Może się zdarzyć, że obliczenia z dużymi liczbami będą nieprecyzyjne. Maksymalna liczba miejsc po przecinku jest stałe ograniczona do 14, aby zwiększyć wydajność sterownika automatyzacji (SPS).

Liczby zmiennoprzecinkowe mają ograniczoną precyzję. Chociaż zależy to od systemu, Antcas Control zwykle używa formatu IEEE 754 Double Precision, który daje maksymalny względny błąd zaokrąglenia w rzędzie 1.11e-16. Nieelementarne operacje arytmetyczne mogą jednak powodować większe błędy i oczywiście należy uwzględnić propagację błędu, gdy kilka operacji jest połączonych.

Ponadto istnieją liczby wymierne, które można dokładnie przedstawić jako liczby zmiennoprzecinkowe o podstawie 10, na przykład 0.1 lub 0.7, ale nie ma dla nich dokładnego przedstawienia jako liczb zmiennoprzecinkowych o podstawie 2, które są używane wewnętrznie niezależnie od wielkości mantysy. Dlatego nie można ich przekształcić w swoje wewnętrzne binarne reprezentacje bez niewielkiej utraty precyzji. Może to prowadzić do mylących wyników: FLOOR((0.1+0.7)*10) zwykle da 7 zamiast oczekiwanego wyniku 8, ponieważ wewnętrzna reprezentacja jest taka jak 7.9999999999999991118.

Dlatego nigdy nie należy polegać na liczbach zmiennoprzecinkowych do ostatniego miejsca po przecinku i nigdy bezpośrednio sprawdzać ich równości.

Łańcuch znaków STRING

Łańcuch znaków lub też string jest zdefiniowany za pomocą pojedynczego cudzysłowia ' ' lub podwójnego cudzysłowia " ". Na przykład, 'Tekst 1' lub "Test!". Za pomocą bloku funkcji CONCAT można połączyć kilka łańcuchów znaków.

Przeniesienie linii lub nowy wiersz można utworzyć za pomocą CTRL+Enter. Jest to wtedy przedstawiane przez strzałkę ↵.

Znacznik ucieczki dla podania ' lub " w samym łańcuchu znaków nie jest konieczny. Łańcuch znaków może być bezpośrednio określony jako "Tutaj jest znak "" ".

Można zadeklarować znaki specjalne bezpośrednio. W tym celu w łańcuchu znaków podaje się następujący ciąg znaków w podwójnych cudzysłowiach:

Sequencja ucieczkowa Skrót ASCII
\\ Escaped \
\n LF
\r CR
\r\n CRLF
\0 NUL
\t TAB
\e ESC
\f FORMFEED
\x## Dowolny bajt

Aby na przykład zadeklarować dowolny bajt 126 lub 7E jako liczbę heksadecymalną, używa się następującego wyrażenia: "\x7E". Ten łańcuch znaków odpowiada wtedy "~".

Tutaj 7E służy jako wartość zastępcza. Można podać wszystkie wartości w zakresie liczb heksadecymalnych od 00 do FF. Uwzględnij, że UTF-8 BOM "\xEF\xBB\xBF" jest automatycznie usuwane przez większość przeglądarek. Można zamaskować ciąg znaków. W tym celu używa się prowadzącego ukośnika odwrotnego: "\\x7E" co odpowiada wtedy '\x7E'.

Uwaga: Wszystkie łańcuchy znaków poza zakresem UTF-8 nie mogą być przechowywane w sposób trwały. W widoku na żywo są one przedstawiane jako ciemnofioletowe.

Zobacz również artykuł Konwersja łańcuchów znaków w liczby.

Data i czas DT (Date and Time)

Definiuje datę i czas z DT#, na przykład DT#2016-03-25-22:12:00. Czas jest przekształcany w liczbę całkowitą w ms od daty 01.01.1970 (ta wartość znajduje się w strefie czasowej UTC/GMT).

Data D (Date)

Definiuje datę od północy z D#, na przykład D#2016-03-25. Czas jest przekształcany w liczbę całkowitą w ms od daty 01.01.1970 (ta wartość znajduje się w strefie czasowej UTC/GMT).

Czas T (Time)

Definiuje czas w milisekundach z T#, na przykład T#5d3h5m11s500ms. Czas jest przekształcany w liczbę całkowitą w ms.

Tablica

Tablicę nie można bezpośrednio zdefiniować. Jednak można przypisać wartości zmiennej za pomocą kropki. Zobacz Zmienne.

BARDZO WAŻNE: Nigdy nie definiuj wartości poniżej w tablicy. Na przykład set i set.p - Sterownik automatyzacji (SPS) będzie się tutaj wyłączał. I dlatego nie będzie działać. Ponadto może to prowadzić do nieoczekiwanych błędów.