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

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

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

Переведено в счёт пакета ТП Лаборатории Вакуумных Технологий

At.png Важные действия пользователя по обновлению

  • FIX:SYS: Общее конфигурационное поле "WorkDir" предотвращено от маркирования как модифицированное при переключении проекта, чем и от сохранения в конфигурационном файле, но отсутствует механизм автоматического удаления этого поля из конфигурационного файла старых проектов.
=> удалите вручную общее конфигурационное поле "WorkDir" если оно появилось там ошибочно и вы имеете проблемы использования каталогов чужих проектов этим проектом.

Новые и значительно обновленные части

  • Ядро OpenSCADA: 3:9:0 => 3:10:0
(ревизия механизма переводов)
  • Подсистема "Транспорты" OpenSCADA: 17 => 18
  • {DAQ,Protocol}.OPC_UA,libOPC_UA: 1.7 => 2.1, 1.10 => 2.1, 1.2 => 2.1
(дополнено реализацией сервиса Publish, поддержкой кусков (CHUNKS) на клиентской части Сбора Данных и общим пересмотром кода в этом процессе)
  • DAQ.ModBus: 2.12 => 3.1
  • DAQ.DAQGate: 2.2 => 2.3
  • DAQ.Siemens: 3.5 => 3.6
  • Transport.Sockets: 4.2 => 4.3
  • Transport.Serial: 2.5 => 2.6
  • Transport.SSL: 3.2 => 3.3
  • UI.WebCfgD: 1.5 => 2.0
  • UI.VCAEngine: 6.9 => 7.1
  • UI.QTStarter: 5.8 => 5.9
  • UI.QTCfg: 5.1 => 5.4
(общий пересмотр и переделка таблиц)
  • UI.Vision: 7.7 => 7.13
(общий пересмотр и переделка таблиц в Qt в целом и вида Таблица примитива FormEl СВУ)
  • UI.WebVision: 5.8 => 6.2
(общий пересмотр и переделка таблиц вида Таблица примитива FormEl СВУ)
  • LibsDB.OscadaLibs.DevLib.IEC62056: 1.0 => 1.1
  • LibsDB.vcaBase.Main: 2.0 => 2.1
    • storeHouse: 1.0
    • RootPgSo: 2.3 => 2.4

OpenSCADA библиотеки и проекты

  • LibsDB.vcaBase,AGLKS.vca: Main.RootPgSo: Дополнено на предмет:
    • виджета "alarms" на основе примитива "Протокол" с возможностью включить/выключить;
    • добавления опциональной функции возврата к типовому пользователю после определённого времени неактивности в атрибуте "defUser";
    • переключено на неотносительный алгоритм вычисления вертикальной позиции и высоты главной мнемосхемы.
  • LibsDB.OscadaLibs: DevLib.IEC62056: Переписано в синхронный режим (запрос-ответ) для работы нескольких устройств на одной последовательной шине.
  • LibsDB.vcaBase:
    • Библиотека "Основная" дополнена новой страницей реализации "Склада (storeHouse)".
    • Main.RootPgSo: Периодичность исполнения кадра поднята до 1000 миллисекунд после добавления ранней обработки событий. Значительным образом переключено с клавиатурных последовательностей "Ctrl+?" на "CtrlAlt+?".
  • AGLKS.vca: Страница проекта /prj_AGLKS/pg_so/pg_4/pg_mn/pg_1 переименована в /prj_AGLKS/pg_so/pg_4/pg_mn/pg_CM101, как с другими.

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

  • SYS: Функцию TSYS::curTime() дополнено аргументом определения источника часов с использованием функции clock_gettime(). Определение EVAL_RFlt дополнено суффиксом "f".
  • Mess: Функция перевода TMess::translSet() дополнена аргументом "srcFltr" фильтрации по источникам.
  • Транспорты: Функция протокола ВВ pushLogMess() дополнена аргументами "data" и "dataDir".

