From OpenSCADAWiki
Jump to: navigation, search

1 Оновлення

1.1 [06.06.2018] ДВАДЦЯТЕ (20) останнє оновлення

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

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

  • SYS.*: Уніфіковано допомогу з командного рядку у функції optDescr() для отримання ієрархічної допомоги у рядку та подальшого її друку у одному місці функції TSYS::load_().
  • DAQ.JavaLikeCalc: Функцію String.toInt() користувацького API встановлено у основу "10", по замовченню.
  • UI.{VCAEngine,Vision}: Визначення "quittance" перейменовано у "quietance", від слова "тихо (quiet)", що є логічним для порушень, та користувацьке API залишено сумісним. Перенесено реалізацію видів "Завантаження", "Збереження", "Меню" виду "Кнопка" примітиву "FormEl" та атрибут "checkable" перейменовано у "mode"!
  • TFunction,TPrmTmpl,DAQ.JavaLikeCalc.FLib: Деякі властивості інтерфейсу керування (ID, NAME, DESCR) встановлено пов'язаними з конфігурацією БД.

Доповнення:

  • SYS:
    • Додано функцію cmdOptPresent() та використано виключно для перевірки наявності параметру.
    • DB.DBF,Archive.FSArch,UI.Vision: Додано загальний контроль за правами створюваних OpenSCADA файлів, параметром командного рядка "--permCrtFiles" та функцією TSYS::permCrtFiles().
    • TRegExp: Перенесено реалізацію ознаки UTF8, по замовченню не встановлено. Додано атрибут "err" до результату масиву запиту match().
    • Додано віртуальні функції TSubSYS::optDescr() та TModule::optDescr() для уніфікації допомоги щодо командного рядку.
    • Загальні мітки доповнено категоріями повідомлень у функції TMess::labMessCat().
  • DAQ.JavaLikeCalc: API користувача розширено функціями приведення {Boolean,Integer,Real}.{toReal,toInt}().

SYS

  • *: Більшість оригінальних повідомлень відревізовано та покращено. Відревізовано всі повідомлення допомоги щодо командного рядку бібліотеки ядра та модулів OpenSCADA, на предмет оригінальних текстів та їх перекладу на Українську, Російську та Німецьку. "Бібліотека шаблону" перейменовано у "Бібліотеки шаблону", "Архіви" перейменовано у "Архіви-Історія", "ID" перейменовано у "Ідентифікатор".
  • TCntrNode: У якості таймауту вимкнення/від'єднання вузлів використано стандартний STD_WAIT_TM(10) та при виході він встановлюється у STD_WAIT_TM*5, замість DEF_TIMEOUT.
  • Додано новий аргумент командного рядку --consoleCharSet для контролю кодування консолі, у повідомленнях та допомозі.
  • Додано аргумент командного рядку --modDir, як копія параметру конфігураційного файлу "ModDir".

БД

  • {SQLite,MySQL,PostgreSQL,FireBird}: Додано створення стовпчика перекладу під час виправлення таблиці, для вже частково перекладених таблиць у не багатомовному режимі.

DAQ

  • {TPrmTempl,JavaLikeCalc}: Завершено та перевірено реалізацію класу TPrmTempl::Impl, уніфікації використання DAQ шаблонів.
  • SNMP: Розширено контролем помилок підключень на рівні параметру.

Архіви-Історія

  • Копіювання об'єктів архіваторів убезпечино від копіювання поля "ADDR", убезпечино від запуску та виправлено копіювання додаткових властивостей.
  • Виправлено завантаження архіваторів за відсутності деяких модулів архівів.
  • FSArch: Доступ до кешу переміщено під критичну секцію, для запобігання падінням на високому навантажені. Жорстко убезпечино від зміни конфігураційного поля "ADDR" при виконання, для повідомлень та значень. Додано процедуру перевірки дублювань конфігураційного поля "ADDR". Файли архівів перейменовано у формат "%F %H.%M.%S" для можливості їх створення на FAT.
  • DBArch: Виправлено щодо запиту одного значення у архіву значень.

Транспорти

  • Serial: Додано вимірювання максимального часу символу вихідних транспортів у режимі запиту та налагодження.

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

  • {VCAEngine,Vision,WebVision}: Примітив "Text" доповнено атрибутом "inHtml" та підтримкою відображення HTML.
  • FIX:{QTStarter,QTCfg,Vision}:
    • Видалення більшості Qt об'єктів переведено на використання deleteLater(), для безпечного видалення під викликом processEvents().
    • Розмір іконок та шрифтів зроблені адаптованими до реального розміру основного-системного шрифту, за допомогою нової функції icoSize(), для: ініціюючого розміру основного вікна, шрифту заголовку, іконок панелей інструментів, іконок дерева навігації, вигляду дерева навігації, ширини роздільника.
    • Змінено формування меню QTStarter з метою незалежного створення дій, через проблеми формування рідної панелі меню у Unity.
    • Видалено примусове перемикання стилю QPlastiqueStyle() (Qt4) або QCommonStyle() (Qt5) завдяки реалізації контролю за виглядом та відчуттям у OpenSCADA.
  • {VCAEngine,Vision}: Здійснено деякі заходи, що передбачають повноцінну "гарячу" розробку для вже виконуваних та віддалених сеансів:
    • Проекти розширено обліком використальних сеансів для "гарячого" ввімкнення сторінок у сеансах.
    • FIX: Убезпечино атрибут "value" примітиву "FormEl" від встановлення ознаки модифікації при зміні типу.
    • FIX: Відновлено та виправлено гаряче стеження, у сеансах, за змінами у зв'язках віджетів.
    • Реалізовано гаряче оновлення процедур віджетів у режимі виконання.
    • ElFigure: Деякі властивості загальної частини режиму розробки перенесено до приватної частини.
  • QTStarter: Розширено власним контролем за виглядом та відчуттями та підтримкою їх профілями з таблиці "LookFeel" конфігураційного файлу модуля, для: Загальний шрифт, Стиль віджетів, Палітра, Стиль CSS.
  • QTCfg:
    • Виправлено, переважно при закритті, опрацювання запитів у окремих потоках та щодо падінь при відкритому діалозі попередження-помилки.
    • Формування WhatsThis, ToolTip та StatusTip елементу, уніфіковано переносом у одну функцію setHelp().
    • Механізм підлаштування вертикально-масштабованих елементів зроблено: скидуваним щодо попереднього вписування, швидшим та більш точним.
  • VCAEngine:
    • Убезпечино від збереження ще не увімкнених елементів за "enableByNeed".
    • Покращено архівний режим примітиву "Документ", встановленням специфічних атрибутів у режим Attr::NotStored. Убезпечино від попереджень про відсутність атрибутів при перемиканні примітиву "Документ" у динамічний режим.
  • Vision:
    • Масштабування головного вікна режиму виконання зроблено абсолютним, від оригінального розміру вікна.
    • Віджет InputDlg розширено контрольованим збереженням та відновленням розміру вікна, для дуже розширюваних вікон, наприклад — повноекранний текстовий редактор.
  • WebVision: Реалізовано режими: "Меню", "Завантаження" та "Збереження" виду "Кнопка" примітиву "FormEl".

1.2 [29.12.2017] ДЕВ'ЯТНАДЦЯТЕ (19) оновлення

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

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

  • SYS.*: Прапорець TCfg::TransltText перенесено до TFld::TransltText а також використано замість TFld::NoStrTransl, який видалено.
  • Транспорти: Замок загального доступу до вихідного транспорту змінено на мютекс та аргумент "noRes" видалено з функції messIO() для попередження неочікуваних виходів з критичної секції запиту. Об'єкт блокування ресурсу nRes та його функція nodeRes() видалено з об'єкту вхідного транспорту.

Доповнення:

  • SYS:
    • strEncode() розширено режимом "ToLower" для перетворення у нижній регістр.
    • Параметри командного рядку доповнено предзавантаженням та прямим доступом-модифікацією за допомогою нової функції cmdOpt(), повне переключення з getCmdOpt() на cmdOpt().
    • Бінарне декодування у strDecode() розширено значенням аргументу "<text>" для формування текстової частини праворуч.
    • XMLNodeObj: Доповнено функцією користувацького API getElementsBy() — отримання переліку вузлів XML за ім'ям тегу або значенням атрибуту.
    • TArrayObj: arSet() адаптовано для додання у кінець масиву за негативним індексом.
  • DAQ.{AMRDevs,ICP_DAS},Special.FLibSYS: Власна імплементація функції atof() та strtod() у функції TSYS::str2real() та її короткому посиланні s2r() та для розуміння обох символів поділу дробової частини реального числа "." та ",". DAQ.OPC_UA.libOPC_UA: Функцію TSYS::str2real() розташовано та використано у окремій бібліотеці. Наразі вимкнено!
  • Транспорти: Додано загальний протокол ВВ за вхідними та вихідними транспортами, до ядра та всіх транспортних модулів.
  • UI.VCAEngine: Доповнено функціями користувача у просторі сеансу: reqTm(), reqUser(), userActTm().

SYS

  • XMLNode
    • Виправлено щодо надлишкового резервування розміру рядка у кодуванні серіалізації, що призводило до значної деградації її продуктивності, особливо на великих деревах. Це має значно підвищити продуктивність мережевої взаємодії за XML.
    • Уніфіковано та виправлено серіалізацію у XHTML щодо: запобігання самозавершенню тегів для "script", "div; запобігання кодуванню символів "'" та '"' у тексті (також для XML); кодування UTF8 символу 0xA0 у " ".
  • TRegExp виправлено у функції match() щодо запобігання зависанню та падінню.
  • Версію бібліотеки ядра встановлено у 2:6:0. Модульну версію підсистеми "Транспорти" піднято до 10.
  • TConfig: Запобігання рекурсії входу у cfgChange() за прапорцем mInCfgCh.
  • XMLNodeObj,XMLNode: Видалення дочірніх вузлів здійснено з кінця, для збільшення швидкості цієї операції.

БД

  • Додано конфігурабельне обмеження відображення вмісту таблиць, типово це 100 рядків.
  • {SQLite,MySQL,PostgreSQL,FireBird}: Додано обмеження предзавантаження fieldSeek() у 100 записів для запобігання тривалому безперервному підвисанню.

Збір даних

  • {DCON,ModBus,Siemens}: Об'єкти мютексу "enRes" та "reqRes" встановлено у рекурсивні, від Олексія Бондарчука.
  • SoundCard: Значно переглянуто та виправлено для роботи з реальним та віртуальним, на кшталт PulseAudio, обладнанням та перевірено на частотах вибірки до 192000.

Архіви

  • Архіватори значень та повідомлень доповнено вимірюванням максимального часу опрацювання.
  • FSArch: Попереджено багаторазове пакування-розпакування файлів. Додано перевірку та очищення від нульових архівних файлів. Буфери архівації повідомлень та інформаційних файлів значень зроблено безпечнішими щодо можливого читання випадкових даних.
  • DBArch: Доповнено пропуском помилкових архівів значень.

Транспорти

  • {SSL,Sockets}.out: Функціональний замок ресурсів транспортів поєднано з reqRes().
  • Вхідні транспорти доповнено вимірюванням поточного та максимального часу запиту до протоколу, у режимі "Налагодження (0)". Вихідні транспорти доповнено вимірюванням часу відгуку, у режимі "Налагодження (0)".

Протоколи

  • HTTP: Розширено переліком користувачів, дозволених до автентифікації. mNoFull перейменовано у mNotFull.

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

  • {QTCfg,Vision}: Додано збереження та відновлення розміру головного вікна та головних діалогів (розробка Vision) та властивостей розділювачів.
  • QTCfg: Виправлено вертикально-масштабовані віджети "Таблиці" та "Переліки" шляхом їх розташування у кінець стеку віджетів. Попереджено високе навантаження на очікувані відповіді діалогу прогресу.
  • VCAEngine: Обробка різних віджетів з великим періодом (у головній задачі сеансу) адаптовано до виконання у різних фазах чим завантажуючи основне завдання більш рівномірно та загалом менше. Додано контроль дій користувача за часом дії.
  • QTStarter: Розширено закриттям (вікон) та запуском у системному треї. Значно переглянуто на предмет повного створення інтерфейсу у циклі повідомлень Qt exec() та функції WinControl перенесено до StApp, нащадку QApplication. Власне меню QTStarter, з переліком модулів Qt, уніфіковано щодо статичного сховища дій для розширення меню та панелей інструментів вікон Qt модулів та іконки системного трею, поміщено також до властивості "menuStarterAddr" головного об'єкту додатку.
  • Vision:
    • Додано підлаштовування розміру вікна під розмір головної сторінки після повернення з максимізації або повного екрану та запуску у оригінальному розмірі.
    • Створення меню режиму виконання змінено у повний режим, тобто повне формування за потреби та повне очищення за її відсутності; для запобігання відображення меню у неактивному режимі у деяких оточеннях на кшталт Maemo та Unity.
    • Додано контроль за користувачем режиму виконання за допомогою специфічного до візуалізатору атрибуту "userSetVis" головної сторінки, розширення віджета статусу користувача та діалогу обрання.

