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

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

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

At.png Важливі дії користувача за оновленням

  • DAQ.System: ІД автоматично генерованих параметрів DA змінено у: CPU - "CPU[{N}]", fs - "FS{MP}", hddstat - "DiskSt_{dev}", MEM - "MEM", netstat - "Net_{IF}", sensors - "Sensors", hddsmart - "DiskSMART", ups - "UPS", uptime - "UpTm_{U}".
=> вручну переприв'язти усі автоматично створені джерела, що змінилися, якщо використано Автоматичний режим створення
  • FIX:UI.VCAEngine: Виключено підключення атрибуту "focus" будь якого вкладеного віджету до ВВ обчислення і доповнено обробкою виключень доступу до таких ВВ для відсутніх вкладених віджетів.
=> вручну замінити усі статичні використання атрибуту "focus", на кшталт if(alarms_focus) alUnSel = 10; у LibsDB.vcaBase.wlb_Main.alarmsSt, на код if(this.alarms.attr("focus")) alUnSel = 10;

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

  • додання Debian 12 у якості бази дистрибутиву;
  • оновлення TDE до 14.1.1 із стабілізацію до рівня 14.0.13;
  • опціональне запобігання системного лотку щодо відображення піктограм програм із відмінним WMID але однаковою назвою на кшталт BlueMan;
  • запобігання значному наповненню "~/.xsession-errors" зневаджувальними повідомленнями на кшталт "[FIXME] UNCLASSIFIED DEVICE name: ...";
  • HWLib: використання Проєктної Напруги у розрахунку АмперГодин із ВатГодин замість Поточної Напруги, для відповідності із інформацією про ємність, яку вказано на батареї;
  • KRDC: відновлення нормального функціювання із 14.0.13;
  • KRFB: виправлення падінь KRFB одразу після від'єднання клієнту;
  • KXKB-KLayouts: Виправлення регресій у втраті-очищені системних розкладок клавіатури;
  • TDESVN: запобігання падінням при доступі до БД із KPart;
  • Krusader: виправлення розпакування *.tar.xz і *.txz, чим завершення реалізації підтримки XZ;
  • KMix: адаптація до динаміки мікшерів;
  • KMilo: відновлення керування яскравістю після його зламу;
  • QuickLauncher: наразі просто ігнорує порожні елементи, тож їх буде видалено після оновлення конфігурації;
  • TDM: вимкнення автентифікації за Карткою Безпеки для запобігання зависанням при виході;
  • KOrganizer: вдосконалення діалогу долучень щодо вказання лише файлу із найменуванням цього долучення з назви файлу та із включенням по замовченню; вдосконалення діалогу редагування категорій щодо сповіщення підлеглого діалогу обрання про зміну категорій;
  • TDEPowerSave: запобігання скиданню відображених значень віджетів значень батарей, оскільки вони починають відображати порожню дошку і -1; закоментовано SLOT slotHelpContents() через його відсутність; запобігання появі помилкового діалогу неактивності для присипляння одразу після прокидання, який особливо часто з'являється при використанні ноутбуку від батареї;
  • KPackage: оптимізація споживання пам'яті шляхом читання результату "apt-cache dumpavail" через тимчасовий файл а не через пам'ять, відтак споживання пам'яті на Debian 12 зменшено із ~900MB до ~450MB;
  • TDEPrint: виправлення перекладу назв груп властивостей друку;
  • переклад Українською для: knmap, knutclient, konversation, tdenetworkmanager.

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

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

  • Ядро OpenSCADA: 3:13:0 => 3:14:0