Дополнения:

  • Mess: Блокирование данных отделено от блокирования всех сообщений в dtRes.
  • SYS: Функции API пользователя дополнены функцией lang() быстрого получения системного языка.
    • Дополнено функцией TSYS::curTimeN().
    • .,DAQ.{LogicLev,ModBus,Siemens}: Дополнено и использовано глобальную постоянную DAQ_APER_FRQ представления частоты апериодических вызовов, вроде f_start, периодических процессов.
  • Безопасность: Объект пользователя дополнен функцией Пользовательского API auth() для аутентификации по паролю.
  • Транспорты: Входные и выходные объекты транспортов дополнены атрибутами протокола ВВ: "mLogLstDt", "mLogLstDtTm".
  • DAQ: Объект DAQ-параметра дополнен информационным полем метки времени изменения с его максимальным значением на объекте контроллера, с помощью нового конфигурационного поля БД "TIMESTAMP" объекта параметра.

Система

  • FIX:Сборка:configure.ac: Версия библиотеки ядра увеличена до 3:10:0 и версия программы увеличена до 0.9.4.
  • Сообщения исходного кода и документация программы:
    • rom_as@oscada.org заменено на roman@oscada.org везде в исходниках.
    • Документ "Modules/OPC_UA" целиком отревизирован для версии модулей 2.1 и перевода.
  • Вкладка "Переводы" несколько отревизирована, дополнена актуальным статусом, дополнена контекстной помощью и менеджер переводов дополнен на предмет:
  • ограничения времени формирования таблицы в prmInterf_TM (7 секунд);
  • конфигурационного поля пропуска количества верхних сообщений;
  • установки перевода только для фильтрованных источников;
  • проверки содержимого на совпадение только для фильтрованных источников;
  • пропуск ошибок отсутствия источников.
  • Функция перевода TMess::translSet() предотвращена от распространения групповых сообщений, изменённых не из менеджера перевода.
  • FIX:.,BD.LDAP,Archive.{DBArch,FSArch},DAQ.{ModBus,MMS},{DAQ,Protocol}.OPC_UA,UI.Vision: Несколько очищено от предупреждений сборки.
  • FIX: Определение EVAL_RFlt дополнено суффиксом "f" для предотвращения ошибочного сравнения double EVAL_RFlt с сохранённым float значением, исправляет работу архиватора Archive.FSArch с типами значений float при выявлении EVAL.
  • FIX:Mess: Блокирование данных отделено от блокирования всех сообщений в dtRes для предотвращения конкурентным блокировкам при активной работе с переводами. Атрибуты mLang2CodeBase, mLang2Code переключены на это новое блокирование.
  • data/openscada-proj.in: Переключено на ссылку содержимого Пользовательской LibsDB на системные библиотеки, с содержимым только на чтение, вместо копирования.

Сбор Данных

  • ModBus,Siemens: Переключено, в формирование значения "f_frq", на использование информации реального исполнения задачи.
  • {DAQ,Protocol}.OPC_UA.{.,libOPC_UA} : Дополнено реализацией сервиса Publish, поддержкой кусков (CHUNKS) на клиентской части Сбора Данных и общим пересмотром кода в процессе этого:
КЛИЕНТ:
  • добавление атрибутов (элементов мониторинга) перенесено из attrPrc() непосредственно в enable() и которая запускается при запуске объекта контроллера
  • ... и обработка элементов улучшена обновлением описания, флагов и связывания;
  • сбор данных унифицирован обработкой в функции параметра upVal()
  • ... и запроса значений функцией объекта контроллера getValMIt() с поддержкой Массивов
  • ... чем вплотную подготовлено для встраивание логического типа параметров;
  • объекты параметров Сбора Данных автивированы для включения других параметров;
  • установка и удаление EVAL ко всем атрибутам проверено во всех режимах;
  • структурные переменные, в просмотрщике выбора DAQ-параметра, разрешены для выбора их элементов отдельно;
  • разбор перечня переменных DAQ-параметров установлен в полный разбор с пропуском пустых строк;
  • объект DAQ-контроллера дополнен закрытием сеанса и безопасного канала при его останове;
  • общий статус объекта контроллера дополнен детализированной информацией на предмет использованного канала безопасности, сеанса, подписки и обрабатываемыми элементами мониторинга;
  • блокирование запроса переименовано в resOPC.