Special

  • FLibSYS: VArch::set() розширено записом одного значення до архіватору архіву.

1.3 [02.07.2017] ВІСІМНАДЦЯТЕ (18) оновлення

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

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

  • SYS:
    • XMLNode: Функції save() та saveNode() встановлено як постійні.
    • XMLNodeObj: Функцію API користувача text() розширено аргументом "full" для комбінування тексту дочірніх вузлів.
    • ModSchedule: Функції ScanDir() та CheckFile() перейменовано відповідно у dirScan() та fileCheck().
  • Transport.out: Функцію API користувача messIO() розширено для повернення всюди строкового типу.
  • Special.FLibSYS: Функцію API користувача dbReqSQL() приведено до властивостей функції SYS.BD["TypeDB"]["DB"].SQLReq().

Доповнення:

  • SYS: Функцію TMess::getUTF8() додано та використано для визначення символів UTF-8 у XMLNode::encode(). TCntrNode: Розширено функцією API користувача "messSys".
  • Archive.Value: Функції API користувача доповнені setVal().

SYS

  • Виправлено багато оригінальних повідомлень.
  • ModSchedule: Закриття модулів при виході змінено у первинне закриття модулів, а вже потім відключення бібліотек. Процедуру сканування модулів розширено шаблоном ім'я модуля у кінці шляху.
  • Значні зміни у складальній системі.
  • XMLNode: Серіалізацію було розширено правильною перевіркою UTF-8 символів та опрацюванням " " у функції encode() та парсері, для сутності " ".
  • Protocol.HTTP,UI.{WebUser,WebVision}: Додано підтримку ACL для контролю за доступом та видимістю елементів індексаторів Web ресурсів.
  • Додано опцію командного рядка "lang".

Збір даних

  • ModBus: Виправлено опрацювання дублювальних атрибутів стандартних параметрів.
  • DAQGate: Виправлено запити до іншої станції після видалення попередньої. Розширено на предмет можливості запису у атрибути "NAME" та "DESCR".

Архів

  • Виправлено на предмет визначення потрібного архіватору за його періодичністю, дозволяє коректно обирати архіватор за періодичністю більш ніж у одну хвилину при побудові графіків.
  • FSArch:
    • Виправлено функцію перевірки архіваторів на предмет коректного опрацювання обмеження ємності архівації значень шляхом видалення його архівованих файлів за максимальною кількістю.
    • Виправлено читання дуже довгих повідомлень та попереджено читання помилкових повідомлень взагалі.
    • Розширено для збереження INFO файлів до стандартного файлу БД SQLite у теці цього архіватору.

Транспорт

  • SSL:
    • Виправлено звільнення, у клієнтській частині, які призводили до падінь та блокувань, на предмет відсутності SSL_free() та звільнення змінних "ctx", "ssl", "conn" при повторному запуску, у вихідній частині. Широко протестовано на браузерах Chrome, Firefox; на предмет звільнення описувачів файлів та у Valgrind.
    • Метод "SSLv2" було остаточно видалено через його небезпечність та повне видалення із OpenSSL 1.1.
    • Функції SSLv3_server_method() та SSLv3_client_method() встановлено для вимкнення за визначенням OPENSSL_NO_SSL3.

Протокол

  • OPC_UA{*.libOPC_UA}: До об'єкту серверу додано ресурс "mtxData", який використано для доступу до контейнеру каналів безпеки.

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

  • {VCAEngine,Vision,WebVision}: Додано атрибут "mult" до вигляду "Перелік" примітиву "FormEl" для можливості обрання декількох елементів.
  • QTStarter: Повністю оновлено із Робочої гілки.
  • QTCfg: Завершено реалізацію правильного влаштування масштабованих вертикально елементів: тексти, таблиці та переліки. Виправлено опрацювання sizeHint() та minimumSizeHint() для елементів "Текст" та "Перелік".
  • VCAEngine: До механізму динамічного зв'язування додано перевірку зв'язків на активність.
  • Vision:
    • Додано очищення зображень примітиву "Медіа" за встановленням порожнього рядку.
    • До кодування у сховища за TSYS::base64 встановлено роздільник "\n".
    • Виправлено розмір віджетів, які відкриваються до редагування, на великих екранах, це підстроювання зроблено умовним від відсутності відкритого активного та максимізованого віджету через проблеми тут Qt.
    • FormEl.Table: Виправлено на предмет властивостей стовпчиків. ** Розширено властивість "width" приховуванням цього стовпчика при значені 0. Використано масштаб за X у кінцевій ширині стовпчика.
  • WebCfgD:
    • Дещо покращено опрацювання елементу "Таблиця" для великого вмісту та виправлено редагування ключових елементів.
    • Підстроювання до наявного простору масштабованих вертикально елементів: тексти, таблиці, переліки.
    • Бібліотеку GD було замінено фільтрами CSS та зроблено опційною, за --enable-LibGD.
    • Дещо покращено формування дерева навігації та діалогів, падаючою тінню та прозорим фоном для попередження доступу до загального простору.
    • Розширено копіювання елементів копіюванням їх до свого кореню та через себе.
    • Загальні вдосконалення.
  • WebVision:
    • Виправлено ширину вікна контекстного меню.
    • Виправлено поводження примітиву "Медіа" у не режиму "Вписувати" для попередження проблем масштабування шляхом повного видалення тегу <img>. До зображень цього примітиву додано вертикальне вирівнювання.
    • Виправлено та покращено формування діалогів, малих вбудованих вікон, шрифт заголовку встановлено у 12pt.
    • Подавлено системне контекстне меню для активних віджетів.
    • Виправлено опрацювання границь та прозорого фону. Опрацювання фону примітивів узагальнено та здійснюється після опрацювання самих примітивів та додано саме опрацювання прозорості-непрозорості фону у окремому блоці (div), який створюється за рівнем непрозорості.
    • Примітив "Текст": опрацювання пробілу встановлено у "white-space: pre-wrap", додано підтримку властивості "wordWrap".
    • Вигляд "Кнопка" примітиву "FormEl": виправлено на предмет перенесення слів на браузері Chrome, переключено на використання фільтрів у відображені неактивних зображень.
    • Реалізовано вигляди "Панель прокрутки", "Панель прогортання", "Таблиця", "Дерево". Вигляд "Панель прокрутки" зараз такий як "Панель прокрутки".
    • Вигляд "Рядок" примітиву "FormEl" розширено календарем для варіантів за датою.
    • Додано підтримку специфічних до візуалізатору атрибутів через їх активацію.
    • Додано підстроювання розміру головної сторінки до наявного простору вікна браузеру, тільки у бік збільшення та із контролем пропорційності.
    • XHTML частину сторінки винесено до окремого файлу подібно до частини JavaScript. Все основне у CSS правилах перенесено до XHTML файлу.
    • Загальні вдосконалення.

1.4 [12.02.2017] СІМНАДЦЯТЕ (17) оновлення

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

1.5 [28.06.2016] ШІСТНАДЦЯТЕ (16) оновлення

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

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

  • SYS,Transport,DAQ.DAQGate,UI.{QTCfg,Vision,WebCfgD}: Імплементація підняття зовнішніх хостів розширенням функції extHostList(), переспрямуванням запитів функцією cntrIfCmd() та вхідної частини власного протоколу системи. *: pthread_mutex, MtxAlloc та MtxString переміщено до об'єкту обгортки мютексів ResMtx.
  • DAQ: API функцій tplE(), tplIOE(), errE() перейменовано у elTmpl(), elTmplIO(), elErr().
  • Archive: m_start, run_st, m_db перейменовано у mStart, runSt, mDB.

Доповнення:

  • SYS: Об'єкт блокування RW ресурсів розширено функціями (синоніми) lock(), tryLock() та unlock().
    • Додано додатковий макрос контролю часу FTM2.
    • TFunction: Додано віртуальні функції prog() та setProg() для контролю через абстрактний об'єкт.
    • Розширено функцію API користувача SYS.sleep() для прийняття першого аргументу часу у секундах як реального та можливості встановлення його значення до наносекунд.
  • DB: До БД додано захоплювач ресурсу таблиць TBD::resTbls.
  • DAQ.BlockCalc: До блоків додано функції API користувача cntr(), cfg(), cfgSet().
  • Archive: messPut(), messGet() та такі ж функції API користувача розширено аргументами "arch" для можливості прямого визначення запитуваних архіваторів.
    • Функцію API користувача messGet() розширено аргументом "upTo", для прямого контролю цього таймауту.
    • До функцій запиту повідомлень додано результат, як час зупинки опрацювання. Значним чином для можливості продовження від позиції після перерваного за таймаутом тривалого запиту.
    • Додано глобальний параметр архівації значень для примушування часу отриманих значень до поточного, замість часу джерела.
    • До об'єкту архіву значень додано параметр заповнення прохідних значень попереднім.
  • Transport: До вихідного транспорту додано час запуску-підключення.
  • UI.VCAEngine: До віджету часу виконання додано функції API користувача mess{Debug,Info,Note,Warning,Err,Crit,Alert,Emerg}() до яких включено шлях цього віджету як категорію.
  • Special.FLibSYS: Функції часу доповнені функцією tmSleep() для надання швидкого доступу до короткого сну.

SYS

  • Версію бібліотеки ядра піднято до 2.4. DB,DAQ,Archive,Transport: Версію типу підсистем піднято до 8.
  • TCntrNode: Попереджено звільнення заблокованих вузлів та підключення до вимкнених шляхом відповідного блокування ресурсу "mUse".
  • {DAQ,Transport}.*: Діапазон пріоритетів завдань розширено до 199 де 100-199 використано для політики планування завдань SCHED_FIFO.
  • Системні конфігураційні поля "workdir", "moddir", "icodir" встановлено у тільки для читання, у інтерфейсі конфігурації, значним чином для попередження помилкових змін та можливості їх зміни тільки шляхом редагування конфігураційного файлу.
  • Security: Адаптовано для запобігання зберігання паролів у відкритому вигляді натомість зберігається їх хеш, для: OpenSCADA хосту (Transports), Protocol.SelfSystem, UI.Vision. Використання crypt_r() включено тільки для "__USE_GNU" інакше паролі зберігатимуться у відкритому вигляді.
  • data/debian: Сервісний скрипт openscada.init перенесено до окремого пакету openscada-server.

БД

  • Всі модулі БД переписано для відкриття таблиць без виключень у конструкторі.
  • FIX:MySQL,SQLite,PostgreSQL: Попереджено порушення послідовності запитів "BEGIN;" та "COMMIT;" під високою конкурентною активністю доступу.
  • FIX:DB.PostgreSQL: Виправлено на предмет кодування символів "'" '"' шляхом заміни методом дублювання. FIX: Виправлено зациклення після невдалої корекції структури таблиці.

