OpenSCADAWiki: Home Page Uk/Doc/F LibSYS ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of HomePageUk/Doc/FLibSYS from 2016-11-14 16:25:00..
English (1 Kb) English
Russian (1 Kb) Русская
 (2 Kb) Переклад

Модуль <FLibSYS> підсистеми "Спеціальні"

Модуль: FLibSYS
Ім'я: Бібліотека функцій системного API.
Тип: Спеціальні
Джерело: spec_FLibSYS.so
Версія: 1.3.0
Автор: Роман Савоченко
Опис: Надає бібліотеку системного API середовища користувацького програмування.
Ліцензія: GPL


Contents

Вступ

Спеціальний модуль 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 разів. Вибірка здійснювалася із п'яти обчислень із округленням до меншого цілого. Час оточується кутовими дужками та вимірюється у мікросекундах.

1. Загальносистемні функції

1.1. Виклик консольних команд та утиліт операційної системи (sysCall)

Опис: Здійснює виклик консольних команд ОС. Функція відкриває широкі можливості користувачу OpenSCADA шляхом виклику будь-яких системних програм, утиліт та скриптів, а також отримання за посередництвом них доступу до величезного об'єму системних даних. Наприклад команда "ls -l" поверне деталізований вміст робочої теки.
Параметри:

ID Ім'я Тип Режим По замовченню
rez Результат Рядок Повернення
com Команда Рядок Вхід

Приклад:

using Special.FLibSYS;
test=sysCall("ls -l");
messPut("Example",0,"Example: "+test);

1.2. SQL запит (dbReqSQL)

Опис: Формування SQL-запиту до БД.
Параметри:

ID Ім'я Тип Режим По замовченню
rez Результат Об'єкт(Масив) Повернення
addr Адреса БД рядок Вхід
req SQL-запит Рядок Вхід

1.3. Вузол XML (xmlNode)

Опис: Створення об'єкту вузла 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",);

1.4. Запит інтерфейсу управління (xmlCntrReq)

Опис: Запит інтерфейсу управління до системи за посередництвом 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);

1.5. Архів значень (vArh)

Опис: Отримання об'єкту архіву значень (VArchObj) шляхом підключення до архіву за його адресою.
Параметри:

ID Ім'я Тип Режим По замовченню
rez Результат Об'єкт(VArchObj) Повернення
name Ім'я, адреса до атрибуту параметра з архівом (DAQ.{Module}.{Cntr}.{Prm}.{Attr}) або безпосередньо до архіву значень (Archive.va_{ValArchive}). Рядок Вхід

Об'єкт VArchObj

Функції:

Приклад:

using Special.FLibSYS;
val = vArh(strPath2Sep(addr)).get(time,uTime,0,archivator);
return val.isEval() ? "Порожньо" : real2str(val,prec);

1.6. Буфер архіву значень (vArhBuf)

Опис: Отримання об'єкту буферу архіву значень (VArchObj) для виконання проміжних операцій над кадрами даних.
Параметри:

ID Параметр Тип Режим По замовченню
rez Результат Об'єкт(VArchObj) Повернення
tp Тип значень архіву (0-Boolean, 1-Integer, 4-Real, 5-String) Цілий Вхід 1
sz Максимальний розмір буферу Цілий Вхід 100
per Періодичність буферу (у мікросекундах) Цілий Вхід 1000000
hgrd Режим "Жорстка мережа часу" Логічний Вхід 0
hres Режим "Високої роздільної здатності часу (мікросекунди)" Логічний Вхід 0

1.7. Ввід/Вивід (IO)

Опис: Ввід/Вивід у: файл, строковий потік.
Параметри:

ID Параметр Тип Режим По замовченню
rez Результат Об'єкт(IO) Повернення
name Ім'я файлу або дані (для строкового потоку) Рядок Вхід
accs Доступ до файлу (''-строковий потік;'r[+]'-читання;'w[+]'-запис з нуля;'a[+]'-додання;...) Рядок Вхід
mFormat Формат даних машини ('n'-сист. порядок;'b'-BigEndian;'l'-LittleEndian) Ціле Вхід "n"
enc Кодування рядку у файлі Логічний Вхід

IO об'єкт

Значення:


Властивості:


Функції:

2. Функції для роботи з астрономічним часом

2.1. Рядок часу (tmFStr) <3047>

Опис: Перетворює абсолютний час у рядок потрібного формату. Запис формату відповідає 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);

2.2. Повна дата (tmDate) <973>

Опис: Повертає повний час у секундах, хвилинах, годинах та інше, виходячи з абсолютного часу в секундах від епохи 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);

2.3. Абсолютний час (tmTime) <220>

Опис: Повертає абсолютний час в секундах від епохи 1.1.1970 та мікросекундах, якщо usec встановлено у позитивне значення.
Параметри:

ID Параметр Тип Режим По замовченню
sec Секунди Цілий Повернення 0
usec Мікросекунди Цілий Вихід -1

2.4. Конвертація часу із символьного представлення у час в секундах, від епохи 1.1.1970 (tmStrPTime) <2600>

Опис: Повертає час у секундах від епохи 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);

2.5. Планування часу у форматі Cron (tmCron)

Опис: Повертає час, сплановане у форматі стандарту Cron починаючи від базового часу або від поточного якщо базовий не вказаний.
Параметри:

ID Параметр Тип Режим По замовченню
res Результат Цілий Повернення 0
str Запис у стандарті Cron Рядок Вхід * * * * *
base Базовий час Цілий Вхід 0

2.6. Сон (tmSleep)

Опис: Короткий сон від наносекунд та до STD_INTERF_TM (5 секунд).
Параметри:

ID Параметр Тип Режим По замовченню
res Результат Цілий Повернення 0
tm Час Реальний Вхід 0

Переклад

3. Функции работы с сообщениями

3.1. Запрос сообщений (messGet)

Описание: Запрос системных сообщений.
Параметры:

IDПараметрТипРежимПо умолчанию
rezРезультатОбъект(Массив)Возврат
btmВремя началаЦелоеВход
etmВремя концаЦелоеВход
catКатегория сообщенияСтрокаВход
levУровень сообщенияЦелыйВход
archАрхиваторСтрокаВход

3.2. Генерация сообщения (messPut)

Описание: Формирование системного сообщения.
Параметры:

IDПараметрТипРежимПо умолчанию
catКатегория сообщенияСтрокаВход
levУровень сообщенияЦелыйВход
messТекст сообщенияСтрокаВход

Пример:

rnd_sq_gr11_lineClr="red";
Special.FLibSYS.messPut("Example",1,"Event: "+rnd_sq_gr12_leniClr);

4. Функции работы с строками

4.1. Получение размера строки (strSize) <114>

Описание: Используется для получения размера.
Параметры:

IDПараметрТипРежимПо умолчанию
rezРезультатЦелыйВозврат
strСтрокаСтрокаВход

Пример:

Special.FLibSYS.messPut("Example",1,"ReturnString: "+strSize("Example"));

4.2. Получение части строки (strSubstr) <413>

Описание: Используется для получения части строки.
Параметры:

IDПараметрТипРежимПо умолчанию
rezРезультатСтрокаВозврат
strСтрокаСтрокаВход
posПозицияЦелыйВход0
nКоличествоЦелыйВход-1

Пример:

using Special.FLibSYS;
test=strSubstr("Example", 0, strSize("Example")-1);
messPut("Example",1,"ReturnString: "+test);

4.3. Вставка одной строки в другую (strInsert) <1200>

Описание: Используется для вставки одной строки в другую.
Параметры:

IDПараметрТипРежимПо умолчанию
strСтрокаСтрокаВыход
posПозицияЦелыйВход0
insВставляемая строкаСтрокаВход

4.4. Замена части строки другой (strReplace) <531>

Описание: Используется для замены части сроки другой строкой.
Параметры:

IDПараметрТипРежимПо умолчанию
strСтрокаСтрокаВыход
posПозицияЦелыйВход0
nКоличествоЦелыйВход-1
replЗаменяющая строкаСтрокаВход

4.5. Разбор строки по разделителю (strParse) <537>

Описание: Используется в разборе строки по разделителю.
Параметры:

IDПараметрТипРежимПо умолчанию
rezРезультатСтрокаВозврат
strСтрокаСтрокаВход
levУровеньЦелыйВход
sepРазделительСтрокаВход"."
offСмещениеЦелыйВыход

Пример:

using Special.FLibSYS;
ExapleString="Example:123";
test=strParse(ExapleString,1,":");
messPut("Example",0,"strParse(): "+test);

4.6. Разбор пути (strParsePath) <300>

Описание: Используется в разборе пути на элементы.
Параметры:

IDПараметрТипРежимПо умолчанию
rezРезультатСтрокаВозврат
pathПутьСтрокаВход
levУровеньЦелыйВход
offСмещениеЦелыйВыход

Пример:

using Special.FLibSYS;
test=strParsePath(path,0,"/");
messPut("Example",1,"strParsePath(): "+test);

4.7. Путь в строку с разделителем (strPath2Sep)

Описание: Используется для преобразования пути в строку с разделителем.
Параметры:

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);


4.8. Кодирование строки в HTML (strEnc2HTML)

Описание: Используется для кодирования строки для использования в исходнике HTML.
Параметры:

IDПараметрТипРежимПо умолчанию
rezРезультатСтрокаВозврат
srcИсточникСтрокаВход

4.9. Кодирование текста в бинарный вид (strEnc2Bin)

Описание: Используется для кодирования текста в бинарный вид, из формата <00 A0 FA DE>.
Параметры:

IDПараметрТипРежимПо умолчанию
rezРезультатСтрокаВозврат
srcИсточникСтрокаВход

4.10. Декодирование текста из бинарного вида (strDec4Bin)

Описание: Используется для декодирования текста из бинарного вида в формат <00 A0 FA DE>.
Параметры:

IDПараметрТипРежимПо умолчанию
rezРезультатСтрокаВозврат
srcИсточникСтрокаВход

4.11. Преобразование вещественного в строку (real2str)

Описание: Используется для преобразования вещественного в строку.
Параметры:

IDИмяТипРежимПо умолчанию
rezРезультатСтрокаВозврат
valЗначениеВещественноеВход
prcТочностьЦелоеВход4
tpТипСтрокаВход"f"

4.12. Преобразование целого в строку (int2str)

Описание: Используется для преобразования целого в строку.
Параметры:

IDИмяТипРежимПо умолчанию
rezРезультатСтрокаВозврат
valЗначениеЦелоеВход
baseБаза, поддерживаются: 8, 10, 16ЦелоеВход10

4.13. Преобразование строки в вещественное (str2real)

Описание: Используется для преобразования строки в вещественное.
Параметры:

IDИмяТипРежимПо умолчанию
rezРезультатВещественноеВозврат
valЗначениеСтрокаВход

4.14. Преобразование строки в целое (str2int)

Описание: Используется для преобразования строки в целое.
Параметры:

IDИмяТипРежимПо умолчанию
rezРезультатЦелоеВозврат
valЗначениеСтрокаВход
baseОсноваЦелыйВход0

4.15. Циклический Избыточный Код (CRC)

Описание: Реализация Циклического Избыточного Кода для длин 8-64 бит.
Параметры:

ID Параметр Тип Режим По умолчанию
rez Результат Целое Возврат
data Данные Строка Вход
poly Полином (реверсивный) Целый Вход 40961 (0xA001)
width Ширина Целый Вход 16
init Инициализация Целый Вход -1 (0xFFFFFFFFFFFFFFFF)

4.16. Слепок сообщения 5 (MD5)

Описание: Расчёт слепка сообщения 5.
Параметры:

ID Параметр Тип Режим По умолчанию
rez Результат Строка Возврат
data Данные Строка Вход

5. Функции работы с вещественным

5.1. Разделение float на слова (floatSplitWord) <56>

Описание: Разделение float (4 байтов) на слова (2 байта).
Параметры:

ID Параметр Тип Режим По умолчанию
val Значение Вещественное Вход
w1 Слово 1 Целый Выход
w2 Слово 2 Целый Выход

5.2. Объединение float из слов (floatMergeWord) <70>

Описание: Объединение float (4 байтов) из слов (2 байта).
Параметры:

ID Параметр Тип Режим По умолчанию
rez Результат Вещественное Возврат
w1 Слово 1 Целый Вход
w2 Слово 2 Целый Вход

6. API пользовательского программирования

Некоторые объекты модуля предоставляют функции пользовательского программирования.


Объект "Библиотека функций" (SYS.Special.FLibSYS)


Объект "Пользовательская функция" (SYS.Special.FLibSYS["funcID"])

Ссылки

Referring pages: HomePageUk/Doc
HomePageUk/Doc/DAQ
HomePageUk/Doc/FLibSYS


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]