Реализация языка

На данный момент реализация языка находиться на стадии разработки. Все реализованные операторы отмечены зеленым цветом. На данном этапе разработки поддержка ST позволяет создавать макросы на языке ST и использовать их на схемах FBD. Протестирована отладка ST программ, но находиться в доработке для использования в макросах ST. Возможности поддержки стандартной библиотеки ST на данный момент не доступны без реализоции функций и функциональных блоков. В альфа версии ST планируется реализовать функции, функциональные блоки и отладку по шагам для макросов ST.

Подсказки:

  • BYTE 0.0 – реализовано в версии v0.0
  • BYTE 0.1 – реализовано в версии v0.1
  • BYTE 0.2 – реализовано в версии v0.2
  • BYTE 0.3! – планируется реализовать в версии v0.3
  • BYTE ! – планируется реализовать, но версия не определена
  • BYTE X – не планируется

Типы

Целочисленные

Тип Нижний предел Верхний предел Размер памяти
BYTE 0.0 0 255 8 Bit
WORD 0.0 0 65535 16 Bit
DWORD 0.0 0 4294967295 32 Bit
LWORD X 0   64 Bit
SINT 0.0 -128 127 8 Bit
USINT 0.0 0 255 8 Bit
INT 0.0 -32768 32767 16 Bit
UINT 0.0 0 65535 16 Bit
DINT 0.0 -2147483648 2147483647 32 Bit
UDINT 0.0 0 4294967295 32 Bit
LINT X     64 Bit
ULINT X     64 Bit

Вещественные

Тип Нижний предел Верхний предел Размер памяти
REAL 0.0 1.175494351e-38 3.402823466e+38 32 Bit
LREAL 0.0 2.2250738585072014e-308 1.7976931348623158e+308 64 Bit

Время и дата

Тип Описание
TIME 0.0
Представляет длительность интервалов времени в миллисекундах.
Максимальное значение для TIME типа TIME:
49d17h2m47s295ms (4194967295 ms)
TIME_OF_DAY (TOD) !
Содержит время суток, начиная с 0 часов (с точностью
до миллисекунд).
Диапазон значений TOD от: 00:00:00 до 23:59:59.999.
DATE !
Содержит календарную дату, начиная с 1 января 1970 года.
Диапазон значений от: 1970-00-00 до 2106-02-06.
DATE_AND_TIME (DT) !
Содержит время в секундах, начиная с 0 часов 1 января 1970 года.
Диапазон значений от: 1970-00-00-00:00:00 до 2106-02-06-06:28:15.

Другие типы

Тип Описание
BOOL 0.0 Булевый тип данных
STRING X
Максимальный размер строки определяет количество резервируемой памяти и
указывается при объявлении переменной.
Размер задается в круглых или квадратных скобках.
Если размер не указан, принимается размер по умолчанию - 80 символов.
Строковые функции способны обращаться со строками от 1 до 255 символов!

Операторы

Встроенные

