Определение переменных и констант

  Особенности присвоения значений переменным

Вид константы или переменной (глобальная, локальная) задается оператором, с помощью которого данная переменная (константа) определяется (см. Операторы определения переменных в разделе Операторы Техно ST ). Синтаксис операторов определения переменных предполагает обязательное указание типа данных:

//определение локальной строковой

//переменной myVar

VAR myVar: STRING; END_VAR

Тип данных определяет размер выделяемой памяти. Для указания типа в Техно ST определены следующие ключевые слова (в круглых скобках указано соответствие типу данных C):

BOOL (bool) – булево значение размерностью 1 байт (true (1) или false (0));

SINT (__int8) – целое со знаком размерностью 1 байт (-128 ... 127);

USINT (unsigned __int8) – целое без знака размерностью 1 байт (0 ... 255);

INT (short) – целое со знаком размерностью 2 байта (-32768 ... 32767);

UINT (unsigned short) – целое без знака размерностью 2 байта  (0 ... 65535);

DINT (long) – целое со знаком (4 байта) (-2147483648 ... 2147483647);

UDINT (unsigned long) – целое без знака (4 байта) (0 ... 4294967295);

TIME, DATE, TIME_OF_DAY, DATE_AND_TIME – соответствуют DINT. Значения переменных этих типов задаются аналогично соответствующим временным константам (см. Числовые константы Техно ST );

REAL (float) – вещественное число (4 байта) (максимальное значение 3.402823466e+38);

LREAL (double) – вещественное число (8 байт) (максимальное значение 1.7976931348623158e+308);

STRING (WCHAR*) – 256 символов в кодировке utf-8 (512 байт, см. также Строковые константы Техно ST );

HANDLE – специальный тип, используемый для хранения внешних данных в виде числа, имеет размерность 4 байта, не может быть использован в арифметических, логических и т.п. операциях.

Кроме указанных типов, переменной может быть присвоен структурный тип, созданный пользователем. Такая переменная является конкретным объектом указанного типа (см. Структуры Техно ST ). 

При определении переменной может быть задано ее значение:

VAR i: INT:=0; END_VAR

Если при определении переменной ее значение не задано, то этой переменной по умолчанию присваивается следующее начальное значение:

числовая переменная – 0;

переменная типа BOOLFALSE;

переменная типа  STRING – пустая строка;

переменная типа HANDLE – 16#00000000 (0 в формате HEX);

переменная типа TIME, DATE, TIME_OF_DAY или DATE_AND_TIME – 0.

При определении константы задание ее значения обязательно:

VAR CONSTANT myConst: INT:=13; END_VAR

В отличие от переменной, значение константы в программе изменять нельзя.

Особенности присвоения значений переменным

При присвоении значения переменной типа TYPE1 переменной типа TYPE2 нужно учитывать следующее:

   присвоение корректно только в том случае, если тип TYPE2 заключает в себе все числа типа TYPE1:

VAR a: REAL := -1564.343; END_VAR

VAR b: USINT := 50; END_VAR

a = b;  //корректная операция

b = a;  //некорректная операция

   присвоение корректно, если один из типов – BOOL, а другой – любой численный. Логическое значение TRUE соответствует единице, FALSE – нулю; нуль соответствует FALSE, любое ненулевое значение, в том числе отрицательное, соответствует TRUE:

VAR a: BOOL; END_VAR

VAR b: SINT := -50; END_VAR

a = b; //a = TRUE, корректная операция

b = a; //b = 1, корректная операция