From OpenSCADAWiki
Jump to: navigation, search
(Updating to match new version of source page)
Line 80: Line 80:
 
* data/openscada-proj.in: Переключено на ссылку содержимого Пользовательской LibsDB на системные библиотеки, с содержимым только на чтение, вместо копирования.
 
* data/openscada-proj.in: Переключено на ссылку содержимого Пользовательской LibsDB на системные библиотеки, с содержимым только на чтение, вместо копирования.
  
{{CntHdr|Сбор Данных}}
+
{{CntHdr|DAQ}}
* ModBus,Siemens: Переключено, в формирование значения "f_frq", на использование информации реального исполнения задачи.
+
* ModBus,Siemens: Switched in "f_frq" value form to use the real task execution information.
* {{Anch|OPC_UA|{DAQ,Protocol}.OPC_UA.{.,libOPC_UA} }}: Дополнено реализацией сервиса Publish, поддержкой кусков (CHUNKS) на клиентской части Сбора Данных и общим пересмотром кода в процессе этого:
+
* {{Anch|OPC_UA|{DAQ,Protocol}.OPC_UA.{.,libOPC_UA} }}: Appended for the Publish service implementation, CHUNKS support on the DAQ-client part and the code coming refactoring in generic:
:: ''КЛИЕНТ'':
+
:: ''CLIENT'':
:* добавление атрибутов (элементов мониторинга) перенесено из attrPrc() непосредственно в enable() и которая запускается при запуске объекта контроллера
+
:* attributes (monitored items) adding moved from attrPrc() directly to enable() and which ensured to call at the controller object start
:* ... и обработка элементов улучшена обновлением описания, флагов и связывания;
+
:* ... and the items processing improved in updating the description, flags and link;
:* сбор данных унифицирован обработкой в функции параметра upVal()
+
:* values acquisition is unified in processing in the parameter function upVal()
:* ... и запроса значений функцией объекта контроллера getValMIt() с поддержкой Массивов
+
:* ... and the values requesting by the controller object function getValMIt() with the Arrays support
:* ... чем вплотную подготовлено для встраивание логического типа параметров;
+
:* ... than preparing closely for builtin the logical parameter type;
:* объекты параметров Сбора Данных автивированы для включения других параметров;
+
:* the DAQ-parameter objects enabled for including other parameters;
:* установка и удаление EVAL ко всем атрибутам проверено во всех режимах;
+
:* the EVAL setting and removing for all attributes tested for all modes;
:* структурные переменные, в просмотрщике выбора DAQ-параметра, разрешены для выбора их элементов отдельно;
+
:* structure variables in DAQ-parameters allowed to select them items separately, in the selection browser;
:* разбор перечня переменных DAQ-параметров установлен в полный разбор с пропуском пустых строк;
+
:* the variables list of the DAQ-parameters parsing set to complete parsing with passing empty lines;
:* объект DAQ-контроллера дополнен закрытием сеанса и безопасного канала при его останове;
+
:* the DAQ-controller object appended in closing the session and secure channel at it stopping;
:* общий статус объекта контроллера дополнен детализированной информацией на предмет использованного канала безопасности, сеанса, подписки и обрабатываемыми элементами мониторинга;
+
:* the controller object common status appended for the detailed information about the used secure channel, session, subscription and the processing monitored items;
:* блокирование запроса переименовано в resOPC.
+
:* the request lock renamed to resOPC.
:: ''СЕРВЕР'':
+
:: ''SERVER'':
:* объект OPC-UA Сервера дополнен вкладкой общего статуса сервера с информацией на предмет активности каналов безопасности;
+
:* the OPC-UA Server object appended for the common server status tab with information about activity of the secure channels;
:* объект Узла EndPoint дополнен общим статусом с информацией на предмет активности сеансов и подписок, а также периодичностью и временем исполнения задачи подписок.
+
:* the EndPoint Node object appended for the common status with information about activity of the sessions and subscriptions, also the subscription task period and time of execution.
:: ''БИБЛИОТЕКА'':
+
:: ''LIB'':
:* унифицировано и определено типовое значение времени жизни канала безопасности, которое установлено в 300000 мс;
+
:* unified in specifying the default value of the secure channel life time, what set to 300000 ms;
:* типовой LifeTimeCounter подписок установлен в 2400;
+
:* the default LifeTimeCounter of the subscriptions set to 2400;
:* объект NodeId дополнен функцией прямого сравнения operator==();
+
:* the object NodeId appended for the function operator==() of direct comparing;
:* функция XML_N::childClear() дополнена результатом возврата того самого объекта XML_N для объединения;
+
:* the function XML_N::childClear() appended by a result of returning the same XML_N object for concatenation;
:* функция curTime() дополнена аргументом определения источника часов с использованием функции clock_gettime();
+
:* the function curTime() appended for an argument of the clock source specifying with using the function clock_gettime();
:* короткие функции дополнены str2int() и str2uint();
+
:* short functions appended for str2int() and str2uint();
:* некоторые поля переименованы: publInterv в publInterval, cntrLifeTime в lifetimeCnt, cntrKeepAlive в maxKeepAliveCnt, maxNotPerPubl в maxNtfPerPubl, en в publEn;
+
:* some fields renamed: publInterv to publInterval, cntrLifeTime to lifetimeCnt, cntrKeepAlive to maxKeepAliveCnt, maxNotPerPubl to maxNtfPerPubl, en to publEn;
:* исправление слова "POOL" на "POLL".
+
:* fixing "POOL" word on "POLL".
:: ''БИБЛИОТЕКА_КЛИЕНТ'':
+
:: ''LIB_CLIENT'':
:* Client::reqService() дополнен мета-командой "CloseALL" закрытия текущего сеанса и каналу безопасности;
+
:* Client::reqService() appended for the meta command "CloseALL" of closing current session and secure channel;
:* функция обработки клиентских сервисов protIO() адаптирована к работе в асинхронном режиме (не запрос);
+
:* the main client services processing function protIO() adapted to work in the asynchronous mode (not requesting);
::* функция Client::messIO() расширена аргументом таймаута с определением также режима запроса;
+
::* the function Client::messIO() expanded for the timeout argument with specifying the requesting mode also;
::* запись в канал и чтение из него отделено в обработке MSG пакетов;
+
::* the channel writing and reading is separated in MSG packages processing;
::* адаптация сообщений безопасности к работе со смешанным входным буфером;
+
::* adaption the secure messages to work with the mixed input buffer;
::* перенос основного сервисного запроса "OPN" под обработку сообщений из-за отправки обновлений в середине Publish активности.
+
::* moving the main service request "OPN" under the messages processing due to the renewals sending inward the Publish activity.
:* реализован сервис Publish на стороне клиента:
+
:* implemented for the Publish service on the client side:
::* объект "Client" дополнен реализацией подобъекта "Subscr" (но сохраняется в Client::SClntSess) с функциями: activate(), monitoredItemAdd() и monitoredItemDel();
+
::* the "Client" object appended for the subobject "Subscr" implementation (but stored in Client::SClntSess) with the functions: activate(), monitoredItemAdd() and monitoredItemDel();
::* объект "Client" дополнен функцией poll() с:
+
::* the "Client" object appended for the function poll() with:
:::* унификацией чтения значений в обоих режимах Read и Publish;
+
:::* unifying the values reading both for the Read and Publish modes;
:::* проверкой потери всех Publish запросов в течении OpcUa_ClntPublishResentCntr(2) попыток-времени сохранения живым;
+
:::* checking of loss all Publish requests during the OpcUa_ClntPublishResentCntr(2) keep alive count-time;
:::* восстановления пула Publish.
+
:::* restoring the Publish pool.
::* объект Client::Subscr::MonitItem добавлен как представитель элементов мониторинга с доступом из под общего блокирования клиентских ресурсов;
+
::* the object Client::Subscr::MonitItem was added as the monitored items representer with the access under the client resource common lock;
:::* сервисные запросы дополнены реализацией, включая обработку ответов: CreateSubscription, DeleteSubscriptions, CreateMonitoredItems, Publish, Poll;
+
:::* the service requests appended for implementation, include processing the responses: CreateSubscription, DeleteSubscriptions, CreateMonitoredItems, Publish, Poll;
:::* реализовано и проверено в поддержке безопасных политик по Publish;
+
:::* implemented and tested in the secure policies support at Publish;
:::* целевой пул Publish запросов на подписку установлено в виртуальной функции publishReqsPool() с типовым значением 2.
+
:::* the target Publish requests pool per subscription set in the virtual function publishReqsPool() with default value 2.
::* дополнено реализацией кусков (CHUNKS) как в запросах, так и ответах;
+
::* appended for the CHUNKS implementation both for requests and responses;
::* целиком отревизировано и очищено общую функцию запроса reqService() от дубликатов аргументов и параметров:
+
::* completely revised and cleared in the common requesting function reqService() from doubling the arguments and parameters:
:::* дополнено восстановлением сеансов при переподключении канала безопасности;
+
:::* appended for restoring sessions at reconnection the secure channel;
:::* унифицировано очистку текущего сеанса и канала безопасности.
+
:::* unifying the clearing of the current session and secure channel.
::* объект клиента дополнен общим блокированием ресурсов mtxData;
+
::* the client object appended by the common resources lock mtxData;
::* свойство сообщения "timeoutHint" установлено в 0 для всех сообщений;
+
::* the message property "timeoutHint" set to 0 for all messages;
::* запрос Read возвращён к "плоскому" запросу с ограничением только в CHUNKS;
+
::* the Read request returned to the plain requesting with limition on CHUNKS only;
::* ошибка OpcUa_BadSecureChannelIdInvalid добавлена к очистке канала безопасности;
+
::* the error OpcUa_BadSecureChannelIdInvalid added for clearing the secure channel;
::* Client::SClntSess::{sessOpen,lstMessReq} переименован в {secChnlOpenTm,secLstMessReqTm}
+
::* Client::SClntSess::{sessOpen,lstMessReq} renamed to {secChnlOpenTm,secLstMessReqTm}
::* ... и предотвращён от очистки и восстановления сеанса и канала безопасности;
+
::* ... and prevented from clearing in restoring the session and secure channel;
::* дополнено отладочными сообщениями ошибок запросов.
+
::* appended for debug message of the request errors.
:: ''БИБЛИОТЕКА_СЕРВЕР'':
+
:: ''LIB_SERVER'':
:* серверная часть адаптирована к работе с UAExpert 1.5 на предмет: установки атрибута AId_Descr DAQ-значения в тип OpcUa_LocalizedText, добавления декларации целочисленного типа OpcUa_IntAuto и OpcUa_UIntAuto.
+
:* the server part adapted to work with UAExpert 1.5 for: the attribute AId_Descr of the DAQ-value set to the type OpcUa_LocalizedText, the integer types appended for declaration OpcUa_IntAuto and OpcUa_UIntAuto;
:* обработка подписок возвращена к их обработке в отдельной задаче и функции subScrCycle() на предмет:
+
:* the subscriptions processing returned to they processing in a separate task and the function subScrCycle() for:
::* правильного расчёта всех таймаутов для выключения;
+
::* true counting all timeouts to disable;
::* обработки периодичности подписки и публикации;
+
::* processing the periodicity of subscription and publishing;
::* проверки состояния связанных сеансов и каналов безопасности на предмет закрытия подписок.
+
::* checking the assigned sessions and secure channels state to close the subscriptions.
:* но публикация оставлена на обработку в активности входного канала и функции Server::EP::publishCall() с предотвращением обработки Publish для ошибочных и чужих Подписок, через проверку inPrtId, sesTokId и isSecCnlAct;
+
:* but the publishing leave for processing in the input channel activity and the function Server::EP::publishCall() with preventing the Publish processing for wrong and foreign Subscriptions, by checking inPrtId, sesTokId and isSecCnlAct;
:* унификация Сеанса на предмет: связывания сеансов с каналами безопасности переключено на один вместо массива, проверку сеанса всех сообщений дополнено предотвращением использования чужих подключений;
+
:* Session unification for: link of the sessions to secure channels switched to single one instead an array, the session checking of all messages appended of preventing of using foreign connections;
:* не последние куски пакета переключены на отправку прямо, чтобы не добавлять к одному TCP-пакету;
+
:* not final chunk packages switched to send directly, for not append to single TCP-package;
:* EP::mtxData блокирование переключено в PTHREAD_MUTEX_RECURSIVE;
+
:* EP::mtxData lock switched to PTHREAD_MUTEX_RECURSIVE;
:* каналы безопасности ограничены колчеством OpcUa_SecCnlLimit(10) и очередь публикаций количеством OpcUa_ServerMaxPublishQueue(10);
+
:* the secure channels limited in OpcUa_SecCnlLimit(10) and the publishes queue in OpcUa_ServerMaxPublishQueue(10);
:* EP::secSize() переименовано в EP::secN() и добавлено EP::sessN(), EP::subscrN() и chnlList();
+
:* EP::secSize() renamed to EP::secN() and there added EP::sessN(), EP::subscrN() and chnlList();
:* Server.SecCnl.{TokenId,TokenIdPrev} переименовано в Server.SecCnl.{tokenId,tokenIdPrev}.
+
:* Server.SecCnl.{TokenId,TokenIdPrev} renamed to Server.SecCnl.{tokenId,tokenIdPrev}.
* ModBus: Выходная часть RTU варианта протокола дополнена ранним прерыванием ожидания пакетов стандартных функций [ERR,1...6,15,16], что увеличивает общую пропускную способность вдвое.
+
* ModBus: The output part of the protocol RTU variant appended for early termination of the package waiting of the standard functions [ERR,1...6,15,16], what increases the overall bandwidth twice.
** ВВ параметров Логического Уровня включено в перевод, для не связанных строк и так как в DAQ.LogicLev.
+
** IO of the Logical Level parameters enabled for the translation, for not linked strings and like to DAQ.LogicLev.
** Разбор атрибутов Сбора Данных переключено на использование TSYS::strLine() и TSYS::strParse(), чем разрешено символ ':' в названии и пустые строки в тексте.
+
** The DAQ attributes parsing switched to use TSYS::strLine() and TSYS::strParse() than allowing the symbol ':' in the name and empty lines in the text.
* DAQGate: Режимы синхронизации дополнены режимом предотвращения синхронизации вообще для объектов сохранённых в кеше, путём разрешения значения '''-1''' конфигурационного поля "Периодичность синхронизации с удалённой станцией, секунд".
+
* DAQGate: The sync modes appended for a mode of preventing the sync in whole for the stored in the cache objects, allowing value '''-1''' for the configuration field "Synchronization time with the remote station, seconds."
  
 
{{CntHdr|Архивы-История}}
 
