Codesys (824048), страница 57
Текст из файла (страница 57)
Например, ABS(-2) равно 2.Возможны следующие комбинации типов аргумента и результата:ПараметрРезультатINTINT, REAL, WORD, DWORD, DINTREALREALBYTEINT, REAL, BYTE, WORD, DWORD, DINTWORDINT, REAL, WORD, DWORD, DINTDWORDREAL, DWORD, DINTSINTREALUSINTREALUINTINT, REAL, WORD, DWORD, DINT, UDINT, UINTDINTREAL, DWORD, DINTUDINTREAL, DWORD, DINT, UDINTПример IL:LDCoDeSys V2.3210-23Приложение A: Операторы и функции МЭКABSSTi(*Результат: 2 *)Примеры ST:i:=ABS(-2);Пример FBD:SQRTКвадратный корень числа.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL.Пример IL:LD16SQRTSTq(*Результат: 4 *)Примеры ST:q:=SQRT(16);Пример FBD:LNНатуральный логарифм числа.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL.Пример IL:LD45LNSTq(*Результат: 3.80666 *)Примеры ST:q:=LN(45);Пример FBD:LOGДесятичный логарифм числа.CoDeSys V2.310-24Приложение A: Операторы и функции МЭКАргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL.Пример IL:LD314.5LOGSTq(*Результат: 2.49762 *)Примеры ST:q:=LOG(314.5);Пример FBD:EXPЭкспонента.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL.Пример IL:LD2EXPSTq(*Результат: 9.7448e+009 *)Примеры ST:q:=EXP(2);Пример FBD:SINСинус.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL.
Аргумент измеряется в радианах.Пример IL:LD0.5SINSTq(*Результат: 0.479426 *)Пример ST:q:=SIN(0.5);Пример FBD:CoDeSys V2.310-25Приложение A: Операторы и функции МЭКCOSКосинус.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL. Аргумент измеряется в радианах.Пример IL:LD0.5COSSTq(*Результат: 0.877583 *)Пример ST:q:=COS(0.5);Пример FBD:TANТангенс.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL. Аргумент измеряется в радианах.Пример IL:LD0.5TANSTq(*Результат: 0.546302 *)Пример ST:q:=TAN(0.5);Пример FBD:ASINАрксинус.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL.Пример IL:LD0.5ASINSTq(*Результат: 0.523599 *)Пример ST:q:=ASIN(0.5);Пример FBD:CoDeSys V2.310-26Приложение A: Операторы и функции МЭКACOSАрккосинус.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL.Пример IL:LD0.5ABSSTq (*Результат: 1.0472 *)Пример ST:q:=ACOS(0.5);Пример FBD:ATANАрктангенс.Аргумент может быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,результат должен быть типа REAL.Пример IL:LD0.5ABSSTq (*Результат: 0.463648 *)Пример ST:q:=ATAN(0.5);Пример FBD:EXPTЧисло в степени:OUT = IN1IN2.IN1 и IN2 могут быть типов BYTE, WORD, DWORD, INT, DINT, REAL, SINT, USINT, UINT, UDINT,OUT должена быть REAL.Пример IL:LD7EXPT 2CoDeSys V2.310-27Приложение A: Операторы и функции МЭКSTvar1 (*Результат: 49 *)Пример ST:var1 := (7,2);Пример FBD:CoDeSys V2.310-28Приложение В: Операнды в CoDeSysПриложение В: Операнды в CoDeSysВ качестве операндов могут выступать константы переменные, адреса и вызовы функций.10.10 КонстантыBOOLBOOL константы могут иметь значение 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-06d#1972-03-29См. также 10.14 Переменные типа DATETIME_OF_DAYКонстанты типа A TIME_OF_DAY начинаются с префикса "tod#", "TOD#", "TIME_OF_DAY#" или"time_of_day#" и последующего времени в формате: Часы:Минуты:Секунды. Секунды можно задаватьв виде десятичной дроби.Примеры:TIME_OF_DAY#15:36:30.123tod#00:00:00DATE_AND_TIMEКонстанты типа DATE_AND_TIME начинаются с префикса "dt#", "DT#", "DATE_AND_TIME#" или"date_and_time#". Дата и время приводятся последовательно через дефис.CoDeSys V2.310-30Приложение В: Операнды в CoDeSysПримеры:DATE_AND_TIME#1996-05-06-15:36:30dt#1972-03-29-00:00:00Целочисленные константыЧисловые значения могут быть представлены в двоичной, восьмеричной, десятичной и шестнадцатеричной форме.Если число не десятичное, необходимо указать основание числа с префиксом # перед числом.
Цифрыдиапазона 10-15 в шестнадцатеричной форме заменяются литерами A-F.Для удобства чтения в любом месте числа можно вставить подчеркивание.Примеры:(*десятичное число*)142#1001_0011 (*двоичное число*)8#67(*восьмеричное число*)16#A(*шестнадцатеричное число*)Данные числа могут быть представлены типами BYTE, WORD, DWORD, SINT, USINT, INT, UINT,DINT, UDINT, REAL и LREAL. Неявное преобразование из "большего" в "младший" тип переменнойне производится.
Это означает, что нельзя просто использовать DINT как INT переменную, необходимо применять преобразование типов (см. раздел «Преобразование типов»).REAL/LREALREAL и LREAL константы представляются в формате с десятичной точкой либо в экспоненциальномформате. Запятая вместо точки не допускается.Примеры:7.4 но не 7,41.64e+009 но не 1,64e+009STRINGКонстанты типа STRING представляются в виде набора символов, заключенных в одинарные кавычки. Строка может содержать пробелы и специальные символы (например, умляуты).
Символы, неимеющие печатного образа, могут быть заданы шестнадцатеричным кодом в виде двух цифр, следующих за знаком доллара ($). Специальные комбинации из двух символов, начинающиеся со знакадоллара, интерпретируются следующим образом:$$Знак доллара$'Одинарная кавычка$L или $lLine feed$N or $nNew line$P or $pPage feed$R or $rLine break$T or $tTabПримеры:'Полет нормальный'CoDeSys V2.310-31Приложение В: Операнды в CoDeSys' Abby and Craig '':-)'Типизированные константыОбычно при использовании МЭК констант подразумевается наименьший из возможных типов данных. Если нужно точно указать тип константы, применяется префикс типа: <Type>#<Literal><Type> указывает необходимый тип. Это может быть: BOOL, SINT, USINT, BYTE, INT, UINT,WORD, DINT, UDINT, DWORD, REAL, LREAL.
Тип нужно указывать заглавными буквами.<Literal> указывает значение константы.Пример:var1:=DINT#34;Если значение константы не соответствует требуемому типу, CoDeSys выдаст соответствующее сообщение об ошибке.10.11 ПеременныеПеременные могут быть объявлены либо как локальные в разделе определений POU, либо как глобальные - в списке глобальных переменных.Внимание: Глобальная и локальная переменные могут иметь одинаковое имя. В POU, где объявлена такая локальная переменная, она оказывается «сильнее» одноименной глобальной. Использовать одноименные глобальные переменные нельзя (например, объявленные в конфигурации контроллера и в спискеглобальных переменных).Имя переменной (идентификатор) не должно содержать пробелов и спецсимволов, не должно объявляться более одного раза и не должно совпадать с ключевыми словами.
Регистр символов не учитывается, это означает, что VAR1, Var1 и var1 - это одна и та же переменная.Символ подчеркивания является значимым, т.е. "A_BCD" и "AB_CD" - это разные имена.Имя должно включать не более одного символа подчеркивания. Ограничений на длину имени нет.Область применения переменной задается ее типом. Список всех объявленных переменных в CoDeSysдоступен через ассистент ввода (Input Assistant).Системные флагиСистемные флаги - это неявно объявленные переменные, различные для конкретных моделей PLC.Для получения списка доступных системных флагов используйте команду "Insert" "Operand". В диалоге ассистента ввода (Input Assistant) флаги собраны в разделе System Variable.Синтаксис доступа к элементам массивов, структур и POUЭлемент двумерного массива:<ИмяМассива>[Индекс1, Индекс2]Переменная структуры:<ИмяСтруктуры>.<ИмяПеременной>Переменная программы или функционального блока:<ИмяФункциональногоБлока>.<ИмяПеременной>CoDeSys V2.310-32Приложение В: Операнды в CoDeSysДоступ к битам в переменныхВ целочисленных переменных существует возможность обращаться к отдельным битам.