Збір даних

  • Функцію користувацького API funcCall() значним чином розширено на предмет фіксації її результуючої функції для повторного використання та, як наслідок, значного підвищення продуктивності.
  • *,LogicLev,ModBus: Додано DAQ резервування динамічних атрибутів.
  • ModBus,Siemens,DCON: Пропуск реальних запитів на першій та останній ітераціях, тільки виконання процедур.
  • FIX:OPC_UA: Модуль для клієнта перейменовано у "Клієнт OPC-UA" та для серверу у "Сервер OPC-UA".
    • Protocol: Дозволено роботу у режимі опитування вхідного транспорту та включено по замовченню. Сервіс "Publish" тепер доступний у LTS!
    • FIX:libOPC_UA: Виправлено контроль номеру послідовності пакетів, для серверної частини, шляхом відокремлення від цього значення вхідних пакетів.
      • FIX: Керування номером послідовності клієнтської частини також уніфіковано та виправлено щодо попередження повтору цього значення.
      • Додано раннє опрацювання підтверджень (Acknowledgements) у запиті "Publish".
      • Вимкнено мітку часу (TimeStamps) у клієнтському запиті "Write", оскільки деякі клієнти відповідають 0x80730000 (OpcUa_BadWriteNotSupported).
      • Вдала адаптація до роботи із UAExpert 1.4.
  • JavaLikeCalc: Додано підтримку визначення та виклику вкладених функцій. Операції "||" та "&&" формально встановлено у однаковий пріоритет. Перевірку щодо ВВ переміщено перед константами для можливості їх перевизначення. Додано постійну "EVAL", як синонім до EVAL_REAL.
  • FIX:Siemens: Виправлено проблему падіння під час високої та частої взаємодії, заміну фрагменту (за допомогою "assign") всюди замінено на "replace". FIX:LibnoDave: gethostbyname() замінено на її потоко-незалежний варіант.
  • BlockCalc: Додано у опрацювання блоком спеціальний атрибут "this".

Архів

  • messPut() розширено для незалежного запису до таблиці порушень.
  • DBArch,FSArch: Дозволено запит повідомлень для однакового часу початку та кінця.
  • FIX:FSArch: Додано перевірку та запобігання дублікатам із рівним часом, категорією, рівнем (у випадку параметру "prevDblTmCatLev").
    • Розширено на предмет ранньої перевірки лімітів та цієї перевірки при помилках розпакування, задля попередження таким чином переповнення сховищ із щільним обмеженням та малим розміром.
    • В цілому виправлено перевірку дублікатів. Час у кеші змінено із time_t на int64_t (у мікросекундах).
    • Отримання із XML зроблено дещо оптимальнішим. Отримання із "plain" дозволено для повідомлень із часом який дорівнює кінцю.
  • FIX:DBArch: Алгоритм отримання повідомлень переписано для запиту хвилинами.
    • Структуру таблиці значень та повідомлень встановлено адаптивною та переміщено до об'єктів TMArchivator та ModVArchEl.
    • Додано нову опцію архіватора повідомлень: "Зберігати час як чисте ціле".
    • "Розмір архіву (днів)" для значень та повідомлень адаптовано для встановлення у нуль (<0.1) та вимкнення таким чином цього обмеження загалом.
    • Вимкнено закриття використаної таблиці після будь-якого запиту розміщення.

Транспорт

  • FIX:SSL,Sockets: gethostbyname() та getservbyname() замінено на їх багатопотокові варіанти.
  • FIX:Serial,Sockets: На час читання результату, вихідного транспорту, додано очікування даних у випадку нуля та/або помилки EAGAIN. FIX: Виправлено помилки запису вихідного транспорту. Можливі помилки читань після помилкового переривання select(), із ознакою що деякі дані присутні (інколи стається), уніфіковано та краще налаштовано під різні режими запиту та режими не запиту вихідного транспорту.

Протокол

  • SelfSystem: Додано примусове оновлення аутентифікації за атрибутом "rqAuthForce". Додано переспрямування запитів хостів за атрибутом "reforwardHost", у вхідній частині.

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

  • VCAEngine,Vision: Розділювач логічних груп атрибутів віджетів всюди змінено із ":" у ": ", переважно для можливості опису формату значення користувацьких атрибутів із типовим символом розділювача ":". У вигляді "Таблиця" примітиву FormEl до кореневого тегу "tbl" додано атрибут "sortEn" з метою прямого сортування за стовпчиками та параметр елементу заголовку "sort" для вказання на рядок для сортування при ініціалізації.
  • FIX:Vision,WebVision: Режим "XY" примітиву "Діаграма" виправлено на предмет вимкнення побудови за сортованими даними за 'X', тільки за ієрархічною послідовністю. Для примітиву "Діаграма" до блоку даних "data:<dt/>" додано параметр "Aproximation (aprox)".
  • FIX:UI.QTCfg: Опрацювання статусів зовнішніх хостів значно покращено та виправлено. FIX: Таймаути зовнішніх хостів зроблено конфігурабельними, за параметром "TmConChk". FIX: Параметри StartUser та StartPath пересунуто під захоплювач ресурсу типу MtxString.
  • FIX:VCAEngine: Додано захоплювач функціонального ресурсу у SesPage::setEnable().
    • FIX: setNoTransl() вимкнено у завантажені атрибутів, у зв'язку із деякою проблемністю та відсутністю сенсу.
    • Додано примусове успадковування типів зв'язків, незалежно від локальної зміни цих атрибутів.
    • До об'єкту проекту додано властивість "EnableByNeed", для контролю за готовністю цього проекту після старту та попередження тривалого підключення через відкладене увімкнення.
    • Попереджено спробу увімкнення вимкненої сторінки під час встановлення порушення, через спостереження дивних падінь тут, тільки у LTS.
    • Додано повідомлення зауваження часу виконання: "Користувача змінено на ...", "Користувач підключений ...", "Користувач відключений ...".
  • FIX:Vision:
    • FIX: Здійснено дуже важливі виправлення на предмет адаптації до стабільної роботи із серверами СВК:
      • Атрибути модуля VCAStation, UserStart, UserPass та UserStBar::{user,pass,VCAStation} пересунуто під захоплювач ресурсу типу MtxString.
      • До обох частин, виконання та розробки, додано ініціююче підключення із часом таймауту відновлення підключення, з метою забезпечити завантаження ресурсів серверу СВК.
      • Опрацювання інформаційного діалогу про втрату підключення було пересунуто до одного запиту (та потоку) із updatePage().
    • FIX: Вигляд "Таблиця" примітиву "FormEl" значним чином розширено: глобальними атрибутами таблиці: "hHdrVis", "vHdrVis"; атрибутами рядка "colorText", "font"; атрибутами стовпчика "color", "colorText", "font".
    • FIX:Вирівнювання сторінок, вкладених у контейнер, переписано на предмет відстеження оновлення геометрії віджету та запобігання появі срічок гортання у випадку невідповідного вирівнювання.
    • FIX: Додано відновлення палітри до функції visibleCheck для запобігання артефактів у примітиві FormEl, на кінець.
    • FIX: Повідомлення миші в цілому включено для примітиву "FormEl" та виправлено деякі артефакти на кшталт втрати рисок у слайдері.
    • FIX: Виправлено проблеми контекстного меню для виглядів "Перелік", "Дерево" та "Таблиця" примітиву "FormEl".
    • Запити до зовнішніх хостів пересунуто до використання cntrIfCmd().
    • Віддалену аутентифікацію розширено на використання аутентифікації хоста, по замовченню, та самого підключення для її перевірки.
    • Таймаут спроб відновлення підключення до віддаленої станції зроблено прогресивним, до вказаного значення, та відображення повідомлення помилки здійснюється після значення таймауту у три секунди.

Спеціальне

  • SystemTests: Тести БД розширено тестом сканування.

1.6 [12.01.2016] П'ЯТНАДЦЯТЕ (15) оновлення

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

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

  • SYS.TModule: Інформаційні атрибути на кшталт m{Name} перейменовано у mMod{Name}. Додано функцію modInfoMainSet() та використано у всіх модулях для встановлення основних інформаційних атрибутів модуля.
  • TProtocolIn, Protocol.UserProtocol, Transport.*, DAQ.{ModBus,OPC_UA}: Встановлено збереження підключеного вхідного транспорту у протоколі як замкнений заголовок замість шляху, із метою швидшого доступу, змінено функції API: open(), srcTr(), setSrcTr().

Доповнення:

  • SYS: Додано об'єкт ResMtx для поєднання всіх платформо-специфічних імплементацій мютексу. Додано функцію TSYS::taskUtilizTm() для отримання використаного часу визначеного завдання. TElem: Ресурс елементів mResEl змінено із Res на pthread_mutex_t, та дозволено його для публічного доступу. Додано реалізації Функцій конвертації специфічного для апаратної платформи порядку байтів, а саме: i16_LE(), i32_LE(), i64_LE(), i16_BE(), i32_BE(), i64_BE(), floatBE(), floatBErev(), doubleBE(), doubleBErev().
  • DAQ.{LogicLev,ModBus}: Додано функції API користувача, об'єкту параметру: attrAdd() та attrDel() для вільного керування атрибутами.

Transports: Додано функцію API користувача {TrOut}.start() для швидкого контролю стану вихідного транспорту.

  • Protocol.{*,UserProtocol},Transport.{Sockets,SSL}: Додано функцію Protocol::waitReqTm() для контролю режиму пула вхідного протоколу.

SYS

  • FIX:TVarObj: Попереджено можливість подвійного звільнення об'єкту. Виправлено EVAL результат функції TVarObj::propGet().
  • Версію бібліотеки ядра піднято до 2:3:0. Версію типу підсистем DB, DAQ, Archive, Protocol, Special, Transports, UI піднято до 7.
  • Archive.FSArch,DB.DBF,DAQ.{Comedi,SMH2Gi}: Використання readdir_r() переписано для прямого виділення пам'яті структури "dirent" та попередження проблем на інших ОС, на кшталт QNX.

Збір даних

  • FIX:OPC_UA:
    • FIX:libOPC_UA: Всі помилкові порожні рядки (-1) замінено на порожній масив (0). FIX: Виправлено зациклювання на порожньому переліку сервісу "Read". FIX: Виправлено опрацювання аутентифікації для клієнту на предмет збереження поточного опису кінцевої точки, з метою подальшого отримання "policyId" та використання у сервісі автентифікації. До частини серверу додано нові типові простори імен: 2-"http://opcfoundation.org/UA/DI/, 3-"http://PLCopen.org/OpcUa/IEC61131-3/". Додано незалежний контроль версії libOPC_UA. Додано специфічні типи значень OpcUa_IntAuto та OpcUa_UIntAuto для адаптивного обрання типу цілого, значним чином для надання цілого не виключно фіксованим int32 (int64). До клієнту, для контролю підключення, додано віртуальну функцію connect(), використано у сервісі "CloseSecureChannel" для закриття з'єднання.
    • FIX:Клієнт: Виправлено відображення кодів статусів для атрибутів контролерів. Доповнення інформації через: applicationUri(), productUri(), applicationName(). Для порожнього "browseName", вузлом огляду встановлено використання "displayName". Вихідні тексти тестового клієнту дещо очищено та розширено.
    • Сервер: Простір імен OpenSCADA DAQ встановлено у індекс 4.
  • Siemens: Додано та перевірено власну імплементацію ISO-TCP, значним чином завдяки запиту Proviron Holding NV. Додано таймаут відновлення. Виконано значний перегляд вихідного коду на предмет захоплення ресурсів, повідомлень про помилки та іншого.

Транспорт

  • FIX:{Sockets,Serial,SSL}: Виправлено захоплення ресурсу вихідного транспорту у messIO(), реально захоплення не утримувалося. Реалізовано режим пулінгу вхідного протоколу. Додано підтримку режиму не запиту та всі модулі адаптовано для цього, шляхом встановлення аргументу time у значення менше нуля у функції {TrOut}.messIO().
  • Serial: Відключення (зупинка транспорту) додано для вихідного порту у випадку результату читання <= 0, що вказує за звичай на втрату пристрою.

Протокол

  • UserProtocol: Розширено вхідні запити спробою включення, значним чином для забезпечення використання статичних функцій у процедурах протоколу.

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

  • FIX:UI.{Vision,WebVision}: Виправлено падіння під час завантаження даних тренду у випадку відсутності значень (time = 0).
  • QTCfg: Прогресбар зайнятості адаптовано на предмет первинного встановлення діапазону та його оновлення на предмет максимуму до поточного.
  • Vision: Адаптовано для збірки із libphonon4qt5 та Qt5. Розв'язано використання застарілих функцій Phonon та Qt5.

1.7 [07.11.2015] ЧОТИРНАДЦЯТЕ (14) оновлення

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

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

  • SYS.TUI: Атрибут run_st перейменовано у runSt.

Доповнення:

  • SYS: API користувача для об'єкту Array розширено функцією sum() з метою підсумку вказаних елементів масиву. Додано функцію API користувача SYS.fileRemove(string file).

