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

Сервісні оновлення