OpenSCADA

Документація/API користувача

This page is a translated version of the page Documents/User API and the translation is 100% complete.

English • ‎mRussian • ‎Українська

До початку програмування у OpenSCADA Ви маєте вивчити структуру об'єктів програми (Об'єктна модель) у посібнику по програмі OpenSCADA та на рисунку 1.

Рис. 1. Користувацька об'єктна модель ядра OpenSCADA.

З цього документу Ви побачите, що можете, як користувач, програмувати наступні частини OpenSCADA:

API користувацького програмування представляє собою дерево об'єктів OpenSCADA (Рис.1), кожний об'єкт якого може надавати власний перелік властивостей та функцій. Властивості та функції об'єктів можуть використовуватися користувачем у процедурах на мовах користувацького програмування OpenSCADA.

На цей час OpenSCADA надає тільки одну мову текстового програмування — JavaLikeCalc, відповідно Ви також повинні її вивчити перед початком. Точкою входу для доступу до об'єктів OpenSCADA (Рис.1) з мови користувацького програмування JavaLikeCalc є зарезервоване слово "SYS", кореневого об'єкту OpenSCADA. Наприклад, для доступу до функції вихідного транспорту треба записати: SYS.Transport.Serial.out_ModBus.messIO(mess);.

API об'єктів, які надаються модулями, описуються у власній документації модулів та тут до неї надаються посилання.

Contents

1 Користувацька мова програмування JavaLikeCalc

1.1 Елементи мови

Ключові слова: if, else, while, for, in, break, continue, return, function, using.
Постійні:

Типи змінних:

Вбудовані константи: pi = 3.14159265..., e = 2.71828182..., EVAL_BOOL(2), EVAL_INT(-9223372036854775807), null,EVAL,EVAL_REAL(-1.79E308), EVAL_STR("<EVAL>")
Глобальні атрибути параметрів DAQ (починаючи з підсистеми DAQ та у вигляді {Тип модуля DAQ}.{Об'єкт контролеру}.{Параметр}.{Атрибут}).
Функції та параметри об'єктної моделі OpenSCADA.

At.png Варіанти EVAL (Error VALue) і null опрацьовуються особливо через перетворення одного у інше залежно від використаного базового типу, тобто ви вільні у використанні лише null або EVAL у будь яких випадках.

1.2 Операції мови

Операції, підтримувані мовою, представлено у таблиці нижче. Пріоритет операцій зменшується зверху донизу. Операції з однаковим пріоритетом входять до однієї групи кольору.

СимволОпис
()Виклик функції.
{}Програмні блоки.
++Інкремент (пост та пре).
--Декремент (пост та пре).
-Унарний мінус.
!Логічне заперечення.
~Побітове заперечення.
*Множення.
/Ділення.
%Залишок від цілочисельного ділення.
+Складання
-Віднімання
<<Порозрядний зсув ліворуч
>>Порозрядний зсув праворуч
>Більше
>=Більше або дорівнює
<Менше
<=Менше або дорівнює
==Дорівнює
!=Не дорівнює
|Порозрядне "АБО"
&Порозрядне "ТАК"
^Порозрядне "Виключне АБО"
&&Логічне "ТАК"
||Логічне "АБО"
?:Умовна операція "i=(i<0)?0:i;"
=Привласнення.
+=Привласнення із складанням.
-=Привласнення із відніманням.
*=Привласнення із множенням.
/=Привласнення із діленням.

1.3 Вбудовані функції мови

Віртуальною машиною мови передбачено наступний набір вбудованих функцій загального призначення:

Для забезпечення високої швидкості роботи у математичних обчисленнях модуль надає вбудовані математичні функції, які викликаються на рівні команд віртуальної машини:

1.4 Оператори мови

Загальний перелік операторів мови:

1.4.1 Умовні оператори

Мовою підтримуються два типи умов. Перший — це операції умови для використання всередині виразу, другий — глобальний, заснований на умовних операторах.

Умова всередині виразу будується на операціях '?' та ':'. У якості прикладу можна записати наступний практичний вираз:

st_open = (pos >= 100) ? true : false;

Що читається як — якщо змінна pos більша або дорівнює 100, тоді змінній st_open привласнюється значення true, інакше — false.

Глобальна умова будується на основі умовних операторів "if" та "else". У якості прикладу можна привести той-же вираз, але записаний у інший спосіб:

if(pos > 100) st_open = true; else st_open = false;

1.4.2 Цикли

Підтримується три типи циклів: while, for та for-in. Синтаксис циклів відповідає мовам програмування: C++, Java та JavaScript.

Цикл while, загалом, записується наступним чином: while({умова}) {тіло циклу};
Цикл for записується наступним чином: for({пре-ініціаліз};{умова};{пост-обчислення}) {тіло циклу};
Цикл for-in записується наступним чином: for({змінна} in {об'єкт}) {тіло циклу};
Де:

{умова} — вираз, який визначає умову;
{тіло циклу} — тіло циклу множинного виконання;
{пре-ініціаліз} — вираз попередньої ініціалізації змінних циклу;
{пост-обчислення} — вираз модифікації параметрів циклу після чергової ітерації;
{змінна} — змінна, яка буде містити ім'я властивості об'єкта при переборі;
{об'єкт} — об'єкт для якого здійснюється перебір властивостей.

1.4.3 Внутрішні функції

Мова підтримує визначення та виклик внутрішніх функцій. Для визначення внутрішньої функції використовується ключове слово "function" та в цілому визначення має синтаксис: function {ім'яФ} ({зм1}, {зм2}, ... {змN}) { {тіло функції} }. Визначення внутрішньої функції всередині іншої недозволене однак дозволено виклик раніш визначеної.

Виклик внутрішньої функції здійснюється у типовий спосіб, як процедура {ім'яФ}({var1}, {var2}, ... {varN}); або як функція {змРез} = {ім'яФ}({зм1}, {зм2}, ... {змN});. Виклик внутрішніх функцій допустимий тільки після їх декларації вище!

Всі змінні, визначені у основному тілі, недоступні всередині внутрішніх функцій і можуть бути передані через двобічні аргументи викликуваної внутрішньої функції або через аргументи основної функції. Всі змінні, визначені в середині внутрішньої функції, мають власний простір назв та недоступні із основного тіла, або будь якої іншої внутрішньої функції, та можуть бути передані в основне тіло через двобічні аргументи, результат викликуваної внутрішньої функції або через аргументи основної функції. Змінні внутрішньої функції реєструються для збереження/відновлення їх контексту після другого та більше входу до функції, тож вони цілковито підтримують рекурсивні виклики!

Оператор "return", в середині внутрішньої функції, здійснює контрольоване її завершення та розташування вказаної змінної, або результату виразу, як результату викликуваної внутрішньої функції.

Приклад типового визначення та використання внутрішньої функції наведено далі:

function sum(a, b, c, d) { return a + ((b==null)?0:b) + ((c==null)?0:c) + ((d==null)?0:d); }
rez = sum(1, 2);

1.4.4 Спеціальні символи строкових змінних

Мовою передбачено підтримку наступних спеціальних символів строкових змінних:

"\n" — переведення рядка;
"\t" — символ табуляції;
"\b" — забій;
"\f" — перевід сторінки;
"\r" — повернення каретки;
"\\" — сам символ '\';
"\041" — символ '!', записаний вісімковим числом;
"\x21" — символ '!', записаний шістнадцятковим числом.


2 Загальносистемні користувацькі об'єкти

JavaLikeCalc надає підтримку типу даних об'єкт "Object". Об'єкт представляє собою асоціативний контейнер властивостей та функцій. Властивості можуть містити як дані чотирьох базових типів, так і інші об'єкти. Доступ до властивостей об'єкту може здійснюватися за посередництвом запису імен властивостей до об'єкту obj.prop, через крапку, а також за посередництвом включення імені властивості у квадратні дужки obj["prop"]. Очевидно, що перший механізм статичний, а другий дозволяє вказувати ім'я властивості через змінну. Ім'я властивості через крапку не має починатися на цифру та містити символи операцій, інакше, для першої цифри, має використовуватися префікс об'єктуSYS.BD.SQLite.db_1s, або здійснюватися запис у квадратних дужках — SYS.BD.SQLite["1+s"], для символів операцій у назві. Видалити властивість об'єкту можна директивою "delete". Читання невизначеної властивості поверне null-EVAL. Створення об'єкту здійснюється за посередництвом ключового слова new: varO = new Object(). Базове визначення об'єкту не містить функцій. Операції копіювання об'єкту, насправді, роблять посилання на початковий об'єкт. При видаленні об'єкту здійснюється зменшення лічильника посилань, а за досягненням лічильника нуля, об'єкт видаляється фізично.

Різні компоненти OpenSCADA можуть довизначати базовий об'єкт особливими властивостями та функціями. Стандартним розширенням об'єкту є масив "Array", який створюється командою varO = new Array(prm1,prm2,prm3,...,prmN). Перелічені через кому параметри поміщаються до масиву у вихідній послідовності. Якщо параметр тільки один тоді масив ініціюється вказаною кількістю порожніх елементів. Особливістю масиву є те, що він працює із властивостями, як з індексами та основним механізмом звернення є включення індексу у квадратні дужки arr[1]. Масив зберігає властивості у власному контейнері одномірного масиву. Цифрові властивості масиву використовуються для доступу безпосередньо до масиву, а символьні працюють як властивості об'єкту. Детальніше про властивості та функції масиву можна прочитати за посиланням.

Об'єкт регулярного виразу "RegExp" створюється командою varO = new RegExp(pat, flg), де pat — шаблон регулярного виразу, а flg — ознаки пошуку. Об'єкт роботи із регулярними виразами оснований на бібліотеці "PCRE". При глобальному пошуку встановлюється атрибут об'єкту "lastIndex", що дозволяє продовжити пошук у наступному виклику функції. У випадку невдалого пошуку атрибут "lastIndex" скидається у нуль. Детальніше про властивості та функції об'єкту регулярного виразу можна прочитати за посиланням.

Для довільного доступу до аргументів функції передбачено об'єкт аргументів, звернутися до якого можна за посередництвом символу "arguments". Цей об'єкт містить властивість "length" з кількістю аргументів у функції та дозволяє звернутися до значень аргументу за посередництвом його номеру або ідентифікатору. Розглянемо перебір аргументів по циклу:

args = new Array();
for(var i = 0; i < arguments.length; i++)
  args[i] = arguments[i];

Часткові властивості об'єкту мають і базові типи. Властивості та функції базових типів приведено нижче:

  • real toReal(); — читає логічне значення як реальне число.
  • int toInt(); — читає логічне значення як ціле число.
Властивості:
  • MAX_VALUE — максимальне значення;
  • MIN_VALUE — мінімальне значення;
  • NaN — недостовірне значення.
Функції:
  • bool isEVal(); bool isNaN( ); — перевіряє значення на null-EVAL, та не число для Реального.
  • string toExponential( int numbs = -1 ); — повертає рядок відформатованого числа, у експоненціальній нотації та кількістю значущих цифр numbs. Якщо numbs відсутній то цифр буде стільки скільки потрібно.
  • string toFixed( int numbs = 0, int len = 0, bool sign = false ); — повертає рядок відформатованого числа в нотації з фіксованою точкою та кількістю цифр після десяткової точки numbs, з мінімальною довжиною len та обов'язковим знаком sign. Якщо numbs відсутній то кількість цифр після десяткової точки дорівнює нулю.
  • string toPrecision( int prec = -1 ); — повертає рядок відформатованого числа з кількістю значущих цифр prec.
  • string toString( int base = 10, int len = -1, bool sign = false ); — повертає рядок відформатованого числа цілого типу з базою представлення base (2-36), з мінімальною довжиною len та обов'язковим знаком sign.
  • real toReal(); — читає ціле-реальне значення як реальне число.
  • int toInt(); — читає ціле-реальне значення як ціле число.
Властивості:
  • int length — довжина рядка.
Функції:
  • bool isEVal(); — перевіряє значення на null-EVAL.
  • bool isNaN( bool whole = true ); — перевіряє рядок на не число, та загалом whole.
  • string charAt( int symb, string type = "" ); — дістає із рядка символ за номером symb типу type. Наступні типи символу підтримуються: ""-ASCII та простий одно байтовий, UTF-8, UTF-16, UTF-32. У випадку із UTF-8, позиція символу symb змінюється у позицію наступного символу оскільки довжина символів цього типу змінна.
  • int charCodeAt( int symb, string type = "" ); — дістає із рядка код символу symb типу type. Наступні типи символу підтримуються: ""-ASCII та простий одно байтовий, UTF-8, UTF-16, UTF-16LE, UTF-16BE, UTF-32, UTF-32LE, UTF-32BE. У випадку із UTF-8, позиція символу symb змінюється у позицію наступного символу оскільки довжина символів цього типу змінна.
  • string concat( string val1, string val2, ... ); — повертає новий рядок, сформований шляхом приєднання значень val1 та інші до початкового.
  • int indexOf( string substr, int start = 0 ); — повертає позицію пошукового рядка substr у вихідному рядку, починаючи з позиції start. Якщо вихідна позиція не вказана то пошук починається з початку. Якщо шуканого рядка не знайдено то повертається "-1".
  • int lastIndexOf( string substr, int start = {end} ); — повертає позицію шуканого рядка substr у вихідному рядку починаючи з позиції start, при пошуку з кінця. Якщо вихідна позиція не вказана то пошук починається з кінця. Якщо шуканого рядку не знайдено то повертається "-1".
  • int search( string pat, string flg = "" ); — шукає у рядку за шаблоном pat та ознаками шаблону flg. Повертає положення знайденого рядку інакше "-1".
var rez = "Java123Script".search("script","i");  // rez = 7
  • int search( RegExp pat ); — шукає у рядку за шаблоном "RegExp" pat. Повертає положення найденого підрядку інакше "-1".
var rez = "Java123Script".search(new RegExp("script","i"));  // rez = 7
  • Array match( string pat, string flg = "" ); — шукає у рядку за шаблоном pat та ознаками шаблону flg. Повертає масив із знайденим підрядком (0) та підвиразами (>1). Атрибут "index" масиву встановлюється у позицію знайденого підрядка. Атрибут "input" встановлюється у початковий рядок. Атрибут "err" встановлюється у код помилки операції.
var rez = "1 плюс 2 плюс 3".match("\\d+","g");  // rez = [1], [2], [3]
  • Array match( TRegExp pat ); — шукає у рядку за шаблоном "RegExp" pat. Повертає масив зі знайденим підрядком (0) та підвиразами (>1). Атрибут "index" масиву встановлюється у позицію знайденого підрядка. Атрибут "input" встановлюється у початковий рядок. Атрибут "err" встановлюється у код помилки операції.
var rez = "1 плюс 2 плюс 3".match(new RegExp("\\d+","g"));  // rez = [1], [2], [3]
  • string slice( int beg, int end ); string substring( int beg, int end ); — повертає підрядок вилучений з початкового, починаючи з позиції beg та до end (не включаючи), нумерація з нуля. Якщо значення початку або кінця негативне, то відлік ведеться з кінця рядку. Якщо кінець не вказано, то кінцем є кінець рядку. Наприклад, конструкція substring(-2) поверне останні два символи рядку.
  • Array split( string sep, int limit = 0 ); — повертає масив елементів рядку поділених sep та з обмеженням кількості елементів limit (0 без обмеження).
  • Array split( RegExp pat, int limit = 0 ); — повертає масив елементів рядку поділених шаблоном "RegExp" pat та з обмеженням кількості елементів limit (0 без обмеження).
rez = "1,2, 3 , 4 ,5".split(new RegExp("\\s*,\\s*"));  // rez = [1], [2], [3], [4], [5]
  • string insert( int pos, string substr ); — вставляє підрядок substr у позицію pos поточного рядку.
  • string replace( int pos, int n, string str ); — замінює підрядок з позиції pos та довжиною n у поточному рядку, на рядок str.
rez = "Javascript".replace(4,3,"67");  // rez = "Java67ipt"
  • string replace( string substr, string str ); — замінює всі підрядки substr на рядок str.
rez = "123 321".replace("3","55");  // rez = "1255 5521"
  • string replace( RegExp pat, string str ); — замінює підрядок за шаблоном pat на рядок str.
rez = "value = \"123\"".replace(new RegExp("\"([^\"]*)\"","g"),"``$1''"));  // rez = "value = ``123''"
  • real toReal(); — перетворює поточной рядок у реальне число.
  • int toInt( int base = 10 ); — перетворює поточний рядок у ціле число, відповідно до основи base (від 2 до 36). Якщо основа дорівнює 0 тоді буде враховуватися префіксний запис для визначення основи (123-десяткове; 0123-вісімкове; 0x123-шістнадцяткове).
  • string {parse,parseEnd}( int pos, string sep = ".", int off = {0,{length}}, bool mergeSepSymb = false ); — виокремлює із вихідного рядку елемент pos для роздільника елементів sep та від зміщення off (зупинка на початку наступного токену, або кінці для parseEnd). mergeSepSymb визначає дозвіл поєднання групи однакових символів у один роздільник. Результуюче зміщення поміщається назад до off. parseEnd() робить те саме, але з кінця.
  • string parseLine( int pos, int off = 0 ); — виокремлює рядок з номером pos від зміщення off (зупинка на початку наступного токену). Результуюче зміщення поміщається назад до off.
  • string parsePath( int pos, int offCmptbl = 0, int off = 0 ); — виділяє з початкового шляху елемент pos від зміщення off (зупинка на початку наступного токену) або offCmtbl (зупинка на наступному символі кінця поточного токену — для сумісності). Результуюче зміщення поміщається назад до off або offCmtbl.
  • string parsePathEnd( int pos, int off = {length} ); — виділяє з кінця рядка початкового шляху елемент pos від зміщення off (зупинка на кінці наступного токену). Результуюче зміщення поміщається назад до off.
  • string path2sep( string sep = "." ); — перетворює шлях у поточному рядку у рядок з розділювачем sep.
  • string trim( string cfg = " \n\t\r" ); — обрізає рядок з початку та кінцю, для символів cfg.


2.1 Об'єкт масиву (Array)

Особливістю масиву є те, що він працює з властивостями як з індексами та повне їх найменування не має сенсу, відтак доступний тільки механізм звернення охопленням індексу квадратними дужками "arr[1]". Масив зберігає властивості у власному контейнері одномірного масиву. Цифрові властивості масиву використовуються для доступу безпосередньо до масиву, а символьні працюють як властивості об'єкту.

Масив надає спеціальну властивість "length", для отримання розміру масиву "var = arr.length;". Також масив надає наступні функції:

2.2 Об'єкт регулярного виразу (RegExp)

Об'єкт роботи з регулярними виразами, засновано на бібліотеці PCRE. При глобальному пошуку встановлюється атрибут об'єкта "lastIndex", що дозволяє продовжити пошук при наступному виклику функції. У випадку невдалого пошуку атрибут "lastIndex" скидається у нуль.

У якості аргументів створення об'єкту передається рядок з текстом регулярного виразу та прапорці у вигляді рядка символів:

Властивості об'єкту:

Функції об'єкту:

2.3 Об'єкт вузла-тегу XML (XMLNodeObj)

Функції:

0x01 — повне завантаження, з блоками тексту та коментарями у спеціальних вузлах;
0x02 — не видаляти пробіли на початку та кінці тексту тегу.
0x01 — переривати рядок перед відкривальним тегом;
0x02 — переривати рядок після відкривального тегу;
0x04 — переривати рядок після закривального тегу;
0x08 — переривати рядок після тексту;
0x10 — переривати рядок після інструкції;
0x1E — переривати рядок після всіх;
0x20 — вставляти стандартний XML-заголовок;
0x40 — вставляти стандартний XHTML-заголовок;
0x80 — очищати сервісні теги: <??>, <!-- -->;
0x100 — не кодувати назви тегів;
0x200 — не кодувати назви атрибутів;
0x400 — захист бінарних символів [\x0-\x8\xB-\xC\x0E-\x1F] та помилкових UTF-8.

3 Програма-система (SYS)

Функції об'єкту:

4 Будь який об'єкт (TCntrNode) дерева OpenSCADA (SYS.*)

Функції об'єкту:

5 Підсистема "Безпека" (SYS.Security)

Функції об'єкту підсистеми (SYS.Security):

user — користувач перевірки доступу;
mode — режим доступу (4-R, 2-W, 1-X);
owner — власник ресурсу;
group — група ресурсу;
access — режим доступу до ресурсу (RWXRWXRWX — 0777).

Функції об'єкту "Користувач" (SYS.Security["usr_{User}"]):

Функції об'єкту "Група користувачів" (SYS.Security["grp_{Group}"]):

6 Підсистема "БД" (SYS.BD)

Функції об'єкту бази даних (SYS.BD["TypeDB"]["DB"]):

Функції об'єкту таблиці (SYS.BD["TypeDB"]["DB"]["Table"]):

7 Підсистема "Збір даних" (SYS.DAQ)

Функції об'єкту підсистеми (SYS.DAQ):

Функції об'єкту контролеру (SYS.DAQ["Modul"]["Controller"]):

Функції об'єкту параметру контролера (SYS.DAQ["Modul"]["Controller"]["Parameter"]):

Функції об'єкту атрибута параметра контролера (SYS.DAQ["Modul"]["Controller"]["Parameter"]["Attribute"]):

Функції об'єкта бібліотеки шаблона (SYS.DAQ[tmplb_Lib"]) та шаблону (SYS.DAQ[tmplb_Lib"]["Tmpl"]) параметра контролеру:

7.1 Модуль DAQ.JavaLikeCalc

Об'єктна модель користувача модуля JavaLikeCalc.

Об'єкт "Бібліотека функцій" (SYS.DAQ.JavaLikeCalc["lib_Lfunc"])

Об'єкт "Користувацька функція" (SYS.DAQ.JavaLikeCalc["lib_Lfunc"]["func"])

7.2 Модуль DAQ.LogicLev

Об'єкт "Параметр" [this]

7.3 Модуль DAQ.BlockCalc

Об'єктна модель користувача модуля BlockCalc.

Об'єкт "Блок" (SYS.DAQ.BlockCalc["cntr"]["blk_block"])

7.4 Модуль DAQ.ModBus

Об'єктна модель користувача модуля ModBus.

Об'єкт "Контролер" [this.cntr()]

Об'єкт "Параметр" [this]

7.5 Модуль DAQ.Siemens

Об'єкт "Параметр" [this]

7.6 Модуль DAQ.OPC_UA

Об'єкт "Параметр" [this]


8 Підсистема "Архіви-Історія" (SYS.Archive)

Функції об'єкту підсистеми:

Функції об'єкту архіватору повідомлень (SYS.Archive["mod_Modul"]["mess_Archivator"]):

Функції об'єкту архіватору значень (SYS.Archive["val_Modul"]["val_Archivator"]):

Функції об'єкту архіву (SYS.Archive["va_Archive"]):

9 Підсистема "Транспорти" (SYS.Transport)

Функції об'єкту підсистеми:

"{TrModule}.[out_]{TrID}[:{TrAddr}]" — типове вихідне із автоматичним створенням TrID за відсутності та наявності TrAddr;
"{TrModule}.in_{TrID}:{RemConId}" — ініціативне вхідне із ідентифікатором підключення у RemConId.
  • TrModule — модуль транспорту, як є Sockets, SSL, Serial;
  • TrID — ідентифікатор транспорту;
  • TrAddr — специфічна адреса транспорту;
  • RemConId — ІД віддаленого ініціативного підключення.

Функції об'єкту вхідного транспорту (SYS.Transport["Modul"]["in_Transp"]):

Функції об'єкту вихідного транспорту (SYS.Transport["Modul"]["out_Transp"]):

10 Підсистема "Протоколи" (SYS.Protocols)

10.1 Модуль Protocol.HTTP

Вхідна частина об'єкту модуля (SYS.Protocol.HTTP.{In})


11 Підсистема "Користувацькі інтерфейси" (SYS.UI)

11.1 Модуль QTStarter

Об'єкт модуля (SYS.UI.QTStarter)

11.2 Модуль UI.VCAEngine

Об'єктна модель користувача модуля VCAEngine.

Об'єкт "Сеанс" ( this.ownerSess() )

Об'єкт "Віджет" (this)

//Додає новий віджет на основі віджету текстового примітиву
nw = this.wdgAdd("nw", "Новий віджет", "/wlb_originals/wdg_Text");
nw.attrSet("geomX", 50).attrSet("geomY", 50);
//Встановлює посилання восьмого тренду параметром
this.linkSet("el8.name", "prm:/LogicLev/experiment/Pi", true);

Об'єкт "Віджет", примітиву "Документ" (this)


12 Підсистема "Спеціальні" (SYS.Special)

12.1 Модуль Бібліотека системного API середовища користувацького програмування (Special.FLibSYS)

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

Об'єкт "Користувацька функція" (SYS.Special.FLibSYS["funcID"])

12.2 Модуль Бібліотека стандартних математичних функцій (Special.FLibMath)

Об'єкт "Бібліотека функцій" (SYS.Special.FLibMath)

Об'єкт "Користувацька функція" (SYS.Special.FLibMath["funcID"])

12.3 Модуль Бібліотека функцій сумісності з SCADA Complex1 фірми ТОВ НІП "DIYA" (Special.FLibComplex1)

Об'єкт "Бібліотека функцій" (SYS.Special.FLibComplex1)

Об'єкт "Користувацька функція" (SYS.Special.FLibComplex1["funcID"])


13 Бібліотеки функцій користувача

На цей час OpenSCADA має бібліотеки функцій користувача, написані з використанням цього API користувача. Деякі з них розроблено для виключного використання з цього API. Всі бібліотеки користувача представлено у наступній таблиці:

Назва Версія Ліцензія Джерело Мови
Бібліотеки джерел даних, служб та обробки
Основна бібліотека 2.3 GPLv2 OscadaLibs.db (SQL, GZip) > DAQ.tmplb_base en, uk, ru
Бібліотека промислових пристроїв 3.0 GPLv2 OscadaLibs.db (SQL, GZip) > DAQ.tmplb_DevLib en, uk, ru
Бібліотека низькорівневих сенсорів та чипів 1.6 GPLv2 OscadaLibs.db (SQL, GZip) > DAQ.tmplb_LowDevLib en, uk, ru
Бібліотека сервісних процедур 1.2 GPLv2 OscadaLibs.db (SQL, GZip) > DAQ.JavaLikeCalc.servProc en, uk, ru
Бібліотека елементів регулювання 1.0 GPLv2 OscadaLibs.db (SQL, GZip) > DAQ.JavaLikeCalc.regEl en, uk, ru
Бібліотека моделей апаратів технологічних процесів 2.0 GPLv2 OscadaLibs.db (SQL, GZip) > DAQ.JavaLikeCalc.techApp en, uk, ru
Бібліотеки графічних елементів OpenSCADA модуля UI.VCAEngine
Бібліотека основних елементів інтерфейсу користувача 2.2 GPLv2 vcaBase.db (SQL, GZip) > VCA.wlb_Main en, uk, ru
Бібліотека елементів мнемосхем інтерфейсу користувача 1.0 GPLv2 vcaBase.db (SQL, GZip) > VCA.wlb_mnEls en, uk, ru
Бібліотека електричних елементів користувацького інтерфейсу 2.0 GPLv2 vcaElectroEls.db (SQL, GZip) > VCA.wlb_ElectroEls en, uk, ru
Комбіновані бібліотеки
Бібліотека звітів та документів 2.0, 2.1 GPLv2

OscadaLibs.db (SQL, GZip) > DAQ.JavaLikeCalc.doc
vcaBase.db (SQL, GZip) > VCA.wlb_doc

en, uk, ru
Рецепти 1.1, 1.1 GPLv2

OscadaLibs.db (SQL, GZip) > DAQ.tmplb_PrescrTempl
vcaBase.db (SQL, GZip) > VCA.wlb_prescr

en, uk, ru


14 Посилання

Documents/User_API/uk - GFDLNovember 2024OpenSCADA 1+r2996