{{CntHdr|Архивы-История}}

Revision as of 15:35, 20 July 2021

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

Это обновление релиза 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 на системные библиотеки, с содержимым только на чтение, вместо копирования.

DAQ

  • ModBus,Siemens: Switched in "f_frq" value form to use the real task execution information.
  • {DAQ,Protocol}.OPC_UA.{.,libOPC_UA} : Appended for the Publish service implementation, CHUNKS support on the DAQ-client part and the code coming refactoring in generic:
CLIENT:
  • attributes (monitored items) adding moved from attrPrc() directly to enable() and which ensured to call at the controller object start
  • ... and the items processing improved in updating the description, flags and link;
  • values acquisition is unified in processing in the parameter function upVal()
  • ... and the values requesting by the controller object function getValMIt() with the Arrays support
  • ... than preparing closely for builtin the logical parameter type;
  • the DAQ-parameter objects enabled for including other parameters;
  • the EVAL setting and removing for all attributes tested for all modes;
  • structure variables in DAQ-parameters allowed to select them items separately, in the selection browser;
  • the variables list of the DAQ-parameters parsing set to complete parsing with passing empty lines;
  • the DAQ-controller object appended in closing the session and secure channel at it stopping;
  • the controller object common status appended for the detailed information about the used secure channel, session, subscription and the processing monitored items;
  • the request lock renamed to resOPC.
