Реліз відкритої SCADA(Supervisory control and data acquisition) системи версії 0.6.2 є наступним стабілізуючим релізом гілки 0.6.0. У межах цієї версій пройдено великий шлях по стабілізації та адаптації до практичних завдань.
Цей документ є обробкою(компіляцією) документа <ChangeLog> системи OpenSCADA версії 0.6.2, який призначено коротко та наочно освітлити нові можливості системи OpenSCADA. Детально ознайомитися зі змінами у системі OpenSCADA можна у файлі ChangeLog з дистрибутиву системи або тут: http://diyaorg.dp.ua/oscadawiki/Works/ChangeLog (RU).
Ключовими особливостями даної версії є:
Підвищення стабільності, стійкості та продуктивності системи.
Вдосконалення та стабілізація СВК.
Загальносистемні розширення.
Вдосконалення частини модулів підсистеми "Збір даних".
Нові та поновлені модулі:
Archive.FSArch (1.0.0) -- Виправлення деградації продуктивності при великій кількості файлів архіву. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
Archive.DBArch (0.7.0) -- Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DB.MySQL (1.4.0) -- Адаптація до останньої версії MySQL. Додання спливаючої підказки по формату адреси БД. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DB.SQLite (1.4.0) -- Додання спливаючої підказки по формату адреси БД. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DB.FireBird (0.8.0) -- Додання спливаючої підказки по формату адреси БД. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DB.DBF (1.9.0) -- Додання спливаючої підказки по формату адреси БД. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.BlockCalc (1.1.0) -- Уніфікація функції копіювання елементів. Заміна механізму синхронізації БД на стандартний. Додання спливаючої підказки по формату атрибутів параметрів DAQ. Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.DiamondBoards (1.1.0) -- Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.JavaLikeCalc (1.2.0) -- Переписано механізм роботи з цілими для приведення основних чисельних операцій у реальну форму. Інтеграція з глобальним механізмом копіювання елементів. Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.SNMP (0.3.2) -- Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.LogicLev (0.9.1) -- Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.ModBus (0.9.0) -- Значне розширення функціональності. Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.Siemens (1.1.0) -- Додання підтримки протоколу ISO_TSAP (ProfiNet) за посередництвом бібліотеки Libnodave. Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.System (1.6.1) -- Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
DAQ.Transporter (0.3.2) -- Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
Transport.Sockets (1.3.5) -- Додання спливаючої підказки по формату адреси вхідних та вихідних сокетів. Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
Protocol.HTTP (1.3.2) -- Чистка вихідного коду.
Protocol.SelfSystem (0.8.0) -- Додання компресії трафіку, а також можливість формування прямих запитів без підключення. Стабілізація модуля. Чистка вихідного коду.
Special.FLibComplex1 (1.0.2) -- Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
Special.FLibMath (0.5.1) -- Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
Special.FLibSYS (0.6.1) -- Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
Special.SystemTests (1.3.6) -- Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
UI.QTStarter (1.5.1) -- Стабілізація модуля. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
UI.QTCfg (1.6.0) -- Додано функцію уніфікованого завантаження та збереження. Додано функцію уніфікованого копіювання. Додано дії над об'єктом безпосередньо у дереві навігації. Додано контроль за модифікацією та попередження при виході. Стабілізація модуля. Чистка вихідного коду.
UI.VCAEngine (0.7.0) -- Реалізовано механізм сигналізації та повідомлення. Переглянуто механізм розподілення прав користувачів. Стабілізація та оптимізація модуля. Інтеграція до глобального механізму копіювання. Реалізовано механізм відкладеного видалення. Інтеграція механізму глобального контролю за модифікацією. Чистка вихідного коду.
UI.Vision (0.7.0) -- Значне удосконалення примітиву "ElFigure". Удосконалення механізму слідкування та попередження про модифікацію. Додано кеш ресурсів. Уніфіковано механізм розподілення користувальницького доступу. Додано підтримку механізму сигналізації та повідомлення. Стабілізація та оптимізація модуля. Чистка вихідного коду.
UI.WebVision (0.4.0) -- Реалізація активного режиму роботи примітиву "ElForm". Додання обробки повідомлень клавіатури та миші. Додання підтримки фокусу. Чистка вихідного коду.
1. Підвищення стабільності, стійкості та продуктивності системи.
Під час робіт над цією версією, а також практичної адаптації, було виявлено та виправлено біля півтори сотні помилок. Біля чверті сотні з них було виявлено завдяки упередженому тестуванню Попковим Олексієм та біля десятка Калитою Андрієм. Значна кількість помилок була виявлена у компонентах середовища візуалізації та керування.
Крім виправлення безлічі помилок було проведено роботу по оптимізації різних компонентів OpenSCADA. Особливо помітної оптимізації піддалося середовище візуалізації та керування (СВК) та його візуалізатори. Основним вектором у оптимізації була оптимізація на продуктивність, питання якої почали спливати під час росту навантаження на систему.
2. Удосконалення та стабілізація СВКУ.
В процесі роботи з системою OpenSCADA було внесено багато удосконалень та оптимізацій до СВК та його візуалізаторів.
Розглянемо важливі удосконалення:
Реалізація механізму сигналізації та повідомлення. Реалізація підтримки трьох методів сповіщення: візуальне, сигнальна та мовна. В цілому механізм інтегрований у концепцію СВК не є фіксованим та дозволяє реалізовувати сигналізацію за різними критеріями, а не тільки за традиційними для автоматизованих систем керування технологічними процесами (АСК ТП) критеріями.
Для спрощення роботи з інспектором атрибутів було додано переперегляд шрифтів, зображень та кольорів, та діалоги прямої їх модифікації.
До примітиву "ElFigure" додано:
Підтримку заповнення замкнених контурів кольором або зображенням. Підтримується також заповнення напівпрозорими кольорами.
Додано функцію копіювання всередині примітиву. Ця функція дозволить спростити завдання створення великих статичних зображень всередині одного віджету.
Додано підтримку масштабування товщини лінії та бордюру за мінімальним масштабом по x та y. Зробило процес масштабування більш адекватним та дозволило перемалювати багато елементів з використанням простих ліній.
Уніфіковано та повністю реалізовано у Vision механізм розподілу прав користувачів. В результаті чого додано можливість зміни користувача у режимі виконання з відстеженням зміни прав доступу на окремі компоненти. Ця робота зробила реальністю можливість формування інтерфейсів користувача з розподілом прав доступу до окремих елементів між ними.
Додана підтримка автоматичного скролінгу у контейнерах. Зроблено для можливості розміщення та адекватного представлення великих кадрів на інтерфейсах користувача.
Реалізовано кеш ресурсів. Покликано підвищити продуктивність на високо-динамічних кадрах з часто змінюємими ресурсами у вигляді зображень та інших сутностей.
Важные оптимизационные улучшения визуализатора СВУ - Vision:
Скрытие страниц на момент загрузки с уведомлением о загрузке в режиме исполнения. Делает интерфейс более понятным и убирает вопросы при достаточно продолжительном открытии больших кадров.
Оптимизация операций перемещения и изменения размеров виджетов. Повысила реактивность интерфейса в режиме разработки.
Оптимизирован механизм хранения индивидуальных данных примитивов. Позволила достичь сразу двух целей, первой цели - оптимизации использования памяти и второй цели - повышения производительности формирования примитивов интерфейса.
Выполнена оптимизация удаления и копирования-вставки больших групп виджетов в режиме разработки. Позволило значительно ускорить групповые операции над виджетами в процессе создания высоконагруженных кадров.
Операция выделения мышью и прямоугольником оптимизирована по времени. Теперь на не быстрых вычислительных системах не приходится ждать обновления диспетчера атрибутов после нажатия кнопки мыши с целью выделения группы виджетов прямоугольником, событие выбора елемента генерируется по отпусканию мыши
Выполнены значительные расширения WebVision. А именно:
Все представления примитива елементов формы (FormEl) стали активными, что позволяет формировать формы взаимодействия с пользователем через Web-интерфейс.
Реализована поддержка фокуса мышью и частичная поддержка клавиатурного фокуса. Добавило возможность построения полноценных интерфейсов визуализации с навигацией и управлением.
3. Общесистемные расширения.
В ядро системы OpenSCADA были внесены некоторые изменения расширяющего характера. Перечислим их:
Внедрение механизма глобального контроля за модификацией объектов динамического дерева и, как следствие, добавление возможности избирательной загрузки и сохранением отдельных объектов в ветвях динамического дерева. В язык контроля и управления OpenSCADA добавлены команды для отслеживания состояния модификации ветвей и отдельных объектов, а также для их сохранения и загрузки. Этот механизм был внедрён в QTCfg и Vision, что дало возможность пользователю контролировать изменения и избегать потери данных.
Создан унифицированный механизм копирования объектов динамического дерева. Команды этого механизмы были добавлены в язык контроля и управления OpenSCADA. На основе этих команд в конфигураторе QTCfg были реализованы функции прозрачного копирования объектов в дереве навигации.
Реализован механизм отложенного удаления объектов динамического дерева. Механизм предназначен для обеспечения возможности отката операции удаления и использован для объектов движка среды визуализации и управления (СВУ).
Добавлены функции компрессии с использованием библиотеки ZLib. На основе этих функций была реализована упаковка трафика протокола "SelfSystem".
Расширения языка контроля и управления:
Унификация интерфейса создания и удаления объектов в узлах динамического дерева. На основе этого механизма в QTCfg добавлена функция добавления и удаления элементов дерева объектов прямо в дереве навигации.
Добавлен атрибут для размещения сопроводительной помощи (атрибут "help" полей "fld"). Использован в конфигураторе QTCfg для создания всплывающих подсказок.
Добавлена поддержка элементов статического списка, который призван упростить работу со статическими списками в интерфейсе.
Добавлен общий интерфейс для предоставления возможности выбора БД. Предназначен для простой и унифицированной с всплывающей помощью интеграции комбо-бокса выбора БД в объекты этого требующие.
Выполнена адаптация для сборки на компиляторе gcc версии 4.3 и в окружении дистрибутива Mandriva 2008.1.
Выполнена адаптация к особенностям новой версии библиотеки QT 4.4.
Для более гибкого контроля за особенностями установки библиотеки QT в скрипт конфигурации был добавлен параметр "--with-qt4-dir=DIR", позволяющий указывать место расположения инсталляции QT.
Выполнена общая чистка исходного кода проекта от избыточных пробелов и отклонений в стиле оформления.
4. Усовершенствование части модулей подсистемы "Сбор данных".
Значительному усовершенствованию подверглись модули источников данных "DAQ.Siemens", "DAQ.JavaLikeCalc" и "DAQ.ModBus".
В модуль "DAQ.Siemens" добавлена поддержка протокола ISO_TSAP посредством библиотеки Libnodave. Это позволило получить доступ к широкому спектру контроллеров фирмы Siemens посредством сети ProfiNET.
Язык высокого уровня модуля "DAQ.JavaLikeCalc" был расширен операторами побитового сдвига, а в последствии был переписан механизм обработки числовых значений. В результате базовые операции переведены на работу только с вещественными, что устранило неопределённости в синтаксисе, часто приводящие к потере знака вещественных чисел.
В модуль "DAQ.ModBus" было внесено множество изменений. Подавляющее их большинство связано с работами по тестированию Попковым Алексеем. В целом были внесены изменения расширения функциональных возможностей, стабилизации и оптимизации модуля. Рассмотрим их детальнее:
Добавлена возможность установки времени восстановления связи с недоступными контроллерами на последовательных интерфейсах. Используется для уменьшения нагрузки на сеть RS485 за счёт разрежения попыток восстановления связи.
Добавлена возможность установки таймаутов RS485 сети индивидуально для каждого контроллера. Позволяет подключать разнородные контроллеры на последовательную шину и при этом учитывать индивидуальные особенности временных таймаутов контроллеров, оптимизируя производительность сети в целом.
Добавлена поддержка опроса и записи битовых параметров посредством стандартных функций 01 и 05, а также входных регистров (04) и входных битов (02). Таким образом реализована поддержка всех стандартных множеств параметров протокола ModBus.
Добавлен собственный лог протокола обмена. Позволяет решить множество проблем коммуникации путём отслеживания реальных запросов и ответов.
5. Планы дальнейшего развития
К релизу следующей версии запланированы решения таких задач:
Реализация поддержки групповых запросов в язык контроля и управления OpenSCADA и оптимизация на его основе сетевых коммуникаций различных подсистем OpenSCADA.
Разработка и реализация концепции примитива СВУ "Document" предназначенного для формирования отчётной документации.
Миграция модуля конфигурации системы OpenSCADA UI.WebVision на динамический интерфейс DHTML.
Реализация безопасного транспорта на основе OpenSSL.