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

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

Это обновление релиза 0.8 LTS исправляет около 60 ошибок и добавляет некоторые улучшения, которые целиком вы можете почитать в протоколе изменений обновления.

API
!!!!:Изменения:

  • SYS: Множество функций установлено как константы, после дополнения некоторых объектов копирующими конструкторами.
    • TConfig::cfgChange() дополнена аргументом предыдущего значения конфигурации "pc".
    • TVariant: В строковом типе расширена преобладающим использованием STL-строки, кроме полей которые помечены как "stdStringOmit", в основном для TCfg как константа.
    • Функции load() и load_() узла расширены аргументом TConfig *cfg для возможности прямой загрузки после сканирующего запроса. Удален аргумент "force" функции узла load() и заменен предварительным вызовом modifG().
    • Объект захвата ресурса ЧтенияЗапии "Res" переименован в "ResRW".
    • Функция TModule::modFunc(), получения ссылки на экспортированные функции, расширена вызовом без исключений и результатом.
    • Функция strNoSpace() расширена контролем обрабатываемых символов и переименована в strTrim(). Обрабатываемые по умолчанию символы установлены в " \n\t\r".
    • time2str() и tm2s() астрономического времени переименованы в atime2str() и atm2s() и время начала, соответствующих относительных функций, было изменено с микросекунд на секунды.
    • taskSleep(), в аргументе "cron", заменена на чистое (строка) представления для возможности получения начальной точки к обнаруженной смене астрономических часов и соответствующей коррекции цели крона, а также измерения использованного времени для taskUtilizTm().
    • TVariant::propClear() расширен на предмет очистки одного указанного свойства.
    • taskUtilizTm() расширен аргументом "max" для получения этого максимального значения, и само значение изменено на секунды.
    • Добавлена функция taskDescr() для получения ссылки на структуру описания текущего задания.
  • DAQ: Вариант "Постоянная", конфигурационного поля шаблона, переименован в "Переменную" а, соответственно, "Публичная постоянная" в "Постоянная".
  • Archive: Архиватор значений расширен поддержкой режима аккумуляции, в основном для Archive.DBArch. Атрибут "tm", результирующего массива функции API "getMess", заменён на тип "int".
  • Protocol: API входной части приведён к виду рабочей (Work) ветви на предмет добавления функций srcAddr(), setSrcAddr() и изменения mess().

Дополнения:

  • SYS: Добавлена системная опцию "clockRT" для выбра часов планирования задач CLOCK_REALTIME иначе это CLOCK_MONOTONIC (по умолчанию сейчас).
    • Добавлен объект управления условными переменными "CondVar".
    • К объекту TCntrNode добавлена функция mess_sys(), с целью создания системных сообщений с путём этого узла в категории и расположения в начале этого сообщения, с помощью новой функции nodeNameSYSM().
    • К объекту TCntrNode добавлена функцию err_sys(), с целью создания объекта ошибки с путём и размещением узла.
    • Добавлены функциональные шаблоны fmin() и fmax().
    • Для функции strTrim() создан короткий вызов sTrm() и он везде использован.
    • TSecurity: Добавлена функция пользовательского API User::groups() и Group::user().
    • Добавлена функцию пользовательского API TVal::isCfg().
  • DB: Для функции пользовательского API SQLReq() добавлено направление ошибок от исключений на атрибут "err" результирующего массива.
  • DAQ.JavaLikeCalc: Список функций строки расширен trim().
  • Transport: Функция messIO() пользовательского API расширена размером входного буфера.
  • Transport.Serial: Добавлена функцию sendbreak() к пользовательскому API выходного транспорта.
  • UI: Расширен функцией mimeGet() для определения типа "mime" по исходной информации, расширению файла и его содержимому.
  • Special.FLibSYS: Дополнен функцией вычисления "Message Digest 5 (MD5)" с OpenSSL и функцией floatExtract() для извлечения экспоненты и мантиссы из значения реального типа.

SYS

  • TCntrNode: Концепция управления ресурсами заменена на стабилизированную в рабочей (Work) ветви.
  • Исправлено множество ошибок и предупреждений из отчёта PVS-Studio, благодаря Максиму Кочеткову.
  • Все части адаптированы к новому аргументу "cfg" функций загрузки, предзагрузки dataSeek() и прямой загрузки после сканирующего запроса.
  • Новые функции mess_sys(), err_sys() объекта TCntrNode использованы везде в ядре OpenSCADA и модулях.
  • Модульная версия подсистем "БД", "DAQ", "Архив", "Транспорт" поднята до 9 и для подсистем "Protocol", "UI" поднята до 8. Версия библиотеки установлена в 2:5:0.
  • Функции LibZ переписаны для некоторой унификации и оптимизации использования памяти.
  • Адаптировано и несколько исправлено для сборки GCC v6, с C++11 по умолчанию.
  • Минимальный уровень сообщений для всех конфигураций установлен в "Информация(1)".

БД

  • {.,FireBird,MySQL,PostgreSQL,SQLite}: К функции fieldSeek() и dataSeek() добавлен режим предзагрузки сканирования с целью значительного увеличения производительности тут.
  • *: getVal() расширен и унифицирован.
  • {SQLite,MySQL,PostgreSQL,FireBird}: Расширены на предмет использования NULL для сохранения/представления общего EVAL.
  • PostgreSQL: Объект БД расширен статистикой контроля активности и задержек.