SYS

  • FIX: Функцію API користувача system() виправлено на предмет повного читання каналу за допомогою popen, безпосередньо до EOF.
  • FIX: Виправлено встановлення, під час перевірки багатопроцесорності, для користування тільки одного процесору, номер 1, шляхом отримання реальної кількості процесорів.
  • FIX: Завантаження конфігураційного файлу та функцію користувацького API load() переписано з метою попередження доступу за межі виділеної пам'яті.
  • FIX: Безпека: створення стандартних користувачів "root", "user" та груп "root", "user" додано тільки після завантаження підсистеми та їх відсутності. Розширено функцію access() на предмет перевірки присутності групи та попередження виключень.
  • FIX:debian.openscada.init,data.{oscada_ALT.init,oscada_gentoo.init}: Виправлено відсутність ключового слова "export" перед LANG=en_US.UTF-8.
  • TRegExp: До функції replace() додано перевірку на ненульовий діапазон з метою попередження зависань.
  • Опції командного рядку встановлено у нечутливість регістру: coreDumpAllow, pidFile, h, help, log, messLev, modPath, config, station, statName. Деякі опції командного рядку перейменовано та доповнено синонімами: demon + daemon, CoreDumpAllow у coreDumpAllow, pid-file + pidFile, MessLev у messLev, ModPath у modPath, Config у config, Station у station, StatName у statName.
  • Версії всіх модулів піднято згідно їх змін та надалі буде відстежуватися зі змінами.
  • debian: Значним чином очищено на предмет вирішення більшості помилок та попереджень lintian. openscada.init: Рівні Default-Start встановлено у 2 3 4 для попередження автоматичного запуску із графічним інтерфейсом, за рівнем 5.
  • Додано можливість встановлення основного набору процесорів у конфігураційному полі, включно із інформацією про поточний набір процесорів. Така-ж інформація про поточний набір процесорів додана за потоками завдань, у головній вкладці "Завдання".
  • Адресацію за властивостями конфігураційного файлу встановлено у нечутливість до регістру, для значення атрибуту "id", особливо для: Workdir у WorkDir.

БД

  • FIX: Виправлено видалення БД із конфігураційного файлу встановленням "ForceCfg".

Збір даних

  • FIX:{DCON,ModBus}: Виправлено розширення повідомлень про помилки, доповненням різними помилками спроб.
  • FIX:ICP_DAS: Швидке завдання збору I-8017 переключено на використання TSYS::taskSleep() замість clock_nanosleep(), з метою попередження зависань у випадку переповнення wTm. Виправлено збірку на ARM.
  • FIX:DAQGate: Попереджено можливу втрату архівів шляхом виключення їх видалення із параметрами під час синхронізації. Виправлено для попередження втрати атрибуту SHIFR та інших після відновлення параметру, що пов'язано із блокуванням після спроби видалити.
  • FIX:JavaLikeCalc: Виправлено функцію {Ціле}.toString() на предмет встановлення знаковим виключно для бази 10.
  • FIX:SoundCard: Попереджено залишення захоплення ресурсу для невимкнених параметрів.

Архів

  • FIX: Виправлено встановлення значення поля "Source" із конфігураційного інтерфейсу (конфігуратори).
  • FIX:{*,FSArch}: prev_val уніфіковано до типу double у всіх операціях на кшталт усереднення.
  • FIX:FSArch: VFileArch::setVals() переписано для округлення цілого і реального типів даних з метою попередження помилки тут, доступу до невиділеної пам'яті.
  • Archive.DBArch: Додано зворотне читання, при запуску, значень архівів із великою періодичністю, на зразок хвилинних та годинних.

Транспорт

  • {Sockets,SSL}: Додано статистичну інформацію за активними підключеннями, включно із: файловий дескриптор сокету, адреса хосту клієнту, час підключення та останнього запиту, трафік ВВ. Додано обмеження за кількістю клієнтів на хост.

Протокол

  • FIX:OPC_UA: Виправлено можливе помилкове опрацювання запису сертифікату. Файл COPYING бібліотеки замінено на вміст "GNU LESSER GENERAL PUBLIC LICENS" та додано файл GPL-3. libOPC_UA доповнено функцією Server::clientAddr() для можливості виявлення потреби перевстановлення та повторного використання безпечного каналу.
  • FIX:ModBus: Виправлено опрацювання загального префіксу 'i' та рядку.

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

  • FIX:{QTCfg,Vision}: Виправлено отримання шрифту, із базового типового шрифту (системний шрифт), у підсвітлювачі синтаксису тексту та в цілому, за допомогою Vision::getFont().
  • {VCAEngine,Vision}: Додано підтримку специфічних для візуалізатору контрольних атрибутів. Втілено у UI.Vision специфічного атрибуту "Елементи статусу користувача". Видалено застарілий доступ до прав.
  • QTCfg:
    • FIX: Переписано перевірку неприйнятих змін на прямий механізм.
    • Опрацювання запитів до хостів переміщено до окремих потоків та в цілому покращено відгук інтерфейсу.
    • Розширено редагування полів цілих значень адаптивністю що-до представлень dec, hex та oct.
    • Віджет перегляду переліку пересунуто до класу ListView та успадковано від QListWidget для встановлення sizeHint() у 5 рядків.
  • FIX:VCAEngine: Виправлено використання у атрибутах користувача символу '|' для типів, які не дорівнюють TFld::Integer, TFld::Real та обрання. Значно оновлено контекстну допомогу для атрибутів всіх примітивів.
  • FIX:Vision: Виправлено збірку для Qt 5.4. Додано перевірку та повідомлення про спробу завантаження mime до обраного елементу.

Special

  • FIX:FLibSYS: VArchObj::FFT(): Попереджено потенційне падіння. Розширено для перевірки на EVAL та заміну його на адаптивний останній аргумент <vlOnEVAL>. До результуючого масиву додано об'єктні атрибути "bufSize" та "bufEVAL" для можливості контролю якості даних.

1.8 [14.05.2015] ТРИНАДЦЯТЕ (13) оновлення

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

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

  • SYS: Ресурси конфігурації відокремлено у cfgRes(). ModSched: Відокремлено захоплення ресурсів у "schM".
  • FIX:SYS: Функцію API користувача SYS.strDecode() виправлено на предмет використання аргументу 2 по замовченню.
  • TCntrNode: Прапорці MkDisable, Disable, MkEnable, Enable перейменовано у DoDisable, Disabled, DoEnable, Enabled. Режим відкладеного видалення остаточно прибрано як прапорець NodeShiftDel, видалення останнього аргументу у функцій nodeDel() та chldDel().

Доповнення:

  • SYS: Додано коротку функцію-посилання rRnd() на TSYS::realRound() (у області імен OSCADA). Додано статичний варіант функції TSYS::getCmdOpt_() для можливості використання із основної пускової програми. Об'єкт API користувача XMLNodeObj розширено функцією clear() для забезпечення швидкого очищення вузла від нащадків, тексту та/або атрибутів.
  • TRegExp: розширено опцією 'u' для дозволу UTF-8 символів та встановлено її примусово для локалі UTF-8.
  • Transport: Об'єкти API користувача доповнено функціями: In::{status,addr}, Out::{status,addr,timings}.
  • Archive: Об'єкти API користувача доповнено функціями: TVArchive::{status,archivatorList,getVal}(), TVArchivator::status().

SYS

  • Переключено на збірку за допомогою автоматичного побудовувача пакетів OpenSCADA та надання сервісних оновлень "0.8.13.{S}" користувачам, підписаним на технічну підтримку, oscada.org/ua/poslugi/tekh-pidtrimka/.
  • Основну стартову програму "openscada" значним чином переписано для забезпечення створення справжнього режиму демону: перевірка та переключення у режим демону спершу; опрацювання CoreDumpAllow для залишеного в роботі процесу; перевірка та створення PID-файлу для робочого процесу; безпосередньо запуск ядра OpenSCADA.
  • FIX:TCntrNode: Дозволено надання відключених вузлів (Disabled) у їх переліку, так як і перевірку на наявність.
  • FIX: Попереджено падіння рано запущених функцій у load_() DAQ.JavaLikeCalc, за командним рядком "openscada --help". Підсистему DAQ встановлено у впорядковану та для визначення пріоритетного режиму модулів додано властивість модуля "HighPriority", для розташування їх першим.
  • FIX: debian/rules спрощено та уніфіковано. Встановлено "dh_installinit --no-start" для попередження автоматичного запуску цього сервісу. debian/control: Додано залежності для збірки із Qt5.
  • FIX:Скрипти ініціалізації:
    • FIX:Debian: значно покращено, спрощено, адаптовано до PID та виправлено видаленням примусового встановлення LC_ALL, яке ламало індивідуальне встановлення LC_NUMERIC=C для відмінних від C, POSIX або Англійських локалей.
    • ALTLinux: значно покращено, спрощено, адаптовано до використання PID та розширено аргументом "--retry TERM/30/KILL/5".
    • Gentoo: значно покращено, спрощено, адаптовано до використання PID та очищено.
    • RH: значно покращено, спрощено, адаптовано до PID та розширено аргументом "-d 30".
  • TVarObj: Блокування ресурсів загальних даних об'єктів API користувача Res замінено на pthread_mutex_t, а також використано для підключення до об'єктів.
  • signal() замінено на sigaction() та додано відновлення оригінальних обробників при руйнуванні TSYS.
  • TArchives,TCntrNode,UI.VCAEngine: Вся решта операцій із TArrayObj пересунута до arGet() та arSet().

БД

  • FIX:FireBird: Попереджено виправлення таблиць для ключів з типом blr_varying. Шаблон конфігурації AX_LIB_FIREBIRD дещо адаптовано для конфігурації та збірки із заголовками у */include/firebird, як у SuSE, та 64-бітними бібліотеками, як у Mandriva64.
  • MySQL: Сенс поля адресу "імена" змінено у "вставки" (кодування-порівняння-рушій) для додання під час створення БД та команди SET.
  • FIX:PostgreSQL: Додано обхід проблеми дублювання одних та опущення інших записів у запиті fieldSeek(), шляхом додання "ORDER BY" до цього запиту та примусового їх сортування. Залежності збірки у макросі AX_LIB_POSTGRESQL дещо виправлені у результаті.
  • FIX:SQLite: Адаптовано до опису ключів як порядкова позиція ключа.

Збір даних

  • FIX:ModBus,DAQGate,OPC_UA: Виправлено повернення після умови "!p->enableStat() || !p->owner().startStat()" у функції встановлення значення, для попередження наступного та реального запису.
  • FIX:OPC_UA:
    • FIX: libOPC_UA: Сервіс TranslateBrowsePathsToNodeIdsRequest виправлено для випадку некоректних шляхів, додано додаткові повідомлення налагодження.
    • FIX: Виправлено очікування та збірку частин великих повідомлень вхідного протоколу.
    • FIX: Вхід: Виправлено можливе відкидання зайвих частин запитів після повних запитів, які не потребують негайної відповіді та не є помилковими.
    • FIX: Тип OpcUa_Int64 виправлено розширенням iN{u}() та oN{u}().
    • Додано підтримку типу Масив(Array) простих типів, додано опрацювання AId_DataType для типу Array у серверній частині.
    • Для контролю за обмеженнями додано вкладку "Дані", додано ліміт limRetrQueueTm() для контролю часу черги перенадсилання.
    • До сервісу "RepublishRequest" додано та використано помилку OpcUa_BadMessageNotAvailable.
    • Головне ціле змінено із OpcUa_Int32 у OpcUa_Int64.
  • FIX:Siemens: Версію LibnoDave оновлено до 0.8.5 (остання від 05/17/13), виправлено приведення вказівника до цілого шляхом заміни приведення у long.
  • ICP_DAS: оновлено libi8k.a та заголовки, сторожовий таймер EnableWDT() для LP-8x81 замінено на EnableSysWDT().
  • FIX:JavaLikeCalc: Розширено командами віртуальної машини AddAss, SubAss, MulAss, DivAss для оптимального виконання операцій ++, --, +=, -=, *=, /=, одразу із дорівненням; значним чином для операцій з типом даних "Рядок" та попередження зайвого перевиділення пам'яті там з кожним додаванням. FIX: Функції віртуальної машини Дорівнює (Equal) та НеДорівнює (NotEqual) підлаштовано під можливість коректного опрацювання невизначених властивостей об'єкту шляхом загального опрацювання як Реальне для всіх типів окрім "Рядок". Встановлено використання загального тимчасового регістру для бінарних операцій типу "a = b+c+d+e;", значним чином з метою оптимізації швидкості у доданні рядків.