SERVER:
  • the OPC-UA Server object appended for the common server status tab with information about activity of the secure channels;
  • the EndPoint Node object appended for the common status with information about activity of the sessions and subscriptions, also the subscription task period and time of execution.
LIB:
  • unified in specifying the default value of the secure channel life time, what set to 300000 ms;
  • the default LifeTimeCounter of the subscriptions set to 2400;
  • the object NodeId appended for the function operator==() of direct comparing;
  • the function XML_N::childClear() appended by a result of returning the same XML_N object for concatenation;
  • the function curTime() appended for an argument of the clock source specifying with using the function clock_gettime();
  • short functions appended for str2int() and str2uint();
  • some fields renamed: publInterv to publInterval, cntrLifeTime to lifetimeCnt, cntrKeepAlive to maxKeepAliveCnt, maxNotPerPubl to maxNtfPerPubl, en to publEn;
  • fixing "POOL" word on "POLL".
LIB_CLIENT:
  • Client::reqService() appended for the meta command "CloseALL" of closing current session and secure channel;
  • the main client services processing function protIO() adapted to work in the asynchronous mode (not requesting);
  • the function Client::messIO() expanded for the timeout argument with specifying the requesting mode also;
  • the channel writing and reading is separated in MSG packages processing;
  • adaption the secure messages to work with the mixed input buffer;
  • moving the main service request "OPN" under the messages processing due to the renewals sending inward the Publish activity.
  • implemented for the Publish service on the client side:
  • the "Client" object appended for the subobject "Subscr" implementation (but stored in Client::SClntSess) with the functions: activate(), monitoredItemAdd() and monitoredItemDel();
  • the "Client" object appended for the function poll() with:
  • unifying the values reading both for the Read and Publish modes;
  • checking of loss all Publish requests during the OpcUa_ClntPublishResentCntr(2) keep alive count-time;
  • restoring the Publish pool.
  • the object Client::Subscr::MonitItem was added as the monitored items representer with the access under the client resource common lock;
  • the service requests appended for implementation, include processing the responses: CreateSubscription, DeleteSubscriptions, CreateMonitoredItems, Publish, Poll;
  • implemented and tested in the secure policies support at Publish;
  • the target Publish requests pool per subscription set in the virtual function publishReqsPool() with default value 2.
  • appended for the CHUNKS implementation both for requests and responses;
  • completely revised and cleared in the common requesting function reqService() from doubling the arguments and parameters:
  • appended for restoring sessions at reconnection the secure channel;
  • unifying the clearing of the current session and secure channel.
  • the client object appended by the common resources lock mtxData;
  • the message property "timeoutHint" set to 0 for all messages;
  • the Read request returned to the plain requesting with limition on CHUNKS only;
  • the error OpcUa_BadSecureChannelIdInvalid added for clearing the secure channel;
  • Client::SClntSess::{sessOpen,lstMessReq} renamed to {secChnlOpenTm,secLstMessReqTm}
  • ... and prevented from clearing in restoring the session and secure channel;
  • appended for debug message of the request errors.