СЕРВЕР:
  • объект OPC-UA Сервера дополнен вкладкой общего статуса сервера с информацией на предмет активности каналов безопасности;
  • объект Узла EndPoint дополнен общим статусом с информацией на предмет активности сеансов и подписок, а также периодичностью и временем исполнения задачи подписок.
БИБЛИОТЕКА:
  • унифицировано и определено типовое значение времени жизни канала безопасности, которое установлено в 300000 мс;
  • типовой LifeTimeCounter подписок установлен в 2400;
  • объект NodeId дополнен функцией прямого сравнения operator==();
  • функция XML_N::childClear() дополнена результатом возврата того самого объекта XML_N для объединения;
  • функция curTime() дополнена аргументом определения источника часов с использованием функции clock_gettime();
  • короткие функции дополнены str2int() и str2uint();
  • некоторые поля переименованы: publInterv в publInterval, cntrLifeTime в lifetimeCnt, cntrKeepAlive в maxKeepAliveCnt, maxNotPerPubl в maxNtfPerPubl, en в publEn;
  • исправление слова "POOL" на "POLL".
БИБЛИОТЕКА_КЛИЕНТ:
  • Client::reqService() дополнен мета-командой "CloseALL" закрытия текущего сеанса и каналу безопасности;
  • функция обработки клиентских сервисов protIO() адаптирована к работе в асинхронном режиме (не запрос);
  • функция Client::messIO() расширена аргументом таймаута с определением также режима запроса;
  • запись в канал и чтение из него отделено в обработке MSG пакетов;
  • адаптация сообщений безопасности к работе со смешанным входным буфером;
  • перенос основного сервисного запроса "OPN" под обработку сообщений из-за отправки обновлений в середине Publish активности.
  • реализован сервис Publish на стороне клиента:
  • объект "Client" дополнен реализацией подобъекта "Subscr" (но сохраняется в Client::SClntSess) с функциями: activate(), monitoredItemAdd() и monitoredItemDel();
  • объект "Client" дополнен функцией poll() с:
  • унификацией чтения значений в обоих режимах Read и Publish;
  • проверкой потери всех Publish запросов в течении OpcUa_ClntPublishResentCntr(2) попыток-времени сохранения живым;
  • восстановления пула Publish.
  • объект Client::Subscr::MonitItem добавлен как представитель элементов мониторинга с доступом из под общего блокирования клиентских ресурсов;
  • сервисные запросы дополнены реализацией, включая обработку ответов: CreateSubscription, DeleteSubscriptions, CreateMonitoredItems, Publish, Poll;
  • реализовано и проверено в поддержке безопасных политик по Publish;
  • целевой пул Publish запросов на подписку установлено в виртуальной функции publishReqsPool() с типовым значением 2.
  • дополнено реализацией кусков (CHUNKS) как в запросах, так и ответах;
  • целиком отревизировано и очищено общую функцию запроса reqService() от дубликатов аргументов и параметров:
  • дополнено восстановлением сеансов при переподключении канала безопасности;
  • унифицировано очистку текущего сеанса и канала безопасности.
  • объект клиента дополнен общим блокированием ресурсов mtxData;
  • свойство сообщения "timeoutHint" установлено в 0 для всех сообщений;
  • запрос Read возвращён к "плоскому" запросу с ограничением только в CHUNKS;
  • ошибка OpcUa_BadSecureChannelIdInvalid добавлена к очистке канала безопасности;
  • Client::SClntSess::{sessOpen,lstMessReq} переименован в {secChnlOpenTm,secLstMessReqTm}
  • ... и предотвращён от очистки и восстановления сеанса и канала безопасности;
  • дополнено отладочными сообщениями ошибок запросов.
