From OpenSCADAWiki
< Documents | Release 0.8.0
Это обновление релиза 0.8 LTS исправляет около 35 ошибок и добавляет некоторые улучшения, которые целиком вы можете почитать в протоколе изменений обновления.
API
!!!!:Изменения:
- SYS,Transport,DAQ.DAQGate,UI.{QTCfg,Vision,WebCfgD}: Имплементация поднятия внешних хостов расширением функции extHostList(), перенаправлением запросов функцией cntrIfCmd() и входной частью собственного протокола системы. *: pthread_mutex, MtxAlloc и MtxString перенесено на объект обёртки мютексов ResMtx.
- DAQ: API функций tplE(), tplIOE(), errE() переименовано в elTmpl(), elTmplIO(), elErr().
- Archive: m_start, run_st, m_db переименовано в mStart, runSt, mDB.
Дополнение:
- SYS: Объект блокирования RW ресурсов расширено функциями (синонимами) lock(), tryLock() и unlock().
- Добавлено дополнительный макрос контроля времени FTM2.
- TFunction: Добавлено виртуальные функции prog() и setProg() для контроля через абстрактный объект.
- Расширено функцию API пользователя SYS.sleep() для принятия первого аргумента времени в секундах как вещественного и возможности установки его значения вплоть до наносекунд.
- DB: К БД добавлено захват ресурса таблиц TBD::resTbls.
- DAQ.BlockCalc: К блокам добавлено функции API пользователя cntr(), cfg(), cfgSet().
- Archive: messPut(), messGet() и такие-же функции API пользователя расширены аргументами "arch" для возможности прямого определения опрашиваемых архиваторов.
- Функцию API пользователя messGet() расширено аргументом "upTo", для прямого контроля этого таймаута.
- К функции запроса сообщений добавлено результат, как время остановки обработки. Значительным образом для возможности продолжения от позиции после прерванного по таймауту продолжительного запроса.
- Добавлено глобальный параметр архивации значений для принуждения времени полученных значений к текущему, вместо времени источника.
- К объекту архива значений добавлено параметр заполнения проходных значений предыдущим.
- Transport: К выходному транспорту добавлено время запуска-подключения.
- UI.VCAEngine: К виджету времени исполнения добавлено функции API пользователя mess{Debug,Info,Note,Warning,Err,Crit,Alert,Emerg}() к которым включено время этого виджета как категорию.
- Special.FLibSYS: Функции времени дополнены функцией tmSleep() для предоставления быстрого доступа к короткому сну.
SYS
- Версия библиотеки ядра поднята до 2.4. DB,DAQ,Archive,Transport: Версия типа подсистем поднята до 8.
- TCntrNode: Предотвращено освобождение заблокированных узлов и подключение к отключенным путём соответствующего блокирования ресурса "mUse".
- {DAQ,Transport}.*: Диапазон приоритетов задач расширен до 199 где 100-199 использовано для политики планирования задач SCHED_FIFO.
- Системные конфигурационные поля "workdir", "moddir", "icodir" установлены в только для чтения, в интерфейсе конфигурации, значительным образом для предотвращения ошибочных изменений и возможности их изменения только путём редактирования конфигурационного файла.
- Security: Адаптировано для предотвращения сохранения паролей в открытом виде вместо чего хранится их хеш, для: OpenSCADA хоста (Transports), Protocol.SelfSystem, UI.Vision. Использование crypt_r() включено только для "__USE_GNU" иначе пароли будут сохраняться в открытом виде.
- data/debian: Сервисный скрипт openscada.init перенесен в отдельный пакет openscada-server.
БД
- Все модули БД переписаны для открытия таблиц без исключений в конструкторе.
- FIX:MySQL,SQLite,PostgreSQL: Предотвращено нарушение последовательности запросов "BEGIN;" и "COMMIT;" под большой конкурентной активностью доступа.
- FIX:DB.PostgreSQL: Исправлено на предмет кодирования символов "'" '"' путём замены методом дублирования. FIX: Исправлено зацикливание после неудачной коррекции структуры таблицы.
Сбор данных
- Функцию пользовательского API funcCall() значительным образом расширено на предмет фиксации её результирующей функции для повторного использования и, как следствие, значительного повышения производительности.
- *,LogicLev,ModBus: Добавлено DAQ резервирование динамических атрибутов.
- ModBus,Siemens,DCON: Пропуск реальных запросов на первой и последней итерациях, только исполнение процедур.
- FIX:OPC_UA: Модуль для клиента переименовано в "Клиент OPC-UA" и для сервера в "Сервер OPC-UA".
- Protocol: Разрешена работа в режиме опроса входного транспорта и включена по умолчанию. Сервис "Publish" теперь доступный в LTS!
- FIX:libOPC_UA: Исправлено контроль номера последовательности пакетов, для серверной части, путём отделения от этого значения входных пакетов.
- FIX: Управление номером последовательности клиентской части также унифицировано и исправлено на предмет предотвращения повтора этого значения.
- Добавлено раннюю обработку подтверждений (Acknowledgements) в запросе "Publish".
- Выключено метку времени (TimeStamps) в клиентском запросе "Write", поскольку некоторые клиенты отвечают 0x80730000 (OpcUa_BadWriteNotSupported).
- Удачная адаптация к работе с UAExpert 1.4.
- JavaLikeCalc: Добавлена поддержка определения и вызова вложенных функций. Операции "||" и "&&" формально установлены в одинаковый приоритет. Проверку на предмет ВВ перенесено перед константами для возможности их переопределения. Добавлено постоянную "EVAL", как синоним к EVAL_REAL.
- FIX:Siemens: Исправлено проблему падения во время большого и частого взаимодействия, замену фрагмента (с помощью "assign") везде заменено на "replace". FIX:LibnoDave: gethostbyname() заменено на её потоко-независимый вариант.
- BlockCalc: Добавлено в обработку блоком специальный атрибут "this".
Архив
- messPut() расширен для независимой записи в таблицу нарушений.
- DBArch,FSArch: Разрешен запрос сообщений для одинакового времени начала и конца.
- FIX:FSArch: Добавлена проверка и предотвращение дубликатам с равным временем, категорией, уровнем (в случае параметра "prevDblTmCatLev").
- Расширено на предмет ранней проверки лимитов и этой проверки при ошибках распаковывания, для предотвращения таким образом переполнения хранилищ с плотным ограничением и малым размером.
- В целом исправлено проверку дубликатов. Время в кеше сменено с time_t на int64_t (в микросекундах).
- Получение из XML сделано несколько оптимальнее. Получение из "plain" разрешено для сообщений с временем которое равняется концу.
- FIX:DBArch: Алгоритм получения сообщений переписан для запроса минутами.
- Структуру таблицы значений и сообщений установлено адаптивной и перенесено в объекты TMArchivator и ModVArchEl.
- Добавлено новую опцию архиватора сообщений: "Сохранять время как чистое целое".
- "Размер архива (дней)" для значений и сообщений адаптировано для установки в ноль (<0.1) и выключения таким образом этого ограничения в целом.
- Исключено закрытие использованной таблицы после любого запроса размещения.
Транспорт
- FIX:SSL,Sockets: gethostbyname() и getservbyname() заменены на их многопоточные варианты.
- FIX:Serial,Sockets: На время чтения результата, выходного транспорта, добавлено ожидание данных в случае нуля и/или ошибки EAGAIN. FIX: Исправлено ошибки записи выходного транспорта. Возможные ошибки чтения после ошибочного прерывания select(), с признаком что некоторые данные присутствуют (иногда происходит), унифицировано и лучше настроено под разные режимы запроса и режимы не запроса выходного транспорта.
Протокол
- SelfSystem: Добавлено принудительное обновление аутентификации по атрибуту "rqAuthForce". Добавлено перенаправление запросов хостов по атрибуту "reforwardHost", во входной части.
Интерфейс Пользователя
- VCAEngine,Vision: Разделитель логических групп атрибутов виджетов везде изменено с ":" на ": ", в основном для возможности описания формата значения пользовательских атрибутов с типовым символом разделителя ":". В виде "Таблица" примитива FormEl к корневому тегу "tbl" добавлено атрибут "sortEn" с целью прямой сортировки по колонкам и параметр элемента заголовка "sort" для указания на колонку для сортировки при инициализации.
- FIX:Vision,WebVision: Режим "XY" примитива "Диаграмма" исправлено на предмет выключения построения по сортированным данным по 'X', только согласно иерархической последовательности. Для примитива "Диаграмма" к блоку данных "data:<dt/>" добавлено параметр "Aproximation (aprox)".
- FIX:UI.QTCfg: Обработку статусов внешних хостов значительно улучшено и исправлено. FIX: Таймауты внешних хостов сделаны конфигурабильными, посредством параметра "TmConChk". FIX: Параметры StartUser и StartPath перенесено под захват ресурса типа MtxString.
- FIX:VCAEngine: Добавлено захват функционального ресурса в SesPage::setEnable().
- FIX: setNoTransl() выключено в загрузке атрибутов, в связи с некоторой проблемностью и отсутствия смысла.
- Добавлено принудительное наследование типов связей, независимо от локального изменения этих атрибутов.
- К объекту проекта добавлено свойство "EnableByNeed", для контроля за готовностью этого проекта после старта и предотвращения продолжительного подключения через отложенное включение.
- Предотвращено попытку включения отключенной страницы во время установки нарушения, ввиду наблюдения странных падений тут, только в LTS.
- Добавлено сообщения уведомления времени исполнения: "Пользователь изменён на ...", "Пользователь подключен ...", "Пользователь отключен ...".
- FIX:Vision:
- FIX: Осуществлены очень важные исправления на предмет адаптации к стабильной работе с серверами СВК:
- Атрибуты модуля VCAStation, UserStart, UserPass и UserStBar::{user,pass,VCAStation} перенесено под захват ресурса типа MtxString.
- К обоим частям, исполнения и разработке, добавлено инициирующее подключение с временем таймаута восстановления подключения, с целью обеспечить загрузку ресурсов сервера СВК.
- Обработку информационного диалога про потерю подключения было перенесено к одному запросу (и потоку) из updatePage().
- FIX: Вид "Таблица" примитива "FormEl" значительным образом расширен: глобальными атрибутами таблицы: "hHdrVis", "vHdrVis"; атрибутами строки "colorText", "font"; атрибутами колонки "color", "colorText", "font".
- FIX: Выравнивание страниц, вложенных в контейнер, переписано на предмет отслеживания обновления геометрии виджета и предотвращения появления полос прокрутки в случае несоответствующего выравнивания.
- FIX: Добавлено восстановление палитры к функции visibleCheck для предотвращения артефактов в примитиве FormEl, в конце концов.
- FIX: Сообщения мыши в целом включены для примитива "FormEl" и исправлено некоторые артефакты вроде потери рисок в слайдере.
- FIX: Исправлены проблемы контекстного меню для видов "Список", "Дерево" и "Таблица" примитива "FormEl".
- Запросы к внешним хостам перенесены на использование cntrIfCmd().
- Удалённую аутентификацию расширено на использование аутентификации хоста, по умолчанию, и самого подключения для её проверки.
- Таймаут попыток восстановления подключения к удалённой станции сделано прогрессивным, до указанного значения, и отображение сообщения ошибок осуществляется после значения таймаута в три секунды.
- FIX: Осуществлены очень важные исправления на предмет адаптации к стабильной работе с серверами СВК:
Специальный
- SystemTests: Тесты БД расширены тестом сканирования.