Транспорт

  • Sockets: Додано властивість MSS для контролю за розміром TCP-сегменту на поганих каналах.

Архів

  • FIX: Виправлено опрацювання mLastGet для значень, на предмет виключення запису до неактивного буферу.
  • FIX:FSArch: Виправлено процедуру ремонту файлів значень для значень фіксованих типів та додано на кінець код ремонту для нефіксованого типу (як то рядок). Вдало виконано весь ланцюг тестів, всіх типів фіксації, для механізму послідовного пакування та виправлення помилок архівних файлів. Властивість командного рядку "copyErrValFiles" замінено наявністю теки "errors" для копіювання помилок сюди.
    • FIX: Виправлено опрацювання видалення файлів за лімітом на предмет видалення свіжого-нового файлу архіву у випадку якщо їх два.
    • FIX: Архівацію Рядків остаточно виправлено після попереднього неповного виправлення на предмет останнього значення.
    • FIX: Додано перевірку на відсутність вільного простору сховища для попередження зависанню та втраті даних повідомлень та значень.
    • Ліміт повідомлення у плоскому форматі розширено до 100000 символів.
    • Додано вкладку "Файли" для повідомлень та значень із детальною інформацією про файли архіву.

Протокол

  • SelfSystem: Додано властивість ЛімітОдногоХостаКористувача (SingleUserHostLimit) для контролю обмежень та повідомлення про помилку у випадку досягнення. Розширено статусом - Активні сеанси автентифікації.
  • HTTP: Розширено статусом - Активні сеанси автентифікації.

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

  • FIX:VCAEngine,Vision,WebVision:
    • FIX: Для примітиву "Діаграма" розширено варіант адреси "data:{XMLNodeData}" на предмет можливості відсутності "tm", "tm_grnd" та встановлення їх у секундах, за атрибутом 's'. Виправлено назначення завантажених але не доданих у буфер значень, для варіантів прямої адресації "line:{value}" та "data:{XMLNodeData}".
    • FIX: Вид "Кнопка" примітиву FormEl адаптовано до масштабування зображення до всього розміру віджету та дозволу накривати весь простір цього зображення.
    • Додано підтримку типу "XY" до примітиву "Діаграма", де Y за непарними та X за парними параметрами.
    • Додано правильне масштабування розміру вкладених віджетів за масштабуванням крайньої точки, для коректного підлаштування один до одного на будь-якому масштабі.
    • До примітиву ElFigure додано атрибут "mirror" з метою надання можливості дзеркалювання виду примітиву. Для UI.Vision втілено тільки основні функції та деякі проблеми з дугою на разі наявно.
  • FIX:QTStarter: Для очікування знищення UI завдання тайм-аут встановлено у 60 секунд та дозволена генерація виключення у випадку вичерпання часу знищення.
  • FIX:QTCfg:
    • FIX:LineEdit: Вигляд "Ціле" виправлено на предмет встановлення дозволених меж значень [-2147483647:2147483647]
    • TextEdit: Встановлено примусове перенесення слів, значним чином для довгих описів. Додано вертикальну підгонку цих полів до повного розміру сторінки, для заповнених. Переписано для видалення внутрішнього розміщувача.
  • FIX:VCAEngine:
    • FIX: Виправлено посилання на атрибут віджету із віджету за допомогою "wdg:a_XXX" та попереджено його падіння у головному статусі.
    • FIX: Операції API користувача mime() та mimeSet() використано, перевірено та виправлено на предмет редагування джерела примітиву "Діаграма", збереження у таблиці сеансу та відображення результату, для SVG.
    • Захоплення ресурсу функції бібліотеки віджетів та проекту під час завантаження та включення за потребою для попередження багаторазового входу та виконання. Попереджає падіння та доступність неповних даних у віддалених виконавців сеансу проекту.
  • FIX:Vision:
    • FIX:FormEl: Виправлено випадкову різницю між реальним та видимим значенням, значним чином для дискретних видів ComboBox та CheckBox.
    • FIX:ElFigure: Попереджено зависання на нульовій довжині між центром та першим радіусом. Тимчасово видалено із scaleRotate() та unScaleRotate() додання залишку розташування віджету у батьківському контейнері для попередження у деяких випадках щілин між заповненнями. Вихідні тексти значним чином почищено, у продовження. Деякі помилки виправлено. Почато втілення для віддзеркалення. Додано дещо розумніший контроль за контрольними точками 1 та 2 дуги.
    • FIX: Попереджено подвійне звільнення у зв'язку із запізнілим відновленням користувача та пароля після зміни користувача на недозволеного для читання із сеансу проекту.
    • FIX: Виправлено віддалене отримання переліку проектів та сеансів для відповідного користувача, у полі користувача запуску.
    • FIX: Дозволені значення координат обмежено у [-1000000:1000000] у зв'язку замороження оновлення фігур у Qt через дуже великі значення.
    • FIX: Видалено примусові та глобальні текстові стилі "font-weight", "font-style" примітиву "Документ" та встановлено їх тільки у випадку наявності відповідних властивостей у атрибуті шрифту віджету, щоб забезпечити належну роботу тегів "<B>" та "<I>".
    • FIX: Повідомлення "Вичерпано час очікування" під час спроби відновлення запущеного сеансу, через фонове очікування завантаження даних проекту, придушено та попереджено закриття головного вікна.
    • Друк та експорт примітиву "Документ" дозволено із контекстного меню. Друк по замовченню встановлено для одного та великого (не менш ніж вдвічі від головної сторінки) документу. Експорт по замовченню встановлено для одного та великого (не менш ніж вдвічі від головної сторінки) документа або діаграми.
    • До статусу конфігураційної сторінки модуля додано перелік головних відкритих вікон, задля віддаленого контролю.
  • WebVision: Користувач "root" або користувачі у групі "root" дозволені для багаторазового відкриття сеансів у будь-яких умовах.

1.9 [27.12.2014] ДВАНАДЦЯТЕ (12) оновлення

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

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

  • TConfig,DB.*: Видалено глобальний прапорець noTransl() як застарілий.
  • Безпека: Для користувачів та їх груп перейменовано функції lName() та descr() у descr() та longDescr(), відповідно до полів БД.
  • TElem: Розширено для створення TFld із прикладу-шаблону наявного TFld але із відмінним ID. Додано TElem::fldClear() для очищення полів.
  • TVarObj: Функції propGet() та propSet() розширено для ієрархічного доступу за шляхом.

Доповнення:

  • TConfig,DB: Для визначення ключа додано та використано функцію isKey().
  • DB: Додано метод TTable::fullDBName().
  • DAQ.JavaLikeCalc: Додано вбудовану функцію користувацького API tr() для запиту до бази перекладів постійних рядків, як термінатор для сумісності із робочою версією.

SYS

  • FIX:TCntrNode::chldPresent() змінено для визначення всіх присутніх вузлів, вимкнених також. Значним чином для гарантованого визначення за назвою.
  • FIX: Забезпечено примусове створення завдань та записів щодо них у випадку помилок на зразок граничного часу запуску. Попередження падінь у деяких випадках.
  • FIX: Вимкнено виключення у випадку встановлення значення атрибуту у режимі NoWrite, просто вихід з функції. Значним чином для виправлення проблем із DAQ.BlockCalc.
  • FIX: Безпека: Розмір пароля розширено на більш ніж 8 символів шляхом переключення до кодування MD5. Збережено зворотну сумісність для попередньо встановлених паролів. Виявлено Василем Григорьєвим.
  • CntrIf,UI.{QTCfg,WebCfgD}: До таблиці додано прапорець "noReload" з метою контролю цілковитого перевантаження вмісту великої таблиці після запиту "SET", також використано у таблиці об'єкту БД.
  • DAQ, DAQ.JavaLikeCalc, UI.{QTCfg,Vision}: Додано атрибут "font" до кореневого вузла правил підсвічення синтаксису з метою визначення типового шрифту конфігурації. Типовий шрифт для JavaLikeCalc процедур встановлено у "Courier".
  • З метою кращого визначення проблем властивостей реального часу до статусу завдання додано значення максимальної затримки виклику та використаного часу.
  • XMLNode::childGet(): додано підтримку негативних індексів з метою відліку від кінця.
  • Використання "LibGD" у OpenSCADA ядрі вимкнено по замовченню та замість використано "SVG".

БД

  • FIX: TBDS::dataDel() виправлено для видалення записів із конфігураційного файлу після таких спроб у БД, значним чином для виправлення видалення однакових записів БД.
  • FIX:SQLite,MySQL,PostgreSQL,FireBird: Виправлено для попередження завантаження перекладу із непорожнього але вимкненого для перекладу поля БД.
  • FIX:FireBird: dataSeek() виправлено поведінку у випадку порожнього SELECT.
  • MySQL,PostgreSQL,FireBird: Для нульової довжини рядка по замовченню використано тип TEXT.

DAQ

  • FIX: Прапорець "prcStRd" у задачі резервування встановлено заздалегідь для попередження помилкового запуску цієї задачі під час підключення до відсутніх віддалених станції та падіння при зупинці.
  • FIX:JavaLikeCalc: До compileFunc() додано захоплення ресурсу на генерацію ID функції за "<auto>" з метою попередження багаторазового підключення до однієї функції.
    • FIX: Додано ранній старт, на час завантаження, для бібліотек функцій. Значним чином для запуску цих функції перед DAQ.BlockCalc.
    • Видалено прапорець Func::SysAttr для IO "f_frq", "f_start", "f_stop", "this" з метою забезпечення їх збереження, через можливість пріоритетного та незалежного запуску.
  • FIX:Siemens: Значним чином переглянуто захоплення ресурсів та додано нове захоплення на глобальний API, з метою попередження падінь під час перепідключень, паралельний доступ та перевизначення індексу підключень.
  • FIX:BlockCalc: Процедуру сортування блоків значним чином переписано з метою виправлення. Попереджено копіювання таблиці з блоками у BLOCK_SH під час копіювання цього об'єкту контролеру.
  • DCON,ModBus: Область дії спроб послідовного інтерфейсу розширено на підключення, через можливість викривлення запиту та відсутності відповіді.
  • LogicLev: Додано підключення до властивості об'єкта за шляхом у зв'язку "{ModType}.{Cntr}.{Prm}.{Attr}#{ObjPath}".
  • FIX:DAQGate: Очищення оброблюваного переліку параметрів пересунуто із фази зупинки до вимкнення. Додано пропуск порожніх параметрів у режимі окремого запиту атрибутів, задля зменшення загального часу запиту.
  • SoundCard: розширено для специфіки X86_64 з короткими викликами framesPerBuffer до функції зворотного виклику.

Archive

  • FIX:FSArch: Виправлено на предмет попередження дублікатів та помилкового підключення архівів для джерел даних які пізно додаються, а також додано обов'язкову перевірку перед доданням нових архівів. Вказівка на область даних для останнього значення індексу попереджено для типу Рядок.

Transport

  • FIX:TTransportIn: Додано ранню зупинку у postDisable() для попередження падіння у деструкторі на звільнених даними об'єкту нащадку.

Protocol

  • FIX:ModBus: Виправлено невідповідність формату діагностики вузла для реальних лічильників.

