Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор | Описание |
---|---|---|---|---|---|---|---|---|---|
FLibSYS | Системные функции | 1.8 | GPL2 | spec_FLibSYS.so | en,uk,ru,de | x86,x86_64,ARM | Специальные | Роман Савоченко | Предоставляет библиотеку системных функций среды пользовательского программирования. |
Модуль предоставляет в OpenSCADA статичную библиотеку функций для использования в среде пользовательского программирования и организации неординарных алгоритмов взаимодействия.
Для адресации к функциям этой библиотеки можно использовать статический адрес вызова Special.FLibSYS.{Func}() или динамический SYS.Special.FLibSYS["{Func}"].call(), SYS.Special.FLibSYS.{Func}(). Где {Func} — идентификатор функции в библиотеке.
Описание: Осуществляет вызовы консольных команд ОС. Функция открывает широкие возможности пользователю OpenSCADA, путём вызова любых системных программ, утилит и скриптов, а также получения посредством них доступа к огромному объёму системных данных. Например, команда "ls -l" вернёт детализированное содержимое рабочей директории.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
com | Команда | Строка | Вход |
Пример:
using Special.FLibSYS;
test=sysCall("ls -l");
messPut("Example",0,"Example: "+test);
Описание: Ввод/Вывод в: файл, строковый поток.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Объект(IO) | Возврат | |
name | Имя файла или данные (для строкового потока) | Строка | Вход | |
accs | Доступ к файлу (""-строковый поток;"r[+]"-чтение;"w[+]"-запись с нуля;"a[+]"-добавление;...) | Строка | Вход | |
mFormat | Формат данных машины ('n'-сист. порядок;'b'-BigEndian;'l'-LittleEndian) | Целое | Вход | "n" |
enc | Кодировка строки в файле/потоке | Логический | Вход |
Значения:
Свойства:
Функции:
Описание: Формирование SQL-запроса req к БД addr, внутри (trans=true), вне (trans=false) или безразлично (trans=EVAL) к транзакции. В случае ошибки её значение помещается в свойство "err" результата.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Объект(Массив) | Возврат | |
addr | Адрес БД, "{TypeDB}.{DB}" | Строка | Вход | |
req | SQL-запрос | Строка | Вход | |
trans | Транзакция | Логический | Вход | EVAL |
Описание: Создание объекта узла XML.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Объект(XMLNodeObj) | Возврат | |
name | Имя | Строка | Вход |
Пример:
using Special.FLibSYS;
//Создание объекта "get" узла XML.
req = xmlNode("get");
//Создание объекта "get" узла XML с созданием атрибутов.
//sub_DAQ/mod_ModBus/cntr_1/prm_1 — путь согласно структуре проекта
req = xmlNode("get").setAttr("path","/sub_DAQ/mod_ModBus/cntr_1/prm_1/%2fprm%2fst%2fen");
Описание: Запрос на предмет контроля программы, по XML. Обычный запрос записывается в виде "<get path="/OPath/%2felem"/>". При определении станции осуществляется запрос к указанной внешней станции.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
req | Запрос | Объект(XMLNodeObj) | Выход | |
stat | Станция | Строка | Вход |
Пример (больше примеров смотрите для аналогичной внутренней функции SYS.cntrReq()):
using Special.FLibSYS;
//Получение признака "Включен/Выключен" параметра "1" контроллера "1" модуля "ModBus".
//sub_DAQ/mod_ModBus/cntr_1/prm_1 — путь согласно структуре проекта
req = xmlNode("get").setAttr("path","/sub_DAQ/mod_ModBus/cntr_1/prm_1/%2fprm%2fst%2fen");
rez = xmlCntrReq(req);
messPut("test",0,"Значение: "+req.text());
//Установка признака "Включен" параметра "1" контроллера "1" модуля "ModBus".
req = xmlNode("set").setAttr("path","/sub_DAQ/mod_ModBus/cntr_1/prm_1/%2fprm%2fst%2fen").setText(1);
rez = xmlCntrReq(req);
//Установка признака "Выключен" параметра "1" контроллера "1" модуля "ModBus".
req = xmlNode("set").setAttr("path","/sub_DAQ/mod_ModBus/cntr_1/prm_1/%2fprm%2fst%2fen").setText(0);
rez = xmlCntrReq(req);
Описание: Возвращает абсолютное время в секундах от эпохи 1.1.1970 и микросекунды в usec, если указана такая переменная и её значение негативно.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
sec | Секунды | Целый | Возврат | 0 |
usec | Микросекунды | Целый | Выход | -1 |
Описание: Полная дата и время в секундах, минутах, часах и т.д., исходя из абсолютного времени в секундах от эпохи 1.1.1970.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
fullsec | Полные секунды | Целый | Вход | 0 |
sec | Секунды [0...59] | Целый | Выход | 0 |
min | Минуты [0...59] | Целый | Выход | 0 |
hour | Часы [0...23] | Целый | Выход | 0 |
mday | День месяца [1...31] | Целый | Выход | 0 |
month | Месяц [0...11] | Целый | Выход | 0 |
year | Год, от 1900 | Целый | Выход | 0 |
wday | День недели [0...6] | Целый | Выход | 0 |
yday | День в году [0...365] | Целый | Выход | 0 |
isdst | Летнее время | Целый | Выход | 0 |
Пример:
using Special.FLibSYS;
curMin=curHour=curDay=curMonth=curYear=0;
tmDate(tmTime(),0,curMin,curHour,curDay,curMonth,curYear);
messPut("test",0,"Текущая минута: "+curMin);
messPut("test",0,"Текущий час : "+curHour);
messPut("test",0,"Текущий день: "+curDay);
messPut("test",0,"Текущий месяц: "+curMonth);
messPut("test",0,"Текущий год: "+curYear);
Описание: Получение времени как форматируемая строка. Запись формата соответствует POSIX-функции "strftime()".
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
val | Строка даты и времени | Строка | Возврат | |
sec | Секунды | Целый | Вход | 0 |
form | Формат даты и времени | Строка | Вход | %Y-%m-%d %H:%M:%S |
Пример:
using Special.FLibSYS;
test = tmFStr(SYS.time(),"%d %m %Y");
messPut("Пример",0,"tmFStr(): "+test);
Описание: Преобразование строковой даты и времени, для формата form, во время в секундах от 01.01.1970. Например, шаблону "%Y-%m-%d %H:%M:%S" соответствует время "2006-08-08 11:21:55". Описание формата шаблона можно получить из документации на POSIX-функцию "strptime()".
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
sec | Секунды | Целый | Возврат | 0 |
str | Строка даты и времени | Строка | Вход | |
form | Формат даты и времени | Строка | Вход | %Y-%m-%d %H:%M:%S |
Пример:
using Special.FLibSYS;
curMin=curHour=curDay=curMonth=curYear=0;
tmDate(tmTime(),0,curMin,curHour,curDay,curMonth,curYear);
test = tmStrPTime(""+curYear+"-"+(curMonth+1)+"-"+curDay+" 9:0:0","%Y-%m-%d %H:%M:%S");
messPut("Пример",0,"tmStrPTime(): "+test);</pre>
=== {{Anch|tmCron|Time: Планировать время по CRON (tmCron)}} ===
''Описание:'' Планирование времени по стандарту CRON, возвращая спланированное время начиная от базового времени ''base'' или от текущего если базовое не указано.<br/>
''Параметры:''
{| class="wikitable"
|-
! Идентификатор !! Параметр !! Тип !! Режим !! По умолчанию
|-
| res || Результат, секунды || Целый || Возврат || 0
|-
| str || CRON || Строка || Вход || * * * * *
|-
| base || Базовое время, секунды || Целый || Вход || 0
|}
=== {{Anch|tmSleep|Time: сон (tmSleep)}} ===
''Описание:'' Короткий сон от наносекунд и до STD_INTERF_TM (5 секунд).<br/>
''Параметры:''
{| class="wikitable"
|-
! Идентификатор !! Параметр !! Тип !! Режим !! По умолчанию
|-
| res || Результат || Целый || Возврат || 0
|-
| tm || Время, секунды || Вещественный || Вход || 0
|}
== Функции работы со строками ==
=== {{Anch|strSize|Строка: Получить размер (strSize)}} ===
''Описание:'' Получение размера строки.<br/>
''Параметры:''
{| class="wikitable"
|-
! Идентификатор !! Параметр !! Тип !! Режим !! По умолчанию
|-
| rez || Результат || Целый || Возврат ||
|-
| str || Строка || Строка || Вход ||
|}
''Пример:''
<syntaxhighlight lang="JS">
using Special.FLibSYS;
messPut("Пример",1,"ReturnString: "+strSize("Пример"));
Описание: Получение подстроки.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
str | Строка | Строка | Вход | |
pos | Позиция | Целый | Вход | 0 |
n | Количество | Целый | Вход | -1 |
Пример:
using Special.FLibSYS;
test = strSubstr("Пример", 0, strSize("Пример")-1);
messPut("Пример", 1, "ReturnString: "+test);
Описание: Вставка строки в другую строку.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
str | Строка | Строка | Выход | |
pos | Позиция | Целый | Вход | 0 |
ins | Вставляемая строка | Строка | Вход |
Описание: Заменяет часть строки другой строкой.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
str | Строка | Строка | Выход | |
pos | Позиция | Целый | Вход | 0 |
n | Количество | Целый | Вход | -1 |
repl | Строка для замены | Строка | Вход |
Описание: Разбор строки по разделителю.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
str | Строка | Строка | Вход | |
lev | Уровень | Целый | Вход | |
sep | Разделитель | Строка | Вход | "." |
off | Смещение | Целый | Выход |
Пример:
using Special.FLibSYS;
ExapleString = "Пример:123";
test = strParse(ExapleString, 1, ":");
messPut("Пример", 0, "strParse(): "+test);
Описание: Разбор пути на элементы.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
path | Путь | Строка | Вход | |
lev | Уровень | Целый | Вход | |
off | Смещение | Целый | Выход |
Пример:
using Special.FLibSYS;
test = strParsePath(path, 0, "/");
messPut("Пример", 1, "strParsePath(): "+test);
Описание: Преобразование пути в строку с разделителем.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
src | Источник | Строка | Вход | |
sep | Разделитель | Строка | Вход | "." |
Пример:
//Преобразуем значение "/ses_AGLKS/pg_so" атрибута "path" в значение "ses_AGLKS.pg_so"
using Special.FLibSYS;
test = strPath2Sep(path);
messPut("Пример", 0, "path: "+path);
messPut("Пример", 0, "strPath2Sep(): "+test);
Описание: Кодирование строки для использования в исходнике HTML.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
src | Источник | Строка | Вход |
Описание: Кодирование текста в бинарный вид, для формата текста <00 A0 FA DE>.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
src | Источник | Строка | Вход |
Описание: Декодирование текста из бинарного вида, для формата текста <00 A0 FA DE>.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
src | Источник | Строка | Вход |
Описание: Преобразование вещественного значения в строковый формат.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
val | Значение | Вещественное | Вход | |
prc | Точность | Целое | Вход | 4 |
tp | Тип | Строка | Вход | "f" |
Описание: Преобразование целого значения в строковый формат.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
val | Значение | Целое | Вход | |
base | База (8, 10, 16) | Целое | Вход | 10 |
Описание: Преобразование значения строки в формат вещественного.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Вещественное | Возврат | |
val | Значение | Строка | Вход |
Описание: Преобразование значения строки в формат целого.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Целое | Возврат | |
val | Значение | Строка | Вход | |
base | Основа (2...36) | Целый | Вход | 0 |
Описание: Унифицированная и полная реализация Циклического Избыточного Кода для длин 1-64 бит с нормальным полиномом, начальным CRC, входной и выходной последовательностью, и XOR для выхода.
Также поддерживается предыдущая нотация этой функции, где реверсивний полином размещается в позиции ширины width!
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Целый | Возврат | |
data | Данные | Строка | Вход | |
width | Ширина | Целый | Вход | 16 |
poly | Полином | Целый | Вход | 32773 (0x8005) |
init | Нач.значение | Целый | Вход | -1 (0xFFFFFFFFFFFFFFFF) |
RefIn | Последовательность входа | Логический | Вход | 1 |
RefOut | Последовательность выхода | Логический | Вход | 1 |
XorOut | XOR для выхода | Целый | Вход | 0 |
Описание: Расчёт слепка сообщения 5 для данных data.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Строка | Возврат | |
data | Данные | Строка | Вход |
Описание: Разделение значения float (4 байта) на два слова (2 байта).
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
val | Значение | Вещественное | Вход | |
w1 | Слово 1 | Целый | Выход | |
w2 | Слово 2 | Целый | Выход |
Описание: Объединение значения float (4 байта) из двух слов (2 байта).
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Вещественное | Возврат | |
w1 | Слово 1 | Целый | Вход | |
w2 | Слово 2 | Целый | Вход |
Описание: Извлечение мантиссы и экспоненты из вещественного значения.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
magn | Размер | Вещественный | Возврат | |
val | Значение | Вещественный | Вход | |
exp | Экспонента | Целый | Выход |
Описание: Получить сообщения программы.
Параметры:
Ідентифікатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Объект(Массив) | Возврат | |
btm | Время начала, секунды | Целое | Вход | |
etm | Время конца, секунды | Целое | Вход | |
cat | Категория | Строка | Вход | |
lev | Уровень | Целый | Вход | |
arch | Архиватор | Строка | Вход |
Описание: Поместить сообщение в программу.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
cat | Категория | Строка | Вход | |
lev | Уровень | Целый | Вход | |
mess | Сообщение | Строка | Вход |
Пример:
rnd_sq_gr11_lineClr="red";
Special.FLibSYS.messPut("Пример",1,"Event: "+rnd_sq_gr12_leniClr);
Описание: Получение объекта архива значений (VArchObj) через подключения к архиву по его адресу.
Параметры:
Идентификатор | Имя | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Объект(VArchObj) | Возврат | |
name | Имя — адрес к атрибуту параметра с архивом (DAQ.{Module}.{Cntr}.{Prm}.{Attr}) или непосредственно к архиву значений (Archive.va_{ValArchive}). | Строка | Вход |
Функции:
Пример:
using Special.FLibSYS;
val = vArh(strPath2Sep(addr)).get(time,uTime,0,archiver);
return val.isEval() ? "Пусто" : real2str(val,prec);
Описание: Получение объекта буфера значений для временного хранения значений и выполнения промежуточных операций над кадрами данных.
Параметры:
Идентификатор | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Объект(VArchObj) | Возврат | |
tp | Тип значений архива (0-Логический, 1-Целый, 4-Вещественный, 5-Строка) | Целый | Вход | 1 |
sz | Максимальный размер буфера | Целый | Вход | 100 |
per | Период значений буфера, микросекунды | Целый | Вход | 1000000 |
hgrd | Жесткая сетка времени | Логический | Вход | 0 |
hres | Высокое разрешения времени (микросекунды) | Логический | Вход | 0 |
Модуль, как объект, предоставляют функции пользовательского программирования.
Объект "Библиотека функций" (SYS.Special.FLibSYS)
Объект "Пользовательская функция" (SYS.Special.FLibSYS["funcID"])
Modules/FLibSYS/ru - GFDL | March 2024 | OpenSCADA 0.9.7 |