From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Documents/Release 0.9/Update1 and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська
  • Стан: Цілковито Завершено

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

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

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

  • Гаряче тестування збірок релізу.
  • Завершення та виправлення перекладу ПротоколуЗмін та документації.
  • Генерація актуальної позамережевої документації використовуючи сервісну процедуру "EXT: Off-line documentation".
  • Застосування-вивантаження виправлень релізу до репозиторію та складання цього щодо другої-кінцевої збірки.

3. Фінал та після-релізові завдання:

Оновлення здійснено за 1.5 роки від релізу 0.9 LTS, відтак воно варте 10 оновлень, оскільки ним виправлено близько 250 помилок та додано багато вдосконалень, які цілком ви можете почитати у протоколі змін оновлення.

Ключовими властивостями оновлення є:

  • значне розширення та стабілізація Web-інтерфейсу протягом практичної експлуатації у великому розподіленому рішенні, побудованого на основі модуля UI.WebVision; також розширення та стабілізація гарячої розробки протягом множинного виконання розроблюваного проекту;
  • тестування, виправлення та розширення резервування у частині повідомлень, також завдяки практичній експлуатації у великому розподіленому та ще й резервованому рішенні, у частині загально-системного коду та модуля DAQ.ModBus;
  • цілковита реструктуризація, вдосконалення та доповнення бібліотек OpenSCADA у SQLite файлах;
  • загальне покращення документації, доповнення документацією всіх бібліотек та ревізія більшості документації модулів.