UI

  • FIX:VCAEngine,Vision: Процедуру опущення змін значним чином виправлено та адаптовано на предмет оновлення батьківського віджету, у відкритому для редагування режимі. Додано підтримку редагування чарунки виду “Таблиця” примітиву "FormEl".
  • QTCfg,Vision: Встановлення курсору очікування виправлено на встановлення та відновлення після інтервалу затримки 50 мс, для попередження миготіння та високого навантаження на деяких оточеннях робочого столу.
  • FIX:WebUser: Попереджено падіння під час опрацювання нових HTTP змінних.
  • FIX:QTCfg: Виправлено політику визначення розміру для значення логічного типу у режимі тільки для читання. Віджет таблиці значним чином розширено на предмет:
    • Включено вертикальний скролінг за пікселами.
    • resizeRowsToContents() розширено на предмет обмеження висоти рядків у 0.9 від загальної висоти таблиці та викликом через натиск мишею у секції заголовку, для переналаштування.
    • Представлення рядка у багатостроковому режимі тексту ItemsDelegate переписано з метою попередження помилкового Qt eliding для строк та іншого.
  • FIX:VCAEngine: Попереджено подвійне встановлення сторінок у обробку та втрату контексту першо-ініціалізації. Попереджено подвійне виконання сторінок для ініціалізації із процедури встановлення у оброку та за каскадом із сторінок верхнього рівня.
    • FIX: Завантаження mime розширено та виправлено для проектів.
    • Уніфіковано доступ до таблиці часу сеансу проекта доданням функцій атрибуту сеансу sessAttr(), sessAttrSet(). Ці функції використано у: примітиві "Документ", стилі сеансу, редагованих ресурсах за допомогою функцій API користувача "mime()" та "mimeSet()", "fromSess" та "toSess" функцій API користувача "attr()" та "attrSet()". Сервіс "/serv/attrSess/" додано для доступу до атрибутів сеансів.
    • Додано підтримку наслідування для власника та дозволів віджету.
    • Автоматичне створення сеансу під час включення модуля оновлене.
    • Додано доступ до атрибутів DAQ об'єктного типу за шляхом у зв'язках типу "/DAQ/{Cntr}/{Prm}/{Attr}#/{oAttr1}/{oAttr2}".
  • FIX:Vision: Встановлено проксі фокуса для редагованого контейнеру віджету на цей віджет, у режимі розробки, щоб забезпечити єдність джерела фокусу та втрату обрання вкладених віджетів у загальних випадках.
    • FIX: Виправлено примітив "Діаграма" на предмет актуального встановлення курсора та значень параметрів під ним у випадку значної різниці між хостом сеансу сервера та хостом візуалізатора цього сеансу, на предмет відставання позиції курсору на один період.
    • FIX: Віджет LineEdit дещо виправлено на предмет застосування реального розміру кнопки шляхом отримання реального та попередження цим плину розміру вікна через невідповідність.
    • FIX: Попереджено втрату рисок у вигляді “Слайдер” та дефекти схожих виглядів примітиву “FormEl” після натиску у контейнері цього елементу шляхом глобального опрацювання повідомлень QEvent::MouseButtonPress та QEvent::MouseButtonRelease.
    • FIX: Виправлено оновлення змін після їх прийняття у груповому режимі менеджеру атрибутів віджета шляхом оновлення відмінних атрибутів віджету у групі а також у першому віджеті групи.
    • Кеш ресурсів значним чином поліпшено за для прискорення доступу та оновлення.
    • Додано контроль та збереження позиції вікон режиму виконання за допомогою включення опції "winPosCntrSave" та використання нового сервісу "/serv/attrSess/". Номер екрану розширено не тільки для пов'язання із різними фізичними дисплеями а й для незалежного контролю та збереження позиції.
    • Для автоматичного запуску додано можливість зазначення сеансу у параметрі “Перелік проектів для пуску”, значним чином для підключення до вже запущених або фонових сеансів.
    • Додано час контролю відновлення підключення для попередження блокування віддалених підключень до серверу візуалізації та оновлення екрану.
  • WebVision: Корекція прокручування для різних варіантів включень у контейнер. Кеш зображень значним чином розширено очисткою схожою на UI.Vision.
  • WebCfgD: Розширено спробою завантаження файлів WebCfgDVCA.html та WebCfgDVCA.js із робочої теки. JavaScript код значним чином очищено та Таблицю розширено спрощенням контролю та виходу із режиму редагування чарунок.

Special

  • FIX:FLibSYS: Виправлено та розширено функцію strDec4Bin() аргументом роздільника зі значенням по замовченню " ", із метою відновлення зворотної сумісності.

1.10 [21.07.2014] ОДИНАДЦЯТЕ (11) оновлення

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

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

  • SYS: Перелік TSYS::Errors (переважно DB Errors) видалено як застаріле.
    • TSYS::modifCfg() розширено для перевірки на доступ для запису.
    • Уніфіковано функції strEncode() та strDecode().
    • XMLNode: Аргумент позицій функцій childIns() та childDel() встановлено у знаковий тип (integer) щоб дозволити вставку та видалення від кінця (негативне значення).
  • TCntrNode: До функцій TCntrNode::load() та TCntrNode::save() додано аргумент "string *errs = NULL" для розташування всіх помилок завантаження та збереження об'єктів.
  • DB: Розширено функції TBDS::dataGet(), TBDS::dataSet() та TBDS::dataDel() аргументом "noEx = false" для генерації виключень у випадку помилок доступу до сховища.
  • Transport: setAddr() змінено на невіртуальний, використано cfgChange() замість. До функції "start()" вихідного транспорту додано аргумент часу, ненульове значення якого контролює час підключення.
  • DAQ: Аргумент "maxCalcTm" функції TTipDAQ::compileFunc() встановлено у 0 для ознаки використовувати значення по замовченню модуля.
  • Archive: TArchive, TMArchivator та TMArchivator переведено на використання TConfig::cntrCmdMake(). setValPeriod() та setArchPeriod() змінено на невіртуальні, використано cfgChange() замість.

Доповнення:

  • SYS: Ініційований нулем об'єкт помилки "TError() : cod(0)" додано. Додано нову глобальну та просту функцію s2ll() до простору імен OSCADA. Варіант функції TSYS::strMess() додано для контролю за довжиною та додання "...".
  • Archive: Додано пріоритет обрання до об'єкту архіватору значень з метою надання контролю за послідовністю та відключення взагалі у режимі обрання "Всі", використано для функцій getVal(), getVals() та сервісу архіву "/serv/val". Додано функції selPrior() та setSelPrior().

DB

  • AGLKS.St.db: ModBus.testTCP, DAQGate.test та OPC_UA.test встановлено для запуску по замовченню. FIX: Архіватори повідомлень "FSArch.NetRequsts" та "FSArch.StatErrors" виправлено.

SYS

  • Додано функції API користувача strEncode() та strDecode(). Додано повідомлення про проблеми доступу до сховищ. Комплексне тестування повідомлення про проблеми для сховищ: SQLite, MySQL, PostgreSQL, FireBird, DBF, Cfg; результати: wiki.oscada.org/Works/Tests/DB.
  • FIX:TFunction, TValue, UI.VCAEngine.Attr: Додано встановлення TEValObj() до атрибуту об'єктного типу за EVAL скаляру.

DB

  • Попереджено виключення під час відключення об'єкту БД, зазвичай після проблем під час підключення до мережевої БД. Зменшено таймаут очікування звільнення таблиць до 1 секунди під час зупинки БД, для прискорення під час втрати підключення до мережевої БД.
  • DBF: Додано періодичну синхронізацію (10 секунд) змін у пам'яті до файлів. Додано обрання теки БД у рядку конфігурації об'єкту БД. Додано доступ та помилки для БД тільки для читання.
  • SQLite: Додано підтримку запису бінарного рядка до БД у формі "#'XXXXXX'". Адаптовано до роботи у режимі тільки для читання.
  • FireBird: Опрацьовувані типи розширено до: blr_varying, blr_varying2, blr_text, blr_text2, blr_blob, blr_short, blr_long, blr_int64, blr_float, blr_double та blr_d_float. FIX: Додано очищення даних API після помилок підключення. fieldSet() та fieldDel() значним чином переписано для типовості.
  • MySQL: Адаптовано до роботи у режимі тільки читання, fieldDel() значним чином переписано для опрацювання режиму тільки для читання. Додано опрацювання CR_CONNECTION_ERROR у випадку втрати підключення.
  • PostgreSQL: Опрацьовувані типи розширено до: text. character varyin, character(%d), character varying(%d), smallint, integer, bigint, real, double precision, timestamp with time zone. FIX: Опрацювання втрати підключення пересунуто на після запиту. Опрацювання транзакцій переписано для типовості. Адаптовано для роботи у режимі тільки для читання, fieldDel() значним чином переписано для опрацювання режиму тільки для читання.

DAQ

  • FIX:JavaLikeCalc: "Помилка постійної після постійної" доповнена позицією її розташування. Додано типовий час безпеки у вкладці модуля.

Кореневий об'єкт TDAQS розширено запитом інтерфейсу керування "/serv/PrmAttr" для віддаленої навігації за деревом DAQ параметрів.

  • FIX:ModBus: Виправлено запис за комплексними типами типу "_f", "_i4" у режимі тільки для запису. Комплексні типи розширено із "u2" - uint16, "d" - Double.
  • SNMP: Значно розширено навігацією за OID у рядку, MIB дерево використано для визначення режиму доступу та варіантів обрання переліку.
  • OPC_UA: До об'єкту конфігурації параметру додано навігацію у рядку за деревом OPC UA вузлів. FIX: Розширено контроль розміру вхідного пакету та заголовку для раннього опрацювання та відкидання.
  • DAQGate: Додано навігацію у рядку за зовнішніми вузлами та деревом віддалених параметрів. Розширено для ідентифікації віддалених параметрів у незалежному просторі назв та пов'язання за ідентифікатором віддаленого параметра. Дозволено проходження "/prm/*" змінних для опрацювання деяких глобальних переліків. Розширено для пов'язання з ієрархічними параметрами (із OpenSCADA 0.9).

Архів

  • FIX: Виправлено втрату підключення архівів до архіватору у випадку його перезапуску.
  • FIX: Виправлено встановлення негативного рівня порушень у випадку прямого їх запиту через сервіс "/serv/mess" на предмет попередження модифікації збережених даних.
  • Встановлення періоду архіватору розширено на предмет значення нуль та відключення за цим опрацювання буферу значень, тобто тільки для прямого запису до архіву.
  • Адаптовано для запису невирівняних до періоду значень та буферів.
  • FIX:DBArch: Додано примусове перечитування meta-даних для архівів значень, після помилкового їх читання на старті, через недоступність мережевої БД. Додано виявлення відключення архіватору від БД та використання наступного архіватору за пріоритетом.
  • {DBArch,FSArch}: Типовий пріоритет встановлено у 1 для DBArch та 1000 для FSArch.

Transport

  • Додано до вкладинки "Запит" вихідного транспорту отримання виміряного часу запиту після його переривання виключенням. FIX: TTransportOut, TTransportIn виправлено на предмет перевірки та опрацювання встановлення значень.
  • Sockets: Типові таймаути вихідних транспортів певернуто у "5:1".

Протокол

  • ModBus: Додано підтримку функцій 0x2 (CI) та 0x4 (RI). Додано класичну форму запису регістрів та комплексні типи розширено "d" - Double.
  • SelfSystem: Реалізацію протоколу покращено для перевірки та очікування повноти заголовку. Додано аргумент "conTm" до вихідного частини транспорту. SES_OPEN обмежено у 10 підключень від одного джерела та користувача. Сеанс пересунуто у std::map для прискорення.

UI

  • QTCfg: Додано перевірку та попередження про неприйнятті зміни на сторінці. Додано та використано функцію getPrintVal() для перевірки та кодування відверто бінарних рядків. Додано підтримку команд "load" та "save" до групи вузлів.
  • VCAEngine: Розширено функції API користувача області сеансу attr() та attrSet() аргументами "bool fromSess" та "bool toSess" відповідно для встановлення атрибутів до таблиці сеансу. FIX: Виправлено стеження зміни батька для проектів та бібліотек віджетів. VCAEngine: атрибут "geomZ" віджетів дозволено негативним.
  • Vision: Керування атрибутом "geomZ" змінено на його зміну тільки у одного віджета для попередження відриву від реально робочої позиції, переважно для попередження зміни "geomZ" у групи віджетів та колізій реальної не зміни позицій. Функцію оновлення послідовності вкладених віджетів розширено для попередження випадковості впорядкування для однакових значень "Z", шляхом досортування за ідентифікатором. FIX: Для вкладених у контейнер сторінок встановлено атрибут вікна Qt::WA_WindowPropagation з метою забезпечення реальної прозорості шляхом розповсюдження палітри, переважно через приховування Slider. FIX: Виправлено оновлення послідовності віджетів після ручного встановлення "geomZ", у режимі розробки.
  • {QTCfg,Vision}: У якості курсору зайнятості-очікування використано QApplication::setOverrideCursor(Qt::WaitCursor).
  • {VCAEngine,Vision}: Додано функцію опущення змін візуального елементу до його батька. Додано перевірку та попередження про неприйнятті зміни у конфігураційному діалозі елементів.

