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

Other languages:
English • ‎российский • ‎українська

Это обновление релиза 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().
    • Удалённую аутентификацию расширено на использование аутентификации хоста, по умолчанию, и самого подключения для её проверки.
    • Таймаут попыток восстановления подключения к удалённой станции сделано прогрессивным, до указанного значения, и отображение сообщения ошибок осуществляется после значения таймаута в три секунды.

Специальный

  • SystemTests: Тесты БД расширены тестом сканирования.