1 OpenSCADA бібліотеки та проекти

  • FIX:DB.LibsDB.{OscadaLibs,vcaBase}: Оновлення перекладу.
    • FIX:JavaLikeCalc.doc,doc: Бібліотеку користувацького інтерфейсу "Документи" та JavaLikeCalc "Бібліотека звітів та документів" відревізовано, покращено, доповнено, документовано та документацію додано до offline.
      • FIX:doc: {docUsersSet,docAlarmsRep,docMessRep}: Поле "Параметр" перейменовано у "Джерело", у процесі глобальної уніфікації структури повідомлень порушень функції alarmSet().
        • Доповнено реалізацією "Річний звіт місячних значень (docRepYear)" із функцією введення значень у ручному режимі, підтримкою збереження ручних значень у архіві повідомлень, їх відображення у таблиці та діаграмі.
        • {doc,docDin,docRep2WorkSh(перейменований docRepSm2),docAlarmsRep,docRepInstVals(перейменований docGasNodeMgn),docMessRep,docUsersSet, docRepDay(перейменований docGasNodeDayA),docRepMonth(перейменований docGasNodeMonthA),docRepYear(перейменований docResourcesYear)}: виконано JavaLikeCalc переклад у tr().
        • {docRepInstVals,docRep2WorkSh,docRepDay,docRepMonth}: Значним чином переписано, покращено та зроблено повторно-використовуваним, дозволивши підключення DAQ-параметрів.
        • docMessRep: Доповнено опрацюванням віддалених станцій лише як додаткове джерело та завжди.
      • JavaLikeCalc.doc: Доповнено реалізацією побудови "Діаграми (diagram)" у SVG.
    • PrescrTempl,prescr: Бібліотеку інтерфейсу користувача та шаблонну бібліотеку "Рецепти" відревізовано, покращено, доповнено, документовано та документацію додано до offline.
      • PrescrTempl: Доповнено шаблоном "Менеджер", перенесеного із бібліотеки контролерів.
      • prescr: Елементи бібліотеки розширено лінкуванням БД та автоматичним створенням таблиць команд та програм.
  • DB.LibsDB.vcaElectroEls: Бібліотеку інтерфейсу користувача "Елементи електрики" відревізовано, покращено, доповнено, документовано та документацію додано до offline.
    • Доповнено чотирма уніфікованими елементами: "Ключ, уніфікований (keyUnif)", "Перемикач, уніфікований (swUnif)", "Загальний стан, уніфікований (stGenUnif)", "Стан області, уніфікований (stAreaUnif)".
  • FIX:DB.LibsDB.OscadaLibs:
    • Оновлено щодо деяких повідомлень.
    • FIX:base: Бібліотеку шаблонів "Основна бібліотека" відревізовано, покращено, доповнено, документовано та документацію додано до offline.
      • {anUnif,anUnifSt,manInUnif,digAlarm,codeState,pidUnif,pidUnifImp,SNMP,UPS}: Переведено на уніфікований механізм формування та контролю порушень.
      • Доповнено шаблоном "initConsAssignTrs" опрацювання вихідних транспортів ініціативних підключень Сокетів для будь-яких типів джерельних об'єктів, як то DAQ-модулі та контролері і параметри логічного рівня.
      • Доповнено шаблоном "codeState" формування стану за кодом.
      • Доповнено реалізацією складного сповіщувача у шаблоні "ntf", окрема JavaLikeCalc функція та об'єкти користувацьких протоколів "SMS" та "SMTP" позначено застарілими.
      • Доповнено шаблоном "UPS", перенесено із бібліотеки "Промислові пристрої".
    • FIX:DevLib: Шаблонна бібліотека є відокремленою частиною оригінальної бібліотеки "Пристрої" під назвою "Промислові пристрої", яку відревізовано, покращено, доповнено, документовано та документацію додано до offline.
      • FIX:IEC60870: Доповнено окремим часом "tmPoolAll" періодичності повного опитування.
        • Доповнено підтримкою пакетів M_ME_TF_1, M_ME_NC_1, розширено підтримкою SQ-режиму, перевірено M_ME_TF_1 та M_ME_NC_1, M_ME_NB_1 у SQ-режимі, AI встановлено у "реальний" тип.
        • Доповнено опцією "syncTimePLC" контролю синхронізації ПЛК.
      • Доповнено правильною реалізацією DCON у шаблонах DCON_Prt, DCON_Prt_DI, DCON_Prt_AO, DCON_Prt_DO, об'єкт користувацького протоколу "DCON" видалено.
      • Доповнено повнофункціональною реалізацією протоколу OWEN у частині збору даних.
      • Доповнено реалізацією DNP3 та її випробувано з outstation-demo із opendnp3.
      • Доповнено реалізацією модулів лічильників Pulsar-M (pulsarM).
      • Доповнено реалізацією сканеру ModBus, як шаблон "ModBusScan".
    • LowDevLib: Шаблонна бібліотека є відокремленою частиною оригінальної бібліотеки "Пристрої" під назвою "Низькорівневі пристрої", яку відревізовано, покращено, доповнено, документовано та документацію додано до offline.
      • FIX:{1W_DS9097,1W_DS9097U}: Виправлено визначення родини пристрою як шаблон 0x7F, виявлено на останніх DS2413 із першим байтом 0xBA.
      • Доповнено реалізацією шаблону "MAX6675", низькорівневого SPI Конвертору K-Термопар-у-Цифру Компенсації-Холодних-Спаїв.
      • Доповнено реалізацією шаблону "SHT3x", низькорівневого сенсору вологості.
      • Доповнено реалізацією шаблону ADS111x(ADS101x) та MCP4725, низькорівневих I2C-чипів.
    • FIX:JavaLikeCalc.techApp: JavaLikeCalc бібліотеку "Технологічні апарати" документовано та документацію додано до offline. Всі Кирилічні символи видалено із ідентифікаторів моделей та всі тексти відкориговано.
    • tests: Бібліотеку шаблонів "Тести" перейменовано із бібліотеки "S7".
    • JavaLikeCalc.servProc: JavaLikeCalc бібліотеку "Сервісні процедури" відревізовано, дещо покращено, доповнено, документовано та документацію додано до offline.
      • docOffLine: Значно розширено деталізацією повідомлень про помилки та розташуванням незавершених сторінок у аргументі "pagesCur" для продовження переривань.
    • JavaLikeCalc.regEl: JavaLikeCalc бібліотеку "Елементи регулювання" документовано та документацію додано до offline.
  • FIX:DB.LibsDB.vcaBase:
    • FIX: Цілковите і значне очищення від Кирилічних символів та вдосконалення оригінальних ідентифікаторів і повідомлень, із перейменуванням їх Англійською.
    • Більшість стандартних кадрів та віджетів адаптовано до стилів та створено стиль "Світлий" для всіх проектів.
    • FIX:Main: Бібліотеку інтерфейсів користувача "Основні елементи" відревізовано, покращено, доповнено, документовано та документацію додано до offline.
      • FIX:{alarmsAct,alarmsSt}:
        • Розширено підтримкою квітації-підтвердження, коментарями та користувацькими полями.
        • Поле "Параметр (prm)" перейменовано у "Джерело" де розташовано всі віддалені та локальні джерела.
      • RootPgSo: Вдосконалено динамічним створенням об'єктів сигналізації, кількість яких обмежена лише загальною довжиною назв об'єктів сигналізації та їх двома рядами. Підтримується також генерація кнопок об'єктів сигналізації праворуч від логотипу. Типи відображення також уніфіковано ідентифікаторами "view[1..6]", коли користувач може їх призначити у власний спосіб. Сумісність із оригінальними назвами видів збережено для наявних проектів!
      • Доповнено:
        • панеллю-вікном контролю "Обчислення параметру графіку (graphCalc)";
        • об'єктним віджетом "Властивості об'єкту (objProps)";
        • кадром порушень "Порушення — звіт (alarmsStReport)";
        • віджетом "Мітка зображенням (ImgLab)";
        • кадром "Менеджер користувачів (userManager)".
      • grph_panel: Доповнено незалежною кнопкою перемикання на час курсору замість непрямого перемикання при зменшені глибини.
      • ElViewGraph: Розмір шрифту назви зменшено із 15 до 11 та колір тренду відображуваних елементів по замовченню встановлено у "gray".
      • Кадри рецептів "prescrEdit", "prescrRun" та "prescrRunSimple" винесено до нової бібліотеки "Рецепти (prescr)".
      • cntrRegul: Товщину трендів збільшено до 2 пікселів.
    • FIX:mnEls: Бібліотеку елементів інтерфейсу користувача "Елементи мнемосхеми" документовано та документацію додано до offline.
  • FIX:Model.{AGLKS,Boiler}: Значно оновлено відповідно до загальних змін у бібліотеках.
    • FIX: Значно очищено та всі оригінальні ідентифікатори перейменовано Англійською, у процесі ревізії документації.
    • FIX: AGLKS.vca,Boiler.St: Адаптовано до нових змін основної сторінки.
      • Створено стиль "Світлий" для всіх проектів. Стилі переведено на схему прямого вимкнення стилів за їх наявності замість "Немає стилю" та додано стиль "Типовий".
    • FIX:Model.AGLKS:
      • FIX:St:
        • FSArch.1m: Видалено дивні і тимчасові архіватори: FSArch.{NetRequsts,test,StatErrors}, DBArch.test та додано актуальні: FSArch.{alarms,actions,SYS}, DBArch.SYS.
      • FIX:vca: Переприв'язано аналогові параметри та графіки.

2 API