Функция Описание
RETURN 0.0 Выход из программы и возврат к тому кто вызывал
AND 0.0 Битовое AND
OR 0.0 Битовое OR
XOR 0.0 Битовое исключающее OR
NOT 0.0 Битовое NOT
+ 0.0 Сложение
- 0.0 Вычитание
* 0.0 Умножение
/ 0.0 Деление
> 0.0 Больше, чем
>= 0.0 Больше или равно
= 0.0 Равно
<> 0.0 Неравно
<= 0.0 Меньше или равно
< 0.0 Меньше, чем
MOD(in) 0.1 Остаток целочисленного деления
INDEXOF(in) ! Внутренний индекс POU in; [INT]
SIZEOF(in) 0.2 Число байт, занимаемых in
SHL(K,in) 0.0 Поразрядный сдвиг влево на K бит
SHR(K,in) 0.0 Поразрядный сдвиг вправо на K бит
ROL(K,in) 0.0 Циклический сдвиг влево на K бит
ROR(K,in) 0.0 Циклический сдвиг вправо на K бит
SEL(G,in0,in1) 0.2 Мультиплексор на 2 входа in0 (при G FALSE) и in1 (при G TRUE)
MAX(in0,in1) 0.1 Возвращает наибольшее из 2х значений in0 и in1
MIN(in0,in1) 0.1 Возвращает наименьшее из 2х значений in0 и in1
LIMIT(MIN,in,Max) 0.2 Ограничивает значение in в пределах от MIN до MAX
MUX(K,in0,...in_n) ! Мультиплексор выбирает K-тое значение из группы (от in0 до In_n)
ADR(in) ! Адрес операнда в [DWORD]
ADRINST(in) !
Адрес экземпляра функционального блока, из которого вызывается
ADRINST.
BITADR(in) ! Битовое смещение операнда в [DWORD]
BOOL_TO_(in) 0.2 Преобразование типа из логического
_TO_BOOL(in) 0.2 Преобразование типа в логический
INT_TO_(in) 0.2 Преобразование значения операнда типа INT в другой базовый тип
REAL_TO_(in) 0.2 Преобразование значения операнда типа REAL в другой базовый тип
LREAL_TO_(in) 0.2 Преобразование значения операнда типа LREAL в другой базовый тип
TIME_TO_(in) 0.2 Преобразование значения операнда типа TIME в другой базовый тип
TOD_TO_(in) ! Преобразование значения операнда типа TOD в другой базовый тип
DATE_TO_(in) ! Преобразование значения операнда типа DATE в другой базовый тип
DT_TO_(in) ! Преобразование значения операнда типа DT в другой базовый тип
STRING_TO_(in) X
Преобразование текста строки операнда в другой базовый тип.
Строка должна содержать соответствующий текст
TRUNC(in) 0.2 Преобразование из REAL в INT
ABS(in) 0.1 Абсолютное значение in
SQRT(in) 0.1 Квадратный корень из in
LN(in) 0.0 Натуральный логарифм из in
LOG(in) 0.1 Десятичный логарифм из in
EXP(in) 0.0 E в степени in
SIN(in) 0.0 Синус in
COS(in) 0.0 Косинус in
TAN(in) 0.0 Тангенс in
ASIN(in) 0.0 Арксинус in
ACOS(in) 0.0 Арккосинус in
ATAN(in) 0.0 Арктангенс in
EXPT(in,expt) 0.1 Возведение в степень expt
IF 0.0 Условный оператор IF
WHILE 0.0 Оператор цикла WHILE
REPEAT 0.0 Оператор цикла REPEAT
FOR 0.0 Оператор цикла FOR

Компоненты Standard.lib

Функции

Функция Описание
LEN(in) X Длина строки in
LEFT(str,size) X Левая значимая часть строки str из size символов
RIGHT(str,size) X Правая значимая часть строки str из size символов
MID(str,size,pos) X Часть строки str с позиции pos из size символов
CONCAT(‘str1’,’str2’) X Конкатенация (склеивание) 2х строк
INSERT(‘str1’,’str2’,pos) X Вставить строку str1 в str2 с позиции pos
DELETE(‘str1’,len,pos) X Удалить часть строки, len символов, с позиции pos
REPLACE(‘str1’,’str2’,len,pos) X Заменить часть строки str1 с позиции pos на len символов из str2
FIND(‘str1’,’str2’) X Поиск подстроки str2 в str1

Функциональные блоки

Функциональный блок Описание
SR 0.0 Переключатель с доминантой включения
RS 0.0 Переключатель с доминантой выключения
SEMA 0.0 Семафор (interruptable)
R_TRIG 0.0 Детектор переднего фронта импульса
F_TRIG 0.0 Детектор заднего фронта импульса
CTU 0.0 Инкрементный счетчик
CTD 0.0 Декрементный счетчик
CTUD 0.0 Реверсивный счетчик
TP 0.0 Триггер
TON 0.0 Таймер включения
TOF 0.0 Таймер выключения
RTC ! Часы