1.11 [09.05.2014] ДЕСЯТЕ (10) оновлення

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

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

  • Archive: Додано результат функції TMArchivator::put() для контролю завершення запису.
  • SYS.Mess,Archive.DBArch: Тип рівня повідомлення у структурі TMess::SRec змінено з типу "Type" у int8_t для виправлення негативного рівня у DB.MySQL.
  • SYS.XMLNode: У функції load() аргумент "full" замінено на "flg" з прапорцями: 0x01 - повний режим; 0x02 - не видаляти простори з початку та кінця тексту тега.
  • Transport: Покращено конфігурацію зовнішніх хостів через обрання режимів "Користув.", "Системний", "Кормитув. та Системний" у загальній таблиці. Видалено функції: sysHost(), setSysHost(). Змінено функції: extHostList(), extHostGet(), extHostSet(), extHostDel().
  • DAQ: API функцій "void vlSet();" розширено для визначення нового значення прямо і попередження його втрати.

Доповнення:

  • SYS: Додано нові об'єкти блокування ресурсів MtxAlloc та MtxString.
  • До ResAlloc додано lock() та unlock().
  • TCntrNode: Додано базову функцію _ctrMkNode() та специфічну для встановлення аргументів ctrMkNode2() до оригінальної ctrChkNode().
  • "TSYS::i{bits}_LE()", "TSYS::i{bits}_BE()", "floatBE{rev}()", "doubleBErev()" функції додано для опрацювання розташування байт.
  • Додано нові глобальні функції до OSCADA простору імен: tm2s(), s2i() та s2r().
  • TArrayObj: Додано нові функції прямого доступу arGet() та arSet(), для швидкого доступу із середини.
  • XMLNodeObj: Додано нову функцію "childGet(string name, int num = 0)".
  • Transport,Transport.*: До вихідного транспорту додано функції timings() та setTimings().

DB

  • AGLKS.St.db: KeepAlive таймаут вхідного транспорту OPC_UA встановлено у 60, Клієнтські та Серверні сертифікати згенеровано із врахуванням всіх вимог та адресу встановлено у 127.0.0.1.

SYS

  • адаптовано для опрацювання *.core файлів.
  • TConfig,TValue,UI.{VCAEngine,Vision}: Додано підтримку редагованого переліку у конфігураційних полях та DAQ атрибутах за посередництвом TFld::SelEdit.
  • Надано функції API користувача gmtime(), timegm(), strftimegm(), strptimegm() для опрацювання часу у GMT(UTC).
  • DB,TVariant,DAQ.JavaLikeCalc,Special.FLibSYS: Встановлено прямий доступ до об'єкту простору імен TArrayObj, із середини.

БД

  • FIX:DB.{SQLite,MySQL,PostgreSQL,FireBird}: Виправлено перевірку на відсутність ключа у БД для fieldSeek() та fieldSet().
  • DB.{SQLite,FireBird,PostgreSQL,MySQL}: Змінено механізм відновлення підключення для мережевих БД на увімкнення вимкнених БД із toEnable() у циклі перевірки транзакцій.
    • Проведено комплексні тести на відновлення втрачених підключень та загальний тест БД модуля Special.SystemTests.
    • MTable::fieldDel() адаптовано для видалення записів з ключами реально відсутніми у таблиці БД.
    • MySQL: Додано підтримку та використання транзакцій для підвищення продуктивності деяких сховищ БД.

DAQ

  • BlockCalc: Додано опційний запис при зміні значення за вихідними зв'язками блоків. Розмір поля "VAL" для таблиці IO блоків збільшено із 20 до 10000 та "LNK" із 50 до 100.
  • JavaLikeCalc.Array: Встановлено прямий доступ до властивостей об'єкта для підвищення продуктивності. FIX: Виправлено вставлення елементу об'єкта до масиву під час створення як "new Array(0, 1, 2, ar[0])".
  • FIX:LogicLev: Тип "Відображення" виправлено та розширено для підключень до цільового параметру, оновлення та синхронізації переліку атрибутів у періоді обчислення.
  • ModBus: Прибрано спробу підключення із функції start() об'єкту контролера.
  • OPC_UA.{*,LibOPC_UA}: LGPL COPYING фйл додано до цієї бібліотеки.
    • FIX: libOPC_UA виправлено у відповіді клієнтському сервісу "Write" і ще з десяток критичних виправлень.
    • OPC_UA простори імен уніфіковано, а також NS_OPC_UA(0), NS_SERVER(1) та OpenSCADA_DAQ_NS(2) додано.
    • Додано опрацювання часу життя сеансу.
    • Ріст SubscriptionId та MonitoredItemId розпочато із '1', для виключення некоректного значення '0'.
    • Додано визначення даних користувача та пароля у клієнтській частині програми та у тесті. Додано визначення політики у тестовій програмі.
    • До об'єкту параметра клієнта додано огляд вузлів у одному рядку для вставлення у перелік опрацювання.
  • FIX:System: Додано новий DA-тип "UPS", за посередництвом NUT-протоколу. Виправлено перевірку DA та їх створення за загальними параметрами, не за ідентифікатором параметру.
  • BFN,DAQGate,ModBus,OPC_UA: Формування порушень стану підключення до віддаленого джерела уніфіковано.

Архів

  • TMArchivator: Переписано архівацію повідомлень для перенадсилання повідомлень у буфері після відновлення підключення.
  • FIX:Archive.*,Special.FLibSYS: Попереджено встановлення негативного значення періоду у буфері. TValBuf::vOK() розширено для перевірки вирівняного до періодичності буферу. setVals() адаптовано для запису невирівняного до границі [beg:end] шляхом округлення до періоду.
  • *,DBArch: До TVArchEl::setValsProc() додано результат з метою контролю запису частини буферу до архіву, використано для перезапису до мережевої БД за посередництвом DBArch. Дозволено запуск архіваторів Значень та Повідомлень у випадку помилок у БД, передбачаючи відновлення підключення.
  • *,UI.{Vision,WebVision}: Сервіс "/serv/val" адаптовано для повернення EVAL_STR як EVAL для всіх режимів подання даних.

Transport

  • {SSL,Sockets}: KeepAlive параметри вхідного транспорту уніфіковано та додано описи. Типове значення KeepAliveTm встановлено у 60 для попередження зависання вхідного транспорту.

UI

  • QTCfg: Перевірка та зміна поточної сторінки на її перейменування. Механізм підлаштування рядків та стовпчиків таблиці встановлено схожим на вигляд "Table" примітиву FormEl для UI.Vision. Додано підтримку встановлення значення записів у групу-обрання сторінок.
  • Vision:
    • FIX: Примітив "Текст" виправлено на предмет оновлення розміру шрифту під час зміни масштабу.
    • Для захоплення об'єкту сеансу додано простий ресурс dataM (pthread_mutexattr_t) та використано для mOpen, mStProp.
    • FIX: Сервіс <openlist path="/serv/pg"> виправлено на помилки відсутності віджетів сторінки та спробу перестворення сеансу.
    • Для сторінок включених у контейнер встановлено прозору палітру фону.
  • UI.{QTStarter,QTCfg,Vision}: Адаптовано для Qt5, виключаючи Phonon.
  • VCAEngine,Vision,WebVision: Примітиви "Текст", "Протокол", "Документ", "Діаграма" переведено до індексів з types.h.
  • VCAEngine,Vision: Додано новий вигляд "Таблиця" примітиву "FormEl".
  • Vision,WebVision: Час слідкування для примітиву "Діаграма" та "Протокол" встановлено у час реально наявних даних.

Special

  • FLibSYS: Додано уніфіковану функцію обчислення CRC().

1.12 [21.12.2013] ДЕВ'ЯТЕ (9) оновлення

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

  • SYS:Додано контрольований запис до конфігураційного файлу з метою попередження запису немодифікованих полів залежних від системного оточення. Глобальні визначення OBJ_ID_SZ та OBJ_NM_SZ додано та використано для всіх конфігураційних ID та NAME. Ліміт на розмір поля NAME пропущено до конфігураторів за посередництвом поля "idm", через OpenSCADA інтерфейс управління.
  • DB: До функцій TBDS::dataGet() та TBDS::dataSet() додано прапор "forceCfg", який дозволяє встановити пріоритетне збереження у конфігураційному файлі. MySQL: MULTI_STATEMENTS запити включено, однак обробляється та повертається тільки перший результат.
  • Protocol.UserProtocol: В контекст процедури вхідного транспорту додано атрибут "tr" для представлення об'єкту вхідного транспорту.
  • DAQ.{BlockCalc,LogicLev,ModBus},Archive,UI.VCAEngine: Зв'язки на DAQ параметри та атрибути адаптовані для можливості включення параметру у параметр, для шляху типу "{Mod}.{Cntr}.{Prm1}.{PrmN}.{Attr}".
  • DAQ: Функція TDAQS::ctrListPrmAttr(), TDAQS::prmAt() та TDAQS::attrAt() уніфіковано для виключення залежності від порядку. Функцію TDAQS::daqAt() додано для доступу до будь-якого елементу DAQ шляху, посередництвом TCntrNode, функція також використана у TDAQS::prmAt() та TDAQS::attrAt().
    • LogicLev: Додано можливість створення параметру як чистого контейнеру.
    • FIX:DAQ.ModBus: Виправлено відновлення з'єднання для синхронного режиму запису і биту регістра. Виправлено блокування атрибутів вузлів у режимі "Дані" вузла протоколу.
    • OPC_UA: Додано підтримку Publish, RePublish, Subscribe, MonitoredItem та супутніх сервісів для вхідної частини протоколу (Без Publish відповідей у LTS). Додано сервіс "BrowseNext" та ContinuationPoints. Функція reqData(), сервісної частини, поділена на частину OPC_UA бінарного кодування у бібліотеці і вона-ж, залежна від реалізації моделі даних, для сервісів "Browse", "Read" та "Write". Підтримка продовження TokenId каналу безпеки у серверній частині реалізовано та дещо виправлено у клієнтській частині. Всі бібліотечні файли пересунуто у окрему теку libOPC_UA. Серверні сервіси Browse, Read та Write значним чином переписано. Серверні сервіси Browse та Read використовують поле "Name" при повернені до OPC UA "BrowseName" запиту.
  • TArchVal: Виправлено використання LibGD2 у ядрі за посередництвом змінної HAVE_GD_CORE. Побудову тренду значення архіву реалізовано через SVG у випадку відключення LibGD2 в ядрі.
  • FIX:TArchVal: виправлено доступ до архіву наступного рівня у загальному запиті, як то із 1m у 10m.
  • UI:
    • {VCAEngine,Vision}: Функція групового встановлення атрибутів Vision::attrsSet() переписано для суворого упорядкування та виправлення невпорядкованого запису деяких ще відсутніх атрибутів, які з'являться після змін вище; виявлено на примітиві "ElFig".
    • FIX:{Vision,WebVision}: Застосовано два методи попередження можливого зависання примітиву "Diagram" на деяких комбінації початку даних від різних архіваторів.
    • {QTCfg,WebCfgD}: Додано обмеження на довжину поля "NAME" у діалозі додання вузла.
    • QTCfg: Додано можливість копіювання вузла до його гілки без прямого обрання батьківського вузла, шляхом копіювання у себе.
    • VCAEngine: Дозволено встановлення негативних координат віджету. Ліміт на кількість областей карти примітиву "Media" розширено до 20. FIX: Виправлено втрату глобальної видимості атрибуту "name" після зміни виду примітиву "FormEl" із "Button" у "Tree", "List" та інші.
    • Vision: Відключено центрування вікон інструментів та завантаження нових сторінок за посередництвом load("") переміщено у конструктор RunPageView, щоб дозволити DE контролювати поведінку розташування вікон. GeomZ встановлюється на верх для копійованого віджету.
      • ElFig: Наступний етап очищення коду та рефакторингу, значним чином для moveItemTo().
        • FIX: Виправлено перевантаження після додання деяких фігур.
        • FIX: Виправлено масштабування ширини фігури з границею.
        • FIX: Додано копіювання індексів кольору та зображення при копіюванні заливки.
        • FIX: Додано перевірку на допустимість індексів з метою попередження падінь по виходу за діапазон.