!!!!:Зміни:

  • SYS: Типовий конструктор ResMtx встановлено у true для "isRecurs", оскільки це загальна ситуація.
    • Більшість функцій додання до контейнеру вузлів розширено поверненням результуючого ідентифікатора/ім'я створеного вузла для: chldAdd(), TSecurity::{usrAdd(),grpAdd()}, TTypeBD::open(), TTypeTransport::{inAdd(),outAdd()}, TValue.chldAdd(), DAQ.{TController::add(),TParameter::add(),BlockCalc.blkAdd()}, TTypeArchivator::{messAdd(),valAdd()}, TArchiveS::valAdd(), UI.VCAEngine::{wlbAdd(),prjAdd(),WLib.add(),Project.add(),Project.Page.pageAdd()}, UI.WebUser.uPgAdd().
    • TFld::Selected всюди перейменовано у TFld::Selectable.
    • Варіант спеціальної функції strMess() із обмеженням розміру результуючого повідомлення видалено та замінено функцією strEncode() із типом TSYS::Limit.
    • chldList() та chldPresent() зроблено віртуальними.
  • DAQ,Special: Атрибут "run_st" у TPrmTmplLib та TSpecial перейменовано у runSt.
  • Archives: TArchiveS::messPut() очищено від аргументу "force".
  • Protocols.HTTP: Функції користувацького API pgAccess(), pgCreator() перенесено із TProtocol до TProtocolIn.
  • Transports.In: Функцію protocol() перейменовано у protocols() та видалено protocolFull().

Доповнення:

  • SYS: Додано загальний механізм замків через контейнер замків, функція commonLock().
    • TConfig,*: Функції API користувача для конфігурації TConfig::cfg() та TConfig::cfgSet() розширено контролем прав.
    • Доповнено функціями TCfg::toDefault() та TConfig::cfgToDefault() скидання конфігураційного контексту до типового.
    • Об'єкт TFunction доповнено ознакою зміненості процедури isChangedProg(), та прапорець TFld::Selectable і функція ioAdd() доповнена результатом позиції доданого ВВ.
    • Запит Інтерфейсу Керування "load" розширено визначенням обраної БД у атрибуті "force", для здійснення такої операції щодо конкретного вузла.
    • XMLNode: Функцію отримання атрибутів attr() розширено опціональним аргументом визначення присутності.
    • "Масив (Array)" простору користувача розширено функціями indexOf() та lastIndexOf().
    • Функцію API користувача SYS.fileRead() розширено аргументами зміщення та розміру блоку читання.
    • Функцію API користувача strEncode() доповнено підтримкою варіантів "ToLower" та "Limit".
    • API користувача доповнено функцією strFromCharUTF() формування рядку із UTF-8, UTF-16, UTF-16LE, UTF-16BE, UTF-32, UTF-32LE, UTF-32BE.
    • Доповнено визначенням періодичності сервісного завдання SERV_TASK_PER=10.
    • API користувача доповнено функцією SYS.fileSize().
    • Додано функцію str2atime() для конвертації часу у рядку у час від епохи UNIX з підтримкою GMT.
    • TError доповнено назвами кодів помилок у перелічені "Codes", які всюди використано.
    • Спеціальні назви архівів доповнено назвою ALRM_ARCH_CH_NM ("<alarmsChange>"), для простої зміни наявних порушень.
    • Обмеження доповнено USER_ITS_LIMIT (1000000) для обмеження кількості елементів на кшталт користувацьких масивів із DAQ.JavaLikeCalc.
  • DB: Додано контроль закриття транзакцій у ядрі OpenSCADA функціями trTm_ClsOnOpen(), trTm_ClsOnReq() та trPr_ClsTask().
    • Додано контроль процесу пере-увімкнення об'єктів БД функцією disabledByUser().
    • Доповнено конфігурацією "Час життя відкритих таблиць", для закриттям неактивних таблиць функцією tblLifeTime().
    • Атрибут TBD::mEn перенесено до захисного простору.
  • Транспорти:
    • In: Доповнено віртуальними функціями keepAliveReqs(), keepAliveTm() для правильного KeepAlive на Web.
    • Out: Доповнено сервісом закриття вихідних транспортів за часом життя (неактивності), сервісною функцією outLifeTime().
      • Розширено полем загального контролю спроб у функції attempts().
      • Уніфіковано контролем часу останнього запиту у функції lstReqTm().
      • Додано функцію outAddrHelp() для отримання загальної допомоги за адресою модулів вихідних транспортів.
  • Protocol.HTTP: Розширено функцією користувацького API setUser() для зміни автентифікованого користувача.
  • DAQ: TController::alarmSet() розширено аргументом "force" для примусового встановлення порушень на об'єктах контролерів у резервуванні.
    • DAQ-параметри доповнено функцією користувацького API alarmSet() та функцією vlSetRednt() уніфікованого запису значень у резервуванні.
    • TDAQS::rdRestDtTm() розширено поверненням double замість float.
    • Доповнено функцією користувацького API daqAt().
    • Функцію користувацького API funcCall() розширено аргументом "err".
    • JavaLikeCalc: Функції користувацького API charAt() та charCodeAt() розширено підтримкою UTF. Функції користувацького API розширено isNaN() для bool, integer, real, string (особливо для перевірки чисел у рядку).
  • Архіви:
    • Об'єкти TMArchivator та TArchiveS доповнено функцією redntTm() та rdTm() для отримання останнього часу резервування архівів повідомлень.
    • TArchiveS::rdRestDtOverTm() розширено поверненням double замість float.
    • Архіви значень доповнено загальною опцією autoIdMode() режиму формування Ідентифікатору автоматично створюваних архівів із варіантами перелічення AutoIdMode::{BothPrmAttrId,OnlyPrmId,OnlyAttrId}.
    • Val: Додано функції API користувача getVals() та setVals() для реалізації загального механізму доступу до архівів/історії у масиві та із фіксованою періодичністю.
  • UI: Декларацію контекстної документації із опису деяких вузлів уніфіковано функцією TUIS::docKeyGet().
    • VCAEngine: Додано функцію користувацького API рівня сеансу this.ownerSess().uiCmd(). Віджет виконання доповнено функцією API користувача this.attrList() для отримання переліку атрибутів віджету.