БИБЛИОТЕКА_СЕРВЕР:
  • серверная часть адаптирована к работе с UAExpert 1.5 на предмет: установки атрибута AId_Descr DAQ-значения в тип OpcUa_LocalizedText, добавления декларации целочисленного типа OpcUa_IntAuto и OpcUa_UIntAuto;
  • обработка подписок возвращена к их обработке в отдельной задаче и функции subScrCycle() на предмет:
  • правильного расчёта всех таймаутов для выключения;
  • обработки периодичности подписки и публикации;
  • проверки состояния связанных сеансов и каналов безопасности на предмет закрытия подписок.
  • но публикация оставлена на обработку в активности входного канала и функции Server::EP::publishCall() с предотвращением обработки Publish для ошибочных и чужих Подписок, через проверку inPrtId, sesTokId и isSecCnlAct;
  • унификация Сеанса на предмет: связывания сеансов с каналами безопасности переключено на один вместо массива, проверку сеанса всех сообщений дополнено предотвращением использования чужих подключений;
  • не последние куски пакета переключены на отправку прямо, чтобы не добавлять к одному TCP-пакету;
  • EP::mtxData блокирование переключено в PTHREAD_MUTEX_RECURSIVE;
  • каналы безопасности ограничены колчеством OpcUa_SecCnlLimit(10) и очередь публикаций количеством OpcUa_ServerMaxPublishQueue(10);
  • EP::secSize() переименовано в EP::secN() и добавлено EP::sessN(), EP::subscrN() и chnlList();
  • Server.SecCnl.{TokenId,TokenIdPrev} переименовано в Server.SecCnl.{tokenId,tokenIdPrev}.
  • ModBus: Выходная часть RTU варианта протокола дополнена ранним прерыванием ожидания пакетов стандартных функций [ERR,1...6,15,16], что увеличивает общую пропускную способность вдвое.
    • ВВ параметров Логического Уровня включено в перевод, для не связанных строк и так как в DAQ.LogicLev.
    • Разбор атрибутов Сбора Данных переключено на использование TSYS::strLine() и TSYS::strParse(), чем разрешено символ ':' в названии и пустые строки в тексте.
  • DAQGate: Режимы синхронизации дополнены режимом предотвращения синхронизации вообще для объектов сохранённых в кеше, путём разрешения значения -1 конфигурационного поля "Периодичность синхронизации с удалённой станцией, секунд".

Архивы-История

  • FIX:FSArch: Критически исправлено обработку файлов архива значений, при попытке записи их ИД в нулевую строку.
  • DBArch: Архиваторы сообщений дополнены конфигурационным полем "Уникальные и недублирующие сообщения только за временем и категорией".
    • FIX: Исправлено падение при обработке групп архиватора значений из-за неочистки связывания конфигурации полей таблицы (TConfig) под блокированием и неблокирование функции ModVArch::grpLimits() в reqRes.

