Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
31.08.2025
Размер:
5.84 Mб
Скачать

Приложение В: Операнды в CoDeSys

Приложение В: Операнды в CoDeSys

В качестве операндов могут выступать константы переменные, адреса и вызовы функций.

Константы

BOOL

BOOL константы могут иметь значение TRUE или FALSE.

TIME

Константы типа TIME в CoDeSys всегда начинаются с префикса "t" или "T" (длинная форма "time" или "TIME") и знака числа "#". Далее следует собственно время, которое может включать дни "d", часы "h", минуты "m", секунды "s" и миллисекунды "ms". Нет необходимости обязательно определять все составляющие времени, но присутствующие поля обязаны следовать именно в таком порядке (d, затем h, затем m, затем s, затем m, затем ms).

Правильные примеры TIME констант в ST:

TIME1 := T#14ms;

TIME1 := T#100S12ms; (*Старший компонент может выходить за свой предел*) TIME1 := t#12h34m15s;

Ошибочные примеры:

 

TIME1 := t#5m68s;

(*Младший компонент вышел за предел*)

TIME1 := 15ms;

(*T# пропущено*)

TIME1 := t#4ms13d;

(*Ошибочная последовательность*)

DATE

Константы типа DATE начинаются с префикса "d", "D", "DATE" или "date" и последующего "#". Даты задаются в формате Год-Месяц-День.

Примеры:

DATE#1996-05-06 d#1972-03-29

См. также 10.14 Переменные типа DATE

TIME_OF_DAY

Константы типа A TIME_OF_DAY начинаются с префикса "tod#", "TOD#", "TIME_OF_DAY#"

или "time_of_day#" и последующего времени в формате: Часы:Минуты:Секунды. Секунды можно задавать в виде десятичной дроби.

Примеры:

TIME_OF_DAY#15:36:30.123 tod#00:00:00

DATE_AND_TIME

Константы типа DATE_AND_TIME начинаются с префикса "dt#", "DT#", "DATE_AND_TIME#"

или "date_and_time#". Дата и время приводятся последовательно через дефис.

Примеры:

DATE_AND_TIME#1996-05-06-15:36:30 dt#1972-03-29-00:00:00

CoDeSys V2.3

10-27

Приложение В: Операнды в CoDeSys

Целочисленные константы

Числовые значения могут быть представлены в двоичной, восьмеричной, десятичной и шестнадцатеричной форме.

Если число не десятичное, необходимо указать основание числа с префиксом # перед числом. Цифры диапазона 10-15 в шестнадцатеричной форме заменяются литерами A-F.

Для удобства чтения в любом месте числа можно вставить подчеркивание.

Примеры:

14

(*десятичное число*)

2#1001_0011

(*двоичное число*)

8#67

(*восьмеричное число*)

16#A

(*шестнадцатеричное число*)

Данные числа могут быть представлены типами BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL и LREAL. Неявное преобразование из "большего" в "младший" тип переменной не производится. Это означает, что нельзя просто использовать DINT как INT переменную, необходимо применять преобразование типов (см. раздел «Преобразование типов»).

REAL/LREAL

REAL и LREAL константы представляются в формате с десятичной точкой либо в экспоненциальном формате. Запятая вместо точки не допускается.

Примеры:

7.4 но не 7,4

1.64e+009 но не 1,64e+009

STRING

Константы типа STRING представляются в виде набора символов, заключенных в одинарные кавычки. Строка может содержать пробелы и специальные символы (например, умляуты). Символы, не имеющие печатного образа, могут быть заданы шестнадцатеричным кодом в виде двух цифр, следующих за знаком доллара ($). Специальные комбинации из двух символов, начинающиеся со знака доллара, интерпретируются следующим образом:

$$

Знак доллара

$'

Одинарная кавычка

$L или $l

Line feed

$N or $n

New line

$P or $p

Page feed

$R or $r

Line break

$T or $t

Tab

Примеры:

'Полет нормальный' ' Abby and Craig ' ':-)'

Типизированные константы

Обычно при использовании МЭК констант подразумевается наименьший из возможных типов данных. Если нужно точно указать тип константы, применяется префикс типа: <Type>#<Literal>

CoDeSys V2.3

10-28

Приложение В: Операнды в CoDeSys

<Type> указывает необходимый тип. Это может быть: BOOL, SINT, USINT, BYTE, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, LREAL. Тип нужно указывать заглавными буквами.

<Literal> указывает значение константы.

Пример:

var1:=DINT#34;

Если значение константы не соответствует требуемому типу, CoDeSys выдаст соответствующее сообщение об ошибке.

Переменные

Переменные могут быть объявлены либо как локальные в разделе определений POU, либо как глобальные - в списке глобальных переменных.

Внимание: Глобальная и локальная переменные могут иметь одинаковое имя. В POU, где объявлена такая локальная переменная, она оказывается «сильнее» одноименной глобальной. Использовать одноименные глобальные переменные нельзя (например, объявленные в конфигурации контроллера и в списке глобальных переменных).

Имя переменной (идентификатор) не должно содержать пробелов и спецсимволов, не должно объявляться более одного раза и не должно совпадать с ключевыми словами. Регистр символов не учитывается, это означает, что VAR1, Var1 и var1 - это одна и та же переменная.

Символ подчеркивания является значимым, т.е. "A_BCD" и "AB_CD" - это разные имена.

Имя должно включать не более одного символа подчеркивания. Ограничений на длину имени нет. Область применения переменной задается ее типом. Список всех объявленных переменных в CoDeSys доступен через ассистент ввода (Input Assistant).

Системные флаги

Системные флаги - это неявно объявленные переменные, различные для конкретных моделей PLC. Для получения списка доступных системных флагов используйте команду "Вставка" "Операнд" ("Insert" "Operand"). В диалоге "Ассистент ввода" (Input Assistant) флаги собраны в разделе

System Variable.

Синтаксис доступа к элементам массивов, структур и POU

Элемент двумерного массива: <ИмяМассива>[Индекс1, Индекс2]

Переменная структуры: <ИмяСтруктуры>.<ИмяПеременной>

Переменная программы или функционального блока: <ИмяФункциональногоБлока>.<ИмяПеременной>

Доступ к битам в переменных

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

a : INT;

b : BOOL;

...

a.2 := b;

CoDeSys V2.3

10-29

Приложение В: Операнды в CoDeSys

В примере значение третьего бита переменной a будет присвоено переменной b.

Если указанный номер бита превышает размер типа, формируется специальное сообщение: «Index '<n>' outside the valid range for variable '<var>'»

Битовая адресация применима для типов :SINT, INT, DINT, USINT, UINT, UDINT, BYTE, WORD, DWORD.

Если битовая адресация для данного типа не поддерживается, CoDeSys формирует сообщение: «Invalid data type '<type>' for direct indexing»

Битовую адресацию нельзя использовать с переменными VAR_IN_OUT!

Битовая адресация через глобальные константы

Если объявить целую глобальную константу, то ее можно будет затем использовать для доступа к битам. Например, так:

Объявление константы

VAR_CONSTANT GLOBAL enable:int := 1;

END_VAR

Пример 1, битовая адресация через константу: Объявление POU:

VAR xxx:int; END_VAR

Битовая адресация:

xxx.enable := true; (*установлен в единицу второй бит переменной xxx *)

Пример 2, битовая адресация к элементу структуры: Объявление структуры stru1:

TYPE stru1 : STRUCT

bvar: BOOL; rvar: REAL; wvar: WORD;

{bitaccess: 'enable' 42 'Start drive'} END_STRUCT

END_TYPE

Объявление POU:

VAR

x:stru1; END_VAR

Битовая адресация:

x.enable := true;

Эта инструкция установит 42й бит переменной x. Поскольку bvar занимает 8 бит, rvar занимает 32 бита, а битовый доступ обращается ко второму биту переменной wvar, получающей в результате значение 4.

CoDeSys V2.3

10-30