Типы данных

Каждая переменная в ПЛК автоматически получает правильный тип данных. Преобразование нужно устанавливать только в интерфейсе. В этом разделе объясняются различные типы Antcas Control.

Логический тип BOOL

Этот тип может иметь только два состояния: истинное или ложное. Вместо переменной в приложении можно определить значение с TRUE (истина) или FALSE (ложь).

Кроме того, используется специальный тип NULL. Это состояние устанавливается при инициализации переменной, то есть неопределенной. Кроме того, с помощью NULL возможны специальные функции. Например, если значение не должно передаваться через интерфейс.

Целые числа INT (Integer)

Целое число — это целое число, например, 0 или 26. Кроме того, значение может быть отрицательным. Antcas Control работает с 64-битным ПЛК, который позволяет вычислять очень большие числа. Самое большое число определено константой INT_MAX (9223372036854775807). Самое маленькое число указано в INT_MIN или INT_MAX+1, так как знак использует один бит. Все числа за пределами этого диапазона применяются в виде Float с экспонентой. Тогда вычисление становится неточным.

Целое число может получить значение -0, которое не равно FALSE. Однако проверка с функцией EQ(-0,0) дает TRUE. При этом -0 может быть определено только как строка '-0'.

Также можно напрямую определить шестнадцатеричное значение. Оно начинается с 0x или 0X. Например, из 0xFF получается 255.

Числа с плавающей точкой REAL (Float)

Число с плавающей точкой или вещественное число — это число с плавающей точкой, например, 0.1 или 22.005 (с точкой). Также поддерживаются экспоненты. Например, 10E2 для 1'000 или 10e-2 для 0.1. Регистр не имеет значения. Пытается преобразовать число в целое, так как вычисление проще для ПЛК. Может случиться так, что при больших числах вычисления становятся неточными. Максимальное количество знаков после запятой фиксировано на 14, чтобы повысить производительность ПЛК.

Числа с плавающей точкой имеют ограниченную точность. Хотя это зависит от системы, Antcas Control обычно использует Формат двойной точности IEEE 754, который дает максимальную относительную погрешность округления порядка 1.11e-16. Однако неэлементарные арифметические операции могут вызывать более крупные ошибки, и естественно, необходимо учитывать распространение ошибок, если несколько операций объединены.

Кроме того, существуют рациональные числа, которые могут быть точно представлены как числа с плавающей точкой по основанию 10, например 0.1 или 0.7, но для которых нет точного представления как чисел с плавающей точкой по основанию 2, которое используется внутренне независимо от размера мантиссы. Поэтому они не могут быть преобразованы в их внутреннее двоичное представление без небольшой потери точности. Это может привести к запутывающим результатам: FLOOR((0.1+0.7)*10) обычно даст 7 вместо ожидаемого результата 8, так как внутреннее представление похоже на 7.9999999999999991118.

Поэтому никогда не следует полагаться на числа с плавающей точкой до последней десятичной цифры и никогда напрямую проверять их на равенство.

Строка STRING

Строка или строка определяется с помощью одинарной кавычки ' ' или двойной кавычкой " ". Например, 'Текст 1' или "Тест!". С помощью функционального блока CONCAT можно объединить несколько строк.

Перевод строки или новая строка может быть создана с помощью CTRL+Enter. Это затем отображается как стрелка ↵.

Символ экранирования для указания ' или " внутри самой строки не требуется. Строку можно напрямую указать как "Здесь есть знак "".

Возможно прямое объявление специальных символов. Для этого внутри строки указывается следующая последовательность с двойными кавычками:

Последовательность экранирования Сокращение ASCII
\\ Экранированный \
\n LF
\r CR
\r\n CRLF
\0 NUL
\t TAB
\e ESC
\f FORMFEED
\x## Произвольный байт

Чтобы, например, объявить произвольный байт 126 или 7E как шестнадцатеричное число, используется следующее выражение: "\x7E". Эта строка соответствует "~".

Здесь 7E служит в качестве заполнителя. Можно указать все значения в пределах шестнадцатеричных значений от 00 до FF. При этом обратите внимание, что UTF-8 BOM "\xEF\xBB\xBF" обычно автоматически удаляется большинством браузеров. Возможно скрыть строку. Для этого используется ведущая обратная косая черта: "\\x7E", что соответствует '\x7E'.

Внимание: Все строки за пределами области UTF-8 не могут быть сохранены постоянно. В режиме реального времени они отображаются темно-фиолетовым цветом.

См. также статью Конвертация строк в числа.

Дата и время DT (Date and Time)

Определяет дату и время с помощью DT#, например, DT#2016-03-25-22:12:00. Время преобразуется в целое число в миллисекундах от даты 01.01.1970 (это значение находится в часовом поясе UTC/GMT).

Дата D (Date)

Определяет дату с полуночи с помощью D#, например, D#2016-03-25. Время преобразуется в целое число в миллисекундах от даты 01.01.1970 (это значение находится в часовом поясе UTC/GMT).

Время T (Time)

Определяет время в миллисекундах с помощью T#, например, T#5d3h5m11s500ms. Время преобразуется в целое число в миллисекундах.

Массив

Массив нельзя определить напрямую. Однако можно сопоставить переменную с точкой. См. Переменные.

ОЧЕНЬ ВАЖНО: Никогда не определяйте значение ниже в массиве. Например, set и set.p - ПЛК будет здесь аварийно остановлен. И поэтому не будет работать. Кроме того, это может привести к непредвиденным ошибкам.