3 Система

  • FIX: Повідомлення вихідного коду та документація програми:
    • TMess: Доповнено очищенням змінної оточення LC_ALL та встановленням "LANG" якщо порожнє, для запобігання перевизначенню LC_NUMERIC=C у кінці кінців.
    • FIX:.,*: Виправлено багато оригінальних повідомлень вихідного коду також протягом документування більшості модулів.
    • FIX:DAQ.JavaLikeCalc: Виправлено переклад JavaLikeCalc коду функцією tr() у створені таблиці перекладу "Trs" та записів там у простому режимі (одна мова).
    • Контекстна документація:
      • Позамережева документація доповнена деякими модулями OpenSCADA та більшістю бібліотек внутрішніх процедур та графічних елементів. Файл загальних CSS-стилів позамережевої документації "doc/en/files/doc.css" покращено вимкненням прозорого фонового кольору та деякими властивостями обрання мови.
      • Уніфіковано декларацією з опису деяких вузлів у функції TUIS::docKeyGet() та додано вузли до цього:
        • DAQ-шаблони та JavaLikeCalc бібліотеки;
        • СВУ-бібліотеки у UI.VCAEngine та UI.Vision.
      • UI: TUIS::docGet() доповнено кодом визначення LTS збірок та використання замороженої LTS документації на OpenSCADA файл-сервері.
      • FIX:DAQ.JavaLikeCalc,UI.VCAEngine: Виправлено декларацію позамережевої документації для "User_API".
  • FIX: Складання:
    • FIX:configure.ac: Версію бібліотеки ядра збільшено до 3:7:0 та версію програми збільшено до 0.9.1.
    • Доповнено корінними файловими системами (chroots) Debian 10, CentOs 8 та Ubuntu 20.04 для збірки OpenSCADA.
      • Вихідні тексти значно почищено стосовно попереджень складання із GCC 9 (CentOs 8).
      • UI.{QTCfg,Vision}: Адаптовано до збірки у оточені Debian 10 щодо Qt5.11.3, GCC8 та помилки стосовно конфлікту макросу message() у StdLibC++ через Qt5.
  • Android: Вивчено поведінку використання змінної оточення QT_SCALE_FACTOR на Android, яку встановлено у 1.5 та видалено типовий шрифт "Helvetica,12,-1" разом із CSS-правилами QScrollBar.
  • Модульну версія підсистеми "Спеціальні" збільшено до 12; підсистеми "БД", "DAQ", "Архіви" та "UI" збільшено до 13; підсистеми "Транспорти" збільшено до 15.
  • FIX: Потоковість, завдання, реальний час та замки:
    • Деякі загальні ресурси даних dataRes() замінено власними ресурсами, переважно через спостерігання проблем блокування у Protocol.HTTP та DAQ.ModBus.
    • FIX: Додано механізм загальних замків через контейнер замків, функція commonLock().
      • FIX: Transport.{Sockets,SSL}: Використано для системних функцій на кшталт getaddrinfo(), які не є багатопотоковими.
    • Планування завдань доповнено фазуванням їх виклику, що робить навантаження на процесор рівним.
    • FIX: Очікування функції TCntrNode::nodeDis() виправлено для нульового часу та функцію chldDel() встановлено у відсутність очікування по замовченню.
    • FIX: Виправлено негативну пріоритетність політики "BATCH".
    • Archive,DAQ.Controller: Для поточного часу повідомлень та значень переважно використано TSYS::curTime()/1000000 замість time(NULL) оскільки час повідомлень і значень у мікросекундах та позначено TSYS::curTime().
  • FIX: Резервування:
    • .,UI.{QTCfg,Vision,WebCfg,WebCfgD}: Функцію "Передача локальних первинних команд" резервованих систем уніфіковано та розширено повним переміщенням до TCntrNode::cntrCmd(), тож функція працює наразі для будь-яких викликів також із оточення програмування користувача.
    • Archives,DAQ.DAQGate: Опрацювання верхньої межі часу повідомлень у резервуванні та DAQGate змінено на використання останнього повідомлення для повтору його запиту двічі, щоб запобігти втраті повідомлень на межі.
      • FIX: Резервування та DAQ.DAQGate відновлено у записі великих архівних блоків значень, переважно у відновлені ділянок архіву значень.
      • Перше отримання порушень у резервуванні повідомлень ввімкнено лише за наявності архіваторів повідомлень у резерві.
      • Розміщення повідомлень у архіваторах процедурою резервування TMArchivator::redntDataUpdate() змінено на використання функції put(), для здійснення цієї операції автоматично для всіх отриманих повідомлень під замком.
    • DAQ,DAQ.*: Запис значень у резервуванні уніфіковано функцією vlSetRednt(). Сервіс "TValue::get:/serv/attr" розширено дещо зайвим запитом останнього запитаного значення для запобігання EVAL там при втраті з'єднання.
  • Функцію strEncode() доповнено варіантом "Limit" для обмеження розміру рядка з урахуванням змінності UTF-8, та наступні елементи переведено на неї, замість видаленого обмежувального варіанту функції strMess(): ключі TConfig, ВВ DAQ-шаблонів, DB.SQLite, UI.QTCfg.
  • FIX: Конфігурація:
    • TConfig,TCfg: Ключові поля доповнено обмеженням їх розміру перед обрізанням на боці БД.
      • *: Функції додання доповнено опрацюванням формування ідентифікатору, або назви, та обмеження їх у розмірі, поверненням результуючої назви ініціатору, з використанням розширення функції вузла chldAdd() до прямого повернення ідентифікатору та простого видалення нового вузла для однакових.
      • DAQ: Ідентифікатори ВВ Логічного Рівня DAQ-шаблонів розширено обмеженням розміру до 1.5*OBJ_ID_SZ=30 символів та доповнено їх обрізанням при створені.
      • Транспорти: Розмір Ідентифікатору вихідних транспортів встановлено у OBJ_ID_SZ*2, оскільки вони можуть комбінуватися із звичайного ідентифікатору вузла та деякого префіксу, у автоматичному режимі.
      • Доповнено функцією встановлення полів TCfg у типове значення, для запобігання завантаженню значень попередніх записів до відсутніх полів.
    • TConfig,*: Функції користувацького API для конфігурації cfg() та cfgSet() розширено контролем доступу.
    • Завантаження із обраної БД покращено попередньою перевіркою ввімкнення у функції TSYS::chkSelDB().
    • TCntrNode,DAQ,DAQ.JavaLikeCalc: Доповнено функцією load__() для опрацювання деяких дій на кінці завантаження.
  • Інтерфейс Керування:
    • *: Уніфіковано щодо контролю модифікації об'єктів вузлів та очищено зайві модифікації, перенесенням модифікації із контексту виконання під опцію "modifCalc".
    • .,UI.{QTCfg,WebCfgD}: Таблиці розширено окремою допомогою за стовпчиками та клітинками.
      • Транспорти: Таблицю зовнішніх хостів OpenSCADA розширено контекстною допомогою до клітинки адреси транспорту, використовуючи функцію outAddrHelp().
  • DAQ-шаблони та всі їх реалізації доповнено функцією створення атрибутів обрання із другого та третього рядка шаблонного поля "Значення", TFunction::IO доповнено прапорцем TFld::Selectable.
  • Завершено уніфіковану реалізацію DAQ-шаблонів — TPrmTempl::Impl, та такі елементи мігровано і адаптовано до неї: DAQ.{JavaLikeCalc,ModBus,LogicLev,Siemens}, Protocol.{ModBus,UserProtocol}, UI.WebUser.
  • FIX:DAQ,Archive.DBArch: Реалізовано копіюючий конструктор TElem для виправлення проблем у Archive.DBArch та багатьох груп-таблиць у груповому табличному режимі.
  • Function,DAQ.{JavaLikeCalc,LogicLev,ModBus,Siemens}: Розширено стеженням за зміною програми функції та на предмет гарячого перезапуску виконуваних процедур, встановленням прапорця "f_start".
  • TMess,XMLNode: Доповнено функцією setUTF8(), формування UTF-8 із їх кодів, взяте із XMLNode для використання у інших місцях.

