From OpenSCADAWiki
Jump to: navigation, search

Система

  • FIX: Повідомлення вихідного коду та документація програми:
    • TMess: Доповнено очищенням змінної оточення LC_ALL та встановленням "LANG" якщо порожнє, для запобігання перевизначенню LC_NUMERIC=C у кінці кінців.
    • FIX:.,*: Виправлено багато оригінальних повідомлень вихідного коду також протягом документування більшості модулів.
    • FIX:DAQ.JavaLikeCalc: Виправлено переклад JavaLikeCalc коду функцією tr() у створені таблиці перекладу "Trs" та записів там у простому режимі (одна мова).
    • Контекстна документація:
      • Позамережева документація доповнена деякими модулями OpenSCADA та більшістю бібліотек внутрішніх процедур та графічних елементів. Файл загальних CSS-стилів позамережевої документації "doc/en/files/doc.css" покращено вимкненням прозорого фонового кольору та деякими властивостями обрання мови.
      • Уніфіковано декларацією з опису деяких вузлів у функції TUIS::docKeyGet() та додано вузли до цього:
        • DAQ-шаблони та JavaLikeCalc бібліотеки;
        • СВУ-бібліотеки у UI.VCAEngine та UI.Vision.
      • UI: TUIS::docGet() доповнено кодом визначення LTS збірок та використання замороженої LTS документації на OpenSCADA файл-сервері.
      • FIX:DAQ.JavaLikeCalc,UI.VCAEngine: Виправлено декларацію позамережевої документації для "User_API".
  • FIX: Складання:
    • FIX:configure.ac: Версію бібліотеки ядра збільшено до 3:7:0 та версію програми збільшено до 0.9.1.
    • Доповнено корінними файловими системами (chroots) Debian 10, CentOs 8 та Ubuntu 20.04 для збірки OpenSCADA.
      • Вихідні тексти значно почищено стосовно попереджень складання із GCC 9 (CentOs 8).
      • UI.{QTCfg,Vision}: Адаптовано до збірки у оточені Debian 10 щодо Qt5.11.3, GCC8 та помилки стосовно конфлікту макросу message() у StdLibC++ через Qt5.
  • Android: Вивчено поведінку використання змінної оточення QT_SCALE_FACTOR на Android, яку встановлено у 1.5 та видалено типовий шрифт "Helvetica,12,-1" разом із CSS-правилами QScrollBar.
  • Модульну версію підсистеми "Спеціальні" збільшено до 12; підсистеми "БД", "DAQ", "Архіви" та "UI" збільшено до 13; підсистеми "Транспорти" збільшено до 15.
  • FIX: Потоковість, завдання, реальний час та замки:
    • Деякі загальні ресурси даних dataRes() замінено власними ресурсами, переважно через спостерігання проблем блокування у Protocol.HTTP та DAQ.ModBus.
    • FIX: Додано механізм загальних замків через контейнер замків, функція commonLock().
      • FIX: Transport.{Sockets,SSL}: Використано для системних функцій на кшталт getaddrinfo(), які не є багатопотоковими.
    • Планування завдань доповнено фазуванням їх виклику, що робить навантаження на процесор рівним.
    • FIX: Очікування функції TCntrNode::nodeDis() виправлено для нульового часу та функцію chldDel() встановлено у відсутність очікування по замовченню.
    • FIX: Виправлено негативну пріоритетність політики "BATCH".
    • Archive,DAQ.Controller: Для поточного часу повідомлень та значень переважно використано TSYS::curTime()/1000000 замість time(NULL) оскільки час повідомлень і значень у мікросекундах та позначено TSYS::curTime().
  • FIX: Резервування:
    • .,UI.{QTCfg,Vision,WebCfg,WebCfgD}: Функцію "Передача локальних первинних команд" резервованих систем уніфіковано та розширено повним переміщенням до TCntrNode::cntrCmd(), тож функція працює наразі для будь-яких викликів також із оточення програмування користувача.
    • Archives,DAQ.DAQGate: Опрацювання верхньої межі часу повідомлень у резервуванні та DAQGate змінено на використання останнього повідомлення для повтору його запиту двічі, щоб запобігти втраті повідомлень на межі.
      • FIX: Резервування та DAQ.DAQGate відновлено у записі великих архівних блоків значень, переважно у відновлені ділянок архіву значень.
      • Перше отримання порушень у резервуванні повідомлень ввімкнено лише за наявності архіваторів повідомлень у резерві.
      • Розміщення повідомлень у архіваторах процедурою резервування TMArchivator::redntDataUpdate() змінено на використання функції put(), для здійснення цієї операції автоматично для всіх отриманих повідомлень під замком.
    • DAQ,DAQ.*: Запис значень у резервуванні уніфіковано функцією vlSetRednt(). Сервіс "TValue::get:/serv/attr" розширено дещо зайвим запитом останнього запитаного значення для запобігання EVAL там при втраті з'єднання.
  • Функцію strEncode() доповнено варіантом "Limit" для обмеження розміру рядка з урахуванням змінності UTF-8, та наступні елементи переведено на неї, замість видаленого обмежувального варіанту функції strMess(): ключі TConfig, ВВ DAQ-шаблонів, DB.SQLite, UI.QTCfg.
  • FIX: Конфігурація:
    • TConfig,TCfg: Ключові поля доповнено обмеженням їх розміру перед обрізанням на боці БД.
      • *: Функції додання доповнено опрацюванням формування ідентифікатору, або назви, та обмеження їх у розмірі, поверненням результуючої назви ініціатору, з використанням розширення функції вузла chldAdd() до прямого повернення ідентифікатору та простого видалення нового вузла для однакових.
      • DAQ: Ідентифікатори ВВ Логічного Рівня DAQ-шаблонів розширено обмеженням розміру до 1.5*OBJ_ID_SZ=30 символів та доповнено їх обрізанням при створені.
      • Транспорти: Розмір Ідентифікатору вихідних транспортів встановлено у OBJ_ID_SZ*2, оскільки вони можуть комбінуватися із звичайного ідентифікатору вузла та деякого префіксу, у автоматичному режимі.
      • Доповнено функцією встановлення полів TCfg у типове значення, для запобігання завантаженню значень попередніх записів до відсутніх полів.
    • TConfig,*: Функції користувацького API для конфігурації cfg() та cfgSet() розширено контролем доступу.
    • Завантаження із обраної БД покращено попередньою перевіркою ввімкнення у функції TSYS::chkSelDB().
    • TCntrNode,DAQ,DAQ.JavaLikeCalc: Доповнено функцією load__() для опрацювання деяких дій на кінці завантаження.
  • Інтерфейс Керування:
    • *: Уніфіковано щодо контролю модифікації об'єктів вузлів та очищено зайві модифікації, перенесенням модифікації із контексту виконання під опцію "modifCalc".
    • .,UI.{QTCfg,WebCfgD}: Таблиці розширено окремою допомогою за стовпчиками та клітинками.
      • Транспорти: Таблицю зовнішніх хостів OpenSCADA розширено контекстною допомогою до клітинки адреси транспорту, використовуючи функцію outAddrHelp().
  • DAQ-шаблони та всі їх реалізації доповнено функцією створення атрибутів обрання із другого та третього рядка шаблонного поля "Значення", TFunction::IO доповнено прапорцем TFld::Selectable.
  • Завершено уніфіковану реалізацію DAQ-шаблонів — TPrmTempl::Impl, та такі елементи мігровано і адаптовано до неї: DAQ.{JavaLikeCalc,ModBus,LogicLev,Siemens}, Protocol.{ModBus,UserProtocol}, UI.WebUser.
  • FIX:DAQ,Archive.DBArch: Реалізовано копіюючий конструктор TElem для виправлення проблем у Archive.DBArch та багатьох груп-таблиць у груповому табличному режимі.
  • Function,DAQ.{JavaLikeCalc,LogicLev,ModBus,Siemens}: Розширено стеженням за зміною програми функції та на предмет гарячого перезапуску виконуваних процедур, встановленням прапорця "f_start".
  • TMess,XMLNode: Доповнено функцією setUTF8(), формування UTF-8 із їх кодів, взяте із XMLNode для використання у інших місцях.