From OpenSCADAWiki
< Documents | Release 0.9
(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: | + | * ModBus,Siemens: Switched in "f_frq" value form to use the real task execution information. |
− | * {{Anch|OPC_UA|{DAQ,Protocol}.OPC_UA.{.,libOPC_UA} }}: | + | * {{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'': |
− | :* | + | :* 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() | + | :* 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} | + | ::* 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 | + | :* 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() | + | :* EP::secSize() renamed to EP::secN() and there added EP::sessN(), EP::subscrN() and chnlList(); |
− | :* Server.SecCnl.{TokenId,TokenIdPrev} | + | :* Server.SecCnl.{TokenId,TokenIdPrev} renamed to Server.SecCnl.{tokenId,tokenIdPrev}. |
− | * ModBus: | + | * 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: | + | * 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
Это обновление релиза 0.9 LTS исправляет около 45 ошибок и добавляет некоторые улучшения, которые целиком вы можете почитать в протоколе изменений обновления.
Переведено в счёт пакета ТП Лаборатории Вакуумных Технологий
Важные действия пользователя по обновлению
- 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
- 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
- UI.WebVision: 5.8 => 6.2
- 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".