1.13 [16.09.2013] ВОСЬМЕ (8) оновлення

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

  • SYS: Функцію користувацького API XMLNodeObj::childIns() виправлено для виявлення аргументу 1 типу XMLNodeObj.
    • DAQ.Templates,Protocol.ModBus: Додано використання попереднього рядку як шаблону при створені нового. Додано нумерація строкових міток за посередництвом strLabEnum().
    • SYS.{WorkDir,IcoDir,ModDir},Archive.FSArch,DB.SQLite,Protocol.HTTP,Transport.Serial: Функцію ctrListFS() додано та використано для навігації за теками та файлами у конфігураційних полях.
  • DAQ.ModBus: Виправлено помилкове встановлення EVAL для атрибуту за ідентифікатором посилання, у випадку помилки запису за цим посиланням. Додано підтримку комплексного типу "Рядок", блок регістрів, у DAQ за посередництвом суфіксу "_s" до регістру "R[I]". Додано підтримку комплексних типів "Ціле" (32 біт, знакове), "Реальне" та "Рядок" (блок регістрів) до об'єкту вузла, вхідного протоколу.
  • DAQ.{BlockCalc,LogicLev,ModBus},Archive.TArchVal,UI.VCAEngine: Навігація за атрибутами параметрів та самим параметрам переміщено до загальної функції TDAQ::ctrListPrmAttr() та використано скрізь.
  • DAQ.OPC_UA,{Lib,Protocol}.OPC_UA: Частина протоколу OPC UA для клієнту та сервера переміщено у LGPL v3 бібліотеку для спрощення використання іншими проектами. Об'єкт контролеру спрощено на предмет обрання Кінцевих Вузлів (EndPoints) та транспортів; Ви можете просто встановити Кінцевий Вузол, а транспорт буде створено з нього. Для включеного об'єкту контролера Ви отримаєте перелік доступних Кінцевих Вузлів. TokenId та SessionId адаптовано до комплексного типу NodeId та перевірено на Ignition OPC UA сервері. OPC UA сервер виправлено на предмет обробки поєднаних вхідних повідомлень. Обробку основних атрибутів вузлів значною мірою покращено та розширено.
  • TVal: Додано зупинку архіву при відключені об'єкта атрибута для розблокування та завершення дії.
  • Archive.FSArch: Виправлено розташування великих повідомлень до архіву плоского тексту, при досягненні ліміту на розмір буферу.
  • UI.{VCAEngine,Vision,WebVision}: У примітивах "FormEl", "ElFigure", "Media", "Box" використано визначення індексів із "types.h".
  • UI.{Vision,WebVision}: Виправлено завантаження конфігурації елементів примітиву "ElFigure" з урахуванням вимоги наявності всіх точок. Функція attr{s}Set() примітиву "ElFigure", та "FormEl" у UI.Vision, повністю переглянуто та оптимізовано. Примітив "Diagram" виправлено на предмет заповнення буферу тренда дублікатами при одиничному запиті до архіву та цей запит переміщено у одиничні запити поточного.
  • UI.{Vision,VCAEngine}: Додано варіант огляду елементів "Дерево" до примітиву "FormEl". Додано одно-рядкова навігація ресурсів та файлів для image/media атрибутів. Таблиця "Mime" контейнерів дозволяє пряме завантаження, а не тільки для обраних елементів, при цьому "mime" береться із розширення; "mime" також використано при вивантажені файлів. Встановлено ліміт на розмір завантажуваних файлів.
  • UI.VCAEngine: Ліміт на архів примітиву "Документ" виправлено на розширення до 1000000. Експортні символи переміщено у файл types.h та призначено для включення візуалізаторами. Додано зміну частини адреси батька вкладених віджетів при зміні батька бібліотечного віджета або сторінки, при включені.
  • UI.Vision: Виправлено переформування вектору index_array для точок 1 та 2 для розташування тільки загальних фігур одноразово (виключаючи Дугу, у випадку поєднання точок 1 та 2). Виправлено падіння на Лініях та Дугах (попереднє помилкове виправлення). Примітив "ElFigure" виправлено на предмет масштабування та розмасштабування товщин пересувом масштабування прямо на час малювання фігур.
  • UI.WebCfg: Виправлено відображення поля "Дата+Час" у таблиці та інших місцях.

1.14 [11.07.2013] СЬОМЕ (7) оновлення

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

  • UI.Vision: Виправлено падіння примітиву "ElFigure" при натиску на загальні точки 1,2 дуги та точку 1 лінії; значне очищення коду.
  • DB.SQLite: Додано закриття відкритої транзакції під час зупинки модуля з метою попередження втрати даних при падінні деяких модулів на виключені.
  • UI.Vision: Додано функцію WdgView::attrsSet() та використано для встановлення групи атрибутів у одному запиті для попередження втрати деяких пов'язаних повідомлень при обробці, а також підвищення продуктивності у мережі.
  • UI.{VCAEngine,Vision,WebVision}: До примітивів "Діаграма" додано формування трендів із прямо вказаних даних за посередництвом префікса "data:" та "line:".
  • DAQ.Template,DAQ.{JavaLikeCalc,ModBus},Protocol.UserProtocol,UI.WebUser: Обмеження вихідного тексту процедур розширено до 1000000 символів.
  • DAQ.{ModBus,LogicLev,BlockCalc,Siemens}: Попереджено перевантаження виконавчого контексту із БД на запущених об'єктах контролерів.
  • DAQ.SoundCard: Додано можливість встановлення пріоритету задачі збору, із PortAudio. Додано деякі повідомлення про помилки. Дещо збільшено продуктивність.
  • UI.WebVision: ID об'єкту сеансу перейменовано у PATH та nodeName() встановлено у рядок з роздільником від шляху. Додано опцію рівня стиснення PNG для деякого контролю продуктивності формування зображень, а значення по замовченню встановлено у "1".
  • Transport.{Serial,Sockets}: Додано обробку номеру помилки EAGAIN у функції write() для вихідних транспортів з метою попередження помилок на передачі великих блоків даних.
  • UI.{Vision,WebVision}: Виправлено завал буферу даних примітиву "Діаграма" поточними значеннями та втрата видимих старих значень при досягненні обмеження буферу шляхом вирівнювання поточних значень до розміру-часу пікселу.
  • DAQ.JavaLikeCalc: Видалення помилкового правила граматики "expr OR CONST{" у зв'язку з закінченням дії на першій постійній, незалежно від наступних операцій виразу. Умовна логічна команда '||' та '&&' виправлені для постійних.

1.15 [12.05.2013] ШОСТЕ (6) оновлення

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

  • UI.WebVision: Додано спробу завантаження зовнішнього JS файлу "WebVisionVCA.js" із поточної теки. Зміни у JS коді:
    • значне очищення та виправлення;
    • додано перевірку на нульову прозорість для виключення фону;
    • спроба використання асинхронних запитів у основному циклі;
    • примітиви "ElFigure", "Media", "FormEl" значним чином адаптовано для попередження повної заміни контексту на динамічних змінах поодиноких властивостей;
    • виключено хапання для зображень у FireFox.
  • ModShedul,Archive.FSArch,DB.DBF: Приховано-проблематичну функцію readdir() замінено на багатопотоковий варіант readdir_r().
  • UI.Vision: Зміни та виправлення примітиву "ElFigure":
    • Додано та використано визначення діапазону значень.
    • Додано перелік ShapeItem::Type для фігур "Лінія", "Дуга" та "Безьє".
    • Додано копіювання індексів "Ширин", "Стилів" та "Кольорів" при копіюванні фігур.
    • Виправлено розділення точок 5 декількох дуг при переміщенні клавіатурою та мишею.
    • Додано переміщення курсору миші з переміщенням клавіатурою.
    • Додано розрив контуру кола переміщенням з клавіатури.
    • Значна чистка коду.
  • UI.{VCAEngine,Vision,WebVision}: Розширено верхню межу кількості параметрів примітиву "Діаграма" до 20. Реалізовано поділ шкал окремих параметрів примітиву "Діаграма".
  • DAQ.DCON: Значні зміни від Алмаза Каримова:
    • додано читання аналогових входів одним методом;
    • виправлено роботу методу 1AO (#AA) (блоки NL-1AO, I-7021, ADAM-4021);
    • додано метод 4AO (#AACN) для роботи з блоками ADAM-4024;
    • метод читання дискретних входів @AA замінено на $AA6 для сумісності із блоками ADAM;
    • методи запису дискретних виходів 4DO (#AA000F), 8DO (#AA00FF), 12DO (#AA000FFF) додано для роботи з блоками ADAM.
  • DAQ.JavaLikeCalc: До мови додано поділ призначень символом ',' для конструкцій подібних до наступних:
var1=1, var2=3, var4=var1+var2;
for(var1=0, var2=0, var3=-1; var1 < 10; var1++, var2++) var3++;
  • SYS: Додано функцію користувацького API SYS.mktime() для отримання часу з епохи 1.1.1970 з конвертацією із поділеного часу.

1.16 [02.02.2013] П'ЯТЕ (5) оновлення

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

  • UI.WebVision: Обчислення часу періодичності оновлення переписано для забезпечення більшої чутливості та адаптації до реальних властивостей мережевого каналу.
  • До функції створення задач додано контроль та вивільнення завершених, але з присутнім об'єктом, невідключених задач.
  • Archive.FSArch: Попереджено руйнування, у деяких випадках, архівних даних за посередництвом перекриття пам'яті буферу індексів, виявлено за допомогою "ValGrind".
  • Виправлено витік пам'яті у об'єктах деструктору TVal::~TVal(), виявлено за допомогою "ValGrind".
  • Функцію "getopt" для розбору командного рядка повністю замінено на власну функцію TSYS::getCmdOpt() з причини того, що getopt() не є безпечною для потоків та створює проблеми при незалежному виклику різними частинами OpenSCADA.
  • Адаптація до підтримки односимвольних кодувань, перевірено на KOI8-R.
  • UI.Vision: Додано перевірку на реальну видимість частини віджета (за пікселом). Використано для генерації повідомлень та виклику контекстного меню, в основному у примітивах "Box" та "ElFigure".
  • UI.VCAEngine: Ліміт поля "Кількість параметрів", примітиву "Діаграма", розширено до 20.
  • Transport.Serial: Додано конфігураційне поле "Пріоритет" для задачі вхідного транспорту.
  • Додано контроль на можливість редагування для конфігураційних полів різних об'єктів, залежно від стану "Включено" та "Запущено".
  • SYS:ModSched: Поля "ModAllow" та "ModDeny" відкрито для редагування та збереження у конфігураційному файлі.

1.17 [13.11.2012] ЧЕТВЕРТЕ (4) оновлення

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

  • DAQ.SoundCard: Переписано збір для забезпечення реального часу, а також контролю частоти вибірки та втрати кадрів.
  • Системні атрибути MessLev, LogTarget, Lang, Lang2CodeBase, WorkDB, Workdir, IcoDir, ModDir дозволено для читання та запису тільки у конфігураційний файл.
  • Архів: Додано запит за потрібною періодичністю для забезпечення швидкого доступу до високоточних архівів значень, за посередництвом визначеного розміру кадру та періодичності.

1.18 [08.09.2012] ТРЕТЕ (3) оновлення

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

  • Виправлено нескінчену рекурсію при встановлені значення рядка у тип Об'єкт.
  • Значні виправлення, а також падіння, архіву значень.
  • XMLNodeObj: Збереження посилання на батька змінено на прямий показник для запобігання самоблокування, що дозволяє видаляти вузли та виключити виток пам'яті.
  • Реальне не створення задачі із високопріоритетного потоку на деяких Linux ядрах, для прикладу 2.6.29, виправлено заміною очікування виклику sched_yield() на TSYS::sysSleep(1e-3).
  • UI.VCAEngine: Додано завантаження/включення віджетів бібліотек та проектів за вимогою.
  • Додано об'єкт TEValObj для подібної до скалярів обробки EVAL.
  • Замінено небагатопотокову функцію обчислення хешу пароля crypt() на багатопотокову crypt_r().
  • БД: Значні розширення, виправлення та оптимізація генерації документів за часом, а також реалізація нової концепції рушія рецептів.

1.19 [09.07.2012] ДРУГЕ (2) оновлення

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

1.20 [09.06.2012] ПЕРШЕ (1) оновлення

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