4 БД

  • FIX:*: Функцію скидання конфігураційного контексту cfgToDefault() використано на початку функції dataSeek() та fieldSeek(), оскільки це обов'язкова операція, що-найменш для конфігураційного файлу, та має також здійснюватися для конфігурації у БД стосовно нових полів.
  • Доповнено контролем закриття транзакцій у ядрі OpenSCADA, у сервісному завдані для таймауту > 10 секунд або у окремому на БД завдані швидкого закриття транзакцій спільних СУБД. Для чого додано функції trTm_ClsOnOpen(), trTm_ClsOnReq() та trPr_ClsTask().
  • Об'єкти БД доповнено відновленням їх ввімкнення після втрати підключення (або іншої причини) для передбачених до ввімкнення та не вимкнених користувачем, за допомогою disabledByUser().
  • Доповнено конфігурацією "Час життя відкритих таблиць", для закриття неактивних таблиць.
  • FIX:{SQLite,MySQL,PostgreSQL,FireBird}:
    • FIX:{MySQL,PostgreSQL,FireBird}: Вдосконалено та перевірено гаряче відновлення втрачених з'єднань та без втрати даних.
      • FIX:FireBird: Відновлено основну роботу у запиті первинних ключів та адаптовано до FireBird версії 3.
      • FIX:MySQL: Вирішено із аварійним завершенням у вбудованому перепідключенні (за MYSQL_OPT_RECONNECT), який замінено власним та гарячим перепідключенням. Виправлено помилку "BLOB/TEXT can't have a default value (1)" на сучасних версіях серверу MariaDB, цілковитим видаленням DEFAULT для TEXT.
    • SQLite: Доповнено коректним опрацюванням блокування файлів БД SQLite, при доступі до загальних бібліотек із різних процесів.

