From OpenSCADAWiki
< Documents | Release 0.8.0
Це оновлення релізу 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().
- Віддалену аутентифікацію розширено на використання аутентифікації хоста, по замовченню, та самого підключення для її перевірки.
- Таймаут спроб відновлення підключення до віддаленої станції зроблено прогресивним, до вказаного значення, та відображення повідомлення помилки здійснюється після значення таймауту у три секунди.
- FIX: Здійснено дуже важливі виправлення на предмет адаптації до стабільної роботи із серверами СВК:
Спеціальне
- SystemTests: Тести БД розширено тестом сканування.