LIB_SERVER:
  • the server part adapted to work with UAExpert 1.5 for: the attribute AId_Descr of the DAQ-value set to the type OpcUa_LocalizedText, the integer types appended for declaration OpcUa_IntAuto and OpcUa_UIntAuto;
  • the subscriptions processing returned to they processing in a separate task and the function subScrCycle() for:
  • true counting all timeouts to disable;
  • processing the periodicity of subscription and publishing;
  • checking the assigned sessions and secure channels state to close the subscriptions.
  • but the publishing leave for processing in the input channel activity and the function Server::EP::publishCall() with preventing the Publish processing for wrong and foreign Subscriptions, by checking inPrtId, sesTokId and isSecCnlAct;
  • Session unification for: link of the sessions to secure channels switched to single one instead an array, the session checking of all messages appended of preventing of using foreign connections;
  • not final chunk packages switched to send directly, for not append to single TCP-package;
  • EP::mtxData lock switched to PTHREAD_MUTEX_RECURSIVE;
  • the secure channels limited in OpcUa_SecCnlLimit(10) and the publishes queue in OpcUa_ServerMaxPublishQueue(10);
  • EP::secSize() renamed to EP::secN() and there added EP::sessN(), EP::subscrN() and chnlList();
  • Server.SecCnl.{TokenId,TokenIdPrev} renamed to Server.SecCnl.{tokenId,tokenIdPrev}.
  • ModBus: The output part of the protocol RTU variant appended for early termination of the package waiting of the standard functions [ERR,1...6,15,16], what increases the overall bandwidth twice.
    • IO of the Logical Level parameters enabled for the translation, for not linked strings and like to DAQ.LogicLev.
    • The DAQ attributes parsing switched to use TSYS::strLine() and TSYS::strParse() than allowing the symbol ':' in the name and empty lines in the text.
  • DAQGate: The sync modes appended for a mode of preventing the sync in whole for the stored in the cache objects, allowing value -1 for the configuration field "Synchronization time with the remote station, seconds."

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

  • 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".