From OpenSCADAWiki
< Documents‎ | Release 0.9
Revision as of 23:41, 26 March 2025 by RomanSavochenko (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Other languages:
English • ‎mRussian • ‎Українська
  • Стан: тестування та після-складання ...

Загальний процес випуску користувачам для оцінки ваших очікувань та розробникам для нагадування завдань:
1. Тиждень приготування та складання:

  • Складання останньої Робочої (Work) SVN-ревізії для всіх оточень нерегулярного складання щоб забезпечити ранне та широке тестування прийдешнього LTS релізу.
  • Анонс початку процесу випуску:
  • Злиття змін Робочої (Work) версії або копіювання цілком дерева Робочої гілки до LTS гілки-дерева.
  • Внесення деяких змін, специфічних до LTS, стосовно підняття версії:
    • оновлення configure.ac щодо версії випуску-оновлення та бібліотеки ядра;
    • оновлення data/*.spec та data/{debian,debian_mod}/changelog стосовно нового номеру версії та доповнення протоколу змін файлів новими записами випуску-оновлення.
  • Формування-доповнення ПротоколуЗмін LTS змінами з ПротоколуЗмін Work, групуючи зміни за розташуванням та сортуючи їх за станом виправлення та рівнем, із комбінування нових можливостей у одному елементі та без видалення будь-яких відмінних змін.
  • Копіювання значних змін із сформованого ПротоколуЗмін LTS до відповідної сторінки релізу-оновлення, беручи зміни за рівнем більш або рівні "!!".
  • Переклад сторінки(ок) релізу-оновлення, оновлення "Завдання (ToDo)" та "Дорожньої карти (RoadMap)".
  • Генерація актуальної позамережевої документації, використовуючи сервісну процедуру "EXT: Off-line documentation".
  • Застосування-вивантаження змін LTS дерева до репозиторію та складання цього.

2. Тиждень(і) тестування та після-складання:

  • Оновлення сторінки Завантаження.
  • Анонсування релізу-оновлення, також на FaceBook і LinkedIn.
  • Гаряче тестування збірок релізу.
  • Завершення та виправлення перекладу ПротоколуЗмін та документації.
  • Генерація актуальної позамережевої документації використовуючи сервісну процедуру "EXT: Off-line documentation".
  • Застосування-вивантаження виправлень релізу до репозиторію та складання цього щодо другої збірки, і для кожного тижня виправлення критичних помилок — перший тиждень без критичних виправлень означатиме завершення випуску LTS, тож, КОРИСТУВАЧІ — тестуйте ретельно LTS реліз щоб потім не скаржитись на його кінцеву збірку!
  • Оновлення бінарних копій стандартних бібліотек OpenSCADA: OscadaLibs.db, VcaBase.db, VcaElectroEls.db.

Це оновлення релізу 0.9 LTS виправляє біля 70 помилок та додає БАГАТО удосконалень із декількома значними-концептуальними, з якими цілком можна ознайомитися у протоколі змін оновлення.

Linux Дистрибутив Автоматизації проєкту OpenSCADA

  • оновлення TDE до 14.1.3, а також складання латаного для Debian 8,10 ARMHF;
  • відновлення запуску nm-applet у системному лотку і видалення пакету "raspi-firmware" із встановлень Debian 12;
  • формалізація часткового відгалуження TDE за підпроєктом — the Linux Дистрибутив Автоматизації проєкту OpenSCADA;
  • TDE > tdepowersave-trinity: Запобігання блокуванню-залипанню ознаки "blacklisted_running" після виконання однієї з програм у чорному переліку.
  • TDE > basket-trinity: Виправлення не заміни обраних блоків у нотатку за вставлення RTE, просте додання перед блоком.
  • TDE > tdepim-trinity > KOrganizer: Запобігання появі двох діалогів редагування елементу і нового елементу за подвійним клацанням на клітинці із елементами у місячному перегляді.
  • TDE > krusader-trinity: Виправлення оновлення панелі джерела за операцій переміщення.
  • TDE > tdebase-trinity > Konqueror: Запобігання інколи дублюванню елементів у елементі вкладки "Система (system:/)" через подвійний виклик setOpen(true);
  • TDE > tdebase-trinity > QuickLauncher: Завершення виправлення появи у QuickLauncher порожніх елементів після видалення якогось елементу, що пов'язано із вставленням вже відсутнього desktop-файлу (після деінсталяції програми) із популярностей;
  • TDE > krusader-trinity: Запобігання примусовому блокуванню змонтованих медіа-тек після зміни локальної директорії на віддалену-віртуальну, шляхом зміни локальної теки у Дім. Також запобігання течі пам'яті на виклику функції getcwd(0, 0) без звільнення її результату;
  • TDE > krusader-trinity: Запобігання очищенню панелі із переліком елементів спільної теки SMB після перейменування елементу через отримання другої чи третьої події result() від IO-Slave, тобто оновлення панелі зараз відкладено на 0.5 секунди після перейменування;
  • TDE > tdebase-trinity > KDesktop: Запобігання повного заморожування KDesktop на очікуванні Рушія Зберігача протягом біля хвилини після пробудження, через виключення використання sigsuspend() при очікуванні "mSaverProcessReady" де достатньо виклику tqApp->processEvents();
  • TDE > tdelibs-trinity > DCOP: Переключення внутрішніх інтервальних таймерів на сучасну структуру "timespec" і Монотонний лічильник у основі, що зробило DCOP нечутливим до стрибків реального часу, особливо при пробуджені;
  • TDE > tqt3-trinity: Повне переключення Qt3 інтервальних таймерів (QTimer) на сучасну структуру "timespec" і Монотонний лічильник у основі, що зробило Qt3 нечутливим до стрибків реального часу, особливо при пробуджені;
  • TDE > kaffeine-trinity: Додання підтримки медіа-формату WEBM;
  • TDE > tdelibs-trinity > MIME: Додання підтримки медіа-формату WEBM;
  • xine-lib: Переключення "display_queue.mutex" у Відео виході на рекурсивний режим для запобігання зависань у xine_new_framegrab_video_port();
  • TDE > tdemultimedia-trinity > XineThumbnails: У Картинках до Відео від Xine вимкнено Аудіо від xine_new_framegrab_audio_port() і відкориговано передачу кольору. На додаток до запобігання мертвим блокуванням у Xine;
  • TDE > tdelibs-trinity > TDE IO: Встановлення часу очікування підключення підлеглого SLAVE_CONNECTION_TIMEOUT_MIN із 2 у 10 і SLAVE_CONNECTION_TIMEOUT_MAX із 10 у 30 для запобігання помилок відсутності підлеглого FILE на загалом повільному обладнані і HDD/SSD із повільними секторами;
  • TDE > tdeadmin-trinity > KPackage: Доповнення меню "APT Додаткове" елементами: "Очищення (apt-get clean)", "Автовидалення (apt-get autoremove)";
  • TDE > tqt3-trinity: Запобігання зависанням на креслені помилкових образів символів у TQTextEngine, помічено у KCharSelect на сторінці 15;
  • TDE > tdelibs-trinity: Виправлення підставлення коректного року у kdatepicker відповідно до обраної Календарної Системи;
  • TDE > kdiff3-trinity: Перемикання адрес у меню плагіну на гарний вигляд замість кодування UTF-8 символів рідних локалей;
  • TDE > tqt3-trinity: Пом'якшення ефекту високого-повного навантаження ЦП із генерацією Незавершених подій від інтерфейсу GLib до серверу X11, що яскраво проявляється на digikam-showfoto, або qtwaittimer, що виявлено на kdesktop-screensaver при пробуджені, і шляхом додання короткого очікування у 1мс після опрацювання подій;
  • TDE > amarok-trinity: Запобігання шуму із високим навантаженням ЦП особливо на старих-повільних системах протягом виконання у системному лотку перед відкриттям вікна ПерелікуПрогравання, через помилковий фоновий запуск аналізаторів при зміні періодичності анімації;
  • TDE > tdebase-trinity > MediaManager: Додання перемикання використання /etc/fstab або утилітою монтування на кшталт udisks або загальною програмою монтування. І воно корисне як для FD, так і CD/DVD/BLURAY, оскільки udisks[2] не монтує їх без запису у /etc/fstab;
  • TDE > tdebase-trinity > MediaManager: Виправлення невідповідності у назві піктограм для CD-R і CD-RW у tdeioslave (14.0.10 на Debian 7);
  • TDE > kaffeine-trinity: Виправлення програвання DVD версіями XINE, які не розуміють URM "dvd://", лише "dvd:/";
  • TDE > tdebase-trinity > Kate: Повернення зламаних сеансів із 14.0.

Основні WWW-ресурси, документація проєкту і підпроєктів

Нові та значно оновлені частини

  • Ядро OpenSCADA: 3:14:0 => 3:15:0
(Реалізація властивостей Об'єктів Контролю, Реалізація користувацького ACL до вузлів контролю, Реалізація ініціативних підключень, Розширення менеджменту проєктів, Переклад Повідомлень — виправлення концептуальних змін попередніх оновлень)
  • Підсистеми "Транспорти" OpenSCADA: 20 => 21
  • DAQ.DAQGate: 2.13 => 2.14
  • DAQ.JavaLikeCalc: 5.6 => 5.7
  • Archive.FSArch: 3.8 => 3.9
  • Transport.SSL: 4.5 => 5.1
(Уніфікація і заміщення вирішення адрес різними способами)
  • Transport.Sockets: 4.8 => 5.0
(Уніфікація і заміщення вирішення адрес різними способами)
  • Protocol.OPC_UA: 2.2 => 2.3
(Правильна автентифікація із контролем доступу)
  • Protocol.HTTP: 3.8 => 3.9
  • UI.QTCfg: 6.0 => 6.1
  • UI.VCAEngine: 7.13 => 7.16
  • UI.Vision: 9.1 => 9.4
  • UI.WebUser: 1.6 => 2.0
(Розширення підтримкою прямого запису)
  • UI.WebVision: 6.9 => 6.13
  • UI.WebCfgD: 2.6 => 2.7
  • LibsDB.OscadaLibs.base: 2.2 => 2.3
  • initRemCntr: 1.1
  • fileServerHTTP: 1.0 => 1.2
  • LibsDB.OscadaLibs.LowDevLib: 1.5 => 1.6
  • 1W: 2.1
  • S1BP: 1.0
  • UC96: 1.0 => 1.2
  • LibsDB.OscadaLibs.DevLib: 3.0 => 3.1
  • ergomera125: 0.5
  • mbBase: 1.2 => 1.3
  • LibsDB.vcaBase.Main
  • storeHouse: 1.4 => 2.1
(Додано вкладення файлів і попередній перегляд зображень)
  • grph_panel: 1.5 => 1.6
  • doc_panel: 1.2 => 1.3
  • userManager: 1.6 => 1.7
  • LibsDB.vcaTest.test.docTestGasNodeDayRep: 1.0 => 1.1

КОНЦЕПТУАЛЬНЕ > Реалізація властивостей Об'єктів Контролю

  • Система: TCntrNode:
    • Додання об'єктних властивостей у групах за префіксами для різних частин OpenSCADA: система (sys), користувач (usr), підключення (con), безпека (sec), ... .
    • Додання Користувацької функції property() для доступу до об'єктних властивостей із контексту користувача на додачу до прямого-натурального шляху.
  • Транспорти: Переведення параметрів підключення на об'єктні властивості у групі "con".
  • Збір Даних: Переведення прапорців TValue resB1() і resB2() на об'єктні властивості у групі "DAQ", тобто видалення таких функцій.

КОНЦЕПТУАЛЬНЕ > Реалізація користувацького ACL до вузлів контролю

  • Система:
    • TCntrNode:
      • нові функції nodeAccess(), nodeLoadACL(), nodeLoadACLSnthHgl();
      • переведення із статичного із деяким вдосконаленням і адаптацією до ACL із сумісністю прямих правил для функцій інтерфейсу керування: ctrMkNode(), ctrChkNode();
      • нове визначення-макрос інтерфейсу керування для ACL: ctrMkNode3() як посилання на ctrMkNode() із автоматичним аргументом переривання NULL, ctrChkNode2() як посилання на ctrChkNode();
      • ctrMkNode() перемкнено у режим без виключення за відсутності контейнерних вузлів, просто не створювати і повертати NULL.
    • TFld: cntrCmdMake() додано аргументом cntrO для зв'язування із Вузлом Контролю, і весь код адаптовано до цього.
    • TConfig: cntrCmdMake() і cntrCmdProc() додано аргументом cntrO для зв'язування із Вузлом Контролю, і весь код адаптовано до цього.
  • Транспорти: TTransportS: cntrCmdPrm() додано аргументом cntrO для зв'язування із Вузлом Контролю, і весь код адаптовано до цього.
  • Збір Даних: Адаптація до ACL у полях опису Об'єктів Контролеру і Параметру, DAQ-Шаблонах і їх конфігурації, DAQ-Атрибутах, DAQ.DAQGate. Типові власник-доступ для підсистеми Збір Даних встановлено у "root:DAQ"-0775.
  • Protocol.OPC_UA: Використання ACL у перевірці доступу.

КОНЦЕПТУАЛЬНЕ > Концентрація різних OpenSCADA хостів на загальному сервері, як для ІнтернетРечей (IoT) на OpenSCADA, так і ні

  • LibsDB.OscadaLibs:
    • tmplib_base: Доповнено шаблоном "Контроль віддалених ініціативних підключень (initRemCntr)", із документуванням і повним перекладом українською.
    • Доповнено користувачем "RemCntr" із паролем "RemCntr" і у групі DAQ для використання у ініціативних віддалених підключеннях до серверу OpenSCADA.
    • Доповнено вимкненими транспортами "RemCntr" до Transport.Sockets і Transport.SSL, тобто якщо бажаєте надати дані вашої станції, ви просто вмикаєте один з них.
  • ModelsDB/{AGLKS/oscada_AGLKS.xml,Boiler/oscada_Boiler.xml}: Видалення системних груп без користувачів, чим даючи можливість визначення груп у бібліотеках.
  • FIX:Транспорти: TTransportOut доповнено функцією isFromInput() виявлення автоматично-створених об'єктів із вхідного транспорту. Зовнішні ініціативні підключення OpenSCADA хостів попереджено від зупинки.

КОНЦЕПТУАЛЬНЕ > Розширення менеджменту проєктів

  • data/openscada-proj.in: Розширення командами snapshot, crash, cores із уніфікацією приготування звітів з аварійного завершення, також для обробки аварійного завершення від себе. Доповнення звітів з аварійного завершення викликом "info thread" і "info sharedlibrary".
    • Переопрацювання алгоритму обробки проєктів у Системній і Користувацькій теці, тобто виправлення створення теки проєкту у Системній директорії за наявності Системного конфігураційного файлу.
  • Система: Увімкнено у опрацюванні сигналів SIGFPE і SIGSEGV із викликом openscada-proj crash {ProjID} для приготування звіту з аварійного завершення негайно для SIGFPE, SIGABRT і SIGSEGV.
    • Результат успішного повернення-виходу процесу примусово встановлено у EXIT_SUCCESS, а для відмови у EXIT_FAILURE.

КОНЦЕПТУАЛЬНЕ > Переклад Повідомлень (виправлення концептуальних змін попередніх оновлень)

  • LibsDB.OscadaLibs: Автоматичне оновлення деяких перекладів.
  • LibsDB.vcaBase.wlb_Main:
    • Доповнено динамічними повідомленнями із перекладом Українською для основних у DiskSMART і UPS, протягом представлення у "Властивості об'єкту (objProps)".
    • anShow,anShow1: Доповнено перекладом динамічних повідомлень із атрибутів параметрів NAME і DESCR.
    • FIX:RootPgSo: Атрибут "Проц. програвання демо (demoPlayProc)" встановлено у тип "Текст (переклад)".
  • SYS,DAQ,UI.VCAEngine: Реалізація вимкнення перекладу рядків конфігураційних полів, атрибутів Збору Даних, атрибутів Користувацького Інтерфейсу при зміні у динамічному виконанні:
    • SYS,DAQ,DB.{FireBird,MySQL,ODBC,PostgreSQL,SQLite}: доповнення уніфікованим методом {TCfg,TVal}::isTransl() перевірки перекладу елементу, і переведення на нього всюди;
    • TVal: доповнення прапорцем "mNoTransl" і функціями поводження із ним: noTransl(), setNoTransl(), TValue::setNoTransl();
    • UI.VCAEngine::Attr: доповнення прапорцем "NoTransl" і поводження із ним у isTransl();
    • переклад вимикається:
      • при запису за посиланням реалізації шаблонів у TPrmTempl::Impl::lnkOutput();
      • при виклику Користувацького API TVal::set();
      • UI.VCAEngine: при зміні атрибуту Віджету у контексті Сеансу для опрацьовуваних віджетів і при записі до атрибуту Збору Даних за посиланням.
    • Параметри Збору Даних додано відновленням перекладення динамічно зміненого поля при завантажені.
  • FIX:SYS: TMess: Додання повідомлень до таблиці "Trs" увімкнено лише у рівні повідомлень Налагодження, задля запобігання залиттю таблиці будь якими перекладеними повідомленнями і ні.
  • FIX:DAQ.OPC_UA,Protocol.HTTP,UI.{QTCfg,Vision}: Виправлення і вдосконалення деяких оригінальних повідомлень.
  • FIX:Збір Даних: Виправлення-завершення динамічного перекладу для заголовку об'єкту контролера і параметра.
    • FIX: Шаблони виправлено-адаптовано до динамічного перекладу у використанні назв ВВ.
    • FIX: Виправлення-завершення динамічного перекладу запиту значень у Керувальному Запиті TValue::"get:/serv/attr" для неархівних елементів.
    • Шаблони параметрів дозволено до встановлення порожніх імен задля очищення їх перекладу у режимі динамічного перекладу.
    • FIX:DAQGate: Дещо виправлено переклад Українською.
    • FIX:JavaLikeCalk: Дещо вдосконалено у перекладі.
  • FIX:Protocol.OPC_UA: Адаптація до динамічного перекладу у запитах даних.
  • FIX:UI.{QTCfg,Vision}: Повідомлення "Завантажити із БД" і "Зберегти до БД" перейменовано у "Завантажити" і "Зберегти", та із "сховище" замість "БД" у повних повідомленнях.
  • FIX:UI.VCAEngine: Функція Користувацького API простору сеансу this.attr() виправлено у перевірці прапорця перекладу TFld::TransltText.
    • FIX: Шаблони виправлено-адаптовано до динамічного перекладу у використанні конфігураційного шаблону атрибутів.

OpenSCADA бібліотеки і проєкти

  • FIX:LibsDB.OscadaLibs:
    • tmplib_DevLib: Доповнено шаблоном "Ergomera 125 (ergomera125)" із ініціюючою імплементацією власного протоколу і документуванням.
      • mbBase: Розширено підтримкою Вхідних Регістрів функцією 4.
      • FIX:VSE002: Переписано у режим послідовного читання пакетів, тобто виявлення усіх пакетів із зауваженням невідомих.
      • FIX:Incubator: Виправлення значення поля 'Транспорт (transport)'.
    • tmplib_LowDevLib: Доповнено шаблоном "BT: ATORCH S1BP (S1BP)" із документуванням і повним перекладом українською.
      • Доповнено шаблоном "1-Дріт (1W)" як поєднання 1W_DS9097 і 1W_DS9097U перед доданням I2C Драйверів і розширено параметром "Додавати лише при скануванні", із документуванням і повним перекладом українською. Додання підтримки I2C Драйверу DS2482-100 і деякі вдосконалення із виправленням.
      • UC96: Розширено підтримкою ATORCH UD24. Розширено читанням: "Вольти максимум (Vup)", "Вольти мінімум (Vdwn)", "Дата+, В (Dplus)", "Дата-, В (Dminus)".
    • FIX:tmplib_base.fileServerHTTP: Розширено передавання великих даних у шматках шляхом прямого запису функцією writeTo(). Для цього доповнено атрибутами: "Транспорт (tr)", "Протокол (prt)" і "Відправник (sender)".
    • FIX:flb_doc.diagram: Додано креслення неперіодичних прямих даних на кшталт місяці. Реалізація округлення великих інтервалів точок Кривими Кубічної Безіє.
  • LibsDB.vcaBase:
    • wlb_Main:
      • grph_panel,doc_panel: Додання перевірки активності контрольованого тренду або документу, і закриття за його неактивності. Переведення у полі розміру-глибини на редагований комбобокс із чисельним номером і множником людським текстом, засновано на новій функції Користувацького API time2str() і str2time(), тобто видалення тут поля типу.
      • docRepDay,docRepMonth,docUsersSet,docRepInstVals,docDin,docRep2WorkSh,docAlarmsRep,docMessRep: Адаптація до відкриття панелі контролю документів після декількох секунд запуску-відкриття, тобто для надання контролю документом при відображені у QtWebengine.
      • grpGraph,grpCadr,doc_panel,grph_panel,prescrEdit,prescrRun,prescrRunSimple,accept,treeSelect,calendar,userManager,alarmsStReport,docRepDay,docRepMonth,docRepYear},wlb_prescr.{prescrEdit,prescrRun,prescrRunSimple: Змінну ev_cur перейменовано у evCur.
      • storeHouse: Розширено підтримкою включення файлів як до MySQL поля LONGTEXT, так і до FS. Додання попереднього перегляду завантажених зображень у формі і звіті елементу. Додання динамічної панелі керування до обраних елементів у таблиці для швидкого контролю і доступу до даних складних полів.
      • FIX:grpGraph10: Виправлено у атрибуті "geomZ" для включених віджетів "el9" і "el10".
      • FIX:RootPgSo: Покращено, встановленням виконання демо-процедури на паузу за відсутності запитів на WEB, чим запобігаючи відкриттю усіх сторінок до реального закриття. Прямий перелік сторінок доповнено перевіркою прав сторінок.
      • FIX:grpGraph: Виправлено у атрибуті "geomZ" для включених віджетів "trnd1" і "arh".
      • FIX:weather: Доповнення піктограмами представлення різних станів. Виправлено у гарантуванні отримання годинних даних при проблемах підключення.
      • treeSelect: Оновлення піктограми кадру із покращенням назви.
      • userManager: Переведення на команди Інтерфейсу Керування для роботи у резервованих системах.
    • wlb_doc.docRepYear: Переключення креслення прямих даних на діаграмі у неперіодичний режим.
  • LibsDB.vcaTest.wlb_test.docTestGasNodeDayRep: Адаптація до відкриття панелі контролю документу при встановленні атрибуту "pgOpen" і не встановленому атрибуті "pgOpen" у панелі, оскільки документ архівний, тобто для надання контролю документом при відображені у QtWebengine.
  • ModelsDB.AGLKS:
    • wlb_doc.{docRepMonth,docRepDay}: Встановлено до не опрацювання періодично.
    • wlb_test.docTestGasNodeDayRep: Встановлено до опрацювання із періодичністю 10 секунд.

API
!!!!:Зміни:

  • Система: Тип змінних обмеження "limUserFile_SZ", "limUserIts_N" змінено у беззнакове.
    • TCntrNode: переведення зі статичного із перейменуванням деяких аргументів: ctrMkNode(), ctrChkNode(). Переведення ctrMkNode2() у визначення-макрос із автоматичним аргументом переривання NULL. Поєднання _ctrMkNode() до ctrMkNode(). Зміна прототипу функції objPropSet() у аргументі "val".
    • TVal: Переведення у константу для fld().
    • TFld: До cntrCmdMake() додано аргумент "cntrO" із перейменуванням деяких аргументів.
    • TConfig: До cntrCmdMake() і cntrCmdProc() додано аргумент "cntrO" із перейменуванням деяких аргументів.
  • Безпека: Перейменування аргументу "access" функції TSecurity::access() у "perm", також для Користувацького API.
  • Транспорти: До TTransportS::cntrCmdPrm() додано аргумент "cntrO".
  • Збір Даних: Переведення прапорців TValue resB1() і resB2() до властивостей об'єкту у групі "DAQ", тобто видалення таких функцій.

Доповнення:

  • Система: Доповнення функцією sysTmJmp(), як варіант sysTm().
    • Доповнення визначенням "DEF_HTaskPer".
    • TError: Нова помилка "Tr_ErrUnknown".
    • TCfg,TVal: Новий уніфікований метод isTransl().
    • TVal: Нові функції: noTransl(), setNoTransl().
    • TValue: Нова функція setNoTransl().
    • TCntrNode: Нові функції: nodeAccess(), nodeLoadACL(), nodeLoadACLSnthHgl(), property(), propertyClrGrp()'; і нові визначення: ctrMkNode3(), ctrChkNode2(). Додання функції Користувацького API property().
    • Доповнення параметром обмеження "limObjDscr_SZ" для конфігураційних полів опису (DESCR).
    • Додання функції str2time() із розбором людського часу від time2str(), яку також доповнено аргументом "inParts".
    • Додання нових функцій Користувацького API із представлення системних у просторі користувача: time2str(), cpct2str(), str2time().
    • XMLNodeObj: getElementsBy() і її варіант Користувацького API розширено аргументами "limit" і "from".
    • Mess: Додання глобальних функцій міток labTime(), labTimeSel().
  • Транспорти: TTransportOut доповнено функцією isFromInput().

Система

  • Складання:
    • configure.ac: Підняття версії бібліотеки ядра до 3:15:0 і версії програми до 0.9.8. Підняття версії модулів підсистеми "Транспорти" до 21.
    • acinclude.m4: Макрос autoconf AX_LIB_MYSQL додано використанням PKG_CONFIG за наявності конфігураційного файлу, для складання із MySQL у оточеннях крос-компіляції з бінарним mysql_config або mariadb_config. Видалення зайвих макросів: AX_LIB_SQLITE3, BNV_HAVE_QT. Деяке покращення макросу AX_LIB_POSTGRESQL.
    • data/{debian,debian_mod}: Додання "openscada-server.service" і "openscada-plc.service", також закоментованим записом "dh_installsystemd" у "rules", і що переключено до використання у Debian 12,11,10 і Ubuntu 24.04,22.04,20.04. Додання MySQL типову залежність "default-libmysqlclient-dev".
  • FIX:Security,ModSchedul,DAQ.{Function,Templates,BFN,JavaLikeCalc,OPC_UA,Siemens},Archive.{.,FSArch},Protocol.{ModBus,OPC_UA,HTTP,UserProtocol},UI.VCAEngine: Додання властивостей до полів стовпчика-переліку елементів контролю Таблиці від Інтерфейсу Керування для роботи не лише від root-root.
  • FIX:LibsDB.OscadaLibs.tmplib_base.fileServerHTTP,UI.WebVision: Уніфіковано обробку передачі даних у послідовності: діапазони медіа у заголовку, великі дані шматками, простий одинокий пакет для малих даних.
  • Archive.{MessArchive,MessArchiver,ValArchive},DAQ: Переведення у полі розміру-глибини Інтерфейсу Керування на редагований комбобокс із чисельним номером і множником людським текстом, засновано на новій функції Користувацького API time2str() і str2time().
  • .,DAQ.{BlockCalc,JavaLikeCalc},Protocol.{ModBus,OPC_UA,UserProtocol},UI.{VCAEngine,WebUser}: Доповнено параметром обмеження "limObjDscr_SZ" для конфігураційних полів опису (DESCR) із типовим значенням 1000 і діапазоном [300...1000000].
  • DAQ.{LogicLev,ModBus,OPC_UA,Siemens},UI.{QTCfg,WebCfgD}: Реалізація замовлення значення часу оновлення конфігураційного інтерфейсу обчислювальних об'єктів, задля оновлення після опрацювання об'єкту.
  • FIX:Transports,Protocols: Уніфікація генерації помилок у викликах messProtIO() і його варіанті Користувацького API messIO(XMLNodeObj req, string prt) згідно документації, тобто обов'язково із кодом помилки.
  • Параметри командного рядка доповнено отриманням типового значення зі змінної оточення "OSCADA_{cmd}", що саме вмикається змінною оточення "OSCADA_CMD_EN".

Бази Даних

  • FIX:SQLite: Код помилки SQLITE_CORRUPT додано до перепідключення файлу БД, оскільки ця помилка може виникати зі зміною структури файлу БД із зовнішнього джерела.

Збір Даних

  • FIX: Виправлено виявлення віддалених архівів для тимчасово порожніх, тобто які не мають джерела.
  • JavaLikeCalc: Реалізація оператору "var" щодо обробки правильної області видимості, тобто визначення нових змінних у функціях із оператором і використання глобальних без нього.
  • DAQGate: Вдосконалення алгоритму виявлення архівів із наданням інформаційного поля з переліком архівованих атрибутів.
  • FIX:ModBus: Виправлено повним опрацюванням рядків із кодуванням, тобто реєстрація усіх регістрів. Запит даних вдосконалено для TCP варіанту щодо очікування хвосту до першого пакету будь якого розміру, тобто не лише MBAP заголовку розміром у 7 байтів.

Архіви-Історія

  • Архіви значень доповнено виявленням подвійних посилань і видаленням їх усіх.
  • FSArch: Функцію розпакування архівів доповнено уніфікацією повідомлень про помилку і можливістю видалення помилкових архівів, наразі лише при перевірці архівних файлів значень.

Транспорти

  • Елементи Логу ВВ доповнено розміром повного пакету (або агрегацією) і типовий час агрегації встановлено у 1 секунду. Використання змін "ReqTm", "ReqMode", "ToTmOut", "InBufSz", "ReqAnsw" переміщено у власний простір об'єкту транспорту.
  • Sockets,SSL: TTransSock::getAddr() перейменовано у TTransSock::addrGet() і вирішення адрес переміщено до нової функції TTransSock::addrResolve() із прямим вирішенням статичних адрес і динамічним вирішенням за допомогою gethostbyname(), оскільки getaddrinfo() має проблеми із повторним входженням (на старих системах), та глобальне блокування призводить до тривалих зависань на усіх адресах за проблем із DNS. Також доповнено параметром "--getaddrinfo" для увімкнення його собі.
    • FIX: Вирішення важко-вловимої проблеми підставки помилкової адреси протягом вирішення адрес у getservbyname_r() від іншого потоку, тобто від GLibC 2.24 примушено використання getaddrinfo(), як більш коректного, або inet_pton() + блокований getservbyname_r() на старих системах.
  • FIX:SSL: Виправлено опрацювання відповідей вихідних транспортів для ініціативних підключень, особливо для відсутності відповіді.
    • Доповнено реалізацією TTransportIn::writeTo() із переведенням на карту у триманні структури SSockIn.
    • Вхідну частину транспортів переключено на використання уніфікованого TTransSock::addrResolve() для попереднього вирішення усіх динамічних адрес і передачі готових статичних до BIO_new_accept().

Транспортні Протоколи

  • OPC_UA: Реалізація правильної автентифікації із перевіркою доступу до DAQ-Вузлів для користувача:
    • libOPC_UA: реалізація автентифікації через UA::Server::EP::sessActivate() і властивість "identTkn", із якої береться користувач у атрибуті "userAuthenticated" і він записується до "UA::Server::Sess::{user,idPolicyId}";
    • libOPC_UA: усі запити даних за reqData() доповнено у "req" атрибутом "sesTokId" із ідентифікатором сеансу і для доступу до користувача тут;
    • доповнення конфігураційним полем "Анонімний користувач" для представлення анонімної автентифікації.
  • HTTP: Доповнено загальною функцією передавання будь якого методу до WEB-модулів — HTTP().

Інтерфейс Користувача

  • FIX:Vision,WebVision: Реалізація округлення великих інтервалів точок Кривими Кубічної Безіє. Виправлення обчислення нижньої межі вертикальної шкали.
  • VCAEngine,Vision,WebVision: Тип Зображення примітиву Медіа доповнено атрибутом "Зберігати співвідношення за вписування (keepAspect)".
  • FIX:VCAEngine,Vision: Додання опції у вкладці "Стилі" проєкту із контролем запису до стилів у контексті виконання. І запис до стилів вимкнено на боці проєкту.
  • FIX:WebVision: Запит даних ресурсів додано підтримкою шматків для великих даних і перетворення лише для малих зображень. Тип Збереження кнопок доповнено підтримкою діапазонів медіа зі збереженням даних у контексті WebVision для повторних спроб.
  • WebUser: Переключено на загальну функію HTTP() перенесення із Protocol.HTTP. Доповнено опціональним атрибутом "Транспорт (tr)" процедур обробки і шаблонів, отриманий із об'єкту протоколу. Атрибут "Результат (rez)" дозволено у порожньому значені для запобігання надсилання будь якої відповіді, що передбачає прямий запис із TTransportIn::writeTo().
  • QTCfg: Кнопки Назад і Вперед розширено меню прямого доступу елементів.
  • FIX:Vision: Запобігання відмові повноекранного режиму за деяких умов XOrg, коли Qt-прапорець повного екрану випадково очищається, тобто прапорець було продубльовано всередині. Часто відтворюється із Qt6 на Debian 12.
  • VCAEngine: Доповнення надсиланням неопрацьованих повідомлень до сторінки, яка відкрила вихідну сторінку.
  • WebCfgD: Розширено виклик pageRefresh() інтеграцією часу затримки.