5 Збір Даних

  • TController::alarmSet(): Розширено імплементацією концепції тригерування порушень, яка передбачає також пропущення порушень до буферу з метою очищення лише за наявності порушень.
    • Глобально уніфіковано та цілковито описано у документації стосовно повідомлень із об'єктів контролерів та DAQ-параметрів, коли параметр-джерело у повідомлені доповнюється ім'ям об'єкту контролеру.
    • FIX: Змінено на використання повного ID-шляху параметру, для запобігання колізіям у порушеннях від параметрів із однаковими ідентифікаторами, але різними джерелами.
  • FIX:*: Властивість period() заздалегідь актуалізовано, при зміні конфігурації "SCHEDULE", для забезпечення коректної періодичності даних архівів.
  • Розширено раннім ввімкненням бібліотек шаблонів у процесі завантаження, початково для транспортних протоколів заснованих на DAQ-шаблонах.
  • FIX:ModBus:
    • FIX: Режим "Асинхронний запис" відновлено та перевірено у записі після відновлення підключення, для використання у попереджені втрат. Асинхронний запис переміщено на після фази запиту із пригніченням-затримкою зміни записаних значень у атрибутах до очищення буферу запису.
    • FIX: Виправлено роботу у режимі резервування.
    • FIX: Загальну функцію upVal() поділено на дві функції upValStd() та upValLog() для окремого оновлення типів параметрів спочатку "Стандартний" та "Логічний" тип на останок, для випадків використання даних "Стандартного" типу параметрів у "Логічному".
    • Розширено роботою із помилковим або порожнім транспортом підключень, щоб забезпечити його зміну із зовнішніх процедур.
    • Розширено прапорцем "s" суворого запиту складних даних.
  • FIX:JavaLikeCalc: Розширено спробою відновлення виконання попередньої процедури у випадку помилок у новій, переважно із DAQ-шаблонів.
    • FIX: Виправлено аварійне завершення при гарячій компіляції, переважно при повернені до коректної процедури після компіляції помилкової, у випадку використання процедурою внутрішніх функцій та можливо і зовнішніх також, через відсутність очищення "fPrmst". Всі ці очищення уніфіковано у функціях buildClear(), workClear().
    • Встановлено у зупинку функції при зміні джерела програми, для застосування змін.
    • FIX: Попереджено рекурсивних викликів, що спостерігалося на рекурсивному створені віджетів у UI.VCAEngine.
  • Siemens: Розширено прямим визначенням типу даних адреси. LibnoDave оновлено до 0.8.5.1.
  • DAQGate: Розширено опцією та функцією розміщення різних віддалених контролерів у віртуальних параметрів.

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

  • FIX:Повідомлення:
    • /serv/mess: Вдосконалено у вставці, стосовно незалежного запису до архіву та суто для оновлення наявних порушень.
    • Повідомлення макросів "message", "mess_info", ... до функції Mess->put() переспрямовано на запис до буферу, для попередження прямого запису до архіваторів.
    • TArchiveS::messPut() очищено від аргументу "force".
  • FIX:Значення:
    • TVArchive::getVals(): Вдосконалено опрацювання невільних буферів (з фіксованою періодичністю) щодо запиту даних із буферу та різних архіваторів, використовуючи проміжний буферний масив, який програється в кінці.
    • FIX: Вдосконалено опрацювання обмеження незалежно для буферу, архіваторів та їх періодичності, для роботи запитів даних на великому інтервалі та високій періодичності.
    • FIX: TValBuf.get() перемкнено із генерації виключень на повернення EVAL за відсутності запитаних даних.
    • Архіватори значень доповнено загальною опцією "Режим формування ID атрибуту автоматично створюваних архівів" із обранням із режимів: "Обидва ID параметру та атрибуту", "Тільки ID параметру", "Тільки ID атрибуту". Для можливості контролю найменування автоматичних архівів.
    • TVArchive::{setVals(),setVal()}: Доступ до функцій запису до архіву обмежено лише користувачам у групі "Архів".
  • FIX:FSArch: Режим повідомлень у XML доповнено кешем позицій.
    • FIX: Архівацію повідомлень значно вдосконалено та виправлено щодо розташування декількох різних повідомлень на один час.
    • FIX: Виправлено стосовно видалення info.db та його опрацювання, використовуючи адресу БД як унікальну сутність замість обмеженого ідентифікатору БД, який наразі іменується через індексацію однакових.
    • FIX: Створення теки архіву перенесено на початок, до блокування та створення info.db.
    • FIX: Виправлено архівацію дубльованих повідомлень у режимі запобігання дублікатам - переписано.
  • FIX:DBArch:
    • FIX: Виправлено включення архівів значень до архіватору для негрупового типу архівації.
    • FIX: Остаточно виправлено запит одиночних значень архіву, після нецілковитого виправлення від 2018-02-23 лише для даних архіватору у періодичності 1 секунда.
    • Адаптовано до роботи лише у режимі прямого запису архіву, для групового режиму архівів та щодо оновлення цільової інформації при записі.

