From OpenSCADAWiki
< Documents | Release 0.9
Обновление осуществлено после 1.5 года от релиза 0.9 LTS, соответственно оно стоит 10 обновлений, поскольку им исправлено более 250 ошибок и добавлено множество усовершенствований, которые целиком вы можете почитать в протоколе изменений обновления.
Ключевыми свойствами обновления является:
- значительное расширение и стабилизация Web-интерфейса в течении практической эксплуатации в большом распределённом решении, построенном на основе модуля UI.WebVision; также расширение и стабилизация горячей разработки в течении множественного исполнения разрабатываемого проекта;
- тестирование, исправление и расширение резервирования в части сообщений, также благодаря практической эксплуатации в большом распределённом и ещё резервированном решении, в части обще-системного кода и модуля DAQ.ModBus;
- полная реструктуризация, усовершенствование и дополнение библиотек OpenSCADA в SQLite файлах;
- общее улучшение документации, дополнение документацией всех библиотек и ревизия большинства документации модулей.
Contents
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.
- FIX:doc: {docUsersSet,docAlarmsRep,docMessRep}: Поле "Параметр" переименовано в "Источник", в процессе глобальной унификации структуры сообщений нарушений функции alarmSet().
- PrescrTempl,prescr: Библиотеку интерфейса пользователя и шаблонную библиотеку "Рецепты" отревизировано, улучшено, дополнено, документировано и документация добавлена в offline.
- PrescrTempl: Дополнено шаблоном "Менеджер", перенесенного из библиотеки контролеров.
- prescr: Элементы библиотеки расширены линковкой БД и автоматическим созданием таблиц команд и программ.
- FIX:JavaLikeCalc.doc,doc: Библиотека пользовательского интерфейса "Документы" и JavaLikeCalc "Библиотека отчётов и документов" отревизировано, улучшено, дополнено, документировано и документацию добавлена в offline.
- 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".
- FIX:IEC60870: Дополнено отдельным временем "tmPoolAll" периодичности полного опроса.
- 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:{alarmsAct,alarmsSt}:
- 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: Перепривязаны аналоговые параметры и графики.
- FIX:St:
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__() для обработки некоторых действий в конце загрузки.
- TConfig,TCfg: Ключевые поля дополнены ограничением их размера перед обрезанием на стороне БД.
- Интерфейс Управления:
- *: Унифицировано на предмет контроля модификации объектов узлов и очищено лишние модификации, переносом модификации из контекста исполнения под опцию "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, при доступе к общим библиотекам из различных процессов.
- FIX:{MySQL,PostgreSQL,FireBird}: Усовершенствовано и проверено горячее восстановление потерянных подключений и без потери данных.
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: Исправлена обработка пустой строки в конце. Дополнено масштабированием изображений дерева управления.
- FIX:{Tree,Table}: исправлен расчёт ширины границы и отступа в конечной геометрии.
- Расширено установкой визуальных элементов СВУ на предмет атрибута "class" в "Примитив {WPrimitive}" и атрибута "id" в идентификатор виджета вроде "wdg_{id}", для упрощения детальной подстройки.
- FIX:Основное функционирование:
- 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: Доступ к функции записи в архив ограничен только пользователями в группе "Архив".