Модуль: | FLibSYS |
Ім'я: | Бібліотека функцій системного API. |
Тип: | Спеціальні |
Джерело: | spec_FLibSYS.so |
Версія: | 1.3.0 |
Автор: | Роман Савоченко |
Опис: | Надає бібліотеку системного API середовища користувацького програмування. |
Ліцензія: | GPL |
Спеціальний модуль FLibSYS надає в систему OpenSCADA статичну бібліотеку функцій для роботи з системою OpenSCADA на рівні її системного API. Ці функції можуть використовуватися у середовищі користувацького програмування системи OpenSCADA для організації неординарних алгоритмів взаємодії.
Для адресації до функції цієї бібліотеки можна використовувати статичну адресу виклику "Special.FLibSYS.{Func}()" або динамічну "SYS.Special.FLibSYS["{Func}"].call()", "SYS.Special.FLibSYS.{Func}()". Де {Func} — ідентифікатор функції у бібліотеці.
Нижче наведено опис кожної функції бібліотеки. Для кожної функції здійснювалася оцінка часу виконання. Вимірювання здійснювалося на системі з наступними параметрами: Athlon 64 3000+ (ALTLinux 4.0(32біт)) шляхом заміру загального часу виконання функції при виклику її 1000 разів. Вибірка здійснювалася із п'яти обчислень із округленням до меншого цілого. Час оточується кутовими дужками та вимірюється у мікросекундах.
Опис: Здійснює виклик консольних команд ОС. Функція відкриває широкі можливості користувачу OpenSCADA шляхом виклику будь-яких системних програм, утиліт та скриптів, а також отримання за посередництвом них доступу до величезного об'єму системних даних. Наприклад команда "ls -l" поверне деталізований вміст робочої теки.
Параметри:
ID | Ім'я | Тип | Режим | По замовченню |
rez | Результат | Рядок | Повернення | |
com | Команда | Рядок | Вхід |
Приклад:
using Special.FLibSYS; test=sysCall("ls -l"); messPut("Example",0,"Example: "+test);
Опис: Формування SQL-запиту до БД.
Параметри:
ID | Ім'я | Тип | Режим | По замовченню |
rez | Результат | Об'єкт(Масив) | Повернення | |
addr | Адреса БД | рядок | Вхід | |
req | SQL-запит | Рядок | Вхід |
Опис: Створення об'єкту вузла XML.
Параметри:
ID | Ім'я | Тип | Режим | По замовченню |
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",);
Опис: Запит інтерфейсу управління до системи за посередництвом XML. Звичайний запит записується у вигляді "<get path="/OPath/%2felem"/>". При вказанні станції здійснюється запит до зовнішньої станції.
Параметри:
ID | Ім'я | Тип | Режим | По замовченню |
rez | Результат | Рядок | Повернення | |
req | Запит | Об'єкт(XMLNodeObj) | Вихід | |
stat | Станція | Рядок | Вхід |
Приклад:
using Special.FLibSYS; //Отримання ознаки "Включений/Виключений" параметрау "1" контролеру "1" модуля "ModBus". //sub_DAQ/mod_ModBus/cntr_1/prm_1 — шлях згідно структури проекту req = xmlNode("get").setAttr("path",); rez = xmlCntrReq(req); messPut("test",0,"Значення: "+req.text()); //Встановлення ознаки "Включений" параметру "1" контролеру "1" модуля "ModBus". req = xmlNode("set").setAttr("path",).setText(1); rez = xmlCntrReq(req); //Встановлення ознаки "Виключений" параметру "1" контролеру "1" модуля "ModBus". req = xmlNode("set").setAttr("path",).setText(0); rez = xmlCntrReq(req);
Опис: Отримання об'єкту архіву значень (VArchObj) шляхом підключення до архіву за його адресою.
Параметри:
ID | Ім'я | Тип | Режим | По замовченню |
rez | Результат | Об'єкт(VArchObj) | Повернення | |
name | Ім'я, адреса до атрибуту параметра з архівом (DAQ.{Module}.{Cntr}.{Prm}.{Attr}) або безпосередньо до архіву значень (Archive.va_{ValArchive}). | Рядок | Вхід |
Функції:
Приклад:
using Special.FLibSYS; val = vArh(strPath2Sep(addr)).get(time,uTime,0,archivator); return val.isEval() ? "Порожньо" : real2str(val,prec);
Опис: Отримання об'єкту буферу архіву значень (VArchObj) для виконання проміжних операцій над кадрами даних.
Параметри:
ID | Параметр | Тип | Режим | По замовченню |
rez | Результат | Об'єкт(VArchObj) | Повернення | |
tp | Тип значень архіву (0-Boolean, 1-Integer, 4-Real, 5-String) | Цілий | Вхід | 1 |
sz | Максимальний розмір буферу | Цілий | Вхід | 100 |
per | Періодичність буферу (у мікросекундах) | Цілий | Вхід | 1000000 |
hgrd | Режим "Жорстка мережа часу" | Логічний | Вхід | 0 |
hres | Режим "Високої роздільної здатності часу (мікросекунди)" | Логічний | Вхід | 0 |
Опис: Ввід/Вивід у: файл, строковий потік.
Параметри:
ID | Параметр | Тип | Режим | По замовченню |
rez | Результат | Об'єкт(IO) | Повернення | |
name | Ім'я файлу або дані (для строкового потоку) | Рядок | Вхід | |
accs | Доступ до файлу (''-строковий потік;'r[+]'-читання;'w[+]'-запис з нуля;'a[+]'-додання;...) | Рядок | Вхід | |
mFormat | Формат даних машини ('n'-сист. порядок;'b'-BigEndian;'l'-LittleEndian) | Ціле | Вхід | "n" |
enc | Кодування рядку у файлі | Логічний | Вхід |
Значення:
Властивості:
Функції:
Переклад
Описание: Преобразует абсолютное время в строку нужного формата. Запись формата соответствует POSIX-функции strftime.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
val | Строка полной даты | Строка | Возврат | |
sec | Секунды | Целый | Вход | 0 |
form | Формат | Строка | Вход | %Y-%m-%d %H:%M:%S |
Пример:
using Special.FLibSYS; test=tmFStr(SYS.time(),); messPut("Example",0,"tmFStr(): "+test);
Описание: Возвращает полную дату в секундах, минутах, часах и т.д, исходя из абсолютного времени в секундах от эпохи 1.1.1970.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
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);
Описание: Возвращает абсолютное время в секундах от эпохи 1.1.1970 и микросекундах, если usec установлен в неотрицательное значение.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
sec | Секунды | Целый | Возврат | 0 |
usec | Микросекунды | Целый | Выход | -1 |
Описание: Возвращает время в секундах от эпохи 1.1.1970, исходя из строковой записи времени, в соответствии с указанным шаблоном. Например, шаблону "%Y-%m-%d %H:%M:%S" соответствует время "2006-08-08 11:21:55". Описание формата шаблона можно получить из документации на POSIX-функцию "strptime".
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
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",); messPut("Example",0,"tmStrPTime(): "+test);
Описание: Возвращает время спланированное в формате стандарта Cron начиная от базового времени или от текущего если базовое не указано.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
res | Результат | Целый | Возврат | 0 |
str | Запись в стандарте Cron | Строка | Вход | * * * * * |
base | Базовое время | Целый | Вход | 0 |
Описание: Короткий сон от наносекунд и до STD_INTERF_TM (5 секунд).
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
res | Результат | Целый | Возврат | 0 |
tm | Время | Вещественный | Вход | 0 |
Описание: Запрос системных сообщений.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Объект(Массив) | Возврат | |
btm | Время начала | Целое | Вход | |
etm | Время конца | Целое | Вход | |
cat | Категория сообщения | Строка | Вход | |
lev | Уровень сообщения | Целый | Вход | |
arch | Архиватор | Строка | Вход |
Описание: Формирование системного сообщения.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
cat | Категория сообщения | Строка | Вход | |
lev | Уровень сообщения | Целый | Вход | |
mess | Текст сообщения | Строка | Вход |
Пример:
rnd_sq_gr11_lineClr="red"; Special.FLibSYS.messPut("Example",1,"Event: "+rnd_sq_gr12_leniClr);
Описание: Используется для получения размера.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Целый | Возврат | |
str | Строка | Строка | Вход |
Пример:
Special.FLibSYS.messPut("Example",1,"ReturnString: "+strSize("Example"));
Описание: Используется для получения части строки.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
str | Строка | Строка | Вход | |
pos | Позиция | Целый | Вход | 0 |
n | Количество | Целый | Вход | -1 |
Пример:
using Special.FLibSYS; test=strSubstr("Example", 0, strSize("Example")-1); messPut("Example",1,"ReturnString: "+test);
Описание: Используется для вставки одной строки в другую.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
str | Строка | Строка | Выход | |
pos | Позиция | Целый | Вход | 0 |
ins | Вставляемая строка | Строка | Вход |
Описание: Используется для замены части сроки другой строкой.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
str | Строка | Строка | Выход | |
pos | Позиция | Целый | Вход | 0 |
n | Количество | Целый | Вход | -1 |
repl | Заменяющая строка | Строка | Вход |
Описание: Используется в разборе строки по разделителю.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
str | Строка | Строка | Вход | |
lev | Уровень | Целый | Вход | |
sep | Разделитель | Строка | Вход | "." |
off | Смещение | Целый | Выход |
Пример:
using Special.FLibSYS; ExapleString="Example:123"; test=strParse(ExapleString,1,":"); messPut("Example",0,"strParse(): "+test);
Описание: Используется в разборе пути на элементы.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
path | Путь | Строка | Вход | |
lev | Уровень | Целый | Вход | |
off | Смещение | Целый | Выход |
Пример:
using Special.FLibSYS; test=strParsePath(path,0,"/"); messPut("Example",1,"strParsePath(): "+test);
Описание: Используется для преобразования пути в строку с разделителем.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
src | Источник | Строка | Вход | |
sep | Разделитель | Строка | Вход | "." |
Пример:
//Преобразуем значение "/ses_AGLKS/pg_so" атрибута "path" в значение "ses_AGLKS.pg_so" using Special.FLibSYS; test = strPath2Sep(path); messPut("Example",0,"path: "+path); messPut("Example",0,"strPath2Sep(): "+test);
Описание: Используется для кодирования строки для использования в исходнике HTML.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
src | Источник | Строка | Вход |
Описание: Используется для кодирования текста в бинарный вид, из формата <00 A0 FA DE>.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
src | Источник | Строка | Вход |
Описание: Используется для декодирования текста из бинарного вида в формат <00 A0 FA DE>.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
src | Источник | Строка | Вход |
Описание: Используется для преобразования вещественного в строку.
Параметры:
ID | Имя | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
val | Значение | Вещественное | Вход | |
prc | Точность | Целое | Вход | 4 |
tp | Тип | Строка | Вход | "f" |
Описание: Используется для преобразования целого в строку.
Параметры:
ID | Имя | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
val | Значение | Целое | Вход | |
base | База, поддерживаются: 8, 10, 16 | Целое | Вход | 10 |
Описание: Используется для преобразования строки в вещественное.
Параметры:
ID | Имя | Тип | Режим | По умолчанию |
rez | Результат | Вещественное | Возврат | |
val | Значение | Строка | Вход |
Описание: Используется для преобразования строки в целое.
Параметры:
ID | Имя | Тип | Режим | По умолчанию |
rez | Результат | Целое | Возврат | |
val | Значение | Строка | Вход | |
base | Основа | Целый | Вход | 0 |
Описание: Реализация Циклического Избыточного Кода для длин 8-64 бит.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Целое | Возврат | |
data | Данные | Строка | Вход | |
poly | Полином (реверсивный) | Целый | Вход | 40961 (0xA001) |
width | Ширина | Целый | Вход | 16 |
init | Инициализация | Целый | Вход | -1 (0xFFFFFFFFFFFFFFFF) |
Описание: Расчёт слепка сообщения 5.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Строка | Возврат | |
data | Данные | Строка | Вход |
Описание: Разделение float (4 байтов) на слова (2 байта).
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
val | Значение | Вещественное | Вход | |
w1 | Слово 1 | Целый | Выход | |
w2 | Слово 2 | Целый | Выход |
Описание: Объединение float (4 байтов) из слов (2 байта).
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
rez | Результат | Вещественное | Возврат | |
w1 | Слово 1 | Целый | Вход | |
w2 | Слово 2 | Целый | Вход |
Некоторые объекты модуля предоставляют функции пользовательского программирования.
Объект "Библиотека функций" (SYS.Special.FLibSYS)
Объект "Пользовательская функция" (SYS.Special.FLibSYS["funcID"])