7 Транспорти

  • .,*: Розширено підтримкою обрання багатьох протоколів та функцію protocol() перейменовано у protocols().
    • Доповнено сервісом закриття вихідних транспортів за часом життя (неактивності) та функцією outLifeTime(), уніфіковане щодо контролю часу останнього запиту функцією lstReqTm().
  • FIX:Serial: Виправлено режим "Модем" вихідного транспорту, коректним опрацюванням результату функції ResMtx::tryLock(). Поле керування потоком перенесено до поля опцій через потребу прямого вимкнення деякою опцією на кшталт -RS485.
  • FIX:Sockets,SSL: Розширено підтримкою IPv6 як для вхідних, так і вихідних транспортів, використовуючи getaddrinfo().
    • Доповнено опрацюванням (підключенням) всіх IP-адрес, отриманих із символічної, особливо для вихідних транспортів.
    • Вихідні транспорти доповнено прямим визначенням декількох адрес хостів.
    • Вихідні транспорти вдосконалено у використанні спроб після отримання помилки запиту "Перевищено час читання.".
    • FIX:Sockets: Виправлено опрацювання вихідних транспортів із адресою "SOCK:{N}" від ініціативних підключень, щодо очищення адреси встановленням у "SOCK:-1", чим попереджаючи можливість перезапуску із використанням вже закритого описувача сокету, але можливо вже виділеного іншою частиною програми.
      • Адресу вхідних транспортів у TCP-режимі може бути розширено додатковими параметрами та наразі наступним полем після режиму є ідентифікуюче повідомлення ініціативного підключення у режимі 2, тож цей режим розширено надсиланням ідентифікуючих повідомлень після встановлення ініціативних підключень.
      • "TCP:" префікс адреси зроблено необов'язковим-опціональним.
      • Режим адреси вхідного транспорту по замовченню встановлено у 1 (не закривати, лише за параметрами KeepAlive).
      • Порт по замовченню встановлено у 10005.
    • SSL: Доповнено опрацюванням NO_*_METHOD для TLS1, TLS1_1, TLS1_2, DTLS1 та прямою підтримкою DTLSv1_2. Порт по замовченню встановлено у 10045.

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

  • FIX:HTTP: Доповнено коректною підтримкою KeepAlive, функціями вхідних транспортів keepAliveTm() та keepAliveReqs(). Розширено таблицею БД "HTTP_AuthSessions" зовнішніх сеансів автентифікації.
  • FIX:ModBus: Вхідна частина розширена використанням DAQ-шаблонів.
    • Перелік типів даних таблиці ВВ доповнено типом "Об'єкт".
    • Визначення варіанту протоколу за вхідними запитами дещо покращено визначенням відмінності варіантів RTU та TCP, через врахування типу транспорту.
  • UserProtocol: Розширено підтримкою DAQ-шаблонів.
  • SelfSystem: Розширено підтримкою спроб вихідних транспортів.

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

  • FIX: TUIS::mimeGet() змінено щодо поведінки визначення розширення файлу "svg" як "image/svg+xml" для коректного відображення SVG-файлів, та багатьох таких файлів, на WEB.
  • FIX:VCAEngine,Vision,WebVision: Варіант "LineEdit" примітиву "FormEl" доповнено видом "Пароль".
  • FIX: СВУ-стилі переведено на схему ввімкнення стилів за їх присутності замість вимкнення із "Немає стилю" та виправлено створення нових елементів і загалом.
  • VCAEngine,Vision: Всю інформацію зведено у полі статусу для віджетів, бібліотек та проектів; що доповнено статусом виконуваної процедури - успадковано, перевизначено.
  • FIX:VCAEngine:
    • Сторінки проектів доповнено типом "Посилання", для оптимізації споживання пам'яті на високо-динамічних та високо-повторюваних сторінках, на боці сеансу проекту. Відкриття сторінок при виконанні проекту (сеанси) покращено запобіганням зайвого та подвійного відкриття та закриття, що критично для контролю посилань на сторінки.
    • Багато заходів щодо редагування візуальних елементів під час виконання проекту:
      • Виправлено видалення сторінок проекту під час виконання проекту, щодо запобігання блокуванню об'єктів та забезпечення їх ранньому зв'язуванню для видалення сторінок сеансів разом із сторінками проектів.
      • Об'єкти сеансів переведено на власне блокування даних задля запобіганню мертвому блокуванню у складних ситуаціях, оскільки виклики стилів використовують непрямий parent().
    • Оптимізація віддаленої розробки:
      • інформаційні сервіси контролю "/prm/cfg/prj", "/page/page" доповнено отриманням кількості дочірніх сторінок у атрибуті "chPgN" за встановленням "getChPgN";
      • доповнено стосовно запобігання передачі іконок віджетів у контрольному сервісі "/serv/wlbBr" завантаження повного дерева віджетів, встановленням атрибутів "disIconsW", "disIconsCW".
    • Сеанси проектів СВУ прибрано, на кінець, з під контролю модифікації режиму розробки.
    • Додано пряме визначення специфічних до візуалізатору атрибутів, маркуючи їх префіксом "vs_".
    • FIX: Команду сеансу проекту "close" сервісу "/serv/pg" примусово опрацьовується, що актуально для посилань на сторінки.
    • FIX: Процедуру завантаження СВУ сторінок доповнено очищенням зайвих записів та записів успадкованих, але відсутніх віджетів, у таблиці "*_incl".
    • FIX: Виправлено роботу функції користувацького API tr() із документів.
  • FIX:QTCfg,Vision: Виправлено опрацювання підсвітлення синтаксису текстових полів шляхом первинного завантаження правил синтаксису а потім тексту, для запобігання псуванню тексту у окремих випадках, виявлено у протоколі обміну транспорту та Qt 5.11.
    • Доповнено кнопками примусового завантаження та збереження, до меню.
    • Покращено формування Таблиць стосовно отримання наявної ширини із maximumViewportSize().
  • FIX:Vision,WebVision: Покращено контроль смуг прокрутки вкладених сторінок, для забезпечення їх роботи окремо, не двох разом.
    • FIX:ElFigure: Завершено підтримку віддзеркалення, реалізацією: загалом, креслення Дуги, заповнення загалом та зображенням. Заповнення зображенням попереджено від прогалин при доступі поза зображенням.
    • FIX:Діаграма:
      • FIX:Тренди: Розширено побудову шкали часу, для багатьох діб із цілковитим приховуванням часу, та відображення першого значення ліворуч, використовуючи зміщення часової зони. Доповнено підтримкою великих часових інтервалів за місяцями.
      • Вимкнено обмеження точності запитаних значень архіву, для довгих лічильників.
      • Покращено віддалену роботу на повільних каналах та із періодичністю буферу значень у 10 секунд.
    • Text,Media,Box: Розширено відображенням курсору активності.
    • FormEl: Деякі види (Редагування рядку, Редагування тексту, Комбобокс, Перелік, Дерево, Таблиця) розширено окремим фоном та границею за допомогою специфічних користувацьких атрибутів "vs_background", "vs_border".
    • Доповнено специфічним користувацьким атрибутом "vs_winTitle" динамічного значення заголовку вікна.
  • FIX:Vision:
    • Оптимізація віддаленої розробки:
      • Дерево проектів перемкнено на часткове завантаження гілок та розширення, для покращення роботи на повільних підключеннях.
      • Дерево віджетів покращено у роботі на повільних підключеннях шляхом вимкнення завантаження іконок віджетів за порогом часу повного завантаження дерева більш 5 секунд та увімкнення цього для часу менше 0.1 секунди.
    • Розширено плануванням періоду оновлення залежно від реальної якості підключення у режимі виконання, на кшталт UI.WebVision.
    • FIX: Загальні виправлення та вдосконалення режимів виконання вікна:
      • FIX: Ручне масштабування вікна виконання (стосовно повного екрану або максимізації) покращено та виправлено у опрацюванні ознаки isResizeManual.
      • FIX: Виправлено запуск у повно-екранному режимі та не цілковите масштабування при відновленні у не нульову позицію вікна.
    • FIX:FormEl:
      • FIX:Таблиця: Покращено підлаштування до використання максимальної ширини із розміру віджету та максимуму порту відображення, оскільки лише максимум порту може бути тут ще не ініційованим. Остаточне виправлення підлаштування таблиць, переносом процедури до повідомлень: створити, змінити розмір та показати. Попереджено випадкові падіння.
      • FIX:Date: Виправлено аварійне завершення при встановлені конфігурації.
    • FIX: Виправлено регулярну заміну основної сторінки (аварійне завершення) та масштабування у режимі виконання.
    • FIX: Виправлено виконання стосовно аварійного завершення у закритті зовнішніх вікон при закритті головного вікна.
    • FIX: Виправлено діалоги редагування властивостей Сторінок/Бібліотек та Віджетів щодо:
      • запобігання закриття за Esc;
      • вимкнення скасування змін за часом у LineEdit;
      • відв'язування ознаки редагованості від видимості у TextEdit;
      • попередження втраті змін у вкладці "Обробка";
      • попередження про зміну успадкованої обчислювальної процедури.
    • Контроль за фокусом переписано у специфічний довкола СВУ-віджетів контроль, та не Qt-віджетів, що схоже на UI.WebVision та що запобігає деяким проблемам.
    • ElFigure: Редагування фігур переключено у нормальний режим, без будь-якої трансформації (обертання та віддзеркалення).
  • FIX:WebVision:
    • FIX:Основне функціювання:
      • FIX: JS функцію servSet() запису до серверу переключено у синхронний режим для запобігання втратам.
      • Уніфіковано основну перевірку фонових об'єктів стосовно підтримки опціональних фонових об'єктів, для зменшення загальної кількості фонових об'єктів, де обов'язковими наразі є: "ElFigure", "Діаграма", "Документ", "FormEl"; та опціональний лише "Текст".
      • Межу вертикального розширення основного вікна встановлено у 10% від загального розміру та у 50% для зменшення, для запобігання миготінню на FireFox від приміток про блокування зовнішніх вікон. Встановлено використання-включення вбудованого режиму масштабування відповідно до window.devicePixelRatio рівного 1 на рівні Web-браузеру.
      • Значно покращено виявлення втрати підключення для перевантаження основної сторінки, у випадках повернення до вже закритих сеансів у Web-браузері.
      • Доповнено реалізацією специфічного до візуалізатору атрибуту "userSetVis".
      • FIX: Відновлено перевантаження цілого дерева віджетів для відновлення функції видалення відсутніх віджетів у візуалізаторі за їх видалення у СВУ-рушії.
      • FIX: Попереджено зайві та окремі запити вмісту вкладених сторінок при запуску.
      • FIX: Покращено поведінку контролю фокусу та попереджено повідомлення миші поза сторінок.
    • Доповнено контролем кешу сторінок за часом життя та максимальною кількістю сторінок як на боці серверу, так і Web-браузеру, відтак цей модуль наразі більш підходить для роботи у оперативному режимі!
    • Контроль сеансів:
      • Розширено можливістю ручного закриття відкритих сеансів від адміністративного користувача.
      • FIX: Звичайні користувачі виключені від можливості підключення до чужих сеансів.
      • FIX: Основний код запиту GET значно спрощено щодо запобіганню перепідключенням до СВУ-сеансів без локальних представників.
      • Доповнено станом відкритих сеансів на сторінці контролю, включно із підключеним проектом та користувачем.
    • FIX:Панель статусу:
      • Додано рівень порушень із функцією глобальної квітації, надсиланням "ws_alarmLev".
      • Розширено підтримкою СВУ-стилів у їх відображенні та зміні.
      • FIX: Виправлено у формуванні розміру панелі статусу, оновлені та запобігання її миготіння при оновленні основної сторінки.
    • FIX:FormEl:
      • FIX:{Tree,Table}: виправлено розрахунок ширини границі та відступу у кінцевій геометрії.
        • FIX:Tree: Виправлено опрацювання порожнього рядку у кінці. Доповнено масштабуванням зображень дерева керування.
    • Розширено встановленням візуальних елементів СВУ щодо атрибуту "class" у "Примітив {WPrimitive}" та атрибуту "id" у ідентифікатор віджету на кшталт "wdg_{id}", для спрощення детального підлаштування.
  • FIX:QTStarter: Функцію updLookFeel() виправлено стосовно повернення типу "void". Додано емуляцію правої клавіші миші та контекстного меню при утриманні лівої клавіші миші протягом часу, встановленого опцією командного рядку --simulRightMKeyTm. Цей час встановлено у 2 секунди для Android.
  • FIX:QTCfg:
    • FIX: Виправлено застосування-прийняття забутих змін редагованих віджетів при перемиканні до іншого вузла. Елементи TextEdit виправлено щодо визначення ознаки редагування, яку відв'язано від видимості.
    • Додано натяк до груп вузлів для команди додання вузла.
    • Операції переміщення, у конфігураційній таблиці, розширено гарячими клавішами "Ctrl+Up" та "Ctrl+Down".
    • Оптимізація віддаленої роботи:
      • Попереджено оновлення дерева навігації при обранні будь-якого елементу.
      • Уповільнення циклу періодичного оновлення після появи діалогу зайнятості.
    • Прискорено закриття вікна конфігуратору із багатьма неактивними OpenSCADA хостами, шляхом раннього сповіщення завдань хостів.
  • WebUser: Розширено підтримкою DAQ-шаблонів.

10 Спеціальні

  • FIX:FLibSYS:
    • FIX:IO: write() виправлено щодо отримання типового типу даних, отримання помилкових даних зроблено безпечним.
    • CRC: Завершено використанням нормальних поліномів, вхідних та вихідних відносностей та XOR для виходу.
    • VArchObj: Доступ до функції запису у архів обмежено лише користувачам у групі "Архів".

11 Сервісні оновлення