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 • ‎mRussian • ‎Українська

Обновление осуществлено после 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 Сервисные обновления