Сбор данных

  • Состояние исполнения заданий расширено максимальным временем использования.
  • DAQGate: Адаптирован для сохранения назначения параметров по станциями, с целью обеспечить их раннее восстановление без необходимости синхронизации. Добавлен опциональный контроль за автоматическим удалением параметров и атрибутов.
  • LogicLev: Установка значения атрибута "f_frq" изменена на реальную частоту, полученную из структуры описания этого задания.
  • OPC_UA.libOPC_UA: К серверной части добавлена поддержка кусков. Куски проверены для входных запросов на небезопасных и безопасных подключениях. Исправлено размещение в очереди и дальнейшая обработка запросов публикации, и сообщений в целом, для безопасных подключений и для подтверждения обычных после прямой обработки.
  • JavaLikeCalc: Добавлена поддержка динамического связывания с внешними функциями путём: function {nm} = "{addr}"; {nm}();. Вызов объектных функций оптимизирован на предмет прямой передачи имени в команду вызова. Расширен оператором "delete" для освобождения объектов и их свойств.
  • System: Расширен источником данных "ФС". Автоматическое создание источников расширено режимами "Быстрые" и "Медленные".

Архив

  • Предотвращены лишние записи прямо архиватору в TVArchive::setVals(). getMess() исправлен на предмет двойного вызова функции модуля get(), через использование fmin().
  • {.,FSArch}: Добавлена информацию последнего чтения буфера и использование этого свойства в целом исправлено. Предотвращены исключения в archivatorAttach() и остановка объекта архиватора чтобы обеспечить возможность ранньего запуска архива.
  • DBArch: Часть архивации сообщений исправлена в "needMeta" и добавлен отказ в доступе к архиватору до удачного получения "meta". Чтение архива значений сделано оптимальным по времени, до десяти раз, через использование ключа "MARK" и сканирующего запроса. Часть архивации значений расширена группировкой архивов в одной таблице, в основном для увеличения производительности.

Транспорт

  • К диалогу ручного запроса выходного транспорта добавлен размер входного буфера.
  • Serial: Выходной транспорт расширен проверкой и использованием I2C. Контроль потока дополнен режимом RTS переключателя (true/false) и фильтраций эхо.
  • Sockets: Чтение ответа выходного транспорта после FD_ISSET в "ложь" расширено путём чтения SO_ERROR сокета и ожиданием прерывание по любой ошибке сокета. Выходной транспорт переключен на две попытки проверки SO_ERROR, на время чтения ответа, чтобы дать некоторое время на чтение через временами продолжительное чтение состояния SO_ERROR.
  • SSL: Расширен прямыми методами: TLSv1.1, TLSv1.2, DTLSv1.

Протокол

  • SelfSystem: Загрузка XML расширена использованием опций LD_NoTxtSpcRemEnBeg и разрешением пробелов в начале и конце текстовых элементов.
  • HTTP: Значительным образом унифицирован для создания сервисных страниц с помощью одной функции pgCreator(). Функция pgCreator() первично реализована как функцию API пользователя модульного объекта HTTP и разрешена для использования в WEB-подмодулях для создания собственных сервисных страниц с общим стилем. Внешние вызовы к WEB подмодулям расширены функциями HTTP_GET(), HTTP_POST() с аргументом TProtocolIn *iprt, а старые вызовы HttpGet(), HttpPost() также продолжают проверяться и поддерживаться. Основной диалог выбора расширен изображениями и контекстной помощью к присутствующим WWW-модулям. Шаблон главной страницы отделён от основного шаблона с целью предоставления полностью специфичной пользователю главной страницы.

Интерфейс Пользователя

  • {WebUser,WebVision}: Расширены использованием унифицированного сервисного интерфейса из Protocol.HTTP с помощью pgCreator() и новых функций HTTP_GET, HTTP_POST вызова HTTP.
  • QTStarter: Отключен менеджер сеансов X от перезапуска закрытых при выходе программ. Расширен параметром командной строки "--noX11", чтобы позволить отключение Qt.
  • QTCfg: Предотвращено опасное обновление отсутствующей страницы в принятии изменений на виджетах страницы которая замещается, "Диалог принятия для предупреждения потери изменений". Использование QMutex и QWaitCondition заменено на ResMtx и CondVar, в основном для предотвращения зависаний при смене времени системы.
  • VCAEngine: Блокирование ресурсов FuncM установлено в рекурсивное для предотвращения "мёртвых" блокирований. Время вычисления сеанса расширено максимальным значением. Адаптирован к использованию TUIS::mimeGet().
  • Vision: Разрешено объявление специфических для визуализатора атрибутов примитивов и атрибут "sclWin" добавлен и использован для примитива "Диаграмма" с целью масштабирования содержимого трендов, путём отрисовки окна мышей. Для примитива "Диаграмма", в режиме "Тренд", добавлено скольжение мышей по шкале времени. ToolTip и StatusTip виджета установлены для отображения на не полностью прозрачных частях виджета.
  • WebVision: Адаптирован к асинхронным вызовам для всех регулярных обновлений с помощью servGet() и также makeEl() адаптирован к этому. Исправлено отображение SVG изображений путём корректной обработки "mime" в UI.VCAEngine и использования TUIS::mimeGet(). Вид "Кнопка" примитива "FormEl": исправлена обработка следующей строки, исправлен на предмет корректного отображения текста и изображения. Для примитива "Текст" установлено "line-height" с целью предотвращения верхнего отступа шрифта и в его представлении для повёрнутых текстов использовано CSS свойство "transform: rotate({X}deg)". Обработка примитива "Media" несколько исправлена на предмет переключения "fit" и изменения масштаба контейнера. Поведение шрифта расширено поддержкой декорации текста "underline" и "line-through".
  • WebUser: Семантика функции страницы расширена двумя объектными аргументами "Этот объект" и "Объект протокола".
  • WebCfgD: Создан новый дизайн. Адаптация к функциям HTTP_GET, HTTP_POST вызова HTTP и перевод всего на общий построитель страниц HTTP::pgCreator().