Транспорты

  • Протокол ВВ, во входной и выходной части, расширен и дополнен:
    • комбинированием данных пакетов с одинаковым направлением и адресом данных в течении prmWait_TM (5 секунд);
    • микросекундную часть времени зафиксировано в 6(шести) символах;
    • сообщения данных дополнены символом направления;
    • ограничением размера одного блока обработки, новым конфигурационным полем;
    • значительным повышением производительности через использование предопределённого буфера.
  • FIX:Serial: Выходной транспорт исправлен в ожидании между запросами на предмет обработки reqRetrMult*wCharTm как миллисекунды.
  • FIX:Sockets: Обнаружено ошибку "Обрыв канала (32)" при записи, после отключения сервера, поэтому попытки переподключения установлены в 2 по (kz <= 0).

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

  • FIX:Общий пересмотр и переделка таблиц в Qt и Web в целом и вида Таблица примитива FormEl СВУ:
  • QTStarter,QTCfg,Vision: Общий библиотечный класс TableDelegate значительным образом улучшено в работе на QTCfg и Vision:
  • дополнено собственными пользовательскими ролями SelectRole, TextLimRole и OneLineString;
  • отображение ячеек дополнено фоновым цветом через чтение-применение общих ролей;
  • числовые типы (целое и реальное) дополнены принудительным центрированием;
  • строковые типы дополнены опциями выравнивания и заворачивания слов с ролями Qt::TextAlignmentRole;
  • дополнено поддержкой визуального ограничения длинных текстов собственной ролью TextLimRole и типовое значение установлено в 300 символов через дополнительное переопределение sizeHint().
  • FIX: Вид "Таблица" примитива "FormEl":
  • VCAEngine,QTStarter,Vision,WebVision: Дополнено новым типом ячейки 't'-текст, в основном для возможности подтверждения редактирования типа 's'-строка нажатием Enter.
  • VCAEngine,Vision,WebVision: Дополнено опцией "prec" пространства колонки, строки и ячейки для контроля точности реальных значений; и реализацией атрибута "align" колонки и ячейки.
  • WebVision,Vision: Дополнено переключением таблиц в предотвращение двойному хранению исходного содержимого при его размере более чем 10000.
  • FIX:Vision: Использование общего делегата таблицы с возможностью многострочного редактирования.
  • Усовершенствовано отображение колонок, строк и ячеек при обновлении и в целом:
  • ограничением визуального размера содержимого ячейки 300 символами и высоты строк в 70% от общего размера таблицы;
  • более точным выравниванием ширины колонок;
  • подстройкой в режиме разработки, а также при видимости вертикального заголовка;
  • плотным заполнением таблицы через учёт размера видимой полосы вертикальной прокрутки;
  • подстройкой только после полного изменения размера таблицы, чем также допуская ручное изменение колонок и для предоставления такой-правильной подстройки всегда.
  • Реализовано "лёгкую" обработку изменения ширины и обновления:
  • "лёгкое" редактирование без переподстройки колонок при каждом обновлении, только при: появлении первой строки, изменения количества колонок и изменения заголовка колонки, изменении шрифта и изменении размера;
  • применение фиксированной ширины колонки и учёт высоты строк с ограничениями независимо от значения общего атрибута "colsWdthFit";
  • установка значения, раннее изменение размера и подстройка таблицы, перенесены в пространство наличия содержимого таблицы и после сортирования.
  • Функцию экспорта во время исполнения дополнено экспортом вида Таблица примитива "FormEl" в CSV.
  • WebVision:
  • Усовершенствовано отображение колонок, строк и ячеек при обновлении и в целом:
  • реализацией режима не подстройки (отсутствие атрибута "colsWdthFit"), с использованием режима автоматического размещения таблицы для вычисления фиксированной ширины и последующего переключения в фиксированный режим размещения таблицы;
  • многострочным редактированием текста ячеек в полную ширину и высоту ячейки, с применением редактирования по Ctrl+Enter;
  • вид строчных ячеек ограничен 300 символами;
  • отображение логических ячеек изображением состояния TRUE;
  • ячейки таблицы, в режиме редактирования, разрешены к вызову контекстного меню системы-браузера.
  • Реализовано "лёгкую" обработку изменения ширины и обновления:
  • обнаружение изменения таблицы и обновление переключено в режим не сохранения исходного содержимого дважды;
  • предотвращено от полного обновления при модификации атрибута "value".
  • Дополнено поддержкой сортировки по колонкам. Установка в сортировку по первой видимой колонке при включении сортировки.
  • WebCfgD: Расширение таблицы на предмет:
  • большое видимое содержимое текста ограничено 300 символами;
  • строковый тип разрешён для многострочного редактирования используя TEXTAREA;
  • тип данных "bool" отображено изображением, не "On" или "Off";
  • центрирование содержимого логического, чисел, времени и выбора;
  • упрощение редактирования содержимого таблицы для типов время, число и строка, путём удаления кнопок применения и прокручивания.
  • QTStarter,QTCfg,Vision: Начат перенос общего Qt-кода Qt-модулей OpenSCADA в файлы новой библиотеки lib_qtgen.*, которая размещена в каталоге модуля QTStarter и привязано во всех Qt-модулях, и это осуществлено для: внешней icoSize(), colorAdjToBack() и TableDelegate.
  • VCAEngine:
  • Дополнено, и включено как опция сборки, на предмет механизма маркирования изменения атрибутов без дубликатов, путём запроса предыдущих-завершенных циклов, чем также предотвращая необходимости выявления дубликатов в визуализаторах и сохранению большого исходного содержимого.
  • Исполнение проектов улучшено при смене родителя обрабатываемых страниц на лету.
  • Исполнение задач сеансов дополнено ранним исполнением, при наличии событий.
  • FIX: СВУ-стили исправлены при доступе к пустым полям, которые не загружаются.
  • Страницу "Диагностика" СВУ-проектов адаптировано к отображению сообщений уровня отладки при включении отладки.
  • Информацию исполнения сеанса проекта дополнено реальной периодичностью, полученной из задачи, которую также использовано при формировании значения атрибута "f_frq" процедуры.
  • Vision: Диалоги свойств "Виджеты" и "Проекты / Библиотеки виджетов" дополнены собственной строкой статуса и кнопкой вызова контекстной документации. Виджеты TextEdit переключены на собственную строку статуса диалогов свойств, на предмет позиции курсора и что выключено во Всплывающей Подсказке. Виджет редактирования текста кода диалога свойств "Виджеты" дополнен восстановлением позиции курсора после применения или отмены.
  • FIX:WebVision: Дополнен обнаружением исчезания сеанса исполнения проекта и возвратом ошибки, в общем запросе "pgOpenList", и сброса счётчика вычислений "tmCnt".
  • Клавиатурный фокус и события значительным образом усовершенствованы на предмет гарантии работы этого в целом через:
  • установку атрибута "tabindex" для всех активных виджетов и специфично для FormEl — непосредственно в элементы формы;
  • дополнения вычислением числа "tabindex" как уникальный для целого интерфейса, чем предотвращая скачки фокуса;
  • обработки события onfocus на предмет установки собственного фокуса в setFocus();
  • вид Кнопка примитива FormEl дополнен обработкой клавиатурных событий нажатия и отпускания по клавишам Space и Enter;
  • примитив Диаграмма упрощён путём удаления лишнего элемента тега A;
  • FIX: Исправлено переключение фокуса при клацанье на кнопках с изображениями.
  • FIX: Исправлено проверку удаленных виджетов для всех и главной страницы.
  • FIX: Исправлено наконец размножение лишних DIV элементов при смене страницы в контейнере страниц.
  • FIX: Предотвращение зацикливанию при наличии Web-сеанса, но отсутствии соответствующего СВУ-сеанса.
  • FIX:WebCfgD: Целиком отревизировано и расширено на предмет:
  • переноса всех действий внутренних инструментов на реализацию кнопками и размер панели инструментов установлен с 25 в 30 пикселей;
  • удаления фильтрации-изменения размера изображений кнопок инструментов на стороне сервера;
  • установки расстояния между иконкой страницы и заголовком в 10 пикселей;
  • полного обновления контролированной страницы после смены размера окна;
  • расширения поля общего редактирования текста TEXTAREA применением и отменой из клавиатуры;
  • привязки функции обновления хостов к двойному клацанью мышей на общем пространстве области дерева;
  • FIX: исправления функции обновления хостов на предмет выявления элементов дублированных хостов;
  • FIX: принудительного обозначения актуальных-выбранных элементов в дереве контроля после его разворачивания;
  • удаления nodeText() и setNodeText() путём непосредственного использования "innerText" и "textContent".

Сервисные обновления