From OpenSCADAWiki
Jump to: navigation, search
(Created page with "{{CntHdr|Протокол}} * SelfSystem: Завантаження XML розширено використанням опції LD_NoTxtSpcRemEnBeg та дозволом пр...")
(Created page with "{{CntHdr|Інтерфейс Користувача}} * {WebUser,WebVision}: Розширено використанням уніфікованого сервісного ін...")
 
Line 74: Line 74:
 
* HTTP: Значним чином уніфіковано у створені сервісних сторінок за допомогою однієї функції pgCreator(). Функцію pgCreator() первинно реалізовано як функцію API користувача модульного об'єкта HTTP та дозволено для використання у WEB-підмодулях для створення власних сервісних сторінок із загальним стилем. Зовнішні виклики до WEB підмодулів розширено функціями HTTP_GET(), HTTP_POST() з аргументом TProtocolIn *iprt, та старі виклики HttpGet(), HttpPost() також продовжені перевірятися та підтримуватися. Основний діалог вибору розширено зображеннями та контекстною допомогою до наявних WWW-модулів. Шаблон головної сторінки відокремлено від основного шаблону з метою надання повністю специфічної користувачу головних сторінок.
 
* HTTP: Значним чином уніфіковано у створені сервісних сторінок за допомогою однієї функції pgCreator(). Функцію pgCreator() первинно реалізовано як функцію API користувача модульного об'єкта HTTP та дозволено для використання у WEB-підмодулях для створення власних сервісних сторінок із загальним стилем. Зовнішні виклики до WEB підмодулів розширено функціями HTTP_GET(), HTTP_POST() з аргументом TProtocolIn *iprt, та старі виклики HttpGet(), HttpPost() також продовжені перевірятися та підтримуватися. Основний діалог вибору розширено зображеннями та контекстною допомогою до наявних WWW-модулів. Шаблон головної сторінки відокремлено від основного шаблону з метою надання повністю специфічної користувачу головних сторінок.
  
{{CntHdr|UI}}
+
{{CntHdr|Інтерфейс Користувача}}
* {WebUser,WebVision}: Expanded to using the unified service interface from Protocol.HTTP by pgCreator() and the new HTTP call functions HTTP_GET, HTTP_POST.
+
* {WebUser,WebVision}: Розширено використанням уніфікованого сервісного інтерфейсу із Protocol.HTTP за допомогою pgCreator() та нових функцій HTTP_GET, HTTP_POST виклику HTTP.
* QTStarter: X Session manager disabled from restart the closed at exit programms. Expanded by a command line argument "--noX11" for allow the Qt disabling.
+
* QTStarter: Вимкнено менеджер сеансів X від перезапуску закритих при виході програм. Розширено параметром командного рядка "--noX11", щоб дозволити виключення Qt.
* QTCfg: Dangerous missed page refreshing prevented into applying changes on widgets of the replacing page, "Apply dialog for changes missing prevent". Moved from QMutex and QWaitCondition to ResMtx and CondVar, mostly to prevent here hangs on the system time changing.
+
* QTCfg: Попереджено небезпечне оновлення відсутньої сторінки у прийняті змін на віджетах сторінки що заміщується, "Діалог прийняття для попередження втрати змін". Використання QMutex та QWaitCondition замінено на ResMtx та CondVar, переважно для попередження зависань при зміні часу системи.
* VCAEngine: FuncM resources lock set for a recursive to prevent dead locks. Session calculation time expanded by its maximum value. Adapted to TUIS::mimeGet() using.
+
* VCAEngine: Блокування ресурсів FuncM встановлено у рекурсивне для попередження "мертвих" блокувань. Час обчислення сеансу розширено максимальним значенням. Адаптовано до використання TUIS::mimeGet().
* Vision: Visualizer specific attributes are alowed for the primitives and an attribute "sclWin" added and used to primitive "Diagram" for trends view in scale by window drawn by mouse. To primitive "Diagram" of the mode "Trend" the sliding by mouse is added in the time axis. Widget's tooltip and statustip set to show at not full transparent widget's parts.
+
* Vision: Дозволено оголошення специфічних для візуалізатору атрибутів примітивів та атрибут "sclWin" додано та використано для примітиву "Діаграма" з метою масштабування вмісту трендів, шляхом вимальовування вікна мишею. Для примітиву "Діаграма", у режимі "Тренд", додано ковзання мишею за шкалою часу. ToolTip та StatusTip віджету встановлено для відображення на неповністю прозорих частинах віджету.
* WebVision: Adapted to asynchronous calls for all regular updatings by servGet() and makeEl() adapting to it. SVG images show fixed by correct mime processing into UI.VCAEngine and TUIS::mimeGet() using. View "Button" of primitive "FormEl": fixed for next line processing, fixed for true text and image represent. For primitive "Text" set "line-height" for prevent upper font's padding and its representing for rotated texts moved to use CSS property "transform: rotate({X}deg)". * The prototype "Media" processing some fix for "fit" toggle and container's scale changing. Font's behaviour was expanded to support for text decorations "underline" and "line-through".
+
* WebVision: Адаптовано до асинхронних викликів для всіх регулярних оновлень за допомогою servGet() та також makeEl() адаптовано до цього. Виправлено відображення SVG зображень шляхом коректного опрацювання "mime" у UI.VCAEngine та використання TUIS::mimeGet(). Вигляд "Кнопка" примітиву "FormEl": виправлено опрацювання наступного рядка, виправлено на предмет коректного відображення тексту та зображення. Для примітиву "Текст" встановлено "line-height" з метою попередження верхнього відступу шрифту та у його представлені для повернутих текстів використано CSS властивість "transform: rotate({X}deg)". Опрацювання примітиву "Media" дещо виправлено на предмет переключення "fit" та зміни масштабу контейнеру. Поведінку шрифту розширено підтримкою декорації тексту "underline" та "line-through".
* WebUser: Semantics of the page's function expanded by two objects' arguments "This object" and "Protocol's object".
+
* WebUser: Семантику функції сторінки розширено двома об'єктними аргументами "Цей об'єкт" та "Об'єкт протоколу".
* WebCfgD: A new design created.
+
* WebCfgD: Створено новий дизайн. Адаптація до функцій HTTP_GET, HTTP_POST викликів HTTP та переведення всього на загальний створювач сторінок HTTP::pgCreator().

Latest revision as of 09:26, 25 April 2020

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

Це оновлення релізу 0.8 LTS виправляє біля 60 помилок та додає деякі удосконалення, які цілком ви можете почитати у протоколі змін оновлення.

API
!!!!:Зміни:

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

Доповнення:

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

SYS

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

БД

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

Збір даних

  • Стан виконання завдань розширено максимальним часом використання.
  • DAQGate: Адаптовано до зберігання призначення параметрів за станціями, з метою забезпечити їх раннє відновлення без потреби у синхронізації. Додано опціональний контроль за автоматичним видаленням параметрів та атрибутів.
  • LogicLev: Встановлення значення атрибуту "f_frq" змінено на реальну частоту, отриману із структури опису цього завдання.
  • OPC_UA.libOPC_UA: До серверної частини додано підтримку шматків. Шматки перевірено для вхідних запитів на небезпечних та безпечних підключеннях. Виправлено розташування у черзі та подальшу обробку запитів публікації, та повідомлень в цілому, для безпечних підключень та для підтвердження небезпечних після прямого опрацювання.
  • JavaLikeCalc: Додано підтримку динамічного зв'язування із зовнішніми функціями шляхом: function {nm} = "{addr}"; {nm}();. Виклик об'єктних функцій оптимізовано на предмет прямої передачі ім'я у команді виклику. Розширено оператором "delete" для звільнення об'єктів та їх властивостей.
  • System: Розширено джерелом даних "ФС". Автоматичне створення джерел розширено режимами "Швидкі" та "Повільні".

Архів

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

Транспорт

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

Протокол

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

Інтерфейс Користувача

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