(Уніфікація складання із адаптацією ..., Перегляд і уніфікація підсистеми Транспортів ..., Контроль великого споживанням пам'яті), Переклад Повідомлень — виправлення концептуальних змін попереднього оновлення)
  • Підсистеми "Транспорти" OpenSCADA: 19 => 20
(Перегляд і уніфікація підсистеми Транспортів ...)
  • Підсистеми "Збір Даних" OpenSCADA: 14 => 15
(Уніфікація концепції типів параметрів)
  • DAQ.System: 2.4 => 3.2
(Цілковитий перегляд і розширення щодо ...)
  • DAQ.LogicLev: 2.7 => 2.9
  • DAQ.DAQGate: 2.11 => 2.13
  • DAQ.ModBus: 3.6 => 3.8
  • DAQ.OPC_UA: 2.6 => 2.8
  • DAQ.JavaLikeCalc: 5.5 => 5.6
  • DAQ.Siemens: 4.4 => 4.5
  • DAQ.AMRDevs: 0.7 => 0.8
  • Transport.SSL: 3.4 => 4.5
(Розширення підтримкою ініціативних підключень, адаптація до OpenSSL 1.1 і більше)
  • Transport.Sockets: 4.5 => 4.8
  • Transport.Serial: 2.6 => 2.7
  • Protocol.SelfSystem: 1.10 => 2.0
(Значне розширення і виправлення у реалізації зовнішніх підключень та більше)
  • UI.QTCfg: 5.12 => 6.0
(Уніфікація складання із адаптацією до Qt6, QtWebEngine, QtMultimediaEngine, ...)
  • UI.QTStarter: 5.14 => 6.0
(Уніфікація складання із адаптацією до Qt6, QtWebEngine, QtMultimediaEngine, ...)
  • UI.VCAEngine: 7.11 => 7.13
  • UI.Vision: 8.6 => 9.1
(Уніфікація складання із адаптацією до Qt6, QtWebEngine, QtMultimediaEngine, ...)
  • UI.WebCfgD: 2.4 => 2.5
  • UI.WebVision: 6.8 => 6.9
  • LibsDB.OscadaLibs.DevLib: 2.6 => 3.0
(Доповнення багатьма шаблонами із документуванням)
  • LibsDB.vcaBase.Main.storeHouse: 1.3 => 1.4

КОНЦЕПТУАЛЬНЕ > Уніфікація складання із адаптацією до Debian 12, Qt6, QtWebEngine, QtMultimediaEngine, OpenSSL3, MIPS

  • FIX: Завершено правильне складання із бібліотекою ядра лише статично:
    • configure.ac: конфігураційний параметр --enable-CoreLibStatic розширено визначенням AM_CONDITIONAL(CoreLibStatic) і змінною оточення LIB_MOD;
    • moduls/*/*/Makefile.am: доповнено параметром --tag=disable-shared і розширено використанням змінної оточення LIB_MOD;
    • src_call/Makefile.am: розширено специфічною обробкою AM_CONDITIONAL(CoreLibStatic) для статичного зв'язування бібліотеки ядра із усіма включеними модулями.
  • configure.ac,acinclude.m4: Очищено від застарілих макросів у AutoConf 2.70:
    • AC_HELP_STRING перейменовано у AS_HELP_STRING;
    • AM_CONFIG_HEADER перейменовано у AC_CONFIG_HEADER;
    • AC_LIBTOOL_DLOPEN замінено на LT_INIT([dlopen]);
    • AX_PTHREAD замінено на AC_SEARCH_LIBS(pthread, [pthread_create])
    • закоментовано AC_PROG_LIBTOOL, AM_PROG_LIBTOOL, AC_HEADER_STDC, AC_HEADER_TIME, AC_TYPE_SIGNAL, AC_ISC_POSIX.
  • acinclude.m4,DAQ.OPC_UA.libOPC_UA,Transport.SSL,Special.FLibSYS: Очищено від застарілих функцій у OpenSSL 1.1 (API 3.0):
    • acinclude.m4: функції тестування макросу AX_LIB_OpenSSL() і AX_LIB_OpenSSL_opt() на libcrypto замінено із MD5_Init() у BIO_new(); функції тестування макросу AX_LIB_OpenSSL() на libssl замінено із SSL_free() у SSL_new();
    • OPC_UA.libOPC_UA: UA::symmetricEncrypt() і UA::symmetricDecrypt() поєднано у UA::symmetricCrypt() і переключено на використання EVP_CipherInit() і EVP_CipherUpdate() замість AES_cbc_encrypt() для нових версій;
      • використання RSA_public_encrypt() переведено на EVP_PKEY_encrypt() і RSA_private_decrypt() переведено на EVP_PKEY_decrypt() для нових версій.
    • Transport.SSL,Special.FLibSYS: використання MD5() переведено на EVP_DigestInit_ex(), EVP_DigestUpdate(), EVP_DigestFinal_ex() для нових версій.
  • configure.ac: При додані Qt6 його доповнено щодо Qt6Sensors, Qt6WebEngineWidgets, Qt6MultimediaWidgets.
    • Доповнено перевіркою Qt5WebEngineWidgets і Qt5MultimediaWidgets для підтримки у UI.Vision.
    • Доповнено перевіркою декларацій-функцій clock_nanosleep, pthread_rwlock_timedwrlock, newlocale для дуже простих оточень MIPS із UCLibC.
    • Параметри --disable-WebKit і --disable-Phonon перейменовано у --disable-QtWebEngine і --disable-QtMultimediaEngine відповідно.
    • Загальні зміни QtWebKit_{CFLAGS,LIBS} і phonon_{CFLAGS,LIBS} перейменовано у QtWebEngine_{CFLAGS,LIBS} і QtMultimediaEngine_{CFLAGS,LIBS} відповідно.
    • Покращено більшість відповідних повідомлень.
    • Доповнено перевіркою заголовку pthread.h.
  • acinclude.m4: AutoConf макрос AX_LIB_Qt розширено підтримкою Qt6 та вдосконалено виявлення MOC і RCC для Qt5.
    • Покращено деякі повідомлення.
  • data/{debian,debian_mod}/compat: Рівень збільшено до 7 для складання на сучасний дистрибутивах Debian по замовченню.
  • data/{debian,debian_mod}/control: Доповнено варіантами залежностей qt6-base-dev, qt6-webengine-dev, qt6-multimedia-dev і qtwebengine5-dev, qtmultimedia5-dev.
  • ResRW::{resRequestW,resRequestR}(): Доповнено використанням версії за часом із визначенням HAVE_DECL_PTHREAD_RWLOCK_TIMEDWRLOCK.
  • TSYS::atime2str(),SYS.strftime(): Доповнено використанням локалізованої дати із визначенням HAVE_DECL_NEWLOCALE.
  • TSYS::{sysSleep,taskSleep}(): Доповнено використанням сну за годинником при визначені HAVE_DECL_CLOCK_NANOSLEEP.
  • Інтерфейс Контролю основної сторінки доповнено прихованням вкладки "Переклади" і полів мови за відсутності багатонаціональності взагалі.
  • TMess,TModule: Перевірку HAVE_LIBINTL_H замінено на "#if HAVE_LIBINTL_H", тобто перевіркою на 1.
  • Transports.SSL: Адаптовано до нових функцій OpenSSL 1.1 (API 3.0) з поводженням із застарілими.
  • UI.{QTStarter,QTCfg,Vision}: Адаптація до складання із Qt6, включно із адаптацією до Qt6WebEngine і Qt6Multimedia:
    • QLayout::{setMargin,margin}() замінено на QLayout::{setContentsMargins,getContentsMargins}();
    • QVariant(char*) замінено на QVariant(QString);
    • конструктор QMouseEvent замінено відповідною із глобальною позицією;
    • QRegExp замінено на TRegExp варіантом OpenSCADA для функцій заміни і тестування або прямої перевірки;
    • QComboBox сигнал activated(const QString&), currentIndexChanged(const QString&) замінено на activated(int), currentIndexChanged(int) відповідно;
    • QSignalMapper сигнал mapped(QWidget*) замінено на mappedObject(QObject*);
    • QPalette::Background замінено на QPalette::Window та Qt::MidButton на Qt::MiddleButton;
    • QFileDialog::setReadOnly() замінено на setOption();
    • QApplication::desktop() замінено на QScreen;
    • QAction::parentWidget() замінено на parent();
    • QVariant::type() перейменовано у typeId(), QMouseEvent::{pos,globalPos}() перейменовано у {position,globalPosition}(), QDateTime::{setTime_t,fromTime_t,toTime_t}() перейменовано у {setSecsSinceEpoch,fromSecsSinceEpoch,toSecsSinceEpoch}();
    • доповнено перейменуванням функцій для різних версій Qt за допомогою макро-визначень у різних файлах щодо: typeId() у type(), position() у pos(), globalPosition() у globalPos(), setSecsSinceEpoch() у setTime_t(), fromSecsSinceEpoch() у fromTime_t(), toSecsSinceEpoch() у toTime_t(), mappedObject() у mapped(), setSource() у setMedia(), setVolume() у audioOutput()->setVolume(), setMedia() у setSource(), state() у playbackState();
    • доповнено підтримкою QRegularExpression замість QRegExp у Qt6;
    • QMouseEvent властивість mouseBtHold розділено на дві QPointF: mouseBtHoldPos, mouseBtHoldPosG;
    • розділювач комбінацій клавіш "+" замінено "|", тобто "Qt::SHIFT|Qt::Key_F1";
    • подія QEvent::KeyRelease у застосуванні LineEdit замінено на QEvent::KeyPress;
    • QTStarter: загальну бібліотеку lib_qtgen доповнено функцією winFit() загального підлаштування специфічних вікон мобільних систем; доповнено атрибутом Qt::AA_ShareOpenGLContexts перед об'єктом додатку Qt для функціювання QtWebEngine на Qt6;
    • Vision: адаптація до Qt WebEngineWidgets замість WebKit та до Qt MultimediaWidgets замість Phonon, і примітив Документ розділено задля примусового використання QTextBrowser у режимі розробки. Відновлено появу нових елементів дій віджетів бібліотек шляхом розташування нових дій у Меню перед Панеллю Інструментів.

КОНЦЕПТУАЛЬНЕ > Перегляд і уніфікація підсистеми Транспортів у керуванні додатковими параметрами та розширення використання параметрів часу підключення щодо реєстрації конфігураційних параметрів зовнішніх джерел

  • конфігураційне поле "A_PRMS" контейнеру додаткових параметрів переміщено із модулів до бібліотеки ядра;
  • доповнено функціями TTransportS::{prm,cntrCmdPrm}(), {TTransportIn,TTransportOut}::prm() із загальною реалізацією додаткових параметрів;
  • conPrm() розширено підтримкою конфігураційних параметрів зовнішніх джерел на кшталт протоколів і його розповсюджено на вхідну частину, так само для Користувацького API;
  • conPrm() доповнено аргументом типового значення, яке використано у всіх транспортних модулях;
  • clearConPrm() розширено очищенням одного параметру і лише із зовнішніх джерел;
  • setConPrm() видалено після реалізації такої властивості у conPrm() та деякі модулі оновлено щодо цього: DAQ.AMRDevs, Protocol.SelfSystem;
  • Protocol.SelfSystem є першим, який використовує наразі конфігураційні параметри у транспорті;
  • вихідні транспорти доповнено посиланням на вхідний, який створив вихідний, і його використано для тримання тут конфігураційних параметрів зовнішніх джерел;
  • всю конфігурацію асоційованих вихідних транспортів встановлено прихованою;
  • контроль додаткових параметрів пересунуто до власної вкладки "Додаткове (aprm)" із функцією скидання їх значень;
  • позначення зміни вхідних і вихідних транспортів встановлено лише за реальної зміни конфігураційних полів.

КОНЦЕПТУАЛЬНЕ > Контроль великого споживання пам'яті

  • Система: TCntrNode::cntrCmd() у обробці первинних команд Інтерфейс Керування доповнено їх глобальним журналюванням задля контролю дій, що призвели до великого споживання пам'яті.
  • FIX:Збір Даних: JavaLikeCalc: Операцію поєднання рядків доповнено перевіркою обмеження у limUserFile_SZ(10M).
    • System: Доповнено DA(Збором Даних) Процес у якості інтерфейсу до Linux процесів у контролі використання ними пам'яті.
  • FIX:Архіви-Історія: Запити TVArchEl::getVals() і "TValue:get:/serv/attr" доповнено обмеженням запитаної глибини у limUserIts_N (1e6) елементів для запобігання великому споживанню пам'яті.
    • FIX: Запит Інтерфейсу Керування "TValue:get:/serv/attr" виправлено у обмежені обчислення функції getVals().
    • FIX:.,FSArch: Архівування значень доповнено обмеженням операцій запису у limUserIts_N (1e6) елементів для відстеження споживання усієї пам'яті у певних випадках.

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

  • FIX:SYS,DB: TMess::translGet() виправлено у виявлені передзбережених системних повідомлень при встановлені порожніх повідомлень.
    • Бази Даних: TTable::fieldSQLSet() адаптовано до очищення базового повідомлення і всіх перекладів при обнулені перекладу, для очищення редагованого повідомлення у динамічному режимі перекладу і не від базової мови.
  • SYS,DB.{SQLite,MySQL,PostgreSQL,FireBird},Protocol.HTTP: Переважно адаптовано переклад повідомлень до кодів мов більше за 2 (два) символи.
  • Protocol.HTTP,UI.{WebUser,WebVision}: Завершено адаптацію до динамічного перекладу ім'я станції із уніфікацією функції Користувацького API pgCreator() щодо використання мови із objFuncCall().
    • Protocol.HTTP: Шлях із TSYS::ico() використано для отримання перекладених піктограм.
  • SYS,UI.{Vision,WebVision}: Функцію TSYS::atime2str() доповнено перекладом дати і вона використана у побудові шкали часу примітиву СВУ Діаграма.
  • FIX:Бази Даних: Дозволено правильний запис змін користувача у Динамічному Режимі Перекладу на Небазовій Мові, шляхом ранньої перевірки щодо динамічних даних.
  • FIX:Збір Даних: Завершено адаптацію DAQ-Шаблонів до перекладу значень строкового типу при їх редагуванні і використанні у вкладці Конфігурації Шаблону.
    • FIX:DAQGate: Виправлено надсилання значень перекладуваних полів не у внутрішній структурі перекладу.
  • Транспортні Протоколи: HTTP: Адаптовано до динамічного перекладу назви станції і опрацювання кодованих назв файлів зображень.
    • UserProtocol: Виправлено-адаптовано до динамічного перекладу назв ВВ.
  • FIX:UI.WebUser: Виправлено переклад назви сторінки у індексі.
  • FIX:UI.WebVision: Виправлено динамічний переклад ім'я користувача на сторінці індексу.

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

  • data/{oscada_plc.xml,oscada_server.xml,oscada_start.xml,ModelsDB/{AGLKS/oscada_AGLKS.xml,Boiler/oscada_Boiler.xml}}: Очищено опис вхідних транспортів та транспорти доповнено групами портів: 10002,10003,10004 для WEB і 10005,10006,10007 для CNTR.
  • LibsDB.{OscadaLibs.flb_Controller.test,vcaBase.prj_archBrowser.IDW},ModelsDB.AGLKS.St.{OPC_UA.test,Archive.{MemInfo_use,CPULoad_load}},ModelsDB.Boiler.St.Archive.{MemInfo_use,CPULoad_load}: Адаптовано до перейменування DAQ.System.AutoDA.CPULoad і DAQ.System.AutoDA.MemInfo у DAQ.System.AutoDA.CPU і DAQ.System.AutoDA.MEM.
  • FIX:ModelsDB.AGLKS.St: Вхідні SSL транспорти встановлено групами портів 10042,10043,10044 для WEB і 10045,10046,10047 для CNTR.
    • FIX:WebUser.test: відновлено текст у значення до уніфікації перекладу.
    • DAQGate.test: Оновлено кеш параметрів.
    • LogLevPrm.gen: Усі об'єкти параметрів встановлено у 1 для "alDelay", для запобігання повідомленням порушень при виході.
    • Sockets.{testRelease,testRelease1,testRelease2}: вимкнено по замовченню.
  • LibsDB.OscadaLibs:
    • tmplib_DevLib: Бібліотеку доповнено шаблонами із документуванням:
      • від ВПФ: Incubator, VSE002, "FF LE-03MB CT (FF_LE)", Ergomera 625(ergomera625);
      • від Blue Star Group: "Goboy 1M (Goboy1M)", "AutoPILOT PRO Flow Computers (AutoPILOT)", "AutoPILOT OLD Flow Computers (AutoPILOT_old)", "Corrector BK (CorBK)", "Tancy Data (TDS)", "UltraMag", "Enron, Daniel (enronDaniel)", FlowGAS.
    • tmplib_base: Доповнено новим шаблоном для WebUser — "HTTP Файловий Сервер (fileServerHTTP)", із реалізацією HTTP Файлового Серверу у OpenSCADA, наразі лише читання ресурсів із підтримкою частковості.
      • digAlarm,manInUnif,anUnif,pidUnifImp,anUnifSt,pidUnif,codeState,SNMP,UPS: ВВ NAME встановлено у тип "Рядок (переклад)" і ВВ DESCR у тип "Текст (переклад)".
    • tmplib_LowDevLib: Доповнено шаблоном "BT: ATORCH UC96".
      • RDTech: Недублюючі команди встановлено до надсилання двічі задля стабільного застосування пристроєм, післякомандну затримку встановлено у 0.2 і переміщено на загал.
    • tmplib_base.ntf: Розширено можливістю визначення повідомлень для виключення зі сповіщення.
  • LibsDB.vcaBase:
    • wlb_Main.storeHouse: Розширено створенням форми редагування елементу у головному кадрі після приховання основної таблиці та решти.
      • FIX: Попереджено <EVAL> для <NULL> клітинок у звіті елементу.
      • FIX: Гарантовано заповнення діалогів звітів генерацією подій відкриття із процедури.
      • Текстові поля звіту одного елементу очищено від лівого відступу для текстів.
      • Звіти доповнено опрацюванням посилань, як зовнішні виклики.
      • Розширено опрацюванням ІД (індексу) таким чином, як решта стандартних полів "NAME", "DSCR" — для контролю видимістю поля.
    • FIX:Main.alarmsSt: Виправлено доступ до змінної alarms_focus після видалення примусовості атрибуту "focus", що замінено на this.alarms.attr("focus").
    • FIX:wlb_doc.docRepInstVals: Відновлено переклад значень заголовку та одиниці виміру і назви параметру.
    • FIX:wlb_doc.docUsersSet: Доповнено також кодуванням полів значень, оскільки зараз тут можуть бути не лише цифри.
    • tmplSO: Дещо очищено щодо елементів сторінки РезультуючіГрафіки.
    • wlb_Main.ResultGraph: Атрибут "grpName" встановлено у тип "Рядок (переклад)".
  • LibsDB.vcaTest: Завершено із перейменуванням CPULoad у CPU і MemInfo у MEM.

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

  • Система: ico() доповнено аргументом отримання шляху файлу.
    • strLabEnum() доповнено аргументом "onlyDec" для нумерування однією цифрою.
    • Видалено sysClk(), clkCalc(), shrtCnt(), HZ().
    • TError: Видалено DB_TrRemoved.
    • TMess: labStorRemGenStor() перейменовано у labStorRem(), labStor() очищено від аргументів.
    • TElem: fldList() встановлено у постійну.
    • TFld: TFld(): Тип аргументів vals, nSel змінено із "const char *" у "const string&". Видалено selValS(), selValI(), selValR(), selValB(), selNm(), selVl2Nm(), selNm2VlS(), selNm2VlI(), selNm2VlR(), selNm2VlB().
    • TCfg,TVal: Видалено getSEL() і setSEL().
    • TCntrNode: isModify() встановлено у постійну, save() доповнено аргументом максимального рівня помилки.
  • Збір Даних: TController::id() встановлено у постійну.
  • Транспорти:
    • TTransportIn,TTransportOut: Перенесено до захищеної секції logLen(), setLogLen(), pushLogMess(). Видалено logItLim(), setLogItLim().
    • TTransportOut: conPrm() і setConPrm() поєднано у conPrm(), також для них у КористувацькомуAPI. clearConPrm() розширено аргументом визначення ідентифікатору або групи очищувальних параметрів.
    • TTransportIn::associateTrO(): розширено підтримкою різних стадій ATrStg_Create, ATrStg_Proc.

Доповнення:

  • Система: Нове визначення DB_GEN "<gen>".
    • Додано sysClk(), setSysClk() для отримання частоти ЦП із DAQ.System.
    • TMess: Нова функція labStorFromCode() імен специфічних сховищ.
    • TElem: Доповнено функцією contN() отримання лічильнику підключених контейнерів.
  • Збір Даних: TVal: Доповнено функцією setTime() і новим прапорцем AttrFlg::NoSave для запобігання позначення модифікованим при зміні атрибуту.
    • TController: Доповнено tbl() для таблиць типів параметрів.
  • Інтерфейс Користувача: Користувацьке API доповнено SYS.UI.mimeGet() для отримання типу MIME із назви файлу.
  • Транспорти: Нове визначення STR_A_PRM "prms", STR_A_PRM_CFGP "CFG:".
    • TTransportS: Нові функції prm(), cntrCmdPrm() загального опрацювання параметрів транспортів.
    • TTransportIn: Доповнено функцією prm(), conPrm(), clearConPrm(). Доповнено функцією КористувацькогоAPI conPrm() і setConPrm() (для сумісності) і відповідно до таких у TTransportOut.

Система

  • Складання: configure.ac: Підняття версії бібліотеки ядра до 3:14:0 і версії програми до 0.9.7. Підняття версії модулів підсистеми "Збір Даних" до 15, "Транспорти" до 20.
  • FIX:DB,Transports,DAQ.BFN,UI.VCAEngine: Адаптовано до перевірки вдалого результату TBDS::dataDel() для запобігання зависань на сховищах лише для читання із виправленням функції TTable::fieldSQLDel() щодо коректної перевірки успішності функції.
  • .,DAQ.{DAQGate,DCON,DiamondBoards,ICP_DAS,LogicLev,ModBus,OPC_UA,Siemens,SoundCard,System},Protocol.{ModBus,OPC_UA},UI.VCAEngine: Значно спрощено у підтримці типів обрання, встановивши опціональним і з підтримкою динамічного перекладу. Дозволено також визначення лише переліку значень.
  • .,Archive.DBArch,DAQ.{BFN,JavaLikeCalc,ModBus,OPC_UA},Protocol.UserProtocol,UI.{VCAEngine,Vision,WebUser}: Загальне сховище перейменовано із "*.*" у "<gen>":
    • із отриманням назв специфічних сховищ "Загальне Сховище" і "Конфігураційний Файл" всюди з нової функції TMess::labStorFromCode();
    • доповнено визначенням DB_GEN "<gen>", яке завжди використовується замість "*.*";
    • усі загальні поля на кшталт "БД Архіватору" перейменовано у "Сховище";
    • TMess::labStorRemGenStor() перейменовано у TMess::labStorRem() і доповнено інформацією про всі сховища об'єкту.
  • .,DAQ.{BlockCalc,Comedi,DiamondBoards,FT3,Fastwel,ICP_DAS,SNMP},Protocol.{ModBus,UserProtocol},UI.{VCAEngine,Vision,WebCfg,WebCfgD,WebUser}: std::string::substr() замінено на std::string::find() у місцях зі статичним отриманням даних для порівняння, що прозоріше, безпечніше і переважно швидше для коротких рядків.
  • .,UI.{VCAEngine,Vision}: Покращено сповіщення попереджень при збережені.
  • TCntrNode::cntrCmd() у обробці первинних команд Інтерфейс Керування доповнено їх глобальним журналюванням.
  • FIX:TCfg::setS() у варіанті із RqFlg доповнено блокуванням критичної секції при доступі до контейнеру TVariant і доповнено сповіщенням, лише на стадії даних та без повернення.

Збір Даних

  • .,*: Переведено у джерелах Збору Даних на фіксовані назви таблиць різних типів параметрів і адаптовано до уніфікованої концепції типів параметрів, тобто конфігураційні поля наразі приховуються коли вони стандартні і їх заплановано до цілковитого видалення у v1.0.
  • System: Цілковито переглянуто і розширено щодо:
    • розширення ЦП (CPU) DA інформацією ЦП і частотою із різних джерел, включаючи CPUFreq із контролем;
    • додання нового DA Живлення (Power) у якості інтерфейсу до Потужність Linux і DA Процес (Process) у якості інтерфейсу до Linux процесів;
    • Сенсори>DA доповнено підтримкою прямо доступних сенсорів "/sys/devices/virtual/thermal/*/temp" і /sys/devices/virtual/hwmon/*/temp*;
    • уніфікація викликів DA інтерфейсу DA::init(), DA::deInit(), DA::makeActiveDA() із переведенням більшості DA модулів на виклик уніфікованого коду і реалізацію для них лише уніфікованої функції dList();
    • інтерфейсний клас DA доповнено новими ознаками: isDynamic(), hasSubTypes();
    • додання режиму загального оновлення даних із Сервісного Циклу і Завдання DA Контролеру, новою функцією updGen();
    • ІД автоматично генерованих параметрів DA змінено у: CPU - "CPU[{N}]", fs - "FS{MP}", hddstat - "DiskSt_{dev}", MEM - "MEM", netstat - "Net_{IF}", sensors - "Sensors", hddsmart - "DiskSMART", ups - "UPS", uptime - "UpTm_{U}".
  • FIX:DAQGate: Час запиту архіву збільшується на 1 (одну) мікросекунду для запобігання запиту зайвих значень і їх прямому перезапису у архівах.
    • Покращено роботу із віддаленим хостом без синхронізації часу:
      • значення можуть бути у майбутньому до години;
      • мітку часу віддаленого хосту всюди використано за присутності архіву, навіть у тегу "<vl>";
      • доповнено виявленням часу віддаленого хосту для його використання у якості мітки часу змінених значень.
  • FIX:LogicLev: Значним чином покращено режим Віддзеркалення Параметру щодо:
    • динамічного створення і видалення атрибутів;
    • вимкнення за помилкового увімкнення на відсутньому параметрі джерела із видаленням усіх атрибутів;
    • обрання змінене на нередаговане;
    • вимірювання часу опрацювання.
  • OPC_UA: Доповнено підтримкою асинхронного запису на кшталт DAQ.ModBus.
  • AMRDevs: Адаптовано у частині Kontar до нової концепції асоційованих вихідних транспортів до вхідних.

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

  • FIX: Архіватори повідомлень попереджено від скидання позиції буферу останнього прочитаного повідомлення оскільки ми отримаємо дубльовані повідомлення із кожним оновленням підсистеми, що є частим за оновлення підключень архівів значень, і особливо за відсутності блокування ресурсу.
  • FIX: Запит Інтерфейсу Керування "TValue:get:/serv/attr" виправлено у поширені на еквівалентні архіватори.

Транспорти

  • Sockets,SSL: Доповнено підтримкою групи портів у вхідних транспортах, тобто підключення до першого вільного. Вхідні транспорти доповнено конфігураційним полем властивостей ініціативного підключення і асоційованих вихідних транспортів.
  • SSL:
    • Розширено підтримкою ініціативних підключень:
      • SSL код підключення TSocketOut::{start,stop}() перенесено до статичних функцій TSocketOut::{connectSSL,disconnectSSL}() для використання у вхідному транспорті;
      • SSL код підключення TSocketIn::Task() перенесено до TSocketIn::{start,stop}();
      • видалено підтримку визначення у режимі SSL щодо алгоритмів і версій через видалення цього у бібліотеці OpenSSL і воно переважно не використовувалося, тож використано лише TLS_{client,server}_method() для нових бібліотек (> 1.1) і SSLv23_{client,server}_method() для старих.
    • FIX: TSocketOut::messIO() попереджено щодо зависань при нескінченому читанні BIO_read() після закриття сокету, шляхом перевірки errno на EAGAIN.
    • SSL-контекст перенесено до загального об'єкту модуля окремо для вхідної (ctxIn) і вихідної (ctxOut) частин і додана інформація по шифрах для:
      • загального об'єкту модуля за SSL_CTX_get_ciphers();
      • статусу вхідного-серверного транспорту за SSL_get_shared_ciphers(), SSL_get_client_ciphers() і SSL_get1_supported_ciphers() або SSL_get_ciphers();
      • статусу вихідного-клієнтського за SSL_get1_supported_ciphers() або SSL_get_ciphers().
    • Вхідний і вихідний транспорти доповнено контролем MSS та вхідні транспорти доповнено контролем системного вхідного буферу, обидва взято із Transport.Sockets.

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

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

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

  • VCAEngine,Vision,WebVision: Доповнено підтримкою вбудування даних до атрибутів, позначених ресурсом, первинно для атрибуту джерела примітиву Медіа.
  • FIX:Vision: Адаптовано до отримання іменованого переліку сховищ.
  • FIX:VCAEngine: Виключено підключення атрибуту "focus" будь якого вкладеного віджету до ВВ обчислення і доповнено обробкою виключень доступу до таких ВВ для відсутніх вкладених віджетів. FIX: Attr::setS() вдосконалено опрацювання критичної секції.