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

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

Це оновлення релізу 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().