********** Справочник ********** .. contents:: Содержание: На данный момент реализация языка находиться на стадии разработки. Все реализованные операторы отмечены зеленым цветом. На данном этапе разработки поддержка ST позволяет создавать макросы на языке ST и использовать их на схемах FBD. Протестирована отладка ST программ, но находиться в доработке для использования в макросах ST. Возможности поддержки стандартной библиотеки ST на данный момент не доступны без реализоции функций и функциональных блоков. В альфа версии ST планируется реализовать функции, функциональные блоки и отладку по шагам для макросов ST. Подсказки: * BYTE :sup:`0.0` -- реализовано в версии v0.0 * BYTE :sup:`0.1` -- реализовано в версии v0.1 * BYTE :sup:`0.2` -- реализовано в версии v0.2 * BYTE :sup:`0.3!` -- планируется реализовать в версии v0.3 * BYTE :sup:`!` -- планируется реализовать, но версия не определена * BYTE :sup:`X` -- не планируется Типы ==== Целочисленные ------------- ================ ============= ============== ============= Тип Нижний предел Верхний предел Размер памяти ================ ============= ============== ============= BYTE :sup:`0.0` 0 255 8 Bit WORD :sup:`0.0` 0 65535 16 Bit DWORD :sup:`0.0` 0 4294967295 32 Bit LWORD :sup:`X` 0 64 Bit SINT :sup:`0.0` -128 127 8 Bit USINT :sup:`0.0` 0 255 8 Bit INT :sup:`0.0` -32768 32767 16 Bit UINT :sup:`0.0` 0 65535 16 Bit DINT :sup:`0.0` -2147483648 2147483647 32 Bit UDINT :sup:`0.0` 0 4294967295 32 Bit LINT :sup:`X` 64 Bit ULINT :sup:`X` 64 Bit ================ ============= ============== ============= Вещественные ------------ ================= ======================= ======================= ============= Тип Нижний предел Верхний предел Размер памяти ================= ======================= ======================= ============= REAL :sup:`0.0` 1.175494351e-38 3.402823466e+38 32 Bit LREAL :sup:`0.0` 2.2250738585072014e-308 1.7976931348623158e+308 64 Bit ================= ======================= ======================= ============= Время и дата ------------ ============================ ========================================================================== Тип Описание ============================ ========================================================================== TIME :sup:`0.0` | Представляет длительность интервалов времени в миллисекундах. | Максимальное значение для TIME типа TIME: | 49d17h2m47s295ms (4194967295 ms) TIME_OF_DAY (TOD) :sup:`!` | Содержит время суток, начиная с 0 часов (с точностью | до миллисекунд). | Диапазон значений TOD от: 00:00:00 до 23:59:59.999. DATE :sup:`!` | Содержит календарную дату, начиная с 1 января 1970 года. | Диапазон значений от: 1970-00-00 до 2106-02-06. DATE_AND_TIME (DT) :sup:`!` | Содержит время в секундах, начиная с 0 часов 1 января 1970 года. | Диапазон значений от: 1970-00-00-00:00:00 до 2106-02-06-06:28:15. ============================ ========================================================================== Другие типы ----------- =============== ========================================================================== Тип Описание =============== ========================================================================== BOOL :sup:`0.0` Булевый тип данных STRING :sup:`X` | Максимальный размер строки определяет количество резервируемой памяти и | указывается при объявлении переменной. | Размер задается в круглых или квадратных скобках. | Если размер не указан, принимается размер по умолчанию - 80 символов. | Строковые функции способны обращаться со строками от 1 до 255 символов! =============== ========================================================================== Операторы ========= Встроенные ---------- ============================= ================================================= Функция Описание ============================= ================================================= RETURN :sup:`0.0` Выход из программы и возврат к тому кто вызывал AND :sup:`0.0` Битовое AND OR :sup:`0.0` Битовое OR XOR :sup:`0.0` Битовое исключающее OR NOT :sup:`0.0` Битовое NOT \+ :sup:`0.0` Сложение \- :sup:`0.0` Вычитание \* :sup:`0.0` Умножение / :sup:`0.0` Деление > :sup:`0.0` Больше, чем >= :sup:`0.0` Больше или равно = :sup:`0.0` Равно <> :sup:`0.0` Неравно <= :sup:`0.0` Меньше или равно < :sup:`0.0` Меньше, чем MOD(in) :sup:`0.1` Остаток целочисленного деления INDEXOF(in) :sup:`!` Внутренний индекс POU in; [INT] SIZEOF(in) :sup:`0.2` Число байт, занимаемых in SHL(K,in) :sup:`0.0` Поразрядный сдвиг влево на K бит SHR(K,in) :sup:`0.0` Поразрядный сдвиг вправо на K бит ROL(K,in) :sup:`0.0` Циклический сдвиг влево на K бит ROR(K,in) :sup:`0.0` Циклический сдвиг вправо на K бит SEL(G,in0,in1) :sup:`0.2` Мультиплексор на 2 входа in0 (при G FALSE) и in1 (при G TRUE) MAX(in0,in1) :sup:`0.1` Возвращает наибольшее из 2х значений in0 и in1 MIN(in0,in1) :sup:`0.1` Возвращает наименьшее из 2х значений in0 и in1 LIMIT(MIN,in,Max) :sup:`0.2` Ограничивает значение in в пределах от MIN до MAX MUX(K,in0,...in_n) :sup:`!` Мультиплексор выбирает K-тое значение из группы (от in0 до In_n) ADR(in) :sup:`!` Адрес операнда в [DWORD] ADRINST(in) :sup:`!` | Адрес экземпляра функционального блока, из которого вызывается | ADRINST. BITADR(in) :sup:`!` Битовое смещение операнда в [DWORD] BOOL_TO_(in) :sup:`0.2` Преобразование типа из логического _TO_BOOL(in) :sup:`0.2` Преобразование типа в логический INT_TO_(in) :sup:`0.2` Преобразование значения операнда типа INT в другой базовый тип REAL_TO_(in) :sup:`0.2` Преобразование значения операнда типа REAL в другой базовый тип LREAL_TO_(in) :sup:`0.2` Преобразование значения операнда типа LREAL в другой базовый тип TIME_TO_(in) :sup:`0.2` Преобразование значения операнда типа TIME в другой базовый тип TOD_TO_(in) :sup:`!` Преобразование значения операнда типа TOD в другой базовый тип DATE_TO_(in) :sup:`!` Преобразование значения операнда типа DATE в другой базовый тип DT_TO_(in) :sup:`!` Преобразование значения операнда типа DT в другой базовый тип STRING_TO_(in) :sup:`X` | Преобразование текста строки операнда в другой базовый тип. | Строка должна содержать соответствующий текст TRUNC(in) :sup:`0.2` Преобразование из REAL в INT ABS(in) :sup:`0.1` Абсолютное значение in SQRT(in) :sup:`0.1` Квадратный корень из in LN(in) :sup:`0.0` Натуральный логарифм из in LOG(in) :sup:`0.1` Десятичный логарифм из in EXP(in) :sup:`0.0` E в степени in SIN(in) :sup:`0.0` Синус in COS(in) :sup:`0.0` Косинус in TAN(in) :sup:`0.0` Тангенс in ASIN(in) :sup:`0.0` Арксинус in ACOS(in) :sup:`0.0` Арккосинус in ATAN(in) :sup:`0.0` Арктангенс in EXPT(in,expt) :sup:`0.1` Возведение в степень expt IF :sup:`0.0` Условный оператор IF WHILE :sup:`0.0` Оператор цикла WHILE REPEAT :sup:`0.0` Оператор цикла REPEAT FOR :sup:`0.0` Оператор цикла FOR ============================= ================================================= Компоненты Standard.lib ----------------------- Функции ^^^^^^^ ======================================= ================================================= Функция Описание ======================================= ================================================= LEN(in) :sup:`X` Длина строки in LEFT(str,size) :sup:`X` Левая значимая часть строки str из size символов RIGHT(str,size) :sup:`X` Правая значимая часть строки str из size символов MID(str,size,pos) :sup:`X` Часть строки str с позиции pos из size символов CONCAT('str1','str2') :sup:`X` Конкатенация (склеивание) 2х строк INSERT('str1','str2',pos) :sup:`X` Вставить строку str1 в str2 с позиции pos DELETE('str1',len,pos) :sup:`X` Удалить часть строки, len символов, с позиции pos REPLACE('str1','str2',len,pos) :sup:`X` Заменить часть строки str1 с позиции pos на len символов из str2 FIND('str1','str2') :sup:`X` Поиск подстроки str2 в str1 ======================================= ================================================= Функциональные блоки ^^^^^^^^^^^^^^^^^^^^ =========================== ================================================= Функциональный блок Описание =========================== ================================================= SR :sup:`0.0` Переключатель с доминантой включения RS :sup:`0.0` Переключатель с доминантой выключения SEMA :sup:`0.0` Семафор (interruptable) R_TRIG :sup:`0.0` Детектор переднего фронта импульса F_TRIG :sup:`0.0` Детектор заднего фронта импульса CTU :sup:`0.0` Инкрементный счетчик CTD :sup:`0.0` Декрементный счетчик CTUD :sup:`0.0` Реверсивный счетчик TP :sup:`0.0` Триггер TON :sup:`0.0` Таймер включения TOF :sup:`0.0` Таймер выключения RTC :sup:`!` Часы =========================== =================================================