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:33:58..
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]