Функции преобразования типов
Функции преобразования типов используются для конвертации значений из одного типа данных в другой.
Общий синтаксис
Все функции преобразования имеют следующий формат:
result := _TO_(_source_);
|
Где:
- source_type — исходный тип данных
- target_type — целевой тип данных
Доступные преобразования
Преобразования выполняются по следующему принципу: любое значение может быть преобразовано из одного типа в другой, если оба типа входят в список поддерживаемых.
Поддерживаемые типы для преобразования:
Целочисленные типы:
BYTE,WORD,DWORD,LWORD,SINT,USINT,INT,UINT,DINT,UDINTВещественные типы:
REAL,LREALЛогический тип:
BOOLВременные типы:
TIME,LTIME
Примеры имен функций:
INT_TO_REAL // Преобразование INT в REAL
REAL_TO_INT // Преобразование REAL в INT
BOOL_TO_DINT // Преобразование BOOL в DINT
TIME_TO_INT // Преобразование TIME в INT
DINT_TO_TIME // Преобразование DINT в TIME
|
Преобразование числовых типов
Примеры:
VAR
int_val : INT := 123;
real_val : REAL;
dint_val : DINT;
bool_val : BOOL := TRUE;
int_from_bool : INT;
END_VAR
// Преобразование INT в REAL
real_val := INT_TO_REAL(int_val); // real_val = 123.0
// Преобразование INT в DINT
dint_val := INT_TO_DINT(int_val); // dint_val = 123
// Преобразование REAL в INT (отбрасывание дробной части)
real_val := 3.14;
int_val := REAL_TO_INT(real_val); // int_val = 3
// Преобразование BOOL в INT
int_from_bool := BOOL_TO_INT(bool_val); // int_from_bool = 1
// Преобразование INT в BOOL
bool_val := INT_TO_BOOL(0); // bool_val = FALSE
bool_val := INT_TO_BOOL(5); // bool_val = TRUE
|
Преобразование временных типов
Типы TIME и LTIME могут преобразовываться в целочисленные типы и обратно.
Примеры:
VAR
time_val : TIME := T#5000ms;
int_val : INT;
dint_val : DINT;
END_VAR
// Преобразование TIME в INT (количество миллисекунд)
int_val := TIME_TO_INT(time_val); // int_val = 5000
// Преобразование TIME в DINT
dint_val := TIME_TO_DINT(time_val); // dint_val = 5000
// Преобразование DINT в TIME
time_val := DINT_TO_TIME(10000); // time_val = T#10s
|
Правила преобразований
Преобразование BOOL в числовые типы:
FALSEпреобразуется в 0TRUEпреобразуется в 1
Преобразование числовых типов в BOOL:
0 преобразуется в
FALSEЛюбое ненулевое значение преобразуется в
TRUE
Преобразование REAL/LREAL в целочисленные типы:
Дробная часть отбрасывается (преобразование в сторону нуля)
Пример:
REAL_TO_INT(3.99)→3Пример:
REAL_TO_INT(-3.99)→-3
Преобразование TIME/LTIME в числовые типы:
Значение времени преобразуется в количество миллисекунд
Пример:
TIME_TO_INT(T#5s)→5000
Преобразование числовых типов в TIME/LTIME:
Числовое значение интерпретируется как количество миллисекунд
Пример:
INT_TO_TIME(5000)→T#5s
Примечание
Преобразования строковых типов (STRING) не поддерживаются
Преобразования типов даты и времени (DATE, TOD, DT) поддерживаются только в целочисленные типы
При преобразовании в BOOL: 0 = FALSE, всё остальное = TRUE
При преобразовании из REAL в целочисленные типы дробная часть отбрасывается
См. также
Встроенные типы данных - для информации о типах данных